Initial commit (KDE3 version)

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/1/head
Mavridis Philippe 3 years ago
commit 74b22318b8
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -0,0 +1 @@
Hans Oischinger <oisch@users.berlios.de>

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

@ -0,0 +1,71 @@
0.5.1
-Hot corners delay controls whether Komposé is started and not when it's started :)
-imlib2 error message added to configure script
-Fixed "if a kompose window (prefs, about) is open, you are stuck"
-Added german translation (thanks to Thomas Fischer)
0.5:
-Composite support to take screenshots without raising windows
-Damage support for live-updates of windows
-major refactoring for a cleaner design
-new View Type (current desktop)
-activate when mouse moves in one of the screen's corners
-added popup menu for windows
-added a small screenshot delay for passive screenshots. This should make switching between tasks seem more responsive (redraws occur before taking screenshots) and help on most of the "overlapping windows" problems
-fixed flashing background when activating Komposé
-Switched to themable KDE cursors
-Window title changes are now updated properly
-Correct handling of windows that are on all desktops
-additionally using hjkl(vi) keys for moving and c/m keys for close/minimize/restore
-Imlib2, Composite and Damage autodetected through configure
-some minor bugs and various smaller performance improvements
0.4.2:
-Switching between views on the fly works again
-Hopefully fixed unreproducable auto-Raising & -Minimizing ow Windows
-Fixed highlighting of Virtual Desktops on mouseover
-Config options for Virtual Desktop fonts&colors
-Virtual Desktop Layout introduced in 0.4 now configurable
-French translation by Sébastien Renard included (although some words are still english, sorry!)
0.4.1:
-Fixed a compile bug - sorry guys!
-Esc key works again
0.4:
-faster image scaling speedups thanks to Imlib2 which is now required
-Layout wastes less space (e.g. empty virtual desktops are smaller)
-Show task icons and titles in Komposé (configruable through preferences)
-Added --nosystray and --singleshot command line options
-Added dcop support
-Icon submitted by Philipp Droessler
-Arrow keys can be used to traverse through tasks
-Annoying Raise-bug fixed (no more raising of windows after komposé)
-Images aren't scaled bigger than they actually are
-the usual minor bugfixes
0.3:
-Speedups in image processing
-Overworked Preferences Dialog with some new options
-view mode (that doesn't seperate between desktops)
-Switching between view modes on-the-fly with right mouse popup menu
-Rudimentary keyboard movement (Tab and Space/enter keys)
-Added desktop tooltips
-Kompose cannot be launched multiple times
-Memory leak fixed
-Added about dialog (should now be GPL compatible :) )
0.2.1:
maintenance release, fixed some bugs that caused crashes
0.2:
-Komposé now stays in system tray
-You can assign a global shortcut to Komposé
-Default behaviour is to create screenshots while you work. This can be changed in the preferences, but it's less annoying than the "pop up all windows before Komposé is started" thing.
-Mouseover toolbar to minimize/raise/close windows
-Graying out minimized windows
-Drag & drop should work correctly now
-Many bugfixes and huge Refactoring. The application structure should now allow a GL implementation of Komposé, I'll look at this in the next days
0.1:
Initial Release

@ -0,0 +1,167 @@
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes a while. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Type `make install' to install the programs and any data files and
documentation.
4. You can remove the program binaries and object files from the
source code directory by typing `make clean'.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not supports the `VPATH'
variable, you have to compile the package for one architecture at a time
in the source code directory. After you have installed the package for
one architecture, use `make distclean' before reconfiguring for another
architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.
If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Operation Controls
==================
`configure' recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`configure' also accepts some other, not widely useful, options.

@ -0,0 +1,22 @@
SUBDIRS = $(TOPSUBDIRS)
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
$(top_srcdir)/subdirs:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
package-messages:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages
$(MAKE) -C po merge
EXTRA_DIST = admin COPYING configure.in.in
dist-hook:
cd $(top_distdir) && perl admin/am_edit -padmin
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs

@ -0,0 +1,10 @@
all:
@echo "This Makefile is only for the CVS repository"
@echo "This will be deleted before making the distribution"
@echo ""
$(MAKE) -f admin/Makefile.common cvs
dist:
$(MAKE) -f admin/Makefile.common dist
.SILENT:

@ -0,0 +1,763 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
TODO admin/ChangeLog admin/compile admin/config.guess \
admin/config.sub admin/depcomp admin/install-sh \
admin/ltmain.sh admin/missing admin/mkinstalldirs admin/ylwrap
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTSCCONFIG = @ARTSCCONFIG@
AUTOCONF = @AUTOCONF@
AUTODIRS = @AUTODIRS@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOPIDLNG = @DCOPIDLNG@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GMSGFMT = @GMSGFMT@
IMLIB2_CFLAGS = @IMLIB2_CFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
KCONFIG_COMPILER = @KCONFIG_COMPILER@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LDFLAGS = @LDFLAGS@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBRESOLV = @LIBRESOLV@
LIBS = @LIBS@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBZ = @LIBZ@
LIB_IMLIB2 = @LIB_IMLIB2@
LIB_KAB = @LIB_KAB@
LIB_KABC = @LIB_KABC@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPIM = @LIB_KDEPIM@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_KUTILS = @LIB_KUTILS@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XCOMPOSITE = @LIB_XCOMPOSITE@
LIB_XDAMAGE = @LIB_XDAMAGE@
LIB_XEXT = @LIB_XEXT@
LIB_XRENDER = @LIB_XRENDER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
QTE_NORTTI = @QTE_NORTTI@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XMLLINT = @XMLLINT@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
X_RPATH = @X_RPATH@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
include_ARTS_FALSE = @include_ARTS_FALSE@
include_ARTS_TRUE = @include_ARTS_TRUE@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_kcfgdir = @kde_kcfgdir@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
kdeinitdir = @kdeinitdir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
x_includes = @x_includes@
x_libraries = @x_libraries@
xdg_appsdir = @xdg_appsdir@
xdg_directorydir = @xdg_directorydir@
xdg_menudir = @xdg_menudir@
SUBDIRS = $(TOPSUBDIRS)
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
EXTRA_DIST = admin COPYING configure.in.in
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkdir_p) $(distdir)/admin
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-libtool clean-recursive \
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-generic distclean-hdr distclean-libtool \
distclean-recursive distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am uninstall-info-am
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
$(top_srcdir)/subdirs:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
package-messages:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages
$(MAKE) -C po merge
dist-hook:
cd $(top_distdir) && perl admin/am_edit -padmin
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

@ -0,0 +1 @@

@ -0,0 +1,12 @@
Komposé README
Command line options:
--nosystray Don't show the systray icon
--singleshot Display the default view and exit (non daemon mode)
Keyboard shortcuts:
Cancel ESC
Navigation between tasks
(within the view of the current desktop) arrow, HJKL (vi) or WASD keys or tab key
Navigation between virtual desktops Ctrl + arrow keys, HJKL or WASD keys
Selection of a window Return or Space

@ -0,0 +1 @@

File diff suppressed because it is too large Load Diff

863
aclocal.m4 vendored

@ -0,0 +1,863 @@
# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.9.6])])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is `.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[dnl Rely on autoconf to set up CDPATH properly.
AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 7
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])
AC_SUBST([$1_FALSE])
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
AC_MSG_ERROR([[conditional "$1" was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
# NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
[$1], CXX, [depcc="$CXX" am_compiler_list=],
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
[depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
# Solaris 8's {/usr,}/bin/sh.
touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
case $depmode in
nosideeffect)
# after this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
none) break ;;
esac
# We check with `-c' and `-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
# handle `-M -o', and we need to detect this.
if depmode=$depmode \
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
])
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
[ --disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[for mf in $CONFIG_FILES; do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named `Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# So let's grep whole file.
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`AS_DIRNAME("$mf")`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 12
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.58])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
# test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
AM_PROG_INSTALL_SH
AM_PROG_INSTALL_STRIP
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES(CC)],
[define([AC_PROG_CC],
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES(CXX)],
[define([AC_PROG_CXX],
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
])
])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1's index in $config_headers.
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$1 | $1:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo done
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# We grep out `Entering directory' and `Leaving directory'
# messages which can occur if `w' ends up in MAKEFLAGS.
# In particular we don't look at `^make:' because GNU make might
# be invoked under some other name (usually "gmake"), in which
# case it prints its new name instead of `make'.
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
am__include=include
am__quote=
_am_result=GNU
fi
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
am__include=.include
am__quote="\""
_am_result=BSD
fi
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
# If it does, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
# Use eval to expand $SHELL
if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
AC_MSG_WARN([`missing' script is too old or missing])
fi
])
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
#
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
# This was a mistake. There are at least two reasons why we must not
# use `-m 0755':
# - it causes special bits like SGID to be ignored,
# - it may be too restrictive (some setups expect 775 directories).
#
# Do not use -m 0755 and let people choose whatever they expect by
# setting umask.
#
# We cannot accept any implementation of `mkdir' that recognizes `-p'.
# Some implementations (such as Solaris 8's) are not thread-safe: if a
# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
# concurrently, both version can detect that a/ is missing, but only
# one can create it and the other will error out. Consequently we
# restrict ourselves to GNU make (using the --version option ensures
# this.)
AC_DEFUN([AM_PROG_MKDIR_P],
[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
# We used to keeping the `.' as first argument, in order to
# allow $(mkdir_p) to be used without argument. As in
# $(mkdir_p) $(somedir)
# where $(somedir) is conditionally defined. However this is wrong
# for two reasons:
# 1. if the package is installed by a user who cannot write `.'
# make install will fail,
# 2. the above comment should most certainly read
# $(mkdir_p) $(DESTDIR)$(somedir)
# so it does not work when $(somedir) is undefined and
# $(DESTDIR) is not.
# To support the latter case, we have to write
# test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
# so the `.' trick is pointless.
mkdir_p='mkdir -p --'
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
# directories to create, and then abort because `.' already
# exists.
for d in ./-p ./--version;
do
test -d $d && rmdir $d
done
# $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
if test -f "$ac_aux_dir/mkinstalldirs"; then
mkdir_p='$(mkinstalldirs)'
else
mkdir_p='$(install_sh) -d'
fi
fi
AC_SUBST([mkdir_p])])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ------------------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
# ----------------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftest.file
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftest.file`
fi
rm -f conftest.file
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in `make install-strip', and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using `strip' when the user
# run `make install-strip'. However `strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the `STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of `v7', `ustar', or `pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
m4_if([$1], [v7],
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of `-'.
for _am_tool in $_am_tools
do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar;
do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar <conftest.tar])
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
m4_include([acinclude.m4])

@ -0,0 +1,30 @@
/Doxyfile.global/1.2/Tue Sep 13 17:41:39 2005//
/Makefile.common/1.2/Tue Sep 13 17:41:39 2005//
/acinclude.m4.in/1.2/Tue Sep 13 17:41:39 2005//
/am_edit/1.2/Tue Sep 20 19:32:46 2005//
/conf.change.pl/1.2/Tue Sep 13 17:41:39 2005//
/config.guess/1.2/Tue Sep 13 17:41:39 2005//
/config.sub/1.2/Tue Sep 13 17:41:39 2005//
/configure.in.bot.end/1.2/Tue Sep 13 17:41:40 2005//
/cvs.sh/1.2/Tue Sep 13 17:41:39 2005//
/debianrules/1.2/Tue Sep 13 17:41:39 2005//
/detect-autoconf.sh/1.2/Tue Sep 13 17:41:39 2005//
/libtool.m4.in/1.2/Tue Sep 13 17:41:40 2005//
/ltmain.sh/1.2/Tue Sep 13 17:41:40 2005//
/ChangeLog/1.1.1.1/Tue Sep 13 17:41:39 2005//
/Doxyfile.am/1.1.1.1/Tue Sep 13 17:41:39 2005//
/bcheck.pl/1.1.1.1/Tue Sep 13 17:41:39 2005//
/compile/1.1.1.1/Tue Sep 13 17:41:39 2005//
/config.pl/1.1.1.1/Tue Sep 13 17:41:39 2005//
/configure.in.min/1.1.1.1/Tue Sep 13 17:41:39 2005//
/cvs-clean.pl/1.1.1.1/Tue Sep 13 17:41:39 2005//
/depcomp/1.1.1.1/Tue Sep 13 17:41:40 2005//
/install-sh/1.1.1.1/Tue Sep 13 17:41:40 2005//
/missing/1.1.1.1/Tue Sep 13 17:41:39 2005//
/mkinstalldirs/1.1.1.1/Tue Sep 13 17:41:39 2005//
/nmcheck/1.1.1.1/Tue Sep 13 17:41:39 2005//
/ylwrap/1.1.1.1/Tue Sep 13 17:41:39 2005//
/deps.am/1.1/Tue Sep 13 17:41:40 2005//
/oldinclude.m4.in/1.1/Tue Sep 13 17:41:39 2005//
/pkg.m4.in/1.1/Tue Sep 13 17:41:39 2005//
D

@ -0,0 +1 @@
kompose/admin

@ -0,0 +1 @@
oisch@cvs.berlios.de:/cvsroot/kompose

@ -0,0 +1,761 @@
2002-10-03 Stephan Kulow <coolo@kde.org>
* made config.h.bot obsolete
2002-04-26 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in removed bogus message
2001-11-07 Walter Tasin <tasin@kdevelop.org>
* now #MIN_CONFIG tag takes parameters for KDE_USE_QT, too.
e.g. #MIN_CONFIG(2.2) for qt 2.2 usage
2000-11-30 David Faure <faure@kde.org>
* acinclude.m4.in: Added kde_moduledir which points to $prefix/lib/kde2/
2000-07-24 Alex Zepeda <jazepeda@pacbell.net>
* acinclude.m4.in: Remove the test for malloc.h
2000-04-05 Michael Matz <matz@ifh.de>
* config.pl : added kludge for compiling regexp's even if
perl < 5.005 is installed
* conf.change.pl : added support for autoconf 2.14.1
2000-03-27 David Faure <faure@kde.org>
* acinclude.m4.in, Makefile.common: changed inst-apps semantics
If present, only the subdirs it lists will be configured and compiled.
If absent, then subdirs is used (and inst-apps isn't generated anymore)
2000-03-22 David Faure <faure@kde.org>
* am_edit: Added support for KDE_ICON = AUTO
2000-03-18 David Faure <faure@kde.org>
* Makefile.common: Rewrote the list-of-Makefiles generation to make it
simpler and nicer, using create_makefiles' way of doing it.
Added support for COMPILE_LAST and COMPILE_FIRST in toplevel Makefile.am
2000-01-05 David Faure <faure@kde.org>
* Makefile.common: hacked around autoconf bug (setting INSTALL to ".."
when calling a subconfigure and INSTALL is already set).
1999-12-15 Waldo Bastian <bastian@kde.org>
* acinclude.m4.in: Test whether Qt compiles AND LINKS without flags.
1999-06-24 Stephan Kulow <coolo@kde.org>
* am_edit: generate correct Makefile entries for kde-i18n toplevel directories
* am_edit:
1999-06-14 Stephan Kulow <coolo@kde.org>
* am_edit: remove idl generated files on make clean
1999-06-09 Stephan Kulow <coolo@kde.org>
* am_edit: skipping programs with variables in sources for final
1999-06-07 Stephan Kulow <coolo@kde.org>
* am_edit: added support for idl files
1999-06-02 Stephan Kulow <coolo@kde.org>
* Makefile.common: preserve comments in .pot files to make it
possible for programmers and translators to comment them
1999-06-02 Simon Hausmann <hausmann@kde.org>
* acinclude.m4.in: added kde_servicetypesdir
1999-06-02 David Faure <faure@kde.org>
* acinclude.m4.in: removed LIB_KFM and LIB_KDEUTIL aliases
1999-05-28 Simon Hausmann <hausmann@kde.org>
* acinclude.m4.in: added kde_servicesdir
1999-05-27 Stephan Kulow <coolo@kde.org>
* am_edit: lots of changes for better support of --enable-final
1999-05-22 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added support for --with-dmalloc
1999-05-19 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added support for --enable-final
* am_edit: added support for --enable-final
1999-05-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: change the meaning of --disable-debug
1999-05-04 Helge Deller <deller@gmx.de>
* acinclude.m4.in: the test for the X-includes/directories failed,
when compile & link work without special directories (as on HP-UX).
1999-04-20 Stephan Kulow <coolo@kde.org>
* am_edit: adding DESTDIR replacement for rm and uninstall-local
too. Seems very useless, but makes testing for uninstall easier
1999-04-01 David Faure <faure@kde.org>
* acinclude.m4.in: Added -lkfile to $(LIB_KIO)
1999-03-30 David Faure <faure@kde.org>
* acinclude.m4.in: Added AC_CHECK_KDEMAXPATHLEN, which defines KDEMAXPATHLEN.
1999-03-29 David Faure <faure@kde.org>
* acinclude.m4.in: added LIB_X11 to XPMLIB and GLLIB, because
on SCO, they need it _after_ themselves.
1999-03-28 David Faure <faure@kde.org>
* acinclude.m4.in: added LIB_KFM to LIB_KAB alias
1999-03-26 David Faure <faure@kde.org>
* acinclude.m4.in: made LIB_KFILE use LIB_KIO instead of LIB_KFM
added LIB_KFORMULA
1999-03-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: check for libXext - for Russel :)
1999-03-16 Stephan Kulow <coolo@kde.org>
* acinclud3.m4.in: extend the MICO test with a list of possible
places where to find CORBA.h
1999-03-15 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: move $QTINC and $QTLIB in search path
1999-03-14 Stephan Kulow <coolo@kde.org>
* am_edit: install-root is obsolute. Use DESTDIR always
1999-03-03 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixing a bug, that $QTDIR was taken before --with-qt*
* acinclude.m4.in: added KDE_USE_QT, that you can choose if to
use QT 2.0 or KDE 1.0
* Makefile.common: added target package-merge
* am_edit: many fixes to the POFILES handeling of am_edit
1999-03-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: first look at libjpeg6b (from kdesupport) then
for libjpeg
* config.*, libtool.*: update to the latest FSF tools
1999-02-23 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: error when Sparc CC is used. Better use it in
configure and tell him the story then letting him find it while
compiling
* acinclude.m4.in: adding KDE_CHECK_EXTRA_LIBS to all possible tests,
so that --with-extra-includes is used when needed.
* acinclude.m4.in: configure looks for giflib30, so it should say so
* acinclude.m4.in: don't overwrite x include parameters. Patch by
Ari Lemmke <ari.lemmke@regex.fi> (bug report 741)
1999-02-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixing KDE_CHECK_PATHS for rechecking. In case
of defaults (kdelibs) configure didn't cache the results
1999-02-18 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_S_ISSOCK, to fix #706.
1999-02-17 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_RANDOM, just like
AC_CHECK_USLEEP, to enable the fake if necessary.
1999-02-13 Kurt Granroth <granroth@kde.org>
* acinclude.m4.in: look for QT-2.0
1999-02-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: in macro KDE_FIND_PATH treat user given dirs
and $PATH dirs the same. Added seperate test for to find binary
($5) to replace findperl
1999-01-28 Stephan Kulow <coolo@kde.org>
* automoc: added patch by jbb to be a little bit more precise about
the number of sourcefiles that include the moc file if it's != 1.
Besides that automoc will fail with exit code, so the Makefile.cvs
process does stop in case a problem accoured.
* automoc: don't hardcode header suffix, but allow *.h, *.hh and *.H
1999-01-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: try qobjcoll.h and qapplication.h before saying
OK to qt headers. (I could kill SuSE for splitting into qt-dev
and qt-compat)
1991-01-23 Stephan Kulow <coolo@kde.org>
* automoc: added fixes by JB <jb.nz@writeme.com>
1999-01-21 Stephan Kulow <coolo@kde.org>
* automoc: added --help and --path (for use in dist-hook)
1999-01-20 Alex Zepeda <garbanzo@hooked.net>
* ltconfig: added entries for FreeBSD 4.x
1999-01-19 Stephan Kulow <coolo@kde.org>
* automoc: added a distclean-metasources target which deletes all
moc files and let distclean depend on it
1999-01-18 Stephan Kulow <coolo@kde.org>
* automoc: several fixes (ignore comment lines + join lines
with \ )
* automoc: support META_INCLUDES in case the header files are
not in the same dir as the sources.
1999-01-17 Stephan Kulow <coolo@kde.org>
* automoc: several fixes.
1999-01-16 Stephan Kulow <coolo@kde.org>
* automoc: added support for included MOC files.
* acinclude.m4.in: use srcdir for the subdirs stuff as well
* automoc: added better command line parsing and some preparation
for handling "normal" moc files
* acinclude.m4.in: added aliases for libkio and libkdeutil
1999-01-15 Harri Porten <porten@kde.org>
* automoc: Carved in stone syntax for Makefile.in:
{program}_METASOURCES = USE_AUTOMOC [{suffix}]
1999-01-15 Stephan Kulow <coolo@kde.org>
* Makefile.common: set top_srcdir to .
1999-01-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use config.h.bot any longer
1999-01-08 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added KDE_CHECK_NEWLIBS
* acinclude.m4.in: test for Qt even if both --with-qt-headers and
--with-qt-libraries are given. They may be wrong.
1999-01-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: change the MOC test so it can be used for other
tools as well
1998-12-28 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: look for QT-1.42 since kpanel needs it
1998-12-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added /usr/lib for libpython test
* acinclude.m4.in: take my email address out of it and added a
reference to www.kde.org/faq
* acinclude.m4.in: use Qt >= 1.4
* acinclude.m4.in: added KDE_CHECK_NAMESPACES
1998-12-18 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: test for directories to exist before saying yes
to compilation :)
1998-12-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added CPLUSPLUS for the kimgio test. It's
only important for shaman right now, but at least there it is :)
1998-12-12 Stephan Kulow <coolo@kde.org>
* Makefile.cvs: added common Makefile.cvs
* acinclude.m4.in: Thomas.Schwarz@pro-sieben.de reported a very ugly
bug in AC_PROG_CXXCPP, so I added my own version
* acinclude.m4.in: added KDE_CREATE_SUBDIRS_LIST to simplify
most toplevel configures
1998-12-11 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added call to AC_PROG_CXXCPP. Not really sure why
it never caused problems
* acinclude.m4.in: moved LIBTIFF alias
* acinclude.m4.in: only test for the existance of libkimgio if the
user wants to. For 99% of the applications it doesn't matter if
configure can find libkimgio :)
1998-12-10 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: some changes to the python check to handle $LIBDL
1998-12-09 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: make Alex's tiff test a real one
* acinclude.m4.in: fix the LIB_TIFF alias to really expand
1998-12-08 Alex Zepeda <garbanzo@hooked.net>
* acinclude.m4.in: Fix tiff test to use libtiff34 if it exists.
This is what the FreeBSD port installs to for whatever reason.
* acinclude.m4.in: s/kde/KDE/ (at least in some of the
descriptions, obviously no variable names were touched.
1998-12-08 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: moved the LIB_QT alias to the Qt check
* acinclude.m4.in: unset KDEDIR before running conftest
* acinclude.m4.in: fixed mean typo
* acinclude.m4.in: added the copyright header for the gettext
tests, so that people know we're legal ;)
* acinclude.m4.in: set language to C++ before testing QIMGIO
1998-12-07 Alex Zepeda <garbanzo@hooked.net>
* acinclude.m4.in: Fix PNG test to use correct ANSI C code, and
not trip up gcc.
1998-12-07 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't hardcode -ldl
* acinclude.m4.in: move the LIB_X11 alias to the X test to make it
useful for kdesupport as well
* acinclude.m4.in: give the word CHECK_KIMGIO a meaning in really
checking for it
* acinclude.m4.in: simple fix to prevent kimgio test from compiling
KDE application in kdelibs
1998-12-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: let KDE_CHECK_KIMGIO depend on AC_PATH_KDE,
otherwise most tests fail. It didn't mean anything to 90% of the
packages since they test for KDE before kimgio, but for shaman
it does
* ltconfig: the real fix for the Solaris && gcc problem.
Thanks Kurt for reporting it and Alexandre for fixing it :)
1998-12-04 Stephan Kulow <coolo@kde.org>
* libtool.*: update again
* acinclude.m4.in: changed the function to test for libnsl to
inet_ntoa since UnixWare 7's version did not have gethostbyname,
but needs libnsl
1998-12-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed the MOC test (again) to use the PATH variable
correctly (with the correct seperator)
* config.guess: update from the soon to be released autoconf-2.13
1998-12-01 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixes for the MOC test. Use PATH now when found
1998-11-30 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: extended the MOC test. It checks now for the
first line of the output of "moc --help" and looks for Qt in it.
1998-11-27 Stephan Kulow <coolo@kde.org>
* ltconfig: another libtool update. Fixes an ugly bug on Solaris,
when GNU ld is in path before Solaris ld, but gcc uses the later
1998-11-26 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: made the Qt test more advance to check for qt
1.41 - I still need to make it better, but there shouldn't be too
many qt releases in a row, would there? ;)
* ltconfig: libtool update with better BSD/OS support
1998-11-22 Stephan Kulow <coolo@kde.org>
* ltconfig: cool - libtool uses g++ now to link libraries on Solaris.
This means, static objects become usuable on that plattforms (some
others as well).
1998-11-20 Stephan Kulow <coolo@kde.org>
* ltmain.sh: updated libtool from their CVS - fixes bugs we haven't
found and adds some more features, that we do not need ;-)
1998-11-19 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_UTMP_FILE, taken from kdebase
1998-11-16 Harri Porten <porten@kde.org>
* automoc: take care of "ar" object files, too.
1998-11-16 Stephan Kulow <coolo@kde.org>
* libtool.m4.in: revised my --silent patch. The solution
Alexandre suggested is much better.
1998-11-15 Stephan Kulow <coolo@kde.org>
* ltconfig.in: done some tweakings to support -export-dynamic
with egcs
* config.sub: wow - BeOS support :)
1998-11-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use rpath for test program, if rpath is
disabled for applications
* ltconfig: patched libtool to make it silent without making
ltconfig silent
* acinclude.m4.in: make libtool silent again
* libtool.m4.in: update to libtool-981114 (untested stuff, but
we have to test it to make it tested - sounds that logical? :-)
* libtool.m4.in: moved the self stricked libtool tests to "our"
file.
* acinclude.m4.in: moved ChangeLog of kdebase which I used to
maintain acinclude.m4.in logs to kde-common/admin. Hopefully I
will maintain it more often from now on :)
1998-07-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed some things in the MOC test
* acinclude.m4.in: fixed this damn msgfmt test
1998-06-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: ignore msgfmt, if not GNU gettext
1998-05-28 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed KDE_CHECK_STL. Checks for HP and SGI type
* acinclude.m4.in: embraced every variable with "" to make
it consistent
* acinclude.m4.in: various fixes for the koffice checks
(mico, ministl and python)
1998-05-16 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use KDE_CHECK_QT_DIRECT, when
--with-qt-libs are given
1998-04-21 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: cool, I found the trick to suppress the ls
errors
1998-04-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: rewrote the qt checking test, since it
didn't work under FreeBSD, since it relied on the .so link.
The new version is a little bit buggy, but I need some testing
to make it perfect
* acinclude.m4.in: fixed the side effects of the PAM test
1998-04-18 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: hopefully fixed the PAM test (I rewrote it)
1998-04-16 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: extended the getsockname test inspired
by a patch by Martin Baulig
* configure.in: added test for utmp file
* acinclude.m4.in: made --without-pam default
1998-04-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't test compiling, linking, running in
one step. This proved to be too dangerous for my mail box.
1998-03-21 Stephan Kulow <coolo@kde.org>
* libtool.m4.in: created some new macros to work around this
ugly (because long) help of configure --enable-shared/static
1998-03-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: set language to C++ before trying the ksize_t
test
* configure.in: sorted the Makefile entries alphabeticly (and all
together: we love xemacs! we love xemacs! ;)
* configure.in: added sk
* acinclude.m4.in: substitute x_libraries to fix the empty -rpath
1998-03-03 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: add a rpath for every shared library, that is
linked too (especially X11 libraries)
Tue Feb 24 22:04:59 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added kde_sounddir and set kde_minidir to
kde_icondir/mini to break not too much
Sun Feb 15 18:25:50 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added bugfix by Bob Miller <kbob@engr.sgi.com>
(correct reset of IFS)
Wed Feb 11 00:53:11 1998 Stephan Kulow <coolo@kde.org>
* configure.in: made shadow under Linux default, since the
binaries will work also under non-shadow systems. The only problem
left is PAM, so I disabled shadow in case, PAM is present
Tue Feb 10 16:46:32 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added test for nice to find out, if the option
-nice works for the screensavers
* acinclude.m4.in: port to LynxOS. For this I moved all library
search routines in KDE_MISC_TESTS, so I don't need to write this
in every package
* README: some grammar fixes
* acinclude.m4.in: search for the libs in the exec_prefix, when
it's present
Sun Feb 8 14:07:23 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: updated all packages
* libtool.m4.in: applied patch for libtool.m4.in to show the
correct default for shared and static
Sat Feb 7 10:56:00 1998 Stephan Kulow <coolo@kde.org>
* configure.in: good news - KDE is relocatable again.
* libtool.m4.in: updated to latest libtool 1.0i
Fri Feb 6 21:26:51 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added a AC_PROVIDE for AC_PROG_CC and
AC_PROG_CPP to KDE_CHECK_COMPILERS
Thu Feb 5 16:27:47 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: put $QTDIR/bin before /usr/bin in the path to
look for moc. I don't know why, but I got a report, that configure
found /usr/bin/moc under Solaris
Fri Jan 30 15:47:50 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: export LIBRARY_PATH after reset to the saved
value
* acinclude.m4.in: unset the LIBRARY_PATH to get a relieable
result when trying to find, if Qt compiles without -L
Sat Jan 24 00:45:52 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed another bug in AC_PATH_KDE
Thu Jan 22 14:46:15 1998 Stephan Kulow <coolo@kde.org>
* configure.in: fixed an ugly bug in AC_BASE_PATH_KDE
* kappfinder/kappfinder.in: let kappfinder create by configure to
allow the use of the kde_ paths
Wed Jan 21 22:19:35 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: - added a install_root prefix to all paths, if
set, to enable package managers to move the whole installation at once
- added --with-install-root to set the install_root prefix
Tue Jan 20 22:41:04 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added NOOPT_CXXFLAGS to allow kioslave to be
compiled without -O2
Mon Jan 19 21:55:21 1998 Stephan Kulow <coolo@kde.org>
* configure.in: some little fixes for the Makefiles
* acinclude.m4.in: --prefix will no longer override the search for
libraries. If they are present somewhere, they are used (through
the methodes in KApplication)
Mon Jan 12 00:30:36 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in fixed an ugly bug, that accoured, when
qt_libraries is not set (empty/equals X11/not necessary)
* acinclude.m4.in moved the remove of the files after the error
detection
Sun Jan 11 17:27:53 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in added a new macro KDE_CHECK_QT_DIRECT to unset
the Qt library path, if a Qt program compiles without them
* acinclude.m4.in added a return value in the CREATE_KFSSTND
macro. Perhaps this has caused the problems
Sat Jan 10 17:40:44 1998 Stephan Kulow <coolo@kde.org>
* ChangeLog started to maintain a ChangeLog file again
* acinclude.m4.in the AC_CREATE_KFSSTND to get better debug output
to find the problem
Old logs, Stephan Kulow made:
0.1 : first steps with libkde
0.2 : first release with libkde, khtmlw, kdehelp, acli, kwm, kpanel
0.3 : added kfm and bugfixes
0.4 : updated khtmlw, kdehelp, kwm, changed install in all subdirs
0.5 : support libtool (chooseable shared libs)
0.6 : split libkde in kdecore and kdeui
0.6.1 : Bugfixes
0.7 : added code from Janos Farkas (configure)
: added @{kde,qt}_{includes,libraries}@
0.7.1: Bugfixes
0.7.2: Bugfixes
0.7.3: added @all_includes@ and @all_libraries@
replaced all incompatible flags like $(CC) and -DHAVE_UNISTD_H
0.7.4: changed support for libkde (back in it's own)
added kpat
updated kpanel, kwm, kghostview
0.8: removed a bug in kghostview
lifted installation process of several apps
splitt kdebase into kdelibs and kdeapps
updated khtmlw, kfm and kdehelp
added kcalc and kpaint
updated kdisplay
added kscreensaver
added --enable-kscreensaver
added --enable-debug (and @CXXFLAGS@ to all Makefile.ins)
updated kwm to 0.4.7
added make uninstall to every app
added kvt
added khexdit
added .kdelnk for kmines, kedit, ktetris
put kwm, kfind's .kdelnk in the right directories
replaced --enable-kscreensaver by --disable-kscreensaver
updated kpanel to 0.15
some bugfixes (thanks Marco)
some bugfixes (thanks Martin)
changed acinclude.m4, because aclocal won't
updated kwm to 0.4.8 (patched it again for Qt-1.2)
updated kvt to 0.13 (patch from Matthias)
patched kvt and kwm
updated kwm to 0.5.0
updated kvt for 0.14 (again and again :-)
updated kview to 0.10
updated kfm to 0.6.3
patched kscreensaver for FreeBSD (thanks Marc)
0.9: updated kdisplay to 0.5.3
added klogout
patches from Matthias
updated kfm to 0.6.4
updated kghostview to 0.4
added QTINC and QTLIB
updated kdehelp to 0.4.11
patched kfm to support ktoolbar
updated kedit to kedit+
added kfontmanager 0.2.1
0.9.1: changed kpaint's make style
bugfixing
updated kmines to 0.6.5
updated ktetris to 0.2.4
changed to Makefiles to depend on Makefile.in
changed the Makefiles to let install depend on all
added kjots-0.2.2
updated kjots-0.2.3
updated kfm to 0.6.6
updated kjots-0.2.4
updated kpaint-0.2
updated kedit to 0.5
updated kfontmanager to 0.2.2
updated kfm to 0.6.7
updated ktetris to 0.2.5
updated kjots to 0.2.5
0.10: added HAVE_SQRTL
added HAVE_CRYPT_H
updated kfind
updated kfm to kfm-0.8.1
re-introduced automake to kdebase
bugfixes for the configure.in
added XPM, GL and PAM tests to configure
added morph3d to kscreensavers
updated kfind to 0.3.2
added some patches for SGI
... lost the time to maintain a Changelog ;)

@ -0,0 +1,179 @@
## generate API documentation with doxygen
apidox-am-yes:
@if test "$(subdir)" != "."; then \
$(mkinstalldirs) $(top_builddir)/apidocs/$(subdir) ;\
if test ! -x $(top_builddir)/apidocs/common; then \
if test -d $(top_srcdir)/doc/common; then \
common_dir=`cd $(top_srcdir)/doc/common && pwd` ;\
else \
common_dir=$(kde_libs_htmldir)/en/common ;\
fi ;\
$(LN_S) $$common_dir $(top_builddir)/apidocs/common; \
fi ;\
cp $(top_srcdir)/admin/Doxyfile.global Doxyfile; \
echo "PROJECT_NAME = \"$(subdir) Library\"" >> Doxyfile; \
echo "PROJECT_NUMBER = \"Version $(VERSION)\"" >> Doxyfile; \
echo "INPUT = $(srcdir)" >> Doxyfile; \
echo "IMAGE_PATH = $(top_srcdir)/doc/api" >> Doxyfile ;\
echo "OUTPUT_DIRECTORY = $(top_builddir)/apidocs" >> Doxyfile; \
echo "HTML_OUTPUT = $(subdir)/html" >> Doxyfile; \
echo "HTML_HEADER = $(top_builddir)/apidocs/common/header.html" >> Doxyfile;\
echo "HTML_FOOTER = $(top_builddir)/apidocs/common/footer.html" >> Doxyfile;\
echo "HTML_STYLESHEET = $(top_builddir)/apidocs/common/doxygen.css" >> Doxyfile;\
echo "LATEX_OUTPUT = $(subdir)/latex" >> Doxyfile; \
echo "RTF_OUTPUT = $(subdir)/rtf" >> Doxyfile; \
echo "MAN_OUTPUT = $(subdir)/man" >> Doxyfile; \
echo "GENERATE_HTML = $(GENERATE_FLAG)" >> Doxyfile ;\
echo "GENERATE_MAN = $(GENERATE_FLAG)" >> Doxyfile ;\
echo "GENERATE_LATEX = $(GENERATE_FLAG)" >> Doxyfile ;\
if test -n "$(DOXYGEN_EXCLUDE)"; then \
patterns= ;\
dirs= ;\
for item in `echo "$(DOXYGEN_EXCLUDE)"`; do \
if test -d "$(srcdir)/$$item"; then \
dirs="$$dirs $(srcdir)/$$item/" ;\
else \
patterns="$$patterns $$item" ;\
fi ;\
done ;\
echo "EXCLUDE_PATTERNS += $$patterns" >> Doxyfile; \
echo "EXCLUDE += $$dirs" >> Doxyfile ;\
fi ;\
echo "TAGFILES = \\" >> Doxyfile; \
tags='$(DOXYGEN_REFERENCES) qt'; for tag in $$tags; do \
tagpath= ;\
path="../../$$tag" ;\
if test -f $(top_builddir)/apidocs/$$tag/$$tag.tag; then \
tagpath="$(top_builddir)/apidocs/$$tag/$$tag.tag" ;\
else \
tagpath=`ls -1 $(kde_htmldir)/en/*-apidocs/$$tag/$$tag.tag 2> /dev/null` ;\
if test -n "$$tagpath"; then \
path=`echo $$tagpath | sed -e "s,.*/\([^/]*-apidocs\)/$$tag/$$tag.tag,../../../\1/$$tag,"` ;\
fi ;\
fi ;\
if test "$$tag" = qt; then \
echo $$tagpath=$(QTDOCDIR) >> Doxyfile ;\
else if test -n "$$tagpath"; then \
echo "$$tagpath=$$path/html \\" >> Doxyfile ;\
fi ;\
fi ;\
done ;\
echo "GENERATE_TAGFILE = $(top_builddir)/apidocs/$(subdir)/`basename $(subdir)`.tag" >> Doxyfile ;\
echo "IGNORE_PREFIX = K" >> Doxyfile ;\
echo "HAVE_DOT = $(KDE_HAVE_DOT)" >> Doxyfile ;\
$(DOXYGEN) Doxyfile ;\
fi
apidox-am-no:
install-data-local: install-apidox
## install API documentation
install-apidox:
@if test "$(subdir)" != "."; then \
$(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html ; \
if test -f $(top_builddir)/apidocs/$(subdir)/$(subdir).tag; then \
echo $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
$(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
fi; \
if test -d $(top_builddir)/apidocs/$(subdir)/html; then \
list=`ls $(top_builddir)/apidocs/$(subdir)/html`; \
echo "installing $(top_builddir)/apidocs/$(subdir)/html" ;\
for file in $$list; do \
$(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/html/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html; \
done; \
fi; \
rm -f $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/common; \
$(LN_S) $(kde_libs_htmldir)/en/common $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/common; \
else\
if test -d $(top_builddir)/apidocs; then \
$(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs ;\
list=`cd $(top_builddir)/apidocs && ls -1`; \
echo "installing $(top_builddir)/apidocs/$$file" ;\
for file in $$list; do \
if test -f $(top_builddir)/apidocs/$$file; then \
$(INSTALL_DATA) $(top_builddir)/apidocs/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \
fi; \
done ; fi; \
fi
uninstall-local: uninstall-apidox
## uninstall API documentation
uninstall-apidox:
@if test "$(subdir)" != "."; then \
if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); then \
rm -rfv $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
fi\
else\
if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; then \
rm -rfv $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \
fi\
fi
apidox:
@if test "$(subdir)" != "."; then \
$(MAKE) apidox-am-@KDE_HAS_DOXYGEN@ ;\
else \
$(MAKE) apidox-am-toplevel-@KDE_HAS_DOXYGEN@ ;\
fi
@set fnord $(MAKEFLAGS); amf=$$2; if test -n '$(SUBDIRS)'; then \
list='$(SUBDIRS)'; \
for subdir in $$list; do \
if grep '^include .*Doxyfile.am' $(srcdir)/$$subdir/Makefile.am; then \
echo "Making apidox in $$subdir"; \
if test "$$subdir" != "."; then \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) GENERATE_FLAG=no apidox) || exit 1; \
fi ; fi ;\
done; \
for subdir in $$list; do \
if grep '^include .*Doxyfile.am' $(srcdir)/$$subdir/Makefile.am; then \
echo "Making apidox in $$subdir"; \
if test "$$subdir" != "."; then \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) GENERATE_FLAG=yes apidox) || exit 1; \
fi ; fi ;\
done; \
fi
apidox-am-toplevel-no:
apidox-am-toplevel-yes:
@echo "*** Creating API documentation main page"; \
cp $(top_srcdir)/admin/Doxyfile.global Doxyfile; \
echo "PROJECT_NAME = \"$(DOXYGEN_PROJECT_NAME)\"" >> Doxyfile ; \
echo "PROJECT_NUMBER = \"$(DOXYGEN_PROJECT_NUMBER)\"" >> Doxyfile ; \
echo "INPUT = $(top_srcdir)" >> Doxyfile ; \
echo "OUTPUT_DIRECTORY = $(top_builddir)/apidocs" >> Doxyfile ; \
echo "FILE_PATTERNS = *.dox" >> Doxyfile ; \
echo "RECURSIVE = NO" >> Doxyfile ; \
echo "SOURCE_BROWSER = NO" >> Doxyfile ; \
echo "ALPHABETICAL_INDEX = NO" >> Doxyfile ; \
echo "HTML_OUTPUT = ." >> Doxyfile ; \
echo "HTML_HEADER = apidocs/common/mainheader.html" >> Doxyfile ; \
echo "HTML_FOOTER = apidocs/common/mainfooter.html" >> Doxyfile ; \
echo "HTML_STYLESHEET = apidocs/common/doxygen.css" >> Doxyfile ; \
echo "GENERATE_LATEX = NO" >> Doxyfile ; \
echo "GENERATE_RTF = NO" >> Doxyfile ; \
echo "GENERATE_MAN = NO" >> Doxyfile ; \
echo "GENERATE_XML = NO" >> Doxyfile ; \
echo "GENERATE_AUTOGEN_DEF = NO" >> Doxyfile ; \
echo "ENABLE_PREPROCESSING = NO" >> Doxyfile ; \
echo "CLASS_DIAGRAMS = NO" >> Doxyfile ; \
echo "HAVE_DOT = NO" >> Doxyfile ; \
echo "GENERATE_HTML = YES" >> Doxyfile ;\
$(mkinstalldirs) $(top_builddir)/apidocs ; \
rm -f $(top_builddir)/apidocs/common ; \
if test -d $(top_srcdir)/doc/common; then \
common_dir=`cd $(top_srcdir)/doc/common && pwd` ;\
else \
common_dir=$(kde_libs_htmldir)/en/common ;\
fi ;\
$(LN_S) $$common_dir $(top_builddir)/apidocs/common ;\
doxygen Doxyfile; \
rm -f Doxyfile
.PHONY: apidox-am-yes apidox-am-no install-data-local install-apidox install-apidox uninstall-local uninstall-apidox uninstall-apidox apidox apidox-am-toplevel-no apidox-am-toplevel-yes
# Local Variables:
# mode: makefile
# End:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,35 @@
### Makefile.common
###
### Copyright (C) 2002 by the KDE developers
### All the real work is done by the shellscript cvs.sh
SHELL=/bin/sh
cvs dist cvs-clean configure configure.in configure.files subdirs package-messages package-merge Makefile.am acinclude.m4 extract-messages:
@admindir=$(admindir); \
if test "x$$admindir" = x; then \
admindir=.; until test -f $$admindir/admin/cvs.sh; do \
admindir=$$admindir/..; \
if test `cd $$admindir && pwd` = / ; then break; fi; \
done; \
admindir=$$admindir/admin; \
if test -f $$admindir/cvs.sh; then :; else \
echo "Can't find the admin/ directory in any parent of the"; \
echo "current directory. Please set it with admindir=..."; \
exit 1; \
fi; \
fi; \
if test "$@" = "package-merge"; then \
MAKE="$(MAKE)" POFILES="$(POFILES)" PACKAGE="$(PACKAGE)" \
$(SHELL) $$admindir/cvs.sh package-merge ;\
else \
MAKE="$(MAKE)" $(SHELL) $$admindir/cvs.sh $@ ;\
fi
configure.in: configure.files subdirs
configure.files: subdirs
.SILENT:
.PHONY: cvs dist cvs-clean package-merge package-messages

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,156 @@
#!/usr/bin/perl -w
use DB_File;
use Fcntl ':flock';
if (!defined($ARGV[0])) {
print "usage: requires .class dump as parameter!\n";
exit;
}
sub bailout
{
untie %bcheckdb if(defined(%bcheckdb));
if(defined(MYLOCK)) {
flock MYLOCK, LOCK_UN;
close(MYLOCK);
}
print @_;
exit 5;
}
sub ask_user
{
my ($dbkey, $dbchunk) = @_;
if (defined($ENV{"BCHECK_UPDATE"})) {
$bcheckdb{$dbkey} = $dbchunk;
return;
}
&bailout("BC problem detected") if (! -t STDIN);
print "(I)gnore / (Q)uit / (U)pdate: ";
my $key;
while(defined(read STDIN, $key, 1)) {
$key = lc($key);
print "got: >$key<\n";
return if ($key eq 'i');
&bailout("BC problem. aborted") if ($key eq 'q');
if ($key eq 'u') {
$bcheckdb{$dbkey} = $dbchunk;
return;
}
print "\n(I)gnore / (Q)uit / (U)pdate: ";
}
}
sub diff_chunk($$)
{
my ($oldl, $newl) = @_;
my @old = split /^/m, $oldl;
my @new = split /^/m, $newl;
my $haschanges = 0;
my $max = $#old > $#new ? $#old : $#new;
die "whoops. key different" if ($old[0] ne $new[0]);
if ($#old != $#new) {
warn ("Structural difference.\n");
print @old;
print "-----------------------------------------------\n";
print @new;
$haschanges = 1;
return $haschanges;
}
print $old[0];
my ($class) = ($old[0] =~ /^(?:Class |Vtable for )(\S+)/);
my $c = 1;
while ($c < $max) {
my ($o, $n) = ($old[$c], $new[$c]);
chomp $o;
chomp $n;
$c++;
next if ($o eq $n);
if(defined($class) and $n =~ /^(\d+\s+)\w+(::\S+\s*.*)$/) {
next if ($n eq "$1$class$2");
}
$haschanges = 1;
print "-$o\n+$n\n\n";
}
return $haschanges;
}
local $dblock = $ENV{"HOME"} . "/bcheck.lock";
my $dbfile = $ENV{"HOME"} . "/bcheck.db";
my $cdump = $ARGV[0];
die "file $cdump is not readable: $!" if (! -f $cdump);
# make sure the advisory lock exists
open(MYLOCK, ">$dblock");
print MYLOCK "";
flock MYLOCK, LOCK_EX;
tie %bcheckdb, 'DB_File', $dbfile;
my $chunk = "";
open (IN, "<$cdump") or die "cannot open $cdump: $!";
while (<IN>) {
chop;
s/0x[0-9a-fA-F]+/0x......../g;
s/base size=/size=/g;
s/base align=/align=/g;
$chunk .= $_ . "\n";
if(/^\s*$/) {
my @lines = split /^/m, $chunk;
my $key = $lines[0];
chomp $key;
if($key !~ /<anonymous struct>/ &&
$key !~ /<anonymous union>/) {
if(defined($bcheckdb{$key})) {
my $dbversion = $bcheckdb{$key};
if($dbversion ne $chunk) {
&ask_user($key, $chunk) if(&diff_chunk($dbversion, $chunk));
}
}
else {
$bcheckdb{$key} = $chunk;
print "NEW: $key\n";
}
}
$chunk = "";
next;
}
}
close(IN);
untie %bcheckdb;
flock MYLOCK, LOCK_UN;
close(MYLOCK);
exit 0;

@ -0,0 +1,99 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
# Copyright 1999, 2000 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# 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, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Usage:
# compile PROGRAM [ARGS]...
# `-o FOO.o' is removed from the args passed to the actual compile.
prog=$1
shift
ofile=
cfile=
args=
while test $# -gt 0; do
case "$1" in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we do something ugly here.
ofile=$2
shift
case "$ofile" in
*.o | *.obj)
;;
*)
args="$args -o $ofile"
ofile=
;;
esac
;;
*.c)
cfile=$1
args="$args $1"
;;
*)
args="$args $1"
;;
esac
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$prog" $args
fi
# Name of file we expect compiler to create.
cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
while true; do
if mkdir $lockdir > /dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir $lockdir; exit 1" 1 2 15
# Run the compile.
"$prog" $args
status=$?
if test -f "$cofile"; then
mv "$cofile" "$ofile"
fi
rmdir $lockdir
exit $status

@ -0,0 +1,191 @@
#!/usr/bin/env perl
# this script patches a config.status file, to use our own perl script
# in the main loop
# we do it this way to circumvent hacking (and thereby including)
# autoconf function (which are GPL) into our LGPL acinclude.m4.in
# written by Michael Matz <matz@kde.org>
# adapted by Dirk Mueller <mueller@kde.org>
#
# This file is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# we have to change two places
# 1. the splitting of the substitutions into chunks of 90 (or even 48 in
# later autoconf's
# 2. the big main loop which patches all Makefile.in's
use strict;
use File::Basename;
my $ac_aux_dir = dirname($0);
my ($flag);
my $ac_version = 0;
my $vpath_seen = 0;
$flag = 0;
while (<>) {
# usage of $flag: 0 -- we have seen nothing yet
# 1 -- we are in (1)
# 2 -- we have ended (1)
# 3 -- we are in (2)
# 4 -- we ended (2)
if ($flag == 4) {
print;
} elsif ($flag == 0) {
# 1. begins with (including): "ac_max_sed_\S+\s*=\s*[0-9]+..."
# ends with (excluding) "CONFIG_FILE=..."
# in later autoconf (2.14.1) there is no CONFIG_FILES= line,
# but instead the (2) directly follow (1)
if (/^\s*ac_max_sed_([a-z]+).*=\s*([0-9]+)/ ) {
$flag = 1;
if ($1 eq 'lines') {
# lets hope its different with 2141,
# wasn't able to verify that
if ($2 eq '48') {
$ac_version = 250;
}
else {
$ac_version = 2141;
}
} elsif ($1 eq 'cmds') {
$ac_version = 213;
}
# hmm, we don't know the autoconf version, but we try anyway
} else {
print;
}
} elsif ($flag == 1) {
if (/^\s*CONFIG_FILES=/ && ($ac_version != 250)) {
print;
$flag = 2;
} elsif (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
$flag = 3;
}
} elsif ($flag == 2) {
# 2. begins with: "for ac_file in.*CONFIG_FILES" (the next 'for' after (1))
# end with: "rm -f conftest.s\*"
# on autoconf 250, it ends with '# CONFIG_HEADER section'
#
# gg: if a post-processing commands section is found first,
# stop there and insert a new loop to honor the case/esac.
# (pattern: /^\s+#\sRun the commands associated with the file./)
if (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
$flag = 3;
} else {
print;
}
} elsif ($flag == 3) {
if (/^\s*rm\s+-f\s+conftest/ ) {
$flag = 4;
&insert_main_loop();
} elsif (/^\s*rm\s+-f\s+.*ac_cs_root/ ) {
$flag = 4;
&insert_main_loop();
#die "hhhhhhh";
if ($ac_version != 2141) {
print STDERR "hmm, don't know autoconf version\n";
}
} elsif (/^\#\s*CONFIG_(HEADER|COMMANDS) section.*|^\s+#\s(Run) the commands associated/) {
$flag = 4;
my $commands = defined $2;
&insert_main_loop();
$commands && insert_command_loop();
if($ac_version != 250) {
print STDERR "hmm, something went wrong :-(\n";
}
} elsif (/VPATH/ ) {
$vpath_seen = 1;
}
}
}
die "wrong input (flag != 4)" unless $flag == 4;
print STDERR "hmm, don't know autoconf version\n" unless $ac_version;
sub insert_main_loop {
if ($ac_version == 250) {
&insert_main_loop_250();
}
else {
&insert_main_loop_213();
}
}
sub insert_main_loop_250 {
print <<EOF;
#echo Doing the fast build of Makefiles -- autoconf $ac_version
EOF
if ($vpath_seen) {
print <<EOF;
# VPATH subst was seen in original config.status main loop
echo '/^[ ]*VPATH[ ]*=[^:]*\$/d' >>\$tmp/subs.sed
EOF
}
print <<EOF;
rm -f \$tmp/subs.files
for ac_file in .. \$CONFIG_FILES ; do
if test "x\$ac_file" != x..; then
echo \$ac_file >> \$tmp/subs.files
fi
done
if test -f \$tmp/subs.files ; then
perl $ac_aux_dir/config.pl "\$tmp/subs.sed" "\$tmp/subs.files" "\$srcdir" "\$INSTALL"
fi
rm -f \$tmp/subs.files
fi
EOF
return;
}
sub insert_main_loop_213 {
print <<EOF;
#echo Doing the fast build of Makefiles -- autoconf $ac_version
if test "x\$ac_cs_root" = "x" ; then
ac_cs_root=conftest
fi
EOF
if ($vpath_seen) {
print <<EOF;
# VPATH subst was seen in original config.status main loop
echo '/^[ ]*VPATH[ ]*=[^:]*\$/d' >> \$ac_cs_root.subs
EOF
}
print <<EOF;
rm -f \$ac_cs_root.sacfiles
for ac_file in .. \$CONFIG_FILES ; do
if test "x\$ac_file" != x..; then
echo \$ac_file >> \$ac_cs_root.sacfiles
fi
done
if test -f \$ac_cs_root.sacfiles ; then
perl $ac_aux_dir/config.pl "\$ac_cs_root.subs" "\$ac_cs_root.sacfiles" "\$ac_given_srcdir" "\$ac_given_INSTALL"
fi
rm -f \$ac_cs_root.s*
EOF
return;
}
sub insert_command_loop {
print <<EOF;
for ac_file in .. \$CONFIG_FILES ; do
EOF
}

1449
admin/config.guess vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,236 @@
#!/usr/bin/env perl
# a script for use by autoconf to make the Makefiles
# from the Makefile.in's
#
# the original autoconf mechanism first splits all substitutions into groups
# of ca. 90, and than invokes sed for _every_ Makefile.in and every group
# (so around 2-3 times per Makefile.in). So this takes forever, as sed
# has to recompile the regexps every time.
#
# this script does better. It changes all Makefile.ins in one process.
# in kdelibs the time for building Makefile went down from 2:59 min to 13 sec!
#
# written by Michael Matz <matz@kde.org>
# adapted by Dirk Mueller <mueller@kde.org>
# This file is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
use strict;
use File::Path;
my $ac_subs=$ARGV[0];
my $ac_sacfiles = $ARGV[1];
my $ac_given_srcdir=$ARGV[2];
my $ac_given_INSTALL=$ARGV[3];
my @comp_match;
my @comp_subs;
#print "ac_subs=$ac_subs\n";
#print "ac_sacfiles=$ac_sacfiles\n";
#print "ac_given_srcdir=$ac_given_srcdir\n";
#print "ac_given_INSTALL=$ac_given_INSTALL\n";
my $configure_input;
my ($srcdir, $top_srcdir);
my $INSTALL;
my $bad_perl = ($] < 5.005);
my $created_file_count = 0;
open(CF, "< $ac_subs") || die "can't open $ac_subs: $!";
my @subs = <CF>;
close(CF);
chomp @subs;
@comp_match=();
@comp_subs=();
if ($bad_perl) {
print "Using perl older than version 5.005\n";
foreach my $pat (@subs) {
if ( ($pat =~ m/s%([^%]*)%([^%]*)%g/ )
|| ($pat =~ m/s%([^%]*)%([^%]*)%;t/ )
|| ($pat =~ m/s,([^,]*),(.*),;t/)
|| ($pat =~ m%s/([^/]*)/([^/]*)/g% )
|| ($pat =~ m%s/([^/]*)/([^/]*)/;t% )
) {
# form : s%bla%blubb%g
# or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?)
# or s,bla,blubb,;t t (autoconf 2.52)
my $srch = $1;
my $repl = $2;
$repl =~ s/\\(.)/$1/g;
push @comp_subs, make_closure($srch, $repl);
} elsif ( ($pat =~ /%([^%]*)%d/ )
|| ($pat =~ m%/([^/]*)/d% )
) {
push @comp_subs, make_closure($1, "");
} else {
die "Uhh. Malformed pattern in $ac_subs ($pat)"
unless ( $pat =~ /^\s*$/ ); # ignore white lines
}
}
} else {
foreach my $pat (@subs) {
if ( ($pat =~ /s%([^%]*)%([^%]*)%g/ ) ||
($pat =~ /s%([^%]*)%([^%]*)%;t/ ) ||
($pat =~ /s,([^,]*),(.*),;t/) ) {
# form : s%bla%blubb%g
# or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?)
# or s,bla,blubb,;t t (autoconf 2.52)
my $srch = $1;
my $repl = $2;
push @comp_match, eval "qr/\Q$srch\E/"; # compile match pattern
$repl =~ s/\\(.)/$1/g;
push @comp_subs, $repl;
} elsif ( ($pat =~ /%([^%]*)%d/ )
|| ($pat =~ m%/([^/]*)/d% )
) {
push @comp_match, eval "qr/\Q$1\E/";
push @comp_subs, "";
} else {
die "Uhh. Malformed pattern in $ac_subs ($pat)"
unless ( $pat =~ /^\s*$/ ); # ignore white lines
}
}
}
undef @subs;
# read the list of files to be patched, form:
# ./Makefile arts/Makefile arts/examples/Makefile arts/flow/Makefile
open(CF, "< $ac_sacfiles") || die "can't open $ac_sacfiles: $!";
my @ac_files = <CF>;
close(CF);
chomp @ac_files;
my $ac_file;
foreach $ac_file (@ac_files) {
next if $ac_file =~ /\.\./;
next if $ac_file =~ /^\s*$/;
my $ac_file_in;
my ($ac_dir, $ac_dots, $ac_dir_suffix);
if ($ac_file =~ /.*:.*/ ) {
($ac_file_in = $ac_file) =~ s%[^:]*:%%;
$ac_file =~ s%:.*%%;
} else {
$ac_file_in = $ac_file.".in";
}
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
# Remove last slash and all that follows it. Not all systems have dirname.
($ac_dir = $ac_file) =~ s%/[^/][^/]*$%%;
if ( ($ac_dir ne $ac_file) && ($ac_dir ne ".")) {
# The file is in a subdirectory.
if (! -d "$ac_dir") { mkpath "$ac_dir", 0, 0777; }
($ac_dir_suffix = $ac_dir) =~ s%^./%%;
$ac_dir_suffix="/".$ac_dir_suffix;
# A "../" for each directory in $ac_dir_suffix.
($ac_dots = $ac_dir_suffix) =~ s%/[^/]*%../%g;
} else {
$ac_dir_suffix="";
$ac_dots="";
}
if ($ac_given_srcdir eq ".") {
$srcdir=".";
if ($ac_dots) {
( $top_srcdir = $ac_dots) =~ s%/$%%;
} else { $top_srcdir="."; }
} elsif ($ac_given_srcdir =~ m%^/%) {
$srcdir=$ac_given_srcdir.$ac_dir_suffix;
$top_srcdir = $ac_given_srcdir;
} else {
$srcdir = $ac_dots.$ac_given_srcdir.$ac_dir_suffix;
$top_srcdir = $ac_dots.$ac_given_srcdir;
}
if ($ac_given_INSTALL) {
if ($ac_given_INSTALL =~ m%^/% ) {
$INSTALL = $ac_given_INSTALL;
} else {
$INSTALL = $ac_dots.$ac_given_INSTALL;
}
}
print "fast creating $ac_file\n";
unlink $ac_file;
my $ac_comsub="";
my $fname=$ac_file_in;
$fname =~ s%.*/%%;
$configure_input="$ac_file. Generated from $fname by config.pl.";
my $ac_file_inputs;
($ac_file_inputs = $ac_file_in) =~ s%^%$ac_given_srcdir/%;
$ac_file_inputs =~ s%:% $ac_given_srcdir/%g;
patch_file($ac_file, $ac_file_inputs);
++$created_file_count;
}
print "config.pl: fast created $created_file_count file(s).\n";
sub patch_file {
my ($outf, $infiles) = @_;
my $filedata;
my @infiles=split(' ', $infiles);
my $i=0;
foreach my $name (@infiles) {
if (open(CF, "< $name")) {
while (<CF>) {
$filedata .= $_;
}
close(CF);
} else {
print STDERR "can't open $name: $!"."\n";
}
}
$filedata =~ s%\@configure_input\@%$configure_input%g;
$filedata =~ s%\@srcdir\@%$srcdir%g;
$filedata =~ s%\@top_srcdir\@%$top_srcdir%g;
$filedata =~ s%\@INSTALL\@%$INSTALL%g;
if ($bad_perl) {
while ($i <= $#comp_subs) {
my $ref = $comp_subs[$i];
&$ref(\$filedata);
$i++;
}
} else {
while ($i <= $#comp_match) {
$filedata =~ s/$comp_match[$i]/$comp_subs[$i]/g;
$i++;
}
}
open(CF, "> $outf") || die "can't create $outf: $!";
print CF $filedata;
close(CF);
}
sub make_closure {
my ($pat, $sub) = @_;
my $ret = eval "return sub { my \$ref=shift; \$\$ref =~ s%\Q$pat\E%\Q$sub\E%g; }";
if ($@) {
print "can't create CODE: $@\n";
}
return $ret;
}

1552
admin/config.sub vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,45 @@
# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
# And if so, warn when they don't match
if test "$kde_libs_prefix" != "$given_prefix"; then
# And if kde doesn't know about the prefix yet
echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
if test $? -ne 0; then
echo ""
echo "Warning: you chose to install this package in $given_prefix,"
echo "but KDE was found in $kde_libs_prefix."
echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
echo "Then restart KDE."
echo ""
fi
fi
fi
if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
echo ""
echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
echo "was not included. Therefore, GCC symbol visibility support remains disabled."
echo ""
echo "For better performance, consider including the Qt visibility supporting patch"
echo "located at:"
echo ""
echo "http://bugs.kde.org/show_bug.cgi?id=109386"
echo ""
echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
echo "everything will continue to work just fine without it."
echo ""
fi
if test "$all_tests" = "bad"; then
if test ! "$cache_file" = "/dev/null"; then
echo ""
echo "Please remove the file $cache_file after changing your setup"
echo "so that configure will find the changes next time."
echo ""
fi
else
echo ""
echo "Good - your configure finished. Start make now"
echo ""
fi

@ -0,0 +1,57 @@
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
# Original Author was Kalle@kde.org
# I lifted it in some mater. (Stephan Kulow)
# I used much code from Janos Farkas
dnl Process this file with autoconf to produce a configure script.
AC_INIT(acinclude.m4) dnl a source file from your sub dir
dnl This is so we can use kde-common
AC_CONFIG_AUX_DIR(admin)
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH
dnl Checking host/target/build systems, for make, install etc.
AC_CANONICAL_SYSTEM
dnl Perform program name transformation
AC_ARG_PROGRAM
dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(@MODULENAME@, @VERSION@) dnl searches for some needed programs
KDE_SET_PREFIX
dnl generate the config header
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
dnl Checks for programs.
AC_CHECK_COMPILERS
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
KDE_PROG_LIBTOOL
dnl for NLS support. Call them in this order!
dnl WITH_NLS is for the po files
AM_KDE_WITH_NLS
dnl KDE_USE_QT
AC_PATH_KDE

@ -0,0 +1,87 @@
#! /usr/bin/perl
#
# This script recursively (beginning with the current directory)
# wipes out everything not registered in CVS.
#
# written by Oswald Buddenhagen <ossi@kde.org>
# inspired by the "old" cvs-clean target from Makefile.common
#
# This file is free software in terms of the BSD license. That means
# that you can do anything with it except removing this license or
# the above copyright notice. There is NO WARRANTY of any kind.
#
sub rmrf()
{
my $fn = shift;
lstat ($fn);
if (-d _) {
if (opendir (DIR, $fn)) {
for my $efn (grep (!/^\.\.?$/, readdir (DIR))) {
&rmrf ($fn."/".$efn);
}
closedir (DIR);
rmdir ($fn);
}
} else {
unlink ($fn);
}
}
sub newfiles()
{
my ($indir, $incvs) = @_;
for my $n (keys (%$incvs)) { delete $$indir{$n} }
return sort (keys (%$indir));
}
sub cvsclean()
{
my $dir = shift;
my (%dirsdir, %filesdir, %dirscvs, %filescvs);
my $dnam = $dir ? $dir : ".";
if (!opendir (DIR, $dnam)) {
print STDERR "Cannot enter \"".$dnam."\".\n";
return;
}
for my $fn (grep (!/^\.\.?$/, readdir (DIR))) {
if (-d $dir.$fn) {
$fn eq "CVS" or $dirsdir{$fn} = 1;
} else {
$filesdir{$fn} = 1;
}
}
closedir (DIR);
if (!open (FILE, "<".$dir."CVS/Entries")) {
print STDERR "No CVS information in \"".$dnam."\".\n";
return;
}
while (<FILE>) {
m%^D/([^/]+)/.*$% and $dirscvs{$1} = 1;
m%^/([^/]+)/.*$% and $filescvs{$1} = 1;
}
close (FILE);
if (open (FILE, "<".$dir."CVS/Entries.Log")) {
while (<FILE>) {
m%^A D/([^/]+)/.*$% and $dirscvs{$1} = 1;
m%^A /([^/]+)/.*$% and $filescvs{$1} = 1;
m%^R D/([^/]+)/.*$% and delete $dirscvs{$1};
m%^R /([^/]+)/.*$% and delete $filescvs{$1};
}
close (FILE);
}
for my $fn (&newfiles (\%filesdir, \%filescvs)) {
print ("F ".$dir.$fn."\n");
&rmrf ($dir.$fn);
}
for my $fn (&newfiles (\%dirsdir, \%dirscvs)) {
print ("D ".$dir.$fn."\n");
&rmrf ($dir.$fn);
}
for my $fn (sort (keys (%dirscvs))) {
&cvsclean ($dir.$fn."/");
}
}
&cvsclean ("");

@ -0,0 +1,663 @@
#! /bin/sh
#
# cvs.sh
#
# This file contains support code from Makefile.common
# It defines a shell function for each known target
# and then does a case to call the correct function.
unset MAKEFLAGS
call_and_fix_autoconf()
{
$AUTOCONF || exit 1
if test -r configure.in.in ; then
perl -pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\
\\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\
\\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\
\\n rm -f \\\$CONFIG_STATUS.bak\\nfi\
\\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/; s,^#line.*LINENO.*\$,/* \$& */, ;" configure
fi
}
strip_makefile()
{
if test ! -f $makefile_wo; then
perl -e '$in=0; while ( <> ) { $in = 1 if ($_ =~ m/^if / ); print $_ unless ($in || $_ =~ m/^include /); $in = 0 if ($_ =~ m/^endif/); }' < $makefile_am > $makefile_wo
fi
}
check_autotool_versions()
{
required_autoconf_version="2.53 or newer"
AUTOCONF_VERSION=`$AUTOCONF --version | head -n 1`
case $AUTOCONF_VERSION in
Autoconf*2.5* | autoconf*2.5* ) : ;;
"" )
echo "*** AUTOCONF NOT FOUND!."
echo "*** KDE requires autoconf $required_autoconf_version"
exit 1
;;
* )
echo "*** YOU'RE USING $AUTOCONF_VERSION."
echo "*** KDE requires autoconf $required_autoconf_version"
exit 1
;;
esac
AUTOHEADER_VERSION=`$AUTOHEADER --version | head -n 1`
case $AUTOHEADER_VERSION in
Autoconf*2.5* | autoheader*2.5* ) : ;;
"" )
echo "*** AUTOHEADER NOT FOUND!."
echo "*** KDE requires autoheader $required_autoconf_version"
exit 1
;;
* )
echo "*** YOU'RE USING $AUTOHEADER_VERSION."
echo "*** KDE requires autoheader $required_autoconf_version"
exit 1
;;
esac
AUTOMAKE_STRING=`$AUTOMAKE --version | head -n 1`
required_automake_version="1.6.1 or newer"
case $AUTOMAKE_STRING in
automake*1.5d* | automake*1.5* | automake*1.5-* )
echo "*** YOU'RE USING $AUTOMAKE_STRING."
echo "*** KDE requires automake $required_automake_version"
exit 1
;;
automake*1.6.* | automake*1.7* | automake*1.8* | automake*1.9*)
echo "*** $AUTOMAKE_STRING found."
UNSERMAKE=no
;;
"" )
echo "*** AUTOMAKE NOT FOUND!."
echo "*** KDE requires automake $required_automake_version"
exit 1
;;
*unsermake* ) :
echo "*** YOU'RE USING UNSERMAKE."
echo "*** GOOD LUCK!! :)"
UNSERMAKE=unsermake
;;
* )
echo "*** YOU'RE USING $AUTOMAKE_STRING."
echo "*** KDE requires automake $required_automake_version"
exit 1
;;
esac
unset required_automake_version
}
cvs()
{
check_autotool_versions
acinclude_m4
### Make new subdirs and configure.in.
### The make calls could be optimized away here,
### with a little thought.
if test -r configure.in.in; then
rm -f configure.in
echo "*** Creating list of subdirectories"
create_subdirs
if test -r Makefile.am.in; then
echo "*** Creating Makefile.am"
if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./Makefile.am || exit 1
else
Makefile_am
fi
fi
configure_files
echo "*** Creating configure.in"
if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1
else
configure_in
fi
fi
echo "*** Creating aclocal.m4"
$ACLOCAL $ACLOCALFLAGS || exit 1
echo "*** Creating configure"
call_and_fix_autoconf
if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then
echo "*** Creating config.h template"
$AUTOHEADER || exit 1
fi
echo "*** Creating Makefile templates"
$AUTOMAKE || exit 1
if test "$UNSERMAKE" = no; then
echo "*** Postprocessing Makefile templates"
perl -w admin/am_edit || exit 1
fi
if egrep "^cvs-local:" $makefile_am >/dev/null; then \
strip_makefile
$MAKE -f $makefile_wo cvs-local top_srcdir=. || exit 1
fi
echo "*** Creating date/time stamp"
touch stamp-h.in
echo "*** Finished"
echo " Don't forget to run ./configure"
echo " If you haven't done so in a while, run ./configure --help"
}
dist()
{
check_autotool_versions
###
### First build all of the files necessary to do just "make"
###
acinclude_m4
if test -r configure.in.in; then
rm -f configure.in
create_subdirs
if test -r Makefile.am.in; then
if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./Makefile.am || exit 1
else
Makefile_am
fi
fi
configure_files
if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1
else
configure_in
fi
fi
$ACLOCAL $ACLOCALFLAGS
if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then
echo "*** Creating config.h template"
$AUTOHEADER || exit 1
fi
$AUTOMAKE --foreign || exit 1
if test "$UNSERMAKE" = no; then
echo "*** Postprocessing Makefile templates"
perl -w admin/am_edit || exit 1
fi
call_and_fix_autoconf
touch stamp-h.in
if grep "^cvs-local:" $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo cvs-local top_srcdir=.
fi
###
### Then make messages
###
if test -d po; then
LIST=`find ./po -name "*.po"`
for i in $LIST; do
file2=`echo $i | sed -e "s#\.po#\.gmo#"`
msgfmt -o $file2 $i || touch $file2
done
fi
if grep "^cvs-dist-local:" $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo cvs-dist-local top_srcdir=.
fi
}
subdir_dist()
{
$ACLOCAL $ACLOCALFLAGS
$AUTOHEADER
$AUTOMAKE
AUTOMAKE_STRING=`$AUTOMAKE --version | head -n 1`
case $AUTOMAKE_STRING in
*unsermake* ) :
;;
*)
perl -w ../admin/am_edit --path=../admin
esac
call_and_fix_autoconf
touch stamp-h.in
}
configure_in()
{
rm -f configure.in configure.in.new
kde_use_qt_param=
test -f configure.files || { echo "need configure.files for configure.in"; exit 1; }
list=`fgrep -v "configure.in.bot" < configure.files | fgrep -v "configure.in.mid"`
: > configure.in.new
for file in $list; do
echo "dnl =======================================================" >> configure.in.new
echo "dnl FILE: $file" >> configure.in.new
echo "dnl =======================================================" >> configure.in.new
echo "" >> configure.in.new
cat $file >> configure.in.new
done
echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new
if test -f Makefile.am.in; then
subdirs=`cat subdirs`
for dir in $subdirs; do
vdir=`echo $dir | sed -e 's,[-+.@],_,g'`
echo "AM_CONDITIONAL($vdir""_SUBDIR_included, test \"x\$$vdir""_SUBDIR_included\" = xyes)" >> configure.in.new
if test -f "$dir/configure.in"; then
echo "if test \"x\$$vdir""_SUBDIR_included\" = xyes; then " >> configure.in.new
echo " AC_CONFIG_SUBDIRS($dir)" >> configure.in.new
echo "fi" >> configure.in.new
fi
done
fi
echo "AC_CONFIG_FILES([ Makefile ])" >> configure.in.new
if test -f inst-apps; then
topleveldirs=`cat inst-apps`
else
topleveldirs=
for dir in `ls -1d * | sort`; do
if test "$dir" != "debian" && test -d $dir; then
topleveldirs="$topleveldirs $dir"
fi
done
fi
for topleveldir in $topleveldirs; do
if test -f $topleveldir/configure.in; then
continue
fi
if test -f $topleveldir/Makefile.am; then :; else
continue
fi
mfs=`find $topleveldir -follow -name Makefile.am -print | fgrep -v "/." | \
sed -e 's#\./##; s#/Makefile.am$##' | sort | sed -e 's#$#/Makefile#'`
for i in $mfs; do
echo "AC_CONFIG_FILES([ $i ])" >> configure.in.new
done
done
files=`cat configure.files`
list=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"`
for file in $list; do
echo "AC_CONFIG_FILES([ $file ])" >> configure.in.new
done
midfiles=`cat configure.files | fgrep "configure.in.mid"`
test -n "$midfiles" && cat $midfiles >> configure.in.new
echo "AC_OUTPUT" >> configure.in.new
modulename=
if test -f configure.in.in; then
if head -n 2 configure.in.in | egrep "^#MIN_CONFIG\(.*\)$" > /dev/null; then
kde_use_qt_param=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"`
fi
if head -n 2 configure.in.in | egrep "^#MIN_CONFIG" > /dev/null; then
line=`grep "^AM_INIT_AUTOMAKE(" configure.in.in`
if test -n "$line"; then
modulename=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"`
VERSION=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"`
fi
sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \
configure.in.new > configure.in && mv configure.in configure.in.new
fi
fi
if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then
VERSION="\"3.4.2\""
fi
if test -z "$modulename" || test "$modulename" = "@MODULENAME@"; then
modulename=`pwd`;
modulename=`basename $modulename`
esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"`
modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"`
fi
if test -n "$kde_use_qt_param"; then
sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \
configure.in.new > configure.in && mv configure.in configure.in.new
fi
sed -e "s#@MODULENAME@#$modulename#" configure.in.new |
sed -e "s#@VERSION@#$VERSION#" > configure.in
botfiles=`cat configure.files | egrep "configure.in.bot"`
test -n "$botfiles" && cat $botfiles >> configure.in
cat $admindir/configure.in.bot.end >> configure.in
rm -f configure.in.new
}
configure_files()
{
echo "*** Creating configure.files"
admindir=NO
for i in . .. ../.. ../../..; do
if test -x $i/admin; then admindir=$i/admin; break; fi
done
rm -f configure.files
touch configure.files
if test -f configure.in.in && head -n 2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then
echo $admindir/configure.in.min >> configure.files
fi
test -f configure.in.in && echo configure.in.in >> configure.files
# we collect files in the subdirs and do some sorting tricks, so subsubdirs come after subdirs
if test -f inst-apps; then
inst=`cat inst-apps`
list=""
for i in $inst; do
list="$list `find $i/ -follow -name "configure.in.in" -o -name "configure.in.bot" -o -name "configure.in.mid" | \
sed -e "s,/configure,/aaaconfigure," | sort | sed -e "s,/aaaconfigure,/configure,"`"
done
else
list=`find . -follow -name "configure.in.in" -o -name "configure.in.bot" -o -name "configure.in.mid" | \
sed -e "s,/configure,/aaaconfigure," | sort | sed -e "s,/aaaconfigure,/configure,"`
fi
for i in $list; do if test -f $i && test `dirname $i` != "." ; then
echo $i >> configure.files
fi; done
test -f configure.in.mid && echo configure.in.mid >> configure.files
test -f configure.in.bot && echo configure.in.bot >> configure.files
if test ! -s configure.files; then
echo "There are no files to build a configure. Please check your checkout."
exit 1
fi
}
create_subdirs()
{
if grep '\$(top_srcdir)/subdirs:' $makefile_am >/dev/null; then
# as many modules contain rules to create subdirs without any
# dependencies make won't create it unless there is no file.
# so we check if that's a dummy rule or one that works
rm -f subdirs.cvs.sh.$$
if test -f subdirs; then
mv subdirs subdirs.cvs.sh.$$
fi
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./subdirs || exit 1
if test -f subdirs.cvs.sh.$$; then
if test -s subdirs; then
rm subdirs.cvs.sh.$$
else
mv subdirs.cvs.sh.$$ subdirs
fi
fi
else
subdirs
fi
}
subdirs()
{
dirs=
idirs=
if test -f inst-apps; then
idirs=`cat inst-apps`
else
idirs=`ls -1 | sort`
fi
compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1`
compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1`
for i in $idirs; do
if test -f $i/Makefile.am; then
case " $compilefirst $compilelast " in
*" $i "*) ;;
*) dirs="$dirs $i"
esac
fi
done
: > ./_SUBDIRS
for d in $compilefirst; do
echo $d >> ./_SUBDIRS
done
(for d in $dirs; do
list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1`
for s in $list; do
echo $s $d
done
list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1`
for s in $list; do
echo $d $s
done
echo $d $d
done ) | tsort >> ./_SUBDIRS
for d in $compilelast; do
echo $d >> ./_SUBDIRS
done
if test -r subdirs && cmp -s subdirs _SUBDIRS; then
rm -f _SUBDIRS
fi
test -r _SUBDIRS && mv _SUBDIRS subdirs || true
}
Makefile_am()
{
if test -f Makefile.am.in; then
compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1`
compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1`
idirs=
dirs=
if test -f inst-apps; then
idirs=`cat inst-apps`
else
idirs=`cat subdirs`
fi
for i in $idirs; do
case " $compilefirst $compilelast " in
*" $i "*) ;;
*) dirs="$dirs $i"
esac
done
adds=`fgrep '$(top_srcdir)/acinclude.m4:' Makefile.am.in | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir)/,,g'`
if echo "$adds" | fgrep "*" >/dev/null ; then
adds=`ls -d -1 $adds 2>/dev/null`
fgrep -v '$(top_srcdir)/acinclude.m4:' Makefile.am.in > Makefile.am.in.adds
str='$(top_srcdir)/acinclude.m4:'
for add in $adds; do
str="$str \$(top_srcdir)/$add"
done
echo $str >> Makefile.am.in.adds
else
cat Makefile.am.in > Makefile.am.in.adds
fi
cat Makefile.am.in.adds | \
sed -e 's,^\s*\(COMPILE_BEFORE.*\),# \1,' | \
sed -e 's,^\s*\(COMPILE_AFTER.*\),# \1,' > Makefile.am
echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am
rm Makefile.am.in.adds
fi
}
acinclude_m4()
{
echo "*** Creating acinclude.m4"
adds=
if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then
strip_makefile
rm -f acinclude.m4
adds=`grep '\$(top_srcdir)/acinclude.m4:' $makefile_wo | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir),.,g'`
if echo $adds | fgrep "*" >/dev/null ; then
adds=`ls -d -1 $adds 2>/dev/null`
else
$MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 || exit 1
fi
else
rm -f acinclude.m4
fi
# if it wasn't created up to now, then we do it better
if test ! -f acinclude.m4; then
cat admin/acinclude.m4.in admin/libtool.m4.in admin/pkg.m4.in $adds > acinclude.m4
fi
}
cvs_clean()
{
if test -d CVS; then :; else
echo "You don't have a toplevel CVS directory."
echo "You most certainly didn't use cvs to get these sources."
echo "But this function depends on cvs's information."
exit 1
fi
perl $admindir/cvs-clean.pl
}
package_merge()
{
catalogs=$POFILES
for cat in $catalogs; do
msgmerge -o $cat.new $cat $PACKAGE.pot
if test -s $cat.new; then
grep -v "\"POT-Creation" $cat.new > $cat.new.2
grep -v "\"POT-Creation" $cat >> $cat.new.1
if diff $cat.new.1 $cat.new.2; then
rm $cat.new
else
mv $cat.new $cat
fi
rm -f $cat.new.1 $cat.new.2
fi
done
}
extract_messages()
{
podir=${podir:-$PWD/po}
files=`find . -name Makefile.am | xargs egrep -l '^messages:' `
dirs=`for i in $files; do echo \`dirname $i\`; done`
tmpname="$PWD/messages.log"
if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi
if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi
export EXTRACTRC PREPARETIPS
for subdir in $dirs; do
test -z "$VERBOSE" || echo "Making messages in $subdir"
(cd $subdir
if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then
$EXTRACTRC *.rc *.ui *.kcfg > rc.cpp
else
candidates=`ls -1 *.rc *.ui *.kcfg 2>/dev/null`
if test -n "$candidates"; then
echo "$subdir has *.rc, *.ui or *.kcfg files, but not correct messages line"
fi
fi
if find . -name \*.c\* -o -name \*.h\* | fgrep -v ".svn" | xargs fgrep -s -q KAboutData ; then
echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp
else echo " " > _translatorinfo.cpp
fi
perl -e '$mes=0; while (<STDIN>) { next if (/^(if\s|else\s|endif)/); if (/^messages:/) { $mes=1; print $_; next; } if ($mes) { if (/$\\(XGETTEXT\)/ && / -o/) { s/ -o \$\(podir\)/ _translatorinfo.cpp -o \$\(podir\)/ } print $_; } else { print $_; } }' < Makefile.am | egrep -v '^include ' > _transMakefile
kdepotpath=${includedir:-`kde-config --expandvars --install include`}/kde.pot
$MAKE -s -f _transMakefile podir=$podir EXTRACTRC="$EXTRACTRC" PREPARETIPS="$PREPARETIPS" srcdir=. \
XGETTEXT="${XGETTEXT:-xgettext} --foreign-user -C -ci18n -ki18n -ktr2i18n -kI18N_NOOP -kI18N_NOOP2 -kaliasLocale -x $kdepotpath" messages
exit_code=$?
if test "$exit_code" != 0; then
echo "make exit code: $exit_code"
fi
) 2>&1 | grep -v '^make\[1\]' > $tmpname
test -s $tmpname && { echo $subdir ; cat "$tmpname"; }
test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp
rm -f $subdir/_translatorinfo.cpp
rm -f $subdir/_transMakefile
done
rm -f $tmpname
}
package_messages()
{
rm -rf po.backup
mkdir po.backup
for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i
cat po/$i > po.backup/backup_$i
touch -r po/$i po.backup/backup_$i
rm po/$i
done
extract_messages
for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do
test -f po/$i || echo "disappeared: $i"
done
for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
sed -e 's,^"Content-Type: text/plain; charset=CHARSET\\n"$,"Content-Type: text/plain; charset=UTF-8\\n",' po/$i > po/$i.new && mv po/$i.new po/$i
#msgmerge -q -o po/$i po/$i po/$i
egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot
if test -f po.backup/$i && ! cmp -s temp.pot po.backup/$i; then
echo "will update $i"
else
if test -f po.backup/backup_$i; then
test -z "$VERBOSE" || echo "I'm restoring $i"
mv po.backup/backup_$i po/$i
rm po.backup/$i
else
echo "will add $i"
fi
fi
done
rm -f temp.pot
rm -rf po.backup
}
unset LC_ALL || :
unset LANG || :
unset LC_CTYPE || :
unset LANGUAGE || :
unset CDPATH || :
admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'`
test "x$admindir" = "x$0" && admindir=.
test "x$MAKE" = x && MAKE=make
makefile_am=Makefile.am
makefile_wo=Makefile.am.wo
if test -f Makefile.am.in; then
makefile_am=Makefile.am.in
makefile_wo=Makefile.am.in.wo
rm -f $makefile_wo
fi
# Suck in the AUTOCONF detection code
. $admindir/detect-autoconf.sh
###
### Main
###
arg=`echo $1 | tr .- __`
case $arg in
cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \
cvs_clean | package_merge | package_messages | Makefile_am | acinclude_m4 | extract_messages ) $arg ;;
configure ) call_and_fix_autoconf ;;
* ) echo "Usage: cvs.sh <target>"
echo "Target can be one of:"
echo " cvs cvs-clean dist"
echo " configure.in configure.files"
echo " package-merge package-messages"
echo ""
echo "Usage: anything but $1"
exit 1 ;;
esac
if test -f $makefile_wo; then
rm $makefile_wo
fi
exit 0

@ -0,0 +1,43 @@
#!/usr/bin/perl -w
use Shell qw(mv cp mkdir rm) ;
use File::Find;
use Cwd;
$origPwd = `pwd`;
chomp $origPwd;
$kde_prefix = "/usr";
$sysconfdir = "/etc";
$kde_includedir = "$kde_prefix/include/kde";
$infodir = "$kde_prefix/share/info";
$mandir = "$kde_prefix/share/man";
$qtdir = "/usr/share/qt3";
$kde_cgidir = "$kde_prefix/lib/cgi-bin";
$kde_confdir = "$sysconfdir/kde3";
$kde_htmldir = "$kde_prefix/share/doc/kde/HTML";
if (defined $ENV{DEB_BUILD_OPTIONS} &&
$ENV{DEB_BUILD_OPTIONS} =~ /\bnostrip\b/) {
$enable_debug="--enable-debug=full";
} else {
$enable_debug="--disable-debug";
}
if (@ARGV && $ARGV[0] eq 'echodirs') {
print STDOUT "export kde_prefix=$kde_prefix\n";
print STDOUT "export sysconfdir=$sysconfdir\n";
print STDOUT "export kde_includedir=$kde_includedir\n";
print STDOUT "export infodir=$infodir\n";
print STDOUT "export mandir=$mandir\n";
print STDOUT "export qtdir=$qtdir\n";
print STDOUT "export kde_cgidir=$kde_cgidir\n";
print STDOUT "export kde_confdir=$kde_confdir\n";
print STDOUT "export kde_htmldir=$kde_htmldir\n";
print STDOUT "configkde=$enable_debug --disable-rpath --prefix=\$(kde_prefix) --sysconfdir=\$(sysconfdir) --includedir=\$(kde_includedir) --infodir=\$(infodir) --mandir=\$(mandir) --with-qt-dir=\$(qtdir)\n";
exit
}

@ -0,0 +1,441 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
# Copyright 1999, 2000 Free Software Foundation, Inc.
# 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, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# `libtool' can also be set to `yes' or `no'.
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. This file always lives in the current directory.
# Also, the AIX compiler puts `$object:' at the start of each line;
# $object doesn't have directory information.
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
outname="$stripped.o"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Must come before tru64.
# Intel's C compiler understands `-MD -MF file'. However
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
tru64)
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
tmpdepfile1="$object.d"
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
if test "$libtool" = yes; then
"$@" -Wc,-MD
else
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
if test -f "$tmpdepfile1"; then
tmpdepfile="$tmpdepfile1"
else
tmpdepfile="$tmpdepfile2"
fi
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a space and a tab in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
test -z "$dashmflag" && dashmflag=-M
( IFS=" "
case " $* " in
*" --mode=compile "*) # this is libtool, let us make it quiet
for arg
do # cycle over the arguments
case "$arg" in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
# X makedepend
(
shift
cleared=no
for arg in "$@"; do
case $cleared in no)
set ""; shift
cleared=yes
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift;;
-*)
;;
*)
set fnord "$@" "$arg"; shift;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tail +3 "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
( IFS=" "
case " $* " in
*" --mode=compile "*)
for arg
do # cycle over the arguments
case $arg in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" -E |
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
( IFS=" "
case " $* " in
*" --mode=compile "*)
for arg
do # cycle over the arguments
case $arg in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0

@ -0,0 +1,19 @@
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in $(top_srcdir)/admin/cvs.sh $(top_srcdir)/admin/pkg.m4.in
@cd $(top_srcdir) && $(SHELL) admin/cvs.sh acinclude_m4
$(top_srcdir)/configure.in: $(top_srcdir)/subdirs $(top_srcdir)/configure.files $(top_srcdir)/admin/cvs.sh
@cd $(top_srcdir) && $(SHELL) admin/cvs.sh configure_in
$(top_srcdir)/configure.files: $(top_srcdir)/subdirs $(CONF_FILES)
@cd $(top_srcdir) && $(SHELL) admin/cvs.sh configure.files $(top_srcdir)/admin/cvs.sh
$(top_srcdir)/Makefile.am: $(top_srcdir)/Makefile.am.in $(top_srcdir)/subdirs $(top_srcdir)/admin/cvs.sh
@cd $(top_srcdir) && $(SHELL) admin/cvs.sh Makefile_am
$(top_srcdir)/subdirs: $(top_srcdir)/Makefile.am.in $(top_srcdir)/admin/cvs.sh
@cd $(top_srcdir) && $(SHELL) admin/cvs.sh subdirs
# defining default rules for files that may not be present
$(top_srcdir)/Makefile.am.in:
$(CONF_FILES):

@ -0,0 +1,59 @@
#! /bin/sh
# Global variables...
AUTOCONF="autoconf"
AUTOHEADER="autoheader"
AUTOM4TE="autom4te"
AUTOMAKE="automake"
ACLOCAL="aclocal"
# Please add higher versions first. The last version number is the minimum
# needed to compile KDE. Do not forget to include the name/version #
# separator if one is present, e.g. -1.2 where - is the separator.
KDE_AUTOCONF_VERS="-2.58 -2.57 257 -2.54 -2.53a -2.53 -2.52 -2.5x"
KDE_AUTOMAKE_VERS="-1.7 17 -1.6"
# We don't use variable here for remembering the type ... strings. Local
# variables are not that portable, but we fear namespace issues with our
# includer.
checkAutoconf()
{
for kde_autoconf_version in $KDE_AUTOCONF_VERS; do
if test -x "`$WHICH $AUTOCONF$kde_autoconf_version 2>/dev/null`"; then
AUTOCONF="`$WHICH $AUTOCONF$kde_autoconf_version`"
AUTOHEADER="`$WHICH $AUTOHEADER$kde_autoconf_version`"
AUTOM4TE="`$WHICH $AUTOM4TE$kde_autoconf_version`"
break
fi
done
}
checkAutomake ()
{
for kde_automake_version in $KDE_AUTOMAKE_VERS; do
if test -x "`$WHICH $AUTOMAKE$kde_automake_version 2>/dev/null`"; then
AUTOMAKE="`$WHICH $AUTOMAKE$kde_automake_version`"
ACLOCAL="`$WHICH $ACLOCAL$kde_automake_version`"
break
fi
done
if test "$UNSERMAKE" != no && test -x "`$WHICH unsermake 2>/dev/null`"; then
AUTOMAKE="`$WHICH unsermake` -c"
fi
}
checkWhich ()
{
WHICH=""
for i in "type -p" "which" "type" ; do
T=`$i sh 2> /dev/null`
test -x "$T" && WHICH="$i" && break
done
}
checkWhich
checkAutoconf
checkAutomake
export WHICH AUTOHEADER AUTOCONF AUTOM4TE AUTOMAKE ACLOCAL

@ -0,0 +1,276 @@
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd=$cpprog
shift
continue;;
-d) dir_arg=true
shift
continue;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "$0: no input file specified" >&2
exit 1
else
:
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if [ -d "$dst" ]; then
instcmd=:
chmodcmd=""
else
instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f "$src" ] || [ -d "$src" ]
then
:
else
echo "$0: $src does not exist" >&2
exit 1
fi
if [ x"$dst" = x ]
then
echo "$0: no destination specified" >&2
exit 1
else
:
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d "$dst" ]
then
dst=$dst/`basename "$src"`
else
:
fi
fi
## this sed command emulates the dirname command
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=''
while [ $# -ne 0 ] ; do
pathcomp=$pathcomp$1
shift
if [ ! -d "$pathcomp" ] ;
then
$mkdirprog "$pathcomp"
else
:
fi
pathcomp=$pathcomp/
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd "$dst" &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
else
# If we're going to rename the final executable, determine the name now.
if [ x"$transformarg" = x ]
then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if [ x"$dstfile" = x ]
then
dstfile=`basename "$dst"`
else
:
fi
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/#inst.$$#
rmtmp=$dstdir/#rm.$$#
# Trap to clean up temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
# Now remove or move aside any old file at destination location. We try this
# two ways since rm can't unlink itself on some systems and the destination
# file might be busy for other reasons. In this case, the final cleanup
# might fail but the new file should still install successfully.
{
if [ -f "$dstdir/$dstfile" ]
then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
{
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit
}

5891
admin/libtool.m4.in vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,336 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# 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, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case "$1" in
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing 0.4 - GNU automake"
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
aclocal*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them.
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
fi
if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
# We have makeinfo, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
fi
touch $file
;;
tar)
shift
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0

@ -0,0 +1,111 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain
errstatus=0
dirmode=""
usage="\
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
# process command line arguments
while test $# -gt 0 ; do
case $1 in
-h | --help | --h*) # -h for help
echo "$usage" 1>&2
exit 0
;;
-m) # -m PERM arg
shift
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
dirmode=$1
shift
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done
for file
do
if test -d "$file"; then
shift
else
break
fi
done
case $# in
0) exit 0 ;;
esac
case $dirmode in
'')
if mkdir -p -- . 2>/dev/null; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
fi
;;
*)
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
fi
;;
esac
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=""
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
pathcomp="$pathcomp/"
done
done
exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# End:
# mkinstalldirs ends here

@ -0,0 +1,371 @@
#!/usr/bin/perl -w
# Check namespace cleanness of a library.
# Allowed symbols are passed as arguments.
# They may have trailing * = wildcard.
# Wildcards may be also specified as *::* (e.g. K*::* for all KDE classes)
# Symbols are listed as full function unmangled names without arguments,
# e.g. 'foo bar* nspace::*' allows foo(), foo(int), bar(), barbar()
# and all symbols in namespace/class nspace.
# If an argument has comma in it, it's a filename of a file containing
# allowed symbols, one per line.
$thisProg = "$0"; # This programs name
$library = "";
$allowed_symbols = "";
$debug = 0;
$allowed_weak = "";
$weak_specified = 0;
while( defined( $ARGV[ 0 ] ))
{
$_ = shift;
if( /^--verbose$|^-v$/ )
{
$debug = 1;
}
elsif( /^--help$|^-h$/ )
{
print STDOUT "Usage $thisProg [OPTION] ... library [allowed symbols] ...\n",
"\n",
"Check if the given library has only allowed public symbols.\n",
"\n",
" --allowweak=[symbol] allow only these weak symbols\n",
" -v, --verbose verbosely list files processed\n",
" -h, --help print this help, then exit\n";
exit 0;
}
elsif( /^--allowweak=(.*)$/ )
{
$allowed_weak .= " " . $1;
$weak_specified = 1;
}
elsif( /^--allowweak$/ ) # simply list all weak
{
$allowed_weak .= " ";
$weak_specified = 1;
}
elsif( /^--*/ )
{
die "Invalid argument!\n";
}
else
{
if( ! $library )
{
$library = $_;
}
else
{
$allowed_symbols .= " " . $_;
}
}
}
if( ! $weak_specified )
{
$allowed_weak = "*";
# allow all weak symbols by default
# instances of templates and similar stuff - unfortunately includes also things from other libraries,
# so it cannot be on by default
}
print STDERR "library:" . $library . "\n" if $debug;
print STDERR "allowed_symbols:" . $allowed_symbols . "\n" if $debug;
print STDERR "allowed_weak:" . $allowed_weak . "\n" if $debug;
$default_symbols = "_fini _init"; # system symbols
# on my system, every .so has :
# A _DYNAMIC
# A _GLOBAL_OFFSET_TABLE_
# A __bss_start
# A _edata
# A _end
# T _fini
# T _init
# no need to list A symbols in $default_symbols
print STDERR "default_symbols: " . $default_symbols . "\n" if $debug;
print STDOUT "Namespace cleanness check for " . $library . " :\n";
$lib_file = "";
if( $library =~ /\.la$/ )
{
# get the real library file from .la
open( FILEIN, $library ) || die "Couldn't open $! !\n";
while( $line = <FILEIN> )
{
if( $line =~ /library_names=\'([^ ]*).*/o )
{
$lib_file = $1;
}
}
close( FILEIN );
if( ! $lib_file )
{
print STDERR "Library file not found in .la file!\n";
exit 1;
}
my $libpath = $library;
$libpath =~ s%[^/]*$%%;
if( -e $libpath . ".libs/" . $lib_file )
{
$lib_file = $libpath . ".libs/" . $lib_file;
}
else
{
$lib_file = $libpath . $lib_file;
}
}
else
{
$lib_file = $library;
}
print STDERR "libfile: ". $lib_file . "\n" if $debug;
$allowed_symbols .= " " . $default_symbols;
sub process_symbols($\@\%\@);
@wildcards = ();
%exacts = ();
@regwildcards = ();
process_symbols( $allowed_symbols, @wildcards, %exacts, @regwildcards );
@weak_wildcards = ();
%weak_exacts = ();
@weak_regwildcards = ();
process_symbols( $allowed_weak, @weak_wildcards, %weak_exacts, @weak_regwildcards );
# grep is for stripping not exported symbols, which don't have address (=first column)
$nm_command = "nm -BDCg " . $lib_file . " | grep -v '^ ' |";
# TODO how portable is this nmcheck stuff?
print STDERR "nm command:" . $nm_command . "\n" if $debug;
open( FILEIN, $nm_command ) || die "nm command failed\n";
my $exit_code = 0;
while( $line = <FILEIN> )
{
my $type;
my $symbol;
if( $line =~ /^[^ ]* (.) (.*)$/o )
{
$type = $1;
$symbol = $2;
}
else
{
die "Invalid line: " . $line . "\n";
}
print STDERR "Type: " . $type . " , symbol: " . $symbol . "\n" if $debug;
if( $type eq "A" )
{ # these should be system symbols, so ignore them
next;
}
my $orig_symbol = $symbol;
if( $symbol =~ /\(anonymous namespace\)/o )
{ # TODO tell to prefer named namespaces? (shorter symbols)
next;
}
# strip prefixes
# the :: appending is to make "CLASS::*" work also for "vtable for CLASS"
$symbol =~ s/^typeinfo for (.*)$/$1::/o;
$symbol =~ s/^typeinfo fn for (.*)$/$1::/o;
$symbol =~ s/^typeinfo name for (.*)$/$1::/o;
$symbol =~ s/^vtable for (.*)$/$1::/o;
$symbol =~ s/^guard variable for (.*)$/$1::/o;
$symbol =~ s/^reference temporary for (.*)$/$1::/o;
$symbol =~ s/^VTT for (.*)$/$1::/o;
$symbol =~ s/^virtual thunk \[[^\]]*\] to (.*)$/$1::/o;
$symbol =~ s/^non-virtual thunk \[[^\]]*\] to (.*)$/$1::/o;
$symbol =~ s/^covariant return thunk \[[^\]]*\] to (.*)$/$1::/o;
$symbol =~ s/^construction vtable thunk for (.*)$/$1::/o;
$symbol =~ s/^construction vtable for .*-in-(.*) [0-9]*$/$1::/o;
# templates seem to have also return types mangled in their name, and nm prints it too
# they have also template arguments in the symbol
# get rid of both of those
while( $symbol =~ /<.*>/o )
{
$symbol =~ s/<[^<>]*>//o; # strip innermost <>
}
if( $symbol !~ /operator\(\)/o )
{
$symbol =~ s/ ?\(.*\).*$//o; # strip () and all after it
}
else
{
$symbol =~ s/(^|:| )operator\(\) ?\(.*\).*$//o; # strip () and all after it
}
$symbol =~ s/\[.*\] *$//o; # strip [in-charge] etc.
if( $symbol =~ /(^|:| )operator /o )
{
$symbol =~ s/.* ([^\s]*)operator /$1/o; # strip everything before 'X::operator blah'
}
else
{
$symbol =~ s/.* ([^\s]+) *$/$1/o; # get last word (strip return type)
}
# print STDERR "Processed symbol: " . $symbol . "\n" if $debug;
my $found = 0;
if( $exacts{ $symbol } )
{
$found = 1;
}
if( ! $found )
{
for my $wild ( @wildcards )
{
if( index( $symbol, $wild ) == 0 )
{
$found = 1;
last;
}
}
}
if( ! $found )
{
for my $wild ( @regwildcards )
{
if( $symbol =~ /^$wild$/ )
{
$found = 1;
last;
}
}
}
if( ( ! $found ) && ( $type eq "W" || $type eq "V" ))
{
if( $weak_exacts{ $symbol } )
{
$found = 1;
}
if( ! $found )
{
for my $wild ( @weak_wildcards )
{
if( index( $symbol, $wild ) == 0 )
{
$found = 1;
last;
}
}
}
if( ! $found )
{
for my $wild ( @weak_regwildcards )
{
if( $symbol =~ /^$wild$/ )
{
$found = 1;
last;
}
}
}
}
if( ! $found )
{
print STDERR "Public symbol " . $orig_symbol . " is not allowed!\n";
$exit_code = 1;
}
}
close( FILEIN );
print STDOUT $exit_code == 0 ? "OK\n" : "FAILED\n";
exit $exit_code;
sub process_symbols($\@\%\@)
{
my $allowed_symbols = $_[ 0 ];
my $wildcards_ref = $_[ 1 ];
my $exacts_ref = $_[ 2 ];
my $regwildcards_ref = $_[ 3 ];
$allowed_symbols =~ s/^ *//o; # strip whitespace
$allowed_symbols =~ s/ *$//o;
if( $allowed_symbols eq "NONE" )
{
$allowed_symbols = "";
}
my @symbols1 = split( ' ', $allowed_symbols );
my $i = 0;
my @symbols2 = ();
while( defined( $symbols1[ $i ] ))
{
my $symbol = $symbols1[ $i ];
if( $symbol =~ /\./ ) # dot in name -> file
{
open( SYMIN, $symbol ) || die ( "Cannot open file " . $symbol . "!" );
while( $line = <SYMIN> )
{
$line =~ s/^\s*//o; # strip whitespace
$line =~ s/\s*$//o;
if( $line !~ /^$/o # empty line
&& $line !~ /^\s*#/ ) # comment line starting with #
{
$symbols2[ $#symbols2 + 1 ] = $line;
}
}
close( SYMIN );
}
else
{
$symbols2[ $#symbols2 + 1 ] = $symbol;
}
$i++;
}
$i = 0;
while( defined( $symbols2[ $i ] ))
{
my $symbol = $symbols2[ $i ];
if( $symbol =~ /__/
|| $symbol =~ /^_[A-Z]/ )
{ # ISO C++ 2.10.2
die "Symbols containing a double underscore or beginning with an underscore and an upper-case letter are reserved!\n";
}
elsif( $symbol eq "main"
|| $symbol eq "main*" )
{
die "Symbol main is not allowed!\n";
}
if( $symbol =~ /^([^\*]*)\*$/o # trailing * without any * before it
&& $symbol !~ /operator\*$/o )
{
print STDERR "wildcard:" . $symbol . "\n" if $debug;
$wildcards_ref->[ $#{$wildcards_ref} + 1 ] = $1;
}
elsif( $symbol =~ /\*$/o
&& ( $symbol =~ /\*::/o || $symbol =~ /::\*/o )
&& $symbol !~ /^\*/o
&& $symbol !~ /operator\*$/o )
{
print STDERR "regwildcard:" . $symbol . "\n" if $debug;
$symbol =~ s/\*/\.\*/go; # change * to .* (regexp)
$regwildcards_ref->[ $#{$regwildcards_ref} + 1 ] = $symbol;
}
else
{
print STDERR "exact:" . $symbol . "\n" if $debug;
$exacts_ref->{ $symbol } = 1;
}
$i++;
}
}

@ -0,0 +1,192 @@
### -*- autoconf -*-
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
AC_DEFUN([KDE_CHECK_MICO],
[
AC_REQUIRE([KDE_CHECK_LIBDL])
AC_REQUIRE([KDE_MISC_TESTS])
AC_MSG_CHECKING(for MICO)
if test -z "$MICODIR"; then
kde_micodir=/usr/local
else
kde_micodir="$MICODIR"
fi
AC_ARG_WITH(micodir,
[ --with-micodir=micodir where mico is installed ],
kde_micodir=$withval,
kde_micodir=$kde_micodir
)
AC_CACHE_VAL(kde_cv_mico_incdir,
[
mico_incdirs="$kde_micodir/include /usr/include /usr/local/include /usr/local/include /opt/local/include $kde_extra_includes"
AC_FIND_FILE(CORBA.h, $mico_incdirs, kde_cv_mico_incdir)
])
kde_micodir=`echo $kde_cv_mico_incdir | sed -e 's#/include##'`
if test ! -r $kde_micodir/include/CORBA.h; then
AC_MSG_ERROR([No CORBA.h found, specify another micodir])
fi
AC_MSG_RESULT($kde_micodir)
MICO_INCLUDES=-I$kde_micodir/include
AC_SUBST(MICO_INCLUDES)
MICO_LDFLAGS=-L$kde_micodir/lib
AC_SUBST(MICO_LDFLAGS)
micodir=$kde_micodir
AC_SUBST(micodir)
AC_MSG_CHECKING([for MICO version])
AC_CACHE_VAL(kde_cv_mico_version,
[
AC_LANG_C
cat >conftest.$ac_ext <<EOF
#include <stdio.h>
#include <mico/version.h>
int main() {
printf("MICO_VERSION=%s\n",MICO_VERSION);
return (0);
}
EOF
ac_compile='${CC-gcc} $CFLAGS $MICO_INCLUDES conftest.$ac_ext -o conftest'
if AC_TRY_EVAL(ac_compile); then
if eval `./conftest 2>&5`; then
kde_cv_mico_version=$MICO_VERSION
else
AC_MSG_ERROR([your system is not able to execute a small application to
find MICO version! Check $kde_micodir/include/mico/version.h])
fi
else
AC_MSG_ERROR([your system is not able to compile a small application to
find MICO version! Check $kde_micodir/include/mico/version.h])
fi
])
dnl installed MICO version
mico_v_maj=`echo $kde_cv_mico_version | sed -e 's/^\(.*\)\..*\..*$/\1/'`
mico_v_mid=`echo $kde_cv_mico_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'`
mico_v_min=`echo $kde_cv_mico_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'`
if test "x$1" = "x"; then
req_version="2.3.0"
else
req_version=$1
fi
dnl required MICO version
req_v_maj=`echo $req_version | sed -e 's/^\(.*\)\..*\..*$/\1/'`
req_v_mid=`echo $req_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'`
req_v_min=`echo $req_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'`
if test "$mico_v_maj" -lt "$req_v_maj" || \
( test "$mico_v_maj" -eq "$req_v_maj" && \
test "$mico_v_mid" -lt "$req_v_mid" ) || \
( test "$mico_v_mid" -eq "$req_v_mid" && \
test "$mico_v_min" -lt "$req_v_min" )
then
AC_MSG_ERROR([found MICO version $kde_cv_mico_version but version $req_version \
at least is required. You should upgrade MICO.])
else
AC_MSG_RESULT([$kde_cv_mico_version (minimum version $req_version, ok)])
fi
LIBMICO="-lmico$kde_cv_mico_version $LIBCRYPT $LIBSOCKET $LIBDL"
AC_SUBST(LIBMICO)
if test -z "$IDL"; then
IDL='$(kde_bindir)/cuteidl'
fi
AC_SUBST(IDL)
IDL_DEPENDENCIES='$(kde_includes)/CUTE.h'
AC_SUBST(IDL_DEPENDENCIES)
idldir="\$(includedir)/idl"
AC_SUBST(idldir)
])
AC_DEFUN([KDE_CHECK_MINI_STL],
[
AC_REQUIRE([KDE_CHECK_MICO])
AC_MSG_CHECKING(if we use mico's mini-STL)
AC_CACHE_VAL(kde_cv_have_mini_stl,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
kde_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $MICO_INCLUDES"
AC_TRY_COMPILE(
[
#include <mico/config.h>
],
[
#ifdef HAVE_MINI_STL
#error "nothing"
#endif
],
kde_cv_have_mini_stl=no,
kde_cv_have_mini_stl=yes)
CXXFLAGS="$kde_save_cxxflags"
AC_LANG_RESTORE
])
if test "x$kde_cv_have_mini_stl" = "xyes"; then
AC_MSG_RESULT(yes)
$1
else
AC_MSG_RESULT(no)
$2
fi
])
])
AC_DEFUN([KDE_CHECK_ANSI],
[
])
AC_DEFUN([KDE_CHECK_INSURE],
[
AC_ARG_ENABLE(insure, [ --enable-insure use insure++ for debugging [default=no]],
[
if test $enableval = "no"; dnl
then ac_use_insure="no"
else ac_use_insure="yes"
fi
], [ac_use_insure="no"])
AC_MSG_CHECKING(if we will use Insure++ to debug)
AC_MSG_RESULT($ac_use_insure)
if test "$ac_use_insure" = "yes"; dnl
then CC="insure"; CXX="insure"; dnl CFLAGS="$CLAGS -fno-rtti -fno-exceptions "????
fi
])
AC_DEFUN([KDE_CHECK_NEWLIBS],
[
])

@ -0,0 +1,57 @@
dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
dnl also defines GSTUFF_PKG_ERRORS on error
AC_DEFUN([PKG_CHECK_MODULES], [
succeeded=no
if test -z "$PKG_CONFIG"; then
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
fi
if test "$PKG_CONFIG" = "no" ; then
echo "*** The pkg-config script could not be found. Make sure it is"
echo "*** in your path, or set the PKG_CONFIG environment variable"
echo "*** to the full path to pkg-config."
echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
AC_MSG_CHECKING(for $2)
if $PKG_CONFIG --exists "$2" ; then
AC_MSG_RESULT(yes)
succeeded=yes
AC_MSG_CHECKING($1_CFLAGS)
$1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
AC_MSG_RESULT($$1_CFLAGS)
AC_MSG_CHECKING($1_LIBS)
$1_LIBS=`$PKG_CONFIG --libs "$2"`
AC_MSG_RESULT($$1_LIBS)
else
$1_CFLAGS=""
$1_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
$1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
ifelse([$4], ,echo $$1_PKG_ERRORS,)
fi
AC_SUBST($1_CFLAGS)
AC_SUBST($1_LIBS)
else
echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
echo "*** See http://www.freedesktop.org/software/pkgconfig"
fi
fi
if test $succeeded = yes; then
ifelse([$3], , :, [$3])
else
ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
fi
])

@ -0,0 +1,143 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
# Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# 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, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Usage:
# ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
# * INPUT is the input file
# * OUTPUT is file PROG generates
# * DESIRED is file we actually want
# * PROGRAM is program to run
# * ARGS are passed to PROG
# Any number of OUTPUT,DESIRED pairs may be used.
# The input.
input="$1"
shift
case "$input" in
[\\/]* | ?:[\\/]*)
# Absolute path; do nothing.
;;
*)
# Relative path. Make it absolute.
input="`pwd`/$input"
;;
esac
# The directory holding the input.
input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
# Quote $INPUT_DIR so we can use it in a regexp.
# FIXME: really we should care about more than `.' and `\'.
input_rx=`echo "$input_dir" | sed -e 's,\\\\,\\\\\\\\,g' -e 's,\\.,\\\\.,g'`
echo "got $input_rx"
pairlist=
while test "$#" -ne 0; do
if test "$1" = "--"; then
shift
break
fi
pairlist="$pairlist $1"
shift
done
# The program to run.
prog="$1"
shift
# Make any relative path in $prog absolute.
case "$prog" in
[\\/]* | ?:[\\/]*) ;;
*[\\/]*) prog="`pwd`/$prog" ;;
esac
# FIXME: add hostname here for parallel makes that run commands on
# other machines. But that might take us over the 14-char limit.
dirname=ylwrap$$
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
mkdir $dirname || exit 1
cd $dirname
$prog ${1+"$@"} "$input"
status=$?
if test $status -eq 0; then
set X $pairlist
shift
first=yes
# Since DOS filename conventions don't allow two dots,
# the DOS version of Bison writes out y_tab.c instead of y.tab.c
# and y_tab.h instead of y.tab.h. Test to see if this is the case.
y_tab_nodot="no"
if test -f y_tab.c || test -f y_tab.h; then
y_tab_nodot="yes"
fi
while test "$#" -ne 0; do
from="$1"
# Handle y_tab.c and y_tab.h output by DOS
if test $y_tab_nodot = "yes"; then
if test $from = "y.tab.c"; then
from="y_tab.c"
else
if test $from = "y.tab.h"; then
from="y_tab.h"
fi
fi
fi
if test -f "$from"; then
# If $2 is an absolute path name, then just use that,
# otherwise prepend `../'.
case "$2" in
[\\/]* | ?:[\\/]*) target="$2";;
*) target="../$2";;
esac
# Edit out `#line' or `#' directives. We don't want the
# resulting debug information to point at an absolute srcdir;
# it is better for it to just mention the .y file with no
# path.
sed -e "/^#/ s,$input_rx,," "$from" > "$target" || status=$?
else
# A missing file is only an error for the first file. This
# is a blatant hack to let us support using "yacc -d". If -d
# is not specified, we don't want an error when the header
# file is "missing".
if test $first = yes; then
status=1
fi
fi
shift
shift
first=no
done
else
status=$?
fi
# Remove the directory.
cd ..
rm -rf $dirname
exit $status

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,471 @@
# This file was generated.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal-1.9/amversion.m4',
'/usr/share/aclocal-1.9/auxdir.m4',
'/usr/share/aclocal-1.9/cond.m4',
'/usr/share/aclocal-1.9/depend.m4',
'/usr/share/aclocal-1.9/depout.m4',
'/usr/share/aclocal-1.9/header.m4',
'/usr/share/aclocal-1.9/init.m4',
'/usr/share/aclocal-1.9/install-sh.m4',
'/usr/share/aclocal-1.9/lead-dot.m4',
'/usr/share/aclocal-1.9/lex.m4',
'/usr/share/aclocal-1.9/make.m4',
'/usr/share/aclocal-1.9/missing.m4',
'/usr/share/aclocal-1.9/mkdirp.m4',
'/usr/share/aclocal-1.9/options.m4',
'/usr/share/aclocal-1.9/runlog.m4',
'/usr/share/aclocal-1.9/sanity.m4',
'/usr/share/aclocal-1.9/strip.m4',
'/usr/share/aclocal-1.9/tar.m4',
'acinclude.m4',
'configure.in'
],
{
'AM_ENABLE_STATIC' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_C_VOLATILE' => 1,
'AM_FUNC_ERROR_AT_LINE' => 1,
'AC_REMOVE_FORBIDDEN' => 1,
'KDE_CHECK_PYTHON_INTERN' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_CREATE_KFSSTND' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'KDE_FIND_IMLIB2_CONFIG' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FIND_JPEG' => 1,
'KDE_JAVA_PREFIX' => 1,
'KDE_CHECK_LIBDL' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'_m4_warn' => 1,
'AC_CHECK_GETDOMAINNAME' => 1,
'KDE_CREATE_LIBS_ALIASES' => 1,
'AM_SANITY_CHECK' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_FIND_TIFF' => 1,
'KDE_CHECK_COMPILER_FLAG' => 1,
'AC_LIBTOOL_GCJ' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'KDE_CHECK_FINAL' => 1,
'K_PATH_X' => 1,
'KDE_DO_IT_ALL' => 1,
'sinclude' => 1,
'AM_DISABLE_SHARED' => 1,
'AC_CHECK_RANDOM' => 1,
'_LT_AC_LANG_CXX' => 1,
'AC_FUNC_FORK' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'KDE_SET_DEFAULT_PATHS' => 1,
'AC_PROG_NM' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AC_INIT' => 1,
'AC_SUBST_KFSSTND' => 1,
'AC_CHECK_STRLCAT' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'KDE_PRINT_QT_PROGRAM' => 1,
'AC_CANONICAL_HOST' => 1,
'KDE_CHECK_TYPES' => 1,
'AC_PROG_RANLIB' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_CHECK_S_ISSOCK' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_DEFUN_ONCE' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AM_LC_MESSAGES' => 1,
'_LT_AC_LANG_GCJ' => 1,
'AC_CHECK_SETENV' => 1,
'AC_FUNC_STRFTIME' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'AC_BASE_PATH_KDE' => 1,
'LT_AC_PROG_SED' => 1,
'AM_GNU_GETTEXT' => 1,
'KDE_CHECK_STRLCPY' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'KDE_FIND_PATH' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_ENABLE_SHARED' => 1,
'KDE_PATH_X_DIRECT' => 1,
'AC_PATH_QT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'_LT_AC_TAGVAR' => 1,
'AC_PATH_QT_MOC_UIC' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_PROG_LN_S' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AM_MAKE_INCLUDE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CHECK_UTMP_FILE' => 1,
'KDE_CHECK_UIC_PLUGINS' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_HEADER_TIME' => 1,
'AC_CHECK_GNU_EXTENSIONS' => 1,
'AC_TYPE_MODE_T' => 1,
'AM_MISSING_HAS_RUN' => 1,
'KDE_CHECK_PATHS_FOR_COMPLETENESS' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'KDE_PROG_LIBTOOL' => 1,
'KDE_CHECK_QT_JPEG' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_PATH_QT_1_3' => 1,
'AC_HEADER_STDC' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'AM_DISABLE_LIBRARIES' => 1,
'LT_AC_PROG_GCJ' => 1,
'KDE_FAST_CONFIGURE' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AM_DISABLE_STATIC' => 1,
'KDE_MOC_ERROR_MESSAGE' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AM_CONFIG_HEADER' => 1,
'_AC_PROG_LIBTOOL' => 1,
'AC_TYPE_SIGNAL' => 1,
'KDE_TRY_TIFFLIB' => 1,
'KDE_1_CHECK_PATH_HEADERS' => 1,
'KDE_CHECK_HEADER' => 1,
'KDE_USE_QT' => 1,
'_AM_IF_OPTION' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'KDE_FIND_JPEG_HELPER' => 1,
'm4_pattern_allow' => 1,
'AC_LIBTOOL_F77' => 1,
'AC_CHECK_MKSTEMPS' => 1,
'KDE_SHADOWPASSWD' => 1,
'AM_SET_LEADING_DOT' => 1,
'KDE_CHECK_DLOPEN' => 1,
'AC_FIND_FILE' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'AM_KDE_WITH_NLS' => 1,
'AM_PROG_NM' => 1,
'KDE_CHECK_NMCHECK' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_CHECK_STRLCPY' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'KDE_CHECK_PYTHON_DIR' => 1,
'AC_FUNC_CHOWN' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_HAVE_DPMS' => 1,
'AM_INIT_AUTOMAKE' => 1,
'KDE_LANG_CPLUSPLUS' => 1,
'AC_DISABLE_STATIC' => 1,
'AM_MAINTAINER_MODE' => 1,
'KDE_MISSING_PROG_ERROR' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'AC_CHECK_GETHOSTNAME' => 1,
'KDE_CREATE_SUBDIRSLIST' => 1,
'AC_C_CONST' => 1,
'KDE_CHECK_EXTRA_LIBS' => 1,
'KDE_UIC_ERROR_MESSAGE' => 1,
'AC_PROG_INSTALL' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AH_OUTPUT' => 1,
'AC_CHECK_LIBM' => 1,
'_AM_MANGLE_OPTION' => 1,
'AC_CONFIG_HEADERS' => 1,
'KDE_CHECK_HEADERS' => 1,
'AM_SET_DEPDIR' => 1,
'AC_HAVE_XPM' => 1,
'KDE_CHECK_THREADING' => 1,
'AM_KDE_GNU_GETTEXT' => 1,
'KDE_CHECK_DYNAMIC_LOADING' => 1,
'AC_CHECK_FUNCS' => 1,
'_LT_AC_SHELL_INIT' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_DEFUN' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FUNC_STRTOD' => 1,
'KDE_SET_PATHS' => 1,
'AM_MISSING_PROG' => 1,
'AC_FUNC_STRNLEN' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_PROG_CXX' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'KDE_TRY_LINK_PYTHON' => 1,
'AC_CHECK_MKDTEMP' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AC_PROG_AWK' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'AC_CHECK_BOOL' => 1,
'_AM_PROG_TAR' => 1,
'AC_LIBSOURCE' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_CHECK_KDEMAXPATHLEN' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_PROG_MAKE_SET' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PATH_PROG_WITH_TEST_KDE' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AM_PROG_LD' => 1,
'AC_FIND_QIMGIO' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_CHECK_SOCKLEN_T' => 1,
'AC_FUNC_VPRINTF' => 1,
'AU_DEFUN' => 1,
'KDE_SUBST_PROGRAMS' => 1,
'KDE_CHECK_JAVA_DIR' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_PROG_LD' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'_AM_SET_OPTION' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'KDE_CHECK_UIC_FLAG' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_HAVE_GL' => 1,
'AC_FUNC_MMAP' => 1,
'AC_CHECK_TYPES' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_CHECK_MEMBERS' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'KDE_CHECK_CLOSURE' => 1,
'AC_HEADER_STAT' => 1,
'DEF_PAM_SERVICE' => 1,
'AC_C_INLINE' => 1,
'AC_LIBTOOL_RC' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'AC_CONFIG_FILES' => 1,
'KDE_INIT_DOXYGEN' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'include' => 1,
'KDE_MISSING_ARTS_ERROR' => 1,
'AM_ENABLE_SHARED' => 1,
'AC_CHECK_USLEEP' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AM_CONDITIONAL' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_FUNC_MEMCMP' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AC_PROG_EGREP' => 1,
'KDE_PASSWDLIBS' => 1,
'AM_PROG_OBJC' => 1,
'AC_PATH_MAGIC' => 1,
'KDE_CONF_FILES' => 1,
'm4_pattern_forbid' => 1,
'KDE_CHECK_LONG_LONG' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_DISABLE_SHARED' => 1,
'AC_CHECK_UNSETENV' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_FUNC_GETMNTENT' => 1,
'KDE_CHECK_BINUTILS' => 1,
'AC_FIND_GIF' => 1,
'm4_sinclude' => 1,
'KDE_SET_PREFIX' => 1,
'AC_PATH_X' => 1,
'KDE_CHECK_LIB' => 1,
'KDE_CHECK_LIB64' => 1,
'KDE_CHECK_SSL' => 1,
'KDE_CHECK_STL' => 1,
'AC_CHECK_RES_INIT' => 1,
'AC_LIBTOOL_CXX' => 1,
'LT_AC_PROG_RC' => 1,
'KDE_ADD_INCLUDES' => 1,
'AC_CHECK_RPATH' => 1,
'AM_DEP_TRACK' => 1,
'KDE_PAM' => 1,
'AC_TYPE_UID_T' => 1,
'KDE_MISC_TESTS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'_AM_DEPENDENCIES' => 1,
'KDE_ADD_DEPENDENCIES' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_PROG_CC' => 1,
'AC_FIND_ZLIB' => 1,
'AC_PROG_YACC' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_VALIDIFY_CXXFLAGS' => 1,
'KDE_CHECK_NAMESPACES' => 1,
'AC_FIND_BZIP2' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_PATH_KDE' => 1,
'KDE_CHECK_PTHREAD_OPTION' => 1,
'AC_PATH_QTOPIA' => 1,
'KDE_CHECK_PERL' => 1,
'AC_PROG_CPP' => 1,
'KDE_CHECK_PYTHON' => 1,
'AC_TYPE_PID_T' => 1,
'AC_PROG_LEX' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'KDE_1_CHECK_PATHS' => 1,
'KDE_CHECK_LIBPTHREAD' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'AM_RUN_LOG' => 1,
'AC_CHECK_INITGROUPS' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AM_PROG_LEX' => 1,
'KDE_CHECK_FUNC_EXT' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'KDE_NEED_FLEX' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_FIND_PNG' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AM_FUNC_OBSTACK' => 1,
'AC_CHECK_COMPILERS' => 1,
'KDE_CHECK_KDEQTADDON' => 1,
'KDE_EXPAND_MAKEVAR' => 1,
'AC_FIND_JASPER' => 1,
'KDE_CHECK_QT_DIRECT' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.in'
],
{
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_C_VOLATILE' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_HEADER_TIME' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_FUNC_STRNLEN' => 1,
'm4_sinclude' => 1,
'AC_PROG_CXX' => 1,
'AC_PATH_X' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'AC_PROG_AWK' => 1,
'_m4_warn' => 1,
'AC_HEADER_STDC' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBSOURCE' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_PROG_MAKE_SET' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_PROG_CC' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_FORK' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_FUNC_VPRINTF' => 1,
'AC_PROG_YACC' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'AC_INIT' => 1,
'AC_FUNC_CHOWN' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_PROG_RANLIB' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_FUNC_MMAP' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CHECK_TYPES' => 1,
'LT_SUPPORTED_TAG' => 1,
'AC_CHECK_MEMBERS' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_HEADER_STAT' => 1,
'AC_C_INLINE' => 1,
'AC_PROG_CPP' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AC_C_CONST' => 1,
'AC_PROG_LEX' => 1,
'AC_TYPE_PID_T' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_FUNC_MKTIME' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_FUNC_MEMCMP' => 1,
'AC_PROG_LN_S' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_CHECK_FUNCS' => 1
}
], 'Autom4te::Request' )
);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,250 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
#undef HAVE_CARBON_CARBON_H
/* Define if you have the CoreAudio API */
#undef HAVE_COREAUDIO
/* Define to 1 if you have the <crt_externs.h> header file. */
#undef HAVE_CRT_EXTERNS_H
/* Defines if your system has the crypt function */
#undef HAVE_CRYPT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if you have libjpeg */
#undef HAVE_LIBJPEG
/* Define if you have libpng */
#undef HAVE_LIBPNG
/* Define if you have a working libpthread (will enable threaded code) */
#undef HAVE_LIBPTHREAD
/* Define if you have libz */
#undef HAVE_LIBZ
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if your system needs _NSGetEnviron to set up the environment */
#undef HAVE_NSGETENVIRON
/* Define if you have res_init */
#undef HAVE_RES_INIT
/* Define if you have the res_init prototype */
#undef HAVE_RES_INIT_PROTO
/* Define if you have a STL implementation by SGI */
#undef HAVE_SGI_STL
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have strlcat */
#undef HAVE_STRLCAT
/* Define if you have the strlcat prototype */
#undef HAVE_STRLCAT_PROTO
/* Define if you have strlcpy */
#undef HAVE_STRLCPY
/* Define if you have the strlcpy prototype */
#undef HAVE_STRLCPY_PROTO
/* Define to 1 if you have the <sys/bitypes.h> header file. */
#undef HAVE_SYS_BITYPES_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
/* Define if you have the XComposite extens ion */
#undef HAVE_XCOMPOSITE
/* Define if you have the XDamage extens ion */
#undef HAVE_XDAMAGE
/* Suffix for lib directories */
#undef KDELIBSUFF
/* Define a safe value for MAXPATHLEN */
#undef KDEMAXPATHLEN
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* The size of a `char *', as computed by sizeof. */
#undef SIZEOF_CHAR_P
/* The size of a `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of a `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* The size of a `short', as computed by sizeof. */
#undef SIZEOF_SHORT
/* The size of a `size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T
/* The size of a `unsigned long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Defined if compiling without arts */
#undef WITHOUT_ARTS
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/*
* jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
* headers and I'm too lazy to write a configure test as long as only
* unixware is related
*/
#ifdef _UNIXWARE
#define HAVE_BOOLEAN
#endif
/*
* AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
* that defines bzero.
*/
#if defined(_AIX)
#include <strings.h>
#endif
#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
# include <sys/time.h>
# include <crt_externs.h>
# define environ (*_NSGetEnviron())
#endif
#if !defined(HAVE_RES_INIT_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
int res_init(void);
#ifdef __cplusplus
}
#endif
#endif
#if !defined(HAVE_STRLCAT_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
unsigned long strlcat(char*, const char*, unsigned long);
#ifdef __cplusplus
}
#endif
#endif
#if !defined(HAVE_STRLCPY_PROTO)
#ifdef __cplusplus
extern "C" {
#endif
unsigned long strlcpy(char*, const char*, unsigned long);
#ifdef __cplusplus
}
#endif
#endif
/*
* On HP-UX, the declaration of vsnprintf() is needed every time !
*/
#if !defined(HAVE_VSNPRINTF) || defined(hpux)
#if __STDC__
#include <stdarg.h>
#include <stdlib.h>
#else
#include <varargs.h>
#endif
#ifdef __cplusplus
extern "C"
#endif
int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
#ifdef __cplusplus
extern "C"
#endif
int snprintf(char *str, size_t n, char const *fmt, ...);
#endif
#if defined(__SVR4) && !defined(__svr4__)
#define __svr4__ 1
#endif
/* type to use in place of socklen_t if not defined */
#undef kde_socklen_t
/* type to use in place of socklen_t if not defined (deprecated, use
kde_socklen_t) */
#undef ksize_t

33232
configure vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,2 @@
./admin/configure.in.min
configure.in.in

@ -0,0 +1,208 @@
dnl =======================================================
dnl FILE: ./admin/configure.in.min
dnl =======================================================
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
# Original Author was Kalle@kde.org
# I lifted it in some mater. (Stephan Kulow)
# I used much code from Janos Farkas
dnl Process this file with autoconf to produce a configure script.
AC_INIT(acinclude.m4) dnl a source file from your sub dir
dnl This is so we can use kde-common
AC_CONFIG_AUX_DIR(admin)
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH
dnl Checking host/target/build systems, for make, install etc.
AC_CANONICAL_SYSTEM
dnl Perform program name transformation
AC_ARG_PROGRAM
dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(kompose, 0.5.4) dnl searches for some needed programs
KDE_SET_PREFIX
dnl generate the config header
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
dnl Checks for programs.
AC_CHECK_COMPILERS
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
KDE_PROG_LIBTOOL
dnl for NLS support. Call them in this order!
dnl WITH_NLS is for the po files
AM_KDE_WITH_NLS
KDE_USE_QT(3.2)
AC_PATH_KDE
dnl =======================================================
dnl FILE: configure.in.in
dnl =======================================================
#MIN_CONFIG(3.2)
CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
dnl PACKAGE set before
AC_C_BIGENDIAN
AC_CHECK_KDEMAXPATHLEN
AC_PREREQ(2.52)
X_LIBS="$X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
dnl --- XDamage check
AC_CHECK_HEADER(X11/extensions/Xdamage.h, [
AC_CHECK_LIB(Xdamage, XDamageQueryExtension, [
AC_DEFINE(HAVE_XDAMAGE, 1, [Define if you have the XDamage extens
ion])
LIB_XDAMAGE="-lXdamage -lXfixes"],, [ -L/usr/X11R6/lib $X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS ])
],, [#include <X11/Xlib.h>])
AC_SUBST(LIB_XDAMAGE)
dnl --- XComposite check
AC_CHECK_HEADER(X11/extensions/Xcomposite.h, [
AC_CHECK_LIB(Xcomposite, XCompositeQueryExtension, [
AC_DEFINE(HAVE_XCOMPOSITE, 1, [Define if you have the XComposite extens
ion])
LIB_XCOMPOSITE="-lXcomposite"],, [ -L/usr/X11R6/lib $X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS ])
],, [#include <X11/Xlib.h>])
AC_SUBST(LIB_XCOMPOSITE)
# modified kuickshow imlib search
#
# checking for Imlib2...
dnl --- Imlib2 check
AC_DEFUN([KDE_FIND_IMLIB2_CONFIG],
[AC_MSG_CHECKING([for imlib2-config])
imlib2_config_given=NO
ac_imlib2_config=""
AC_ARG_WITH(imlib2-config,
AC_HELP_STRING([--with-imlib2-config=DIR],[directory where "imlib2-config" is located]),
[ ac_imlib2_config="$withval/imlib2-config"
imlib2_config_given=yes
])
if test "$imlib2_config_given" = "yes"; then
if test ! -r $ac_imlib2_config; then
AC_MSG_RESULT(wrong file specified)
ac_imlib2_config=""
else
AC_MSG_RESULT($ac_imlib2_config)
LIB_IMLIB2=`$ac_imlib2_config --libs`
AC_SUBST(LIB_IMLIB2)
fi
else
ac_imlib2_config=`which imlib2-config 2>/dev/null`
if test -z "$ac_imlib2_config"; then
AC_MSG_RESULT(no)
else
dummy=`echo "$ac_imlib2_config" | grep '/imlib2-config'`
if test -z "$dummy"; then
AC_MSG_RESULT(no)
ac_imlib2_config=""
else
LIB_IMLIB2=`$ac_imlib2_config --libs`
IMLIB2_CFLAGS=`$ac_imlib2_config --cflags`
imlib2_config=`echo "$LIB_IMLIB2" | grep lImlib2`
if test -z "$imlib2_config"; then
AC_MSG_RESULT(no)
ac_imlib2_config=""
else
AC_SUBST(LIB_IMLIB2)
AC_SUBST(IMLIB2_CFLAGS)
AC_MSG_RESULT($ac_imlib2_config)
fi
fi
fi
fi
])
dnl Check if Imlib2 is installed properly
KDE_FIND_IMLIB2_CONFIG
if test -z "$ac_imlib2_config"; then
dnl AC_MSG_ERROR([You need to install Imlib2 1.x from http://www.enlightenment.org/pages/imlib2.html if your distributor doesn't have a package])
echo imlib2-config not found
#DO_NOT_COMPILE="$DO_NOT_COMPILE kompose" # maybe one day we'll be in KDE, so I'll leave this here :)
fi
KDE_CREATE_SUBDIRSLIST
AC_CONFIG_FILES([ Makefile ])
AC_CONFIG_FILES([ doc/Makefile ])
AC_CONFIG_FILES([ doc/en/Makefile ])
AC_CONFIG_FILES([ po/Makefile ])
AC_CONFIG_FILES([ src/Makefile ])
AC_OUTPUT
# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
# And if so, warn when they don't match
if test "$kde_libs_prefix" != "$given_prefix"; then
# And if kde doesn't know about the prefix yet
echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
if test $? -ne 0; then
echo ""
echo "Warning: you chose to install this package in $given_prefix,"
echo "but KDE was found in $kde_libs_prefix."
echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
echo "Then restart KDE."
echo ""
fi
fi
fi
if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
echo ""
echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
echo "was not included. Therefore, GCC symbol visibility support remains disabled."
echo ""
echo "For better performance, consider including the Qt visibility supporting patch"
echo "located at:"
echo ""
echo "http://bugs.kde.org/show_bug.cgi?id=109386"
echo ""
echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
echo "everything will continue to work just fine without it."
echo ""
fi
if test "$all_tests" = "bad"; then
if test ! "$cache_file" = "/dev/null"; then
echo ""
echo "Please remove the file $cache_file after changing your setup"
echo "so that configure will find the changes next time."
echo ""
fi
else
echo ""
echo "Good - your configure finished. Start make now"
echo ""
fi

@ -0,0 +1,91 @@
#MIN_CONFIG(3.2)
CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
AM_INIT_AUTOMAKE(kompose, 0.6)
AC_C_BIGENDIAN
AC_CHECK_KDEMAXPATHLEN
AC_PREREQ(2.52)
X_LIBS="$X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
dnl --- XDamage check
AC_CHECK_HEADER(X11/extensions/Xdamage.h, [
AC_CHECK_LIB(Xdamage, XDamageQueryExtension, [
AC_DEFINE(HAVE_XDAMAGE, 1, [Define if you have the XDamage extens
ion])
LIB_XDAMAGE="-lXdamage -lXfixes"],, [ -L/usr/X11R6/lib $X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS ])
],, [#include <X11/Xlib.h>])
AC_SUBST(LIB_XDAMAGE)
dnl --- XComposite check
AC_CHECK_HEADER(X11/extensions/Xcomposite.h, [
AC_CHECK_LIB(Xcomposite, XCompositeQueryExtension, [
AC_DEFINE(HAVE_XCOMPOSITE, 1, [Define if you have the XComposite extens
ion])
LIB_XCOMPOSITE="-lXcomposite"],, [ -L/usr/X11R6/lib $X_PRE_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS ])
],, [#include <X11/Xlib.h>])
AC_SUBST(LIB_XCOMPOSITE)
# modified kuickshow imlib search
#
# checking for Imlib2...
dnl --- Imlib2 check
AC_DEFUN([KDE_FIND_IMLIB2_CONFIG],
[AC_MSG_CHECKING([for imlib2-config])
imlib2_config_given=NO
ac_imlib2_config=""
AC_ARG_WITH(imlib2-config,
AC_HELP_STRING([--with-imlib2-config=DIR],[directory where "imlib2-config" is located]),
[ ac_imlib2_config="$withval/imlib2-config"
imlib2_config_given=yes
])
if test "$imlib2_config_given" = "yes"; then
if test ! -r $ac_imlib2_config; then
AC_MSG_RESULT(wrong file specified)
ac_imlib2_config=""
else
AC_MSG_RESULT($ac_imlib2_config)
LIB_IMLIB2=`$ac_imlib2_config --libs`
AC_SUBST(LIB_IMLIB2)
fi
else
ac_imlib2_config=`which imlib2-config 2>/dev/null`
if test -z "$ac_imlib2_config"; then
AC_MSG_RESULT(no)
else
dummy=`echo "$ac_imlib2_config" | grep '/imlib2-config'`
if test -z "$dummy"; then
AC_MSG_RESULT(no)
ac_imlib2_config=""
else
LIB_IMLIB2=`$ac_imlib2_config --libs`
IMLIB2_CFLAGS=`$ac_imlib2_config --cflags`
imlib2_config=`echo "$LIB_IMLIB2" | grep lImlib2`
if test -z "$imlib2_config"; then
AC_MSG_RESULT(no)
ac_imlib2_config=""
else
AC_SUBST(LIB_IMLIB2)
AC_SUBST(IMLIB2_CFLAGS)
AC_MSG_RESULT($ac_imlib2_config)
fi
fi
fi
fi
])
dnl Check if Imlib2 is installed properly
KDE_FIND_IMLIB2_CONFIG
if test -z "$ac_imlib2_config"; then
dnl AC_MSG_ERROR([You need to install Imlib2 1.x from http://www.enlightenment.org/pages/imlib2.html if your distributor doesn't have a package])
echo imlib2-config not found
#DO_NOT_COMPILE="$DO_NOT_COMPILE kompose" # maybe one day we'll be in KDE, so I'll leave this here :)
fi

@ -0,0 +1,2 @@
D/en////
/Makefile.am/1.1.1.1/Sun Aug 1 13:47:38 2004//

@ -0,0 +1 @@
kompose/doc

@ -0,0 +1 @@
oisch@cvs.berlios.de:/cvsroot/kompose

@ -0,0 +1,6 @@
# the SUBDIRS is filled automatically by am_edit. If files are
# in this directory they are installed into the english dir
KDE_LANG = en
KDE_DOCS = kompose
SUBDIRS = $(AUTODIRS)

@ -0,0 +1,601 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# the SUBDIRS is filled automatically by am_edit. If files are
# in this directory they are installed into the english dir
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = doc
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTSCCONFIG = @ARTSCCONFIG@
AUTOCONF = @AUTOCONF@
AUTODIRS = @AUTODIRS@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOPIDLNG = @DCOPIDLNG@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GMSGFMT = @GMSGFMT@
IMLIB2_CFLAGS = @IMLIB2_CFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
KCONFIG_COMPILER = @KCONFIG_COMPILER@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LDFLAGS = @LDFLAGS@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBRESOLV = @LIBRESOLV@
LIBS = @LIBS@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBZ = @LIBZ@
LIB_IMLIB2 = @LIB_IMLIB2@
LIB_KAB = @LIB_KAB@
LIB_KABC = @LIB_KABC@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPIM = @LIB_KDEPIM@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_KUTILS = @LIB_KUTILS@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XCOMPOSITE = @LIB_XCOMPOSITE@
LIB_XDAMAGE = @LIB_XDAMAGE@
LIB_XEXT = @LIB_XEXT@
LIB_XRENDER = @LIB_XRENDER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
QTE_NORTTI = @QTE_NORTTI@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XMLLINT = @XMLLINT@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
X_RPATH = @X_RPATH@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
include_ARTS_FALSE = @include_ARTS_FALSE@
include_ARTS_TRUE = @include_ARTS_TRUE@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_kcfgdir = @kde_kcfgdir@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
kdeinitdir = @kdeinitdir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
x_includes = @x_includes@
x_libraries = @x_libraries@
xdg_appsdir = @xdg_appsdir@
xdg_directorydir = @xdg_directorydir@
xdg_menudir = @xdg_menudir@
KDE_LANG = en
KDE_DOCS = kompose
SUBDIRS = $(AUTODIRS)
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-libtool clean-recursive ctags \
ctags-recursive distclean distclean-generic distclean-libtool \
distclean-recursive distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-libtool \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

@ -0,0 +1,3 @@
/Makefile.am/1.1.1.1/Sun Aug 1 13:47:38 2004//
/index.docbook/1.1.1.1/Sun Aug 1 13:47:38 2004//
D

@ -0,0 +1 @@
kompose/doc/en

@ -0,0 +1 @@
oisch@cvs.berlios.de:/cvsroot/kompose

@ -0,0 +1,2 @@
KDE_DOCS = kompose
KDE_LANG = en

@ -0,0 +1,440 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = doc/en
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTSCCONFIG = @ARTSCCONFIG@
AUTOCONF = @AUTOCONF@
AUTODIRS = @AUTODIRS@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOPIDLNG = @DCOPIDLNG@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GMSGFMT = @GMSGFMT@
IMLIB2_CFLAGS = @IMLIB2_CFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
KCONFIG_COMPILER = @KCONFIG_COMPILER@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LDFLAGS = @LDFLAGS@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBRESOLV = @LIBRESOLV@
LIBS = @LIBS@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBZ = @LIBZ@
LIB_IMLIB2 = @LIB_IMLIB2@
LIB_KAB = @LIB_KAB@
LIB_KABC = @LIB_KABC@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPIM = @LIB_KDEPIM@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_KUTILS = @LIB_KUTILS@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XCOMPOSITE = @LIB_XCOMPOSITE@
LIB_XDAMAGE = @LIB_XDAMAGE@
LIB_XEXT = @LIB_XEXT@
LIB_XRENDER = @LIB_XRENDER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
QTE_NORTTI = @QTE_NORTTI@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XMLLINT = @XMLLINT@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
X_RPATH = @X_RPATH@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
include_ARTS_FALSE = @include_ARTS_FALSE@
include_ARTS_TRUE = @include_ARTS_TRUE@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_kcfgdir = @kde_kcfgdir@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
kdeinitdir = @kdeinitdir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
x_includes = @x_includes@
x_libraries = @x_libraries@
xdg_appsdir = @xdg_appsdir@
xdg_directorydir = @xdg_directorydir@
xdg_menudir = @xdg_menudir@
KDE_DOCS = kompose
KDE_LANG = en
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/en/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/en/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

@ -0,0 +1,555 @@
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
<!ENTITY kompose "<application>kompose 0&#46;1</application>">
<!ENTITY kappname "&kompose;"><!-- Do *not* replace kappname-->
<!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. -->
]>
<!-- kdoctemplate v0.8 October 1 1999
Minor update to "Credits and Licenses" section on August 24, 2000
Removed "Revision history" section on 22 January 2001
Changed to Installation/Help menu entities 18 October 2001
Other minor cleanup and changes 18 October 2001 -->
<!--
This template was designed by: David Rugge davidrugge@mindspring.com
with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr
and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de
of the KDE DocBook team.
You may freely use this template for writing any sort of KDE documentation.
If you have any changes or improvements, please let us know.
Remember:
- in XML, the case of the <tags> and attributes is relevant ;
- also, quote all attributes.
Please don't forget to remove all these comments in your final documentation,
thanks ;-).
-->
<!-- ................................................................ -->
<!-- The language must NOT be changed here. -->
<book lang="&language;">
<!-- This header contains all of the meta-information for the document such
as Authors, publish date, the abstract, and Keywords -->
<bookinfo>
<title>The &kompose; Handbook</title>
<authorgroup>
<author>
<firstname></firstname>
<othername></othername>
<surname>Hans Oischinger</surname>
<affiliation>
<address><email>oisch&#64;sourceforge&#46;net</email></address>
</affiliation>
</author>
</authorgroup>
<!-- TRANS:ROLES_OF_TRANSLATORS -->
<copyright>
<year>1999</year>
<year>2004</year>
<holder>Hans Oischinger</holder>
</copyright>
<!-- Translators: put here the copyright notice of the translation -->
<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
and in the FDL itself on how to use it. -->
<legalnotice>&FDLNotice;</legalnotice>
<!-- Date and version information of the documentation
Don't forget to include this last date and this last revision number, we
need them for translation coordination !
Please respect the format of the date (YYYY-MM-DD) and of the version
(V.MM.LL), it could be used by automation scripts.
Do NOT change these in the translation. -->
<date>2001-10-18</date>
<releaseinfo>0&#46;1</releaseinfo>
<!-- Abstract about this handbook -->
<abstract>
<para>
&kompose; is an application specially designed to do nothing you would
ever want.
</para>
</abstract>
<!-- This is a set of Keywords for indexing by search engines.
Please at least include KDE, the KDE package it is in, the name
of your application, and a few relevant keywords. -->
<keywordset>
<keyword>KDE</keyword>
<keyword>kompose</keyword>
<keyword>nothing</keyword>
<keyword>nothing else</keyword>
</keywordset>
</bookinfo>
<!-- The contents of the documentation begin here. Label
each chapter so with the id attribute. This is necessary for two reasons: it
allows you to easily reference the chapter from other chapters of your
document, and if there is no ID, the name of the generated HTML files will vary
from time to time making it hard to manage for maintainers and for the CVS
system. Any chapter labelled (OPTIONAL) may be left out at the author's
discretion. Other chapters should not be left out in order to maintain a
consistent documentation style across all KDE apps. -->
<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>
&kompose; is a program that lets you do absolutely nothing. Please report
any problems or feature requests to the &kde; mailing lists.
</para>
</chapter>
<chapter id="using-kompose">
<title>Using &kompose;</title>
<!-- This chapter should tell the user how to use your app. You should use as
many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
your application. -->
<para>
<!-- Note that all graphics should be in .png format. Use no gifs because of
patent issues. -->
<screenshot>
<screeninfo>Here's a screenshot of &kompose;</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="screenshot.png" format="PNG"/>
</imageobject>
<imageobject>
<imagedata fileref="screenshot.eps" format="EPS"/>
</imageobject>
<textobject>
<phrase>Screenshot</phrase>
</textobject>
</mediaobject>
</screenshot>
</para>
<sect1 id="kompose-features">
<title>More &kompose; features</title>
<para>It slices! It dices! and it comes with a free toaster!</para>
<para>
The Squiggle Tool <guiicon><inlinemediaobject>
<imageobject>
<imagedata fileref="squiggle.png" format="PNG"/>
</imageobject>
<imageobject>
<imagedata fileref="squiggle.eps" format="EPS"/>
</imageobject>
<textobject>
<phrase>Squiggle</phrase>
</textobject>
</inlinemediaobject></guiicon> is used to draw squiggly lines all over
the &kompose; main window. It's not a bug, it's a feature!
</para>
</sect1>
</chapter>
<chapter id="commands">
<title>Command Reference</title>
<!-- (OPTIONAL, BUT RECOMMENDED) This chapter should list all of the
application windows and their menubar and toolbar commands for easy reference.
Also include any keys that have a special function but have no equivalent in the
menus or toolbars. This may not be necessary for small apps or apps with no tool
or menu bars. -->
<sect1 id="kompose-mainwindow">
<title>The main &kompose; window</title>
<sect2>
<title>The File Menu</title>
<para>
<variablelist>
<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
</shortcut>
<guimenu>File</guimenu>
<guimenuitem>New</guimenuitem>
</menuchoice></term>
<listitem><para><action>Creates a new document</action></para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
</shortcut>
<guimenu>File</guimenu>
<guimenuitem>Save</guimenuitem>
</menuchoice></term>
<listitem><para><action>Saves the document</action></para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
</shortcut>
<guimenu>File</guimenu>
<guimenuitem>Quit</guimenuitem>
</menuchoice></term>
<listitem><para><action>Quits</action> &kompose;</para></listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2>
<title>The <guimenu>Help</guimenu> Menu</title>
<!-- Assuming you have a standard help menu (help, what's this, about -->
<!-- &kompose;, about KDE) then the documentation is already written. -->
<!-- The following entity is valid anywhere that a variablelist is -->
<!-- valid. -->
&help.menu.documentation;
</sect2>
</sect1>
</chapter>
<chapter id="developers">
<title>Developer's Guide to &kompose;</title>
<!-- (OPTIONAL) A Programming/Scripting reference chapter should be
used for apps that use plugins or that provide their own scripting hooks
and/or development libraries. -->
<para>
Programming &kompose; plugins is a joy to behold. Just read through the next
66 pages of API's to learn how!
</para>
<!-- Use refentries to describe APIs. Refentries are fairly complicated and you
should consult the docbook reference for further details. The example below was
taken from that reference and shortened a bit for readability. -->
<refentry id="re-1007-unmanagechildren-1">
<refmeta>
<refentrytitle>XtUnmanageChildren</refentrytitle>
<refmiscinfo>Xt - Geometry Management</refmiscinfo>
</refmeta>
<refnamediv>
<refname>XtUnmanageChildren
</refname>
<refpurpose>remove a list of children from a parent widget's managed
list.
<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm>
<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm>
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdivinfo>
<date>4 March 1996</date>
</refsynopsisdivinfo>
<synopsis>
void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>)
WidgetList <replaceable class="parameter">children</replaceable>;
Cardinal <replaceable class="parameter">num_children</replaceable>;
</synopsis>
<refsect2 id="r2-1007-unmanagechildren-1">
<title>Inputs</title>
<variablelist>
<varlistentry>
<term><replaceable class="parameter">children</replaceable>
</term>
<listitem>
<para>Specifies an array of child widgets. Each child must be of
class RectObj or any subclass thereof.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="parameter">num_children</replaceable>
</term>
<listitem>
<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2></refsynopsisdiv>
<refsect1 id="r1-1007-unmanagechildren-1">
<title>Description
</title>
<para><function>XtUnmanageChildren()</function> unmaps the specified widgets
and removes them from their parent's geometry management.
The widgets will disappear from the screen, and (depending
on its parent) may no longer have screen space allocated for
them.
</para>
<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have
the same parent.
</para>
<para>See the &ldquo;Algorithm&rdquo; section below for full details of the
widget unmanagement procedure.
</para>
</refsect1>
<refsect1 id="r1-1007-unmanagechildren-2">
<title>Usage</title>
<para>Unmanaging widgets is the usual method for temporarily
making them invisible. They can be re-managed with
<function>XtManageChildren()</function>.
</para>
<para>You can unmap a widget, but leave it under geometry
management by calling <function>XtUnmapWidget()</function>. You can
destroy a widget's window without destroying the widget by
calling <function>XtUnrealizeWidget()</function>. You can destroy a
widget completely with <function>XtDestroyWidget()</function>.
</para>
<para>If you are only going to unmanage a single widget, it is
more convenient to call <function>XtUnmanageChild()</function>. It is
often more convenient to call <function>XtUnmanageChild()</function>
several times than it is to declare and initialize an array
of widgets to pass to <function>XtUnmanageChildren()</function>. Calling
<function>XtUnmanageChildren()</function> is more efficient, however,
because it only calls the parent's <function>change_managed()</function>
method once.
</para>
</refsect1>
<refsect1 id="r1-1007-unmanagechildren-3">
<title>Algorithm
</title>
<para><function>XtUnmanageChildren()</function> performs the following:
</para>
<variablelist>
<varlistentry>
<term>-
</term>
<listitem>
<para>Ignores the child if it already is unmanaged or is being
destroyed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-
</term>
<listitem>
<para>Otherwise, if the child is realized, it makes it nonvisible
by unmapping it.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
</para>
</refsect1>
<refsect1 id="r1-1007-unmanagechildren-4">
<title>Structures</title>
<para>The <type>WidgetList</type> type is simply an array of widgets:
</para>
<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList;
</screen>
</refsect1>
</refentry>
</chapter>
<chapter id="faq">
<title>Questions and Answers</title>
<!-- (OPTIONAL but recommended) This chapter should include all of the silly
(and not-so-silly) newbie questions that fill up your mailbox. This chapter
should be reserved for BRIEF questions and answers! If one question uses more
than a page or so then it should probably be part of the
"Using this Application" chapter instead. You should use links to
cross-reference questions to the parts of your documentation that answer them.
This is also a great place to provide pointers to other FAQ's if your users
must do some complicated configuration on other programs in order for your
application work. -->
&reporting.bugs;
&updating.documentation;
<qandaset id="faqlist">
<qandaentry>
<question>
<para>My Mouse doesn't work. How do I quit &kompose;?</para>
</question>
<answer>
<para>You silly goose! Check out the <link linkend="commands">Commands
Section</link> for the answer.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Why can't I twiddle my documents?</para>
</question>
<answer>
<para>You can only twiddle your documents if you have the foobar.lib
installed.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="credits">
<!-- Include credits for the programmers, documentation writers, and
contributors here. The license for your software should then be included below
the credits with a reference to the appropriate license file included in the KDE
distribution. -->
<title>Credits and License</title>
<para>
&kompose;
</para>
<para>
Program copyright 2004 Hans Oischinger <email>oisch&#64;sourceforge&#46;net</email>
</para>
<para>
Contributors:
<itemizedlist>
<listitem><para>Konqui the KDE Dragon <email>konqui@kde.org</email></para>
</listitem>
<listitem><para>Tux the Linux Penguin <email>tux@linux.org</email></para>
</listitem>
</itemizedlist>
</para>
<para>
Documentation copyright 2004 Hans Oischinger <email>oisch&#64;sourceforge&#46;net</email>
</para>
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
&underFDL; <!-- FDL: do not remove -->
<!-- Determine which license your application is licensed under,
and delete all the remaining licenses below:
(NOTE: All documentation are licensed under the FDL,
regardless of what license the application uses) -->
&underGPL; <!-- GPL License -->
&underBSDLicense; <!-- BSD License -->
&underArtisticLicense; <!-- BSD Artistic License -->
&underX11License; <!-- X11 License -->
</chapter>
<appendix id="installation">
<title>Installation</title>
<sect1 id="getting-kompose">
<title>How to obtain &kompose;</title>
<!-- This first entity contains boiler plate for applications that are
part of KDE CVS. You should remove it if you are releasing your
application -->
&install.intro.documentation;
</sect1>
<sect1 id="requirements">
<title>Requirements</title>
<!--
List any special requirements for your application here. This should include:
.Libraries or other software that is not included in kdesupport,
kdelibs, or kdebase.
.Hardware requirements like amount of RAM, disk space, graphics card
capabilities, screen resolution, special expansion cards, etc.
.Operating systems the app will run on. If your app is designed only for a
specific OS, (you wrote a graphical LILO configurator for example) put this
information here.
-->
<para>
In order to successfully use &kompose;, you need &kde; 1.1. Foobar.lib is
required in order to support the advanced &kompose; features. &kompose; uses
about 5 megs of memory to run, but this may vary depending on your
platform and configuration.
</para>
<para>
All required libraries as well as &kompose; itself can be found
on <ulink url="ftp://ftp.kompose.org">The &kompose; home page</ulink>.
</para>
<!-- For a list of updates, you may refer to the application web site
or the ChangeLog file, or ... -->
<para>
You can find a list of changes at <ulink
url="http://apps.kde.org/kompose">http://apps.kde.org/kompose</ulink>.
</para>
</sect1>
<sect1 id="compilation">
<title>Compilation and Installation</title>
<!-- This entity contains the boilerplate text for standard -->
<!-- compilation instructions. If your application requires any -->
<!-- special handling, remove it, and replace with your own text. -->
&install.compile.documentation;
</sect1>
<sect1 id="configuration">
<title>Configuration</title>
<para>Don't forget to tell your system to start the <filename>dtd</filename>
dicer-toaster daemon first, or &kompose; won't work !</para>
</sect1>
</appendix>
&documentation.index;
</book>
<!--
Local Variables:
mode: sgml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:
vim:tabstop=2:shiftwidth=2:expandtab
-->

@ -0,0 +1,3 @@
/Makefile.am/1.1.1.1/Sun Aug 1 13:47:38 2004//
/Makefile.in/1.1.1.1/Sun Aug 1 13:47:38 2004//
D

@ -0,0 +1 @@
kompose/po

@ -0,0 +1 @@
oisch@cvs.berlios.de:/cvsroot/kompose

@ -0,0 +1 @@
POFILES = AUTO

@ -0,0 +1,439 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = po
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTSCCONFIG = @ARTSCCONFIG@
AUTOCONF = @AUTOCONF@
AUTODIRS = @AUTODIRS@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOPIDLNG = @DCOPIDLNG@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GMSGFMT = @GMSGFMT@
IMLIB2_CFLAGS = @IMLIB2_CFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
KCONFIG_COMPILER = @KCONFIG_COMPILER@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LDFLAGS = @LDFLAGS@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBRESOLV = @LIBRESOLV@
LIBS = @LIBS@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBZ = @LIBZ@
LIB_IMLIB2 = @LIB_IMLIB2@
LIB_KAB = @LIB_KAB@
LIB_KABC = @LIB_KABC@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPIM = @LIB_KDEPIM@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_KUTILS = @LIB_KUTILS@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XCOMPOSITE = @LIB_XCOMPOSITE@
LIB_XDAMAGE = @LIB_XDAMAGE@
LIB_XEXT = @LIB_XEXT@
LIB_XRENDER = @LIB_XRENDER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
QTE_NORTTI = @QTE_NORTTI@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XMLLINT = @XMLLINT@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
X_RPATH = @X_RPATH@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
include_ARTS_FALSE = @include_ARTS_FALSE@
include_ARTS_TRUE = @include_ARTS_TRUE@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_kcfgdir = @kde_kcfgdir@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
kdeinitdir = @kdeinitdir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
x_includes = @x_includes@
x_libraries = @x_libraries@
xdg_appsdir = @xdg_appsdir@
xdg_directorydir = @xdg_directorydir@
xdg_menudir = @xdg_menudir@
POFILES = AUTO
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu po/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu po/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

@ -0,0 +1,560 @@
# translation of da.po to Danish
# Danish translations for PACKAGE package
# Danske oversættelser for pakke PACKAGE.
# Copyright (C) 2004 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Frederik Dannemare <frederik@dannemare.net>, 2004.
#
msgid ""
msgstr ""
"Project-Id-Version: da\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-09 15:37+0200\n"
"PO-Revision-Date: 2004-04-29 23:36+0200\n"
"Last-Translator: Frederik Dannemare <frederik@dannemare.net>\n"
"Language-Team: Danish <frederik@dannemare.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3.1\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr ""
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr ""
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr ""
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr ""
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr ""
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr ""
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr ""
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr ""
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr ""
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr ""
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr ""
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr ""
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr ""
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr ""
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr ""
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr ""
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr ""
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr ""
#: komposepreferences.cpp:77
msgid "Use screen:"
msgstr ""
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr ""
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr ""
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr ""
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr ""
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr ""
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr ""
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr ""
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr ""
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr ""
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr ""
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr ""
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr ""
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr ""
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr ""
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr ""
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr ""
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr ""
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr ""
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr ""
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr ""
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr ""
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr ""
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr ""
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr ""
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr ""
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr ""
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr ""
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr ""
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr ""
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr ""
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr ""
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr ""
#: komposepreferences.cpp:253
msgid "16x16"
msgstr ""
#: komposepreferences.cpp:256
msgid "32x32"
msgstr ""
#: komposepreferences.cpp:259
msgid "64x64"
msgstr ""
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr ""
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr ""
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr ""
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr ""
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr ""
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr ""
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr ""
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr ""
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr ""
#: komposetask.cpp:153
msgid "modified"
msgstr ""
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr ""
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr ""
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr ""
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr ""
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr ""
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr ""
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr ""
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr ""
#: main.cpp:64
msgid "Kompose"
msgstr ""
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr ""
#~ msgid "FTP Monitor Configuration"
#~ msgstr "FTP Monitor-konfiguration"
#~ msgid "&General"
#~ msgstr "&Generel"
#~ msgid "Notifications"
#~ msgstr "Info-beskeder"
#~ msgid "Popups"
#~ msgstr "Popups"
#~ msgid "Notifications Enabled"
#~ msgstr "Info-beskeder aktiveret"
#~ msgid ""
#~ "This will enable/disable notifications which appears when number of "
#~ "connections change."
#~ msgstr ""
#~ "Dette vil aktivere/deaktivere info-beskeder, som fremkommer, når antallet "
#~ "af tilslutninger ændrer sig."
#~ msgid " msecs"
#~ msgstr " millisek"
#~ msgid "Notify Popup Time"
#~ msgstr "Popup-visningstid"
#~ msgid ""
#~ "Time for which popup notifications (which appear when number of "
#~ "connections change) shoul remain alive"
#~ msgstr ""
#~ "Tiden, hvormed popup info-beskeder (som fremkommer, når antallet af "
#~ "tilslutninger ændrer sig) viser sig"
#~ msgid "&FTP Daemon"
#~ msgstr "&FTP-dæmon"
#~ msgid "FTP Daemon"
#~ msgstr "FTP-dæmon"
#~ msgid "Paths"
#~ msgstr "Stier"
#~ msgid "Path to pure-ftpwho"
#~ msgstr "Sti til pure-ftpwho"
#~ msgid ""
#~ "Complete path to pure-ftpwho command which is used as backend to find all "
#~ "active ftp connections."
#~ msgstr ""
#~ "Fuld sti til pure-ftpwho-kommandoen, der bruges til at finde alle aktive "
#~ "ftp-tilslutninger."
#~ msgid "Path to ncftpd_spy"
#~ msgstr "Sti til ncftpd_spy"
#~ msgid "Path to ftpwho"
#~ msgstr "Sti til ftpwho"
#~ msgid "FTP Monitor"
#~ msgstr "FTP Monitor"
#~ msgid "Nothing to Say"
#~ msgstr "Ingenting at sige"
#~ msgid "About FTP Monitor"
#~ msgstr "Om FTP Monitor"
#~ msgid "Help"
#~ msgstr "Hjælp"
#~ msgid "Configure"
#~ msgstr "Konfigurer"
#~ msgid "FTP Monitor - %1 connections"
#~ msgstr "FTP Monitor - %1 tilslutninger"
#~ msgid "FTP Monitor - 1 connection"
#~ msgstr "FTP Monitor - 1 tilslutning"
#~ msgid "FTP Monitor - No Connections"
#~ msgstr "FTP Monitor - Ingen tilslutninger"
#~ msgid ""
#~ "This is a small applet which monitors \\\t\t\t\tall incoming connections "
#~ "to ftpd (pure-ftpd/ncftpd/vsftpd). \\\t\t\t\tIf some one connects or "
#~ "disconnects it generates passive popups. \\\t\t\t\tAlso you can click on "
#~ "it to find more info about active connections.\\\t\t\t\t\n"
#~ "\n"
#~ " For more help please visit \\\t\t\t\thttp://www.cse.iitb.ac.in/nilesh/"
#~ "linux/ftpmonitor/ \\\t\t\t\t"
#~ msgstr ""
#~ "Dette er en lille applet, som overvåger \\\t\t\t\talle indgående "
#~ "tilslutninger til ftpd (pure-ftpd/ncftpd/vsftpd). \\\t\t\t\tHvis en "
#~ "tilslutning åbnes eller lukkes, genererer FTP Monitor passive popups. \\\t"
#~ "\t\t\tDu kan også klikke på applet for at se information om de aktive "
#~ "tilslutninger.\\\t\t\t\t\n"
#~ "\n"
#~ " For mere hjælp kan du besøge \\\t\t\t\thttp://www.cse.iitb.ac.in/nilesh/"
#~ "linux/ftpmonitor/ \\\t\t\t\t"
#~ msgid ""
#~ "Make sure that file %1 is setuid so that \\\t\t "
#~ "non-root user can execute it"
#~ msgstr ""
#~ "Eftertjek at filen %1 er setuid root, således at \\\t"
#~ "\t alm. brugere også kan eksekvere den."
#~ msgid ""
#~ "As ncftpd_spy can be executed by root only, make sure that either you "
#~ "execute this applet as root or /etc/sudoers has following line \n"
#~ "\n"
#~ " username ALL=NOPASSWD: /usr/local/sbin/ncftpd_spy"
#~ msgstr ""
#~ "Idet ncftpd_spy kun kan eksekveres som root, skal du sikre dig, at denne "
#~ "applet startes som root, eller at /etc/sudoers har følgende linje \n"
#~ "\n"
#~ " dit_brugernavn ALL=NOPASSWD: /sti/til/ncftpd_spy"
#~ msgid ""
#~ "vsftpd support is still experimental.\\\t\t\t\t\tAlso make sure that you "
#~ "set \\\t\t\tproctitle_enable=YES in vsftpd.conf"
#~ msgstr ""
#~ "vsftpd-support er stadig eksperimentalt.\\\t\t\t\t\tDu skal i øvrigt "
#~ "sikre dig, at \\\t\t\tproctitle_enable=YES er sat i vsftpd.conf"
#~ msgid " connections"
#~ msgstr " tilslutninger"
#~ msgid " connection"
#~ msgstr " tilslutning"
#~ msgid "Path to pure-ftpwho can't be empty."
#~ msgstr "Stien til pure-ftpwho må ikke være tom."
#~ msgid "File %1 does not exist"
#~ msgstr "Filen %1 eksisterer ikke"
#~ msgid "Error %1"
#~ msgstr "Fejl %1"
#~ msgid "PID"
#~ msgstr "PID"
#~ msgid "Login"
#~ msgstr "Login"
#~ msgid "For/Speed"
#~ msgstr "For/Hastighed"
#~ msgid "What"
#~ msgstr "Hvad"
#~ msgid "File/IP"
#~ msgstr "Fil/IP"
#~ msgid "No one is connected"
#~ msgstr "Ingen tilslutninger"
#~ msgid "Client"
#~ msgstr "Klient"
#~ msgid "Location"
#~ msgstr "Lokation"

@ -0,0 +1,441 @@
# translation of de.po to Deutsch
# German translations for kompose package
# German messages for kompose.
# Copyright (C) 2004 THE kompose'S COPYRIGHT HOLDER
# This file is distributed under the same license as the kompose package.
# Thomas Fischer <t-fisch@users.sourceforge.net>, 2004.
# Thomas Fischer <thomas.fischer@t-fischer.net>, 2004, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-09 15:37+0200\n"
"PO-Revision-Date: 2005-06-18 10:36+0200\n"
"Last-Translator: Thomas Fischer <thomas.fischer@t-fischer.net>\n"
"Language-Team: Deutsch <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.9.1\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Thomas Fischer"
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "t-fisch@users.sourceforge.net"
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr "Arbeitsfläche %1 - %2"
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr "Komposé (nicht gruppiert)"
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr "Komposé (gruppiert in virtuellen Arbeitsflächen)"
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr "Komposé (aktuelle virtuelle Arbeitsfläche)"
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr "&Globale Kurzbefehle einrichten..."
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr "Über Komposé"
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr "Einrichten - Komposé"
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr "Verhalten"
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr "Anordnung"
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr "Standardanordnung"
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
"Legt fest, welche Ansicht als Standard verwendet wird, wenn z.B. auf das "
"Symbol in der Kontrollleiste geklickt wird."
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr "Nicht gruppiert"
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr "Vollbildanordnung, die alle Fenster ohne besondere Reihenfolge zeigt"
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr "Gruppiert nach virtuellen Arbeitsflächen"
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
"Vollbildanordnung, die die virtuellen Arbeitsflächen und die darin "
"enthaltenen Fenster zeigt."
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr "Aktuelle virtuelle Arbeitsfläche"
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
"Vollbildanordnung, die die Fenster der aktuellen virtuellen Arbeitsfläche "
"zeigt."
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr "Xinerama"
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr "Die gesamte Arbeitsfläche für Komposé verwenden"
#: komposepreferences.cpp:77
msgid "Use screen:"
msgstr "Bildschirm benutzen:"
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr "Bestimmt den Bildschirm, auf dem Komposé erscheinen wird."
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr "Bildschirmphoto"
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr "XComposite verwenden falls verfügbar"
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
"Mit der Composite-Erweiterung moderner X-Server kann auf das herkömmliche "
"Einfangen des Bildschirms verzichtet werden.\n"
"Der Inhalt aller Fenster wird in verborgenen Puffern gezeichnet, auf die "
"Komposé zugreift.\n"
"Die Composite-Implementierung ist selbst bei aktuellen Treibern oft langsam "
"und macht das System instabil."
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr "Passive Bildschirmphotos"
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
"Erstellt ein Bildschirmfoto, wann immer ein Fenster gehoben oder aktiviert "
"wird.\n"
"Wenn diese Option aktiviert ist, wird das störende Bildschirmflackern vor "
"jeder Komposé-Aktivierung minimiert.\n"
"Ein Nachteil dabei ist, daß die Bildschirmfotos nicht immer aktuell sind und "
"eventuell nicht den gegenwärtigen Inhalt darstellen."
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr "Verzögerung zwischen Bildschirmfotos (ms):"
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
"Bestimmt die Zeit, die gewartet wird zwischen der Aktivierung eines Fensters "
"und des Aufnehmens eines Bildschirmfotos von diesem Fenster.\n"
"Falls ein Fenster mehr Zeit braucht, um sich neu zu zeichnen, sollte dieser "
"Wert erhöht werden.\n"
"Werte unter 300 ms sind nicht empfehlenswert, auch wenn sie in bestimmten "
"Fällen funktionieren."
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr "Skalierte Bildschirmphotos zwischenspeichern"
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
"Verhindert wiederholte Skalierungsoperationen, wenn Komposé Bildschirmfotos "
"anzeigt, deren Inhalt sich seit dem letzten Komposé-Aufruf nicht geändert "
"hat.\n"
"Dadurch wird aber auch der Speicherverbrauch etwas erhöht."
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr "Automatisch aktivieren, wenn die Maus hier hin bewegt wird"
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr "Obere linke Ecke"
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr "Obere rechte Ecke"
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr "Untere linke Ecke"
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr "Untere rechte Ecke"
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr "Oberer Rand"
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr "Unterer Rand"
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr "Linker Rand"
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr "Rechter Rand"
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr "Verzögerung bis Aktivierung (ms):"
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
"Gibt die Zeit in Millisekunden an, für die der Mauszeiger in der Ecke "
"verweilen muss, damit Komposé aktiviert wird."
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr "Bildeffekte verwenden"
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
"Fenster werden aufgehellt, wenn die Maus über sie fährt und angegraut, wenn "
"sie minimiert sind.\n"
"Diese Option kann das System verlangsamen."
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr "Nummer der Arbeitsfläche im Symbol in der Kontrollleiste anzeigen"
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr "Zeigt die Nummer des aktuell aktiven Arbeitsfläche im Komposé-Symbol in der Kontrollleiste."
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr "Fenstertitel"
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr "Fenstertitel anzeigen"
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr "Schrift auswählen..."
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr "Den Namen von jedem Fenster in Komposé anzeigen"
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr "Textfarbe:"
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr "Schattenfarbe:"
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr "Fenstersymbole"
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr "Symbole anzeigen"
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr "Gruppiert nach virtuellen Arbeitsflächen"
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr "Leere virtuelle Arbeitsflächen verkleinert darstellen"
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
"Mit dieser Option benötigen leere virtuelle Arbeitsflächen weniger Platz am "
"Bildschirm.\n"
"Ohne diese Option wird jeder virtuellen Arbeitsfläche statisch ein "
"gleichgroßer Platz zugeordnet."
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr "Rahmenfarbe für Arbeitsflächen:"
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr "Rahmenfarbe für hervorgehobene Arbeitsflächen:"
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr "Schrift für Arbeitsflächenbeschriftungen auswählen..."
#: komposepreferences.cpp:253
msgid "16x16"
msgstr "16x16"
#: komposepreferences.cpp:256
msgid "32x32"
msgstr "32x32"
#: komposepreferences.cpp:259
msgid "64x64"
msgstr "64x64"
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr "Nicht skalieren, sondern Original (vorzugsweise größer) zeigen"
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr "Komposé anzeigen (Standardansicht)"
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr "Anzeigen wie als Standard eingerichtet"
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr "Komposé anzeigen (nicht gruppiert)"
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr "Alle Fenster unsortiert anzeigen"
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr "Komposé anzeigen (gruppiert nach virtuellen Arbeitsflächen)"
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr "Alle Fenster sortiert nach virtuellen Arbeitsflächen anzeigen"
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr "Komposé anzeigen (aktuelle virtuelle Arbeitsfläche)"
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr "Alle Fenster der aktuellen Arbeitsfläche anzeigen"
#: komposetask.cpp:153
msgid "modified"
msgstr "verändert"
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr "Fensteraktionen"
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr "Fenster"
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr "Verkleinern/Wiederherstellen"
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr "&Alle Arbeitsflächen"
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr "Auf &Arbeitsfläche"
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr "Ein Vollbild-Fensterwechsler für KDE"
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr "Symbol nicht in Kontrollleiste zeigen"
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr "Standardansicht zeigen und beenden (Nicht-Dämon-Modus)"
#: main.cpp:64
msgid "Kompose"
msgstr "Kompose"
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr "&Benutzerdefiniert"
#~ msgid "Tint virtual desktop widgets:"
#~ msgstr "Rahmen für virtuelle Arbeitsflächen einfärben:"
#~ msgid "Colorize the transparent background of the virtual desktop widgets"
#~ msgstr ""
#~ "Den transparenten Hintergrund de virtuellen Arbeitsflächen eingfärben"

@ -0,0 +1,442 @@
# Translation of Kompose to Castilian aka Spanish
# This file is distributed under the same license as the Kompose package.
# Copyright (C) 2004 Hans Oischinger <oisch@sourceforge.net>
# Enrique Matias Sanchez (aka Quique) <cronopios@gmail.com>, 2004, 2005.
# Jordi Ferre Soldevila (aka univac) <univac@vired.com>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-09 15:37+0200\n"
"PO-Revision-Date: 2005-03-18 10:20+0100\n"
"Last-Translator: Enrique Matias Sanchez <cronopios@gmail.com>\n"
"Language-Team: Castilian aka Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"es>\n"
"X-Generator: KBabel 1.9.1\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Enrique Matías Sánchez (Quique),Jordi Ferré Soldevila (univac)"
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "cronopios@gmail.com,univac@vired.com"
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr "Escritorio %1 - %2"
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr "Komposé (vista desagrupada)"
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr "Komposé (vista agrupada por escritorios virtuales)"
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr "Komposé (escritorio virtual actual)"
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr "Configurar los atajos &globales..."
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr "Acerca de Komposé"
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr "Preferencias de Komposé"
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr "Comportamiento"
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr "Disposiciones"
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr "Disposición predeterminada"
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
"Determina que vista se iniciará por omisión (por ejemplo cuando pulse sobre "
"el icono de la bandeja del sistema)"
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr "Desagrupada"
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr ""
"Disposición a pantalla completa que muestra todas las ventanas sin ningún "
"orden en particular"
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr "Agrupada por escritorios virtuales"
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
"Disposición a pantalla completa que muestra una representación\n"
"de sus escritorios virtuales y coloca las ventanas en su interior."
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr "Escritorio virtual actual"
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
"Disposición a pantalla completa que las ventanas del escritorio en el que "
"está trabajando actualmente."
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr ""
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr ""
#: komposepreferences.cpp:77
#, fuzzy
msgid "Use screen:"
msgstr "Capturas de pantalla pasivas"
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr ""
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr "Capturas de pantalla"
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr "Usar XComposite si está disponible"
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
"El uso de la extensión Composite de los servidores X más recientes vuelve "
"obsoleta la toma de capturas de pantalla.\n"
"El contenido de todas las ventanas se dibuja en búferes en segundo plano "
"accesibles para Komposé\n"
"Observe que la implementación de Composite de los controladores de las "
"tarjetas gráficas -incluso las modernas- es aún muy lento y puede hacer que "
"sus sistema sea bastante inusable."
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr "Capturas de pantalla pasivas"
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
"Crea una captura de pantalla cada vez que levanta o activa una ventana.\n"
"Cuando esta opción está seleccionada, se minimizará a casi cero la cantidad "
"del molesto efecto de ventanas emergentes de cada activación de Komposé.\n"
"La contrapartida es que las caputras de pantalla no son tan recientes y "
"pueden no mostrar el contenido actual."
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr "Demora entre las capturas de pantalla (ms):"
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
"Indica el tiempo a esperar entre la activación de una ventana y la captura "
"de la pantalla.\n"
"Auméntelo cuando sus ventanas necesiten más tiempo para dibujarse tras la "
"activación.\n"
"No se recomiendan los valores por debajo de 300 ms, pero pueden funcionar en "
"algunos casos."
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr "Guardar en caché capturas de pantalla redimensionadas"
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
"Este permite evitar que se llame repetidamente a algunas operaciones de "
"escalado cuando Komposé ya ha sido mostrado antes y no ha cambiado el tamaño "
"de la captura de pantalla.\n"
"Sin embargo, aumentará bastante el consumo de memoria."
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr "Activar automáticamente cuando el ratón sea colocado sobre"
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr "Esquina superior izquierda"
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr "Esquina superior derecha"
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr "Esquina inferior izquierda"
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr "Esquina inferior derecha"
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr ""
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr ""
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr ""
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr ""
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr "Demora hasta la activación (ms):"
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
"Indica el tiempo en ms que el puntero del ratón debe permanecer en la "
"esquina para la activación automática."
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr "Habilitar los efectos de imágenes"
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
"Ilumina las ventanas cuando el ratón pasa sobre ellas o colorea de gris las "
"ventanas minimizadas.\n"
"Dependiendo de las especificaciones de su sistema esto puede ser un poco "
"lento."
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr ""
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr ""
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr "Títulos de las ventanas"
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr "Muestra los títulos de las ventanas"
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr "Seleccionar el tipo de letra..."
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr "Mostrar el nombre de todas las ventanas de Komposé"
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr "Color del texto:"
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr "Color de la sombra:"
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr "Iconos de las tareas"
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr "Mostrar los iconos"
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr "Agrupadas por escritorios virtuales"
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr "Mostrar minimizados los escritorios virtuales vacíos"
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
"Marque esto si desea que los escritorios virtuales vacíos ocupen menos "
"espacio en la pantalla.\n"
"Desmárquelo si desea que se organicen estáticamente, todos del mismo tamaño."
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr "Color del marco de los escritorios:"
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr "Color de realce del marco de los escritorios:"
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr "Seleccionar el tipo de letra para los nombres de los escritorios..."
#: komposepreferences.cpp:253
msgid "16x16"
msgstr "16x16"
#: komposepreferences.cpp:256
msgid "32x32"
msgstr "32x32"
#: komposepreferences.cpp:259
msgid "64x64"
msgstr "64x64"
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr "No escalar, mostrarlos tal como son (preferiblemente más grande)"
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr "Mostrar Komposé (vista predeterminada)"
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr "Muestra la vista que haya configurado como predeterminada."
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr "Mostrar Komposé (vista desagrupada)"
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr "Muestra todas las ventanas sin ordenarlas"
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr "Mostrar Komposé (vista agrupada por escritorios virtuales)"
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr "Muestra todas las ventanas agrupadas por escritorios virtuales"
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr "Mostrar Komposé (escritorio virtual actual)"
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr "Muestra todas las ventanas del escritorio actual"
#: komposetask.cpp:153
msgid "modified"
msgstr "modificado"
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr "Acciones de las tareas"
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr "Tarea"
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr "Minimizar/Restaurar"
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr "&Todos los escritorios"
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr "Al &escritorio"
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr "Un gestor de tareas a pantalla completa para KDE"
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr "No mostrar el icono en la bandeja del sistema"
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr "Mostrar la vista predeterminada y salir (modo sin demonio)"
#: main.cpp:64
msgid "Kompose"
msgstr "Komposé"
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr "&Personalizado"
#~ msgid "Tint virtual desktop widgets:"
#~ msgstr "Tintar los recuadros de los escritorios virtuales:"
#~ msgid "Colorize the transparent background of the virtual desktop widgets"
#~ msgstr ""
#~ "Colorear el fondo transparente de los recuadros de los escritorios "
#~ "virtuales"

@ -0,0 +1,435 @@
# Traduction de kompose.po en Français
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
# Sebastien Renard <Sebastien.Renard@digitalfox.homeip.net>, 2004.
#
msgid ""
msgstr ""
"Project-Id-Version: kompose\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-09 15:37+0200\n"
"PO-Revision-Date: 2004-10-13 23:23+0200\n"
"Last-Translator: Sebastien Renard <Sebastien.Renard@digitalfox.homeip.net>\n"
"Language-Team: Français <kde-francophone@mail.kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3.1\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Sébastien Renard"
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "Sebastien.Renard@digitalfox.Homeip.net"
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr "Bureau %1 - %2"
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr "Komposé (vue dégroupée)"
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr "Komposé (vue groupée par bureau)"
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr "Komposé (Bureau virtuel courant uniquement)"
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr "Configurer les raccourcis claviers &globaux..."
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr "À propos de Komposé"
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr "Configurer Komposé"
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr "Comportement"
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr "Vues"
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr "Vue par défaut"
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
"Determine quelle vue doit être démarrée par défaut (par ex. quand on clique "
"sur la miniature)."
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr "Dégroupée"
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr "Vue pleine écran qui montre toutes les fenêtres sans ordre précis"
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr "Groupée par bureau"
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
"Vue pleine écran qui montre une représentation des bureaux\n"
"et y place les fenêtres."
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr "Bureau virtuel courant uniquement"
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
"Vue pleine écran qui montre les fenêtres du bureau actuellement utilisé."
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr ""
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr ""
#: komposepreferences.cpp:77
#, fuzzy
msgid "Use screen:"
msgstr "Copies d'écran passives"
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr ""
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr "Copies d'écran"
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr "Utiliser XComposite si disponible"
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
"L'utilisation de l'extention « Composite » des serveurs X récents rend "
"l'utilisation des captures d'écran inutile. \n"
"Le contenu de toutes les fenêtres est dessiné dans un tampon d'arrière plan "
"qui est accessible par Komposé.\n"
"Notez toutefois que l'implémentation du principe « Composite », même dans "
"les cartes graphiques modernes reste très peu performante et peu rendre "
"votre système quasiment inutilisable."
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr "Copies d'écran passives"
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
"Crée une capture d'écran à chaque fois qu'une fenêtre est rendu visible ou "
"activée.\n"
"Quand cette option est cochée, la pénible ronde des fenêtres surgissantes à "
"chaque activation de Komposé est fortement réduite voire nulle.\n"
"La contre partie est que les copies d'écran ne sont pas aussi récentes et "
"peuvent donc présenter un contenu obsolète."
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr "Intervalle entre deux copies d'écran (ms)"
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
"Précise le temps d'attente entre l'activation d'une fenêtre et la prise de "
"la copie d'écran\n"
".Augmentez cette valeur si les fenêtres exigent plus de temps pour se "
"rafraîchir après leur activation.\n"
"Des valeurs en dessous de 300ms ne sont pas recommandées mais peuvent "
"toutefois fonctionner dans certains cas."
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr "Garder en cache les copies d'écrans redimensionnées"
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
"Ceci permet de limiter certaines opérations répétées de redimensionnement "
"quand Komposé a déjà traité une copie d'écran qui n'a pas été modifée.\n"
"En contre partie, la consommation de mémoire est légèrement augmentée."
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr "Activer automatiquement quand la souris est placée au niveau du"
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr "Coin supérieur gauche"
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr "Coin supérieur droit"
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr "Coin inférieur gauche"
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr "Coin inférieur droit"
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr ""
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr ""
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr ""
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr ""
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr "Intervalle avant activation (ms) :"
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
"Précise le temps en ms pendant lequel la souris doit rester dans le coin "
"avant l'activation automatique."
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr "Activer les effets sur les images"
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
"Illuminer les fenêtres au passage de la souris et les griser quand celles-"
"ci \n"
"sont réduites. Selon les performances de votre système ceci peut être lent."
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr ""
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr ""
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr "Titre des fenêtres"
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr "Afficher les titres des fenêtres"
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr "Choisir la police..."
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr "Afficher le nom de chaque fenêtre dans Komposé"
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr "Couleur du texte :"
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr "Couleur de l'ombre :"
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr "Icônes de tâche"
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr "Afficher les icônes"
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr "Groupement par bureau"
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr "Réduire les bureaux virtuels vides"
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
"Cochez cette case si vous désirez qu'un bureau virtuel vide occupe moins de "
"place à l'écran.\n"
"Ne cochez pas cette cas si vous préférez que les bureaux occupent toujours "
"la même place."
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr "Couleur du cadre du bureau :"
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr "Couleur du cadre actif du bureau :"
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr "Choisir la police du nom des bureaux..."
#: komposepreferences.cpp:253
msgid "16x16"
msgstr "16x16"
#: komposepreferences.cpp:256
msgid "32x32"
msgstr "32x32"
#: komposepreferences.cpp:259
msgid "64x64"
msgstr "64x64"
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr "Ne pas redimensionner, afficher la taille normale"
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr "Afficher Komposé (vue par défaut)"
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr "Afficher la vue configurée comme vue par défaut"
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr "Afficher Komposé (vue dégroupée)"
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr "Afficher toutes fenêtres non triées"
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr "Afficher Komposé (vue groupée par bureau)"
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr "Afficher toutes les fenêtres groupées par bureau"
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr "Afficher Komposé (Bureau virtuel courant uniquement)"
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr "Afficher toutes les fenêtres du bureau courant"
#: komposetask.cpp:153
msgid "modified"
msgstr "modifié"
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr "Icônes de tâche"
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr "Tâche"
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr "Réduire/Restaurer"
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr "&Tous les bureaux"
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr "Vers le &bureau"
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr "Un gestionnaire de tâche pleine écran pour KDE"
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr "Ne pas montrer la miniature"
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr "Afficher la vue par défaut et quitter (pas de mode démon)"
#: main.cpp:64
msgid "Kompose"
msgstr "Komposé"
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr "Personalisé(e)"
#~ msgid "Tint virtual desktop widgets:"
#~ msgstr "Teinter les élements graphiques des bureaux :"
#~ msgid "Colorize the transparent background of the virtual desktop widgets"
#~ msgstr "Colorer les fonds transparents des élements graphiques des bureaux"

@ -0,0 +1,440 @@
# translation of kompose.pot to Italiano
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
# Giorgio Moscardi <enjoy.the.silence@iol.it>, 2004.
#
msgid ""
msgstr ""
"Project-Id-Version: kompose\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-09 15:37+0200\n"
"PO-Revision-Date: 2004-10-12 16:51+0200\n"
"Last-Translator: Giorgio Moscardi <enjoy.the.silence@iol.it>\n"
"Language-Team: Italiano <kde-i18n-it@kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.9\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Giorgio Moscardi"
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "enjoy.the.silence@iol.it"
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr "Desktop %1 - %2"
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr "Komposé (Non raggruppato)"
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr "Komposé (Raggruppato per desktop virtuale)"
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr "Komposé (Desktop virtuale corrente)"
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr "Configura le scorciatoie &globali..."
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr "Informazioni su Komposé"
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr "Impostazioni di Komposé"
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr "Comportamento"
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr "Schemi"
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr "Schema predefinito"
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
"Determina quale visuale sarà utilizzata come predefinita (ossia quando fai "
"clic sull'icona nel vassoio di sistema)"
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr "Non raggruppato"
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr ""
"Schema a tutto schermo che mostra tutte le finestre in nessun ordine "
"particolare"
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr "Raggruppato per desktop virtuale"
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
"Schema a tutto schermo che mostra una rappresentazione dei tuoi desktop\n"
"virtuali e posiziona le finestre al suo interno."
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr "Desktop virtuale corrente"
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
"Schema a tutto schermo che mostra le finestre del desktop in cui stai "
"lavorando al momento."
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr ""
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr ""
#: komposepreferences.cpp:77
#, fuzzy
msgid "Use screen:"
msgstr "Foto dello schermo passive"
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr ""
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr "Foto dello schermo"
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr "Utilizza XComposite se disponibile"
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
"L'utilizzo dell'estensione Composite dei server X più recenti rende obsoleto "
"lo scatto delle foto allo schermo.\n"
"I contenuti di tutte le finestre sono disegnati in buffer che saranno "
"acceduti da Komposé.\n"
"Nota che l'implementazione di Composite da parte dei driver delle schede "
"video (anche di quelle più moderne) è ancora molto lenta, e può rendere il "
"tuo sistema quasi inutilizzabile."
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr "Foto dello schermo passive"
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
"Scatta una foto allo schermo ogni volta che porti davanti o attivi una "
"finestra.\n"
"Quando selezionato, il fastidioso effetto-popup prima di ogni attivazione di "
"Komposé sarà ridotto quasi a zero.\n"
"Il rovescio della medaglia è che le foto non saranno così recenti e "
"potrebbero non rispecchiare l'attuale contenuto delle finestre."
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr "Intervallo tra le foto dello schermo (ms):"
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
"Specifica il tempo da attendere tra l'attivazione di una finestra e lo "
"scatto della foto allo schermo.\n"
"Aumentalo quando le tue finestre richiedono più tempo per disegnarsi dopo "
"essere state attivate.\n"
"Valori sotto 300 ms sono sconsigliati, ma in alcuni casi possono funzionare "
"bene."
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr "Metti in cache le foto dello schermo riscalate"
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
"Questo può evitare che alcune operazioni di riscalatura siano chiamate "
"ripetutatamente quando Komposé è stato richiamato in precedenza e la "
"dimensione delle foto non è cambiata.\n"
"Comunque aumenterà leggermente l'utilizzo di memoria."
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr "Attiva automaticamente quando il mouse viene mosso nell'angolo"
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr "In alto a sinistra"
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr "In alto a destra"
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr "In basso a sinistra"
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr "In basso a destra"
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr ""
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr ""
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr ""
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr ""
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr "Ritardo prima dell'attivazione (ms):"
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
"Specifica il tempo in millisecondi per cui il puntatore del mouse deve "
"rimanere nell'angolo prima dell'attivazione automatica."
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr "Attiva gli effetti immagine"
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
"Illumina le finestre quando il mouse passa sopra ad esse o colora di grigio "
"le finestre minimizzate.\n"
"A seconda delle caratteristiche del tuo sistema questo può essere piuttosto "
"lento."
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr ""
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr ""
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr "Titoli delle finestre"
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr "Mostra i titoli delle finestre"
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr "Seleziona il tipo di carattere..."
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr "Mostra il nome di ogni finestra in Komposé"
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr "Colore del testo: "
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr "Colore dell'ombra: "
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr "Icone dei processi"
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr "Mostra le icone"
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr "Raggruppato per desktop virtuale"
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr "Mostra i desktop virtuali vuoti minimizzati"
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
"Seleziona questo se vuoi che i desktop virtuali vuoti occupino meno spazio "
"sullo schermo.\n"
"Deselezionalo se vuoi che siano sempre organizzati allo stesso modo, tutti "
"della stessa dimensione."
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr "Colore della cornice dei desktop: "
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr "Colore di evidenziazione della cornice dei desktop: "
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr "Seleziona il tipo di carattere per i nomi dei desktop..."
#: komposepreferences.cpp:253
msgid "16x16"
msgstr "16x16"
#: komposepreferences.cpp:256
msgid "32x32"
msgstr "32x32"
#: komposepreferences.cpp:259
msgid "64x64"
msgstr "64x64"
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr "Non riscalare, mostra così come sono (preferibilmente più grandi)"
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr "Mostra Komposé (Visuale predefinita)"
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr "Mostra la visuale che hai selezionato come predefinita"
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr "Mostra Komposé (Non raggruppato)"
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr "Mostra tutte le finestre non ordinate"
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr "Mostra Komposé (Raggruppato per desktop virtuale)"
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr "Mostra tutte le finestre ordinate per desktop virtuale"
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr "Mostra Komposé (Desktop virtuale corrente)"
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr "Mostra tutte le finestre del desktop corrente"
#: komposetask.cpp:153
msgid "modified"
msgstr "modificato"
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr "Azioni del processo"
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr "Processo"
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr "Minimizza/Ripristina"
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr "&Tutti i desktop"
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr "Al &desktop"
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr "Un gestore dei processi a tutto schermo per KDE"
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr "Non mostrare l'icona nel vassoio di sistema"
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr "Mostra la visuale predefinita ed esci (modalità non demone)"
#: main.cpp:64
msgid "Kompose"
msgstr "Komposé"
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr "&Personalizzato"
#~ msgid "Tint virtual desktop widgets:"
#~ msgstr "Rendi opachi i riquadri dei desktop virtuali: "
#~ msgid "Colorize the transparent background of the virtual desktop widgets"
#~ msgstr "Colora lo sfondo trasparente dei riquadri dei desktop virtuali"

@ -0,0 +1,392 @@
# 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-06-09 15:37+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=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr ""
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr ""
#: komposedesktopwidget.cpp:60
msgid "Desktop %1 - %2"
msgstr ""
#: komposeglobal.cpp:158
msgid "Komposé (ungrouped)"
msgstr ""
#: komposeglobal.cpp:162
msgid "Komposé (grouped by virtual desktops)"
msgstr ""
#: komposeglobal.cpp:166
msgid "Komposé (current virtual desktop)"
msgstr ""
#: komposeglobal.cpp:175
msgid "Configure &Global Shortcuts..."
msgstr ""
#: komposeglobal.cpp:176
msgid "About Komposé"
msgstr ""
#: komposepreferences.cpp:38
msgid "Komposé Preferences"
msgstr ""
#: komposepreferences.cpp:44
msgid "Behavior"
msgstr ""
#: komposepreferences.cpp:46
msgid "Layouts"
msgstr ""
#: komposepreferences.cpp:50
msgid "Default Layout"
msgstr ""
#: komposepreferences.cpp:52
msgid ""
"Determines which view should be started by default (e.g. when you click on "
"the systray icon)."
msgstr ""
#: komposepreferences.cpp:55
msgid "Ungrouped"
msgstr ""
#: komposepreferences.cpp:56
msgid "Fullscreen layout that shows all windows in no specific order"
msgstr ""
#: komposepreferences.cpp:59
msgid "Grouped by virtual desktops"
msgstr ""
#: komposepreferences.cpp:60
msgid ""
"Fullscreen layout that shows a representation of your virtual desktops\n"
" and places the windows inside."
msgstr ""
#: komposepreferences.cpp:63
msgid "Current virtual desktop"
msgstr ""
#: komposepreferences.cpp:64
msgid ""
"Fullscreen layout that shows the windows of the desktop you're currently "
"working on."
msgstr ""
#: komposepreferences.cpp:71
msgid "Xinerama"
msgstr ""
#: komposepreferences.cpp:74
msgid "Use the whole desktop for Komposé"
msgstr ""
#: komposepreferences.cpp:77
msgid "Use screen:"
msgstr ""
#: komposepreferences.cpp:81
msgid "Specify the screen where Komposé should appear."
msgstr ""
#: komposepreferences.cpp:91 komposepreferences.cpp:99
msgid "Screenshots"
msgstr ""
#: komposepreferences.cpp:93
msgid "Use XComposite if available"
msgstr ""
#: komposepreferences.cpp:94
msgid ""
"Making use of the Composite extension of newer X Servers makes the grabbing "
"of screenshots obsolete.\n"
"The contents of all windows are drawn in back buffers that will be accessed "
"by Komposé\n"
"Note that the Composite implementation of even modern graphic card drivers "
"is still very slow and may make your system pretty unusable."
msgstr ""
#: komposepreferences.cpp:102
msgid "Passive screenshots"
msgstr ""
#: komposepreferences.cpp:103
msgid ""
"Create a screenshot whenever you raise or active a window.\n"
"When selected the amount the annoying popup-effect before every Komposé "
"activation will be minimized to nearly zero.\n"
"The drawback is that the screenshots are not so recent and may not display "
"the actual content."
msgstr ""
#: komposepreferences.cpp:108
msgid "Delay between screenshots (ms):"
msgstr ""
#: komposepreferences.cpp:111
msgid ""
"Specifies the time to wait between the activation of a window and the "
"screenshot taking.\n"
"Increase it when your windows need more time to draw themselves after "
"activation.\n"
"Values below 300ms are not recommended, but may work in some cases."
msgstr ""
#: komposepreferences.cpp:117
msgid "Cache scaled Screenshots"
msgstr ""
#: komposepreferences.cpp:118
msgid ""
"This may avoid some scaling operations to be called repeatedly when Komposé "
"has been displayed before and the screenshot's size didn't change.\n"
"It will however increase memory usage quite a bit."
msgstr ""
#: komposepreferences.cpp:126
msgid "Autoactivate when mouse moves into"
msgstr ""
#: komposepreferences.cpp:128
msgid "Top-left corner"
msgstr ""
#: komposepreferences.cpp:130
msgid "Top-right corner"
msgstr ""
#: komposepreferences.cpp:132
msgid "Bottom-left corner"
msgstr ""
#: komposepreferences.cpp:134
msgid "Bottom-right corner"
msgstr ""
#: komposepreferences.cpp:137
msgid "Top edge"
msgstr ""
#: komposepreferences.cpp:139
msgid "Bottom edge"
msgstr ""
#: komposepreferences.cpp:141
msgid "Left edge"
msgstr ""
#: komposepreferences.cpp:143
msgid "Right edge"
msgstr ""
#: komposepreferences.cpp:147
msgid "Delay until activation (ms):"
msgstr ""
#: komposepreferences.cpp:150
msgid ""
"Specifies the time in ms for which the mouse pointer must rest in the corner "
"until auto-activation."
msgstr ""
#: komposepreferences.cpp:165
msgid "Enable image effects"
msgstr ""
#: komposepreferences.cpp:166
msgid ""
"Lighten windows when the mouse moves over it or gray out minimized windows.\n"
"Depending on your system specs this can be a bit slower."
msgstr ""
#: komposepreferences.cpp:171
msgid "Show Desktop number on Systray icon"
msgstr ""
#: komposepreferences.cpp:172
msgid ""
"Displays the number of the currently active Desktop on the Komposé systray "
"icon."
msgstr ""
#: komposepreferences.cpp:177
msgid "Window Titles"
msgstr ""
#: komposepreferences.cpp:180
msgid "Show window titles"
msgstr ""
#: komposepreferences.cpp:181
msgid "Select Font..."
msgstr ""
#: komposepreferences.cpp:182
msgid "Display the name of every window in Komposé"
msgstr ""
#: komposepreferences.cpp:190
msgid "Text color:"
msgstr ""
#: komposepreferences.cpp:194
msgid "Shadow color:"
msgstr ""
#: komposepreferences.cpp:204
msgid "Task Icons"
msgstr ""
#: komposepreferences.cpp:205
msgid "Show icons"
msgstr ""
#: komposepreferences.cpp:220
msgid "Grouped by Virtual Desktops"
msgstr ""
#: komposepreferences.cpp:221
msgid "Layout empty virtual desktops minimized"
msgstr ""
#: komposepreferences.cpp:222
msgid ""
"Check this if you want empty virtual desktops to take less space on the "
"screen.\n"
"Uncheck it if you want them to be arranged statically, each of the same size."
msgstr ""
#: komposepreferences.cpp:228
msgid "Desktop frame color:"
msgstr ""
#: komposepreferences.cpp:230
msgid "Desktop frame highlight color:"
msgstr ""
#: komposepreferences.cpp:235
msgid "Select Desktop Names Font..."
msgstr ""
#: komposepreferences.cpp:253
msgid "16x16"
msgstr ""
#: komposepreferences.cpp:256
msgid "32x32"
msgstr ""
#: komposepreferences.cpp:259
msgid "64x64"
msgstr ""
#: komposepreferences.cpp:262
msgid "Don't scale, show as they are (preferably bigger)"
msgstr ""
#: komposesettings.cpp:52
msgid "Show Komposé (default view)"
msgstr ""
#: komposesettings.cpp:53
msgid "Displays the view you have configured as default"
msgstr ""
#: komposesettings.cpp:56
msgid "Show Komposé (ungrouped)"
msgstr ""
#: komposesettings.cpp:57
msgid "Displays all windows unsorted"
msgstr ""
#: komposesettings.cpp:60
msgid "Show Komposé (grouped by virtual desktops)"
msgstr ""
#: komposesettings.cpp:61
msgid "Displays all windows sorted by virtual desktops"
msgstr ""
#: komposesettings.cpp:64
msgid "Show Komposé (current virtual desktop)"
msgstr ""
#: komposesettings.cpp:65
msgid "Displays all windows on the current desktop"
msgstr ""
#: komposetask.cpp:153
msgid "modified"
msgstr ""
#: komposetaskprefswidget.cpp:31
msgid "Task Actions"
msgstr ""
#: komposetaskprefswidget.cpp:32
msgid "Task"
msgstr ""
#: komposetaskwidget.cpp:353
msgid "Minimize/Restore"
msgstr ""
#: komposetaskwidget.cpp:367
msgid "&All Desktops"
msgstr ""
#: komposetaskwidget.cpp:380
msgid "To &Desktop"
msgstr ""
#: main.cpp:32
msgid "A fullscreen task manager for KDE"
msgstr ""
#: main.cpp:38
msgid "Do not show the systray icon"
msgstr ""
#: main.cpp:39
msgid "Display the default view and exit (non daemon mode)"
msgstr ""
#: main.cpp:64
msgid "Kompose"
msgstr ""
#: rc.cpp:3
#, no-c-format
msgid "C&ustom"
msgstr ""

@ -0,0 +1,46 @@
# set the include path for X, qt and KDE
INCLUDES = $(all_includes) -I `imlib2-config --cflags`
# these are the headers for your project
noinst_HEADERS = kompose.h komposetaskmanager.h komposetask.h komposewidget.h \
komposetaskwidget.h komposedesktopwidget.h komposelayout.h komposesystray.h \
komposefullscreenwidget.h komposesettings.h komposepreferences.h komposetaskprefswidget.h \
komposeglobal.h komposetaskcontainerwidget.h komposetaskvisualizer.h \
komposeviewmanager.h komposedcopiface.h
# let automoc handle all of the meta source files (moc)
METASOURCES = AUTO
messages: rc.cpp
$(XGETTEXT) *.cpp --language=C --from-code=UTF-8 -o $(podir)/kompose.pot
komposeiconsdir = $(kde_datadir)/kompose/icons
komposeicons_ICON = AUTO
#########################################################################
# APPLICATION SECTION
#########################################################################
# this is the program that gets installed. it's name is used for all
# of the other Makefile.am variables
bin_PROGRAMS = kompose
# the application source, library search path, and link libraries
kompose_SOURCES = main.cpp kompose.cpp komposetaskmanager.cpp komposetask.cpp \
komposewidget.cpp komposetaskwidget.cpp komposedesktopwidget.cpp komposelayout.cpp \
komposesystray.cpp komposefullscreenwidget.cpp komposesettings.cpp komposepreferences.cpp \
komposetaskprefswidget.cpp komposeglobal.cpp komposetaskcontainerwidget.cpp \
komposetaskvisualizer.cpp komposeviewmanager.cpp komposedcopiface.skel
#kompose_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lX11 -lXext -lm `pkg-config xft xrender xcomposite xdamage xfixes --libs` `imlib2-config --libs`
kompose_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lX11 -lXext -lm `imlib2-config --libs`
kompose_LDADD = $(LIB_KDEUI) $(LIB_XCOMPOSITE) $(LIB_XDAMAGE)
# this is where the desktop file will go
shelldesktopdir = $(kde_appsdir)/Utilities
shelldesktop_DATA = kompose.desktop
# this is where the shell's XML-GUI resource file goes
shellrcdir = $(kde_datadir)/kompose
shellrc_DATA = komposeui.rc

@ -0,0 +1,686 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
bin_PROGRAMS = kompose$(EXEEXT)
subdir = src
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(shelldesktopdir)" \
"$(DESTDIR)$(shellrcdir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_kompose_OBJECTS = main.$(OBJEXT) kompose.$(OBJEXT) \
komposetaskmanager.$(OBJEXT) komposetask.$(OBJEXT) \
komposewidget.$(OBJEXT) komposetaskwidget.$(OBJEXT) \
komposedesktopwidget.$(OBJEXT) komposelayout.$(OBJEXT) \
komposesystray.$(OBJEXT) komposefullscreenwidget.$(OBJEXT) \
komposesettings.$(OBJEXT) komposepreferences.$(OBJEXT) \
komposetaskprefswidget.$(OBJEXT) komposeglobal.$(OBJEXT) \
komposetaskcontainerwidget.$(OBJEXT) \
komposetaskvisualizer.$(OBJEXT) komposeviewmanager.$(OBJEXT)
kompose_OBJECTS = $(am_kompose_OBJECTS)
am__DEPENDENCIES_1 =
kompose_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
am__depfiles_maybe = depfiles
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(kompose_SOURCES)
DIST_SOURCES = $(kompose_SOURCES)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
shelldesktopDATA_INSTALL = $(INSTALL_DATA)
shellrcDATA_INSTALL = $(INSTALL_DATA)
DATA = $(shelldesktop_DATA) $(shellrc_DATA)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTSCCONFIG = @ARTSCCONFIG@
AUTOCONF = @AUTOCONF@
AUTODIRS = @AUTODIRS@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOPIDLNG = @DCOPIDLNG@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GMSGFMT = @GMSGFMT@
IMLIB2_CFLAGS = @IMLIB2_CFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
KCONFIG_COMPILER = @KCONFIG_COMPILER@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LDFLAGS = @LDFLAGS@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBRESOLV = @LIBRESOLV@
LIBS = @LIBS@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBZ = @LIBZ@
LIB_IMLIB2 = @LIB_IMLIB2@
LIB_KAB = @LIB_KAB@
LIB_KABC = @LIB_KABC@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPIM = @LIB_KDEPIM@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_KUTILS = @LIB_KUTILS@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XCOMPOSITE = @LIB_XCOMPOSITE@
LIB_XDAMAGE = @LIB_XDAMAGE@
LIB_XEXT = @LIB_XEXT@
LIB_XRENDER = @LIB_XRENDER@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
QTE_NORTTI = @QTE_NORTTI@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XMLLINT = @XMLLINT@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
X_RPATH = @X_RPATH@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
include_ARTS_FALSE = @include_ARTS_FALSE@
include_ARTS_TRUE = @include_ARTS_TRUE@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_kcfgdir = @kde_kcfgdir@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
kdeinitdir = @kdeinitdir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
x_includes = @x_includes@
x_libraries = @x_libraries@
xdg_appsdir = @xdg_appsdir@
xdg_directorydir = @xdg_directorydir@
xdg_menudir = @xdg_menudir@
# set the include path for X, qt and KDE
INCLUDES = $(all_includes) -I `imlib2-config --cflags`
# these are the headers for your project
noinst_HEADERS = kompose.h komposetaskmanager.h komposetask.h komposewidget.h \
komposetaskwidget.h komposedesktopwidget.h komposelayout.h komposesystray.h \
komposefullscreenwidget.h komposesettings.h komposepreferences.h komposetaskprefswidget.h \
komposeglobal.h komposetaskcontainerwidget.h komposetaskvisualizer.h \
komposeviewmanager.h komposedcopiface.h
# let automoc handle all of the meta source files (moc)
METASOURCES = AUTO
komposeiconsdir = $(kde_datadir)/kompose/icons
komposeicons_ICON = AUTO
# the application source, library search path, and link libraries
kompose_SOURCES = main.cpp kompose.cpp komposetaskmanager.cpp komposetask.cpp \
komposewidget.cpp komposetaskwidget.cpp komposedesktopwidget.cpp komposelayout.cpp \
komposesystray.cpp komposefullscreenwidget.cpp komposesettings.cpp komposepreferences.cpp \
komposetaskprefswidget.cpp komposeglobal.cpp komposetaskcontainerwidget.cpp \
komposetaskvisualizer.cpp komposeviewmanager.cpp komposedcopiface.skel
#kompose_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lX11 -lXext -lm `pkg-config xft xrender xcomposite xdamage xfixes --libs` `imlib2-config --libs`
kompose_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lX11 -lXext -lm `imlib2-config --libs`
kompose_LDADD = $(LIB_KDEUI) $(LIB_XCOMPOSITE) $(LIB_XDAMAGE)
# this is where the desktop file will go
shelldesktopdir = $(kde_appsdir)/Utilities
shelldesktop_DATA = kompose.desktop
# this is where the shell's XML-GUI resource file goes
shellrcdir = $(kde_datadir)/kompose
shellrc_DATA = komposeui.rc
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
kompose$(EXEEXT): $(kompose_OBJECTS) $(kompose_DEPENDENCIES)
@rm -f kompose$(EXEEXT)
$(CXXLINK) $(kompose_LDFLAGS) $(kompose_OBJECTS) $(kompose_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kompose.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposedesktopwidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposefullscreenwidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposeglobal.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposelayout.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposepreferences.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposesettings.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposesystray.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetask.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetaskcontainerwidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetaskmanager.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetaskprefswidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetaskvisualizer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposetaskwidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposeviewmanager.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/komposewidget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
install-shelldesktopDATA: $(shelldesktop_DATA)
@$(NORMAL_INSTALL)
test -z "$(shelldesktopdir)" || $(mkdir_p) "$(DESTDIR)$(shelldesktopdir)"
@list='$(shelldesktop_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(shelldesktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(shelldesktopdir)/$$f'"; \
$(shelldesktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(shelldesktopdir)/$$f"; \
done
uninstall-shelldesktopDATA:
@$(NORMAL_UNINSTALL)
@list='$(shelldesktop_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(shelldesktopdir)/$$f'"; \
rm -f "$(DESTDIR)$(shelldesktopdir)/$$f"; \
done
install-shellrcDATA: $(shellrc_DATA)
@$(NORMAL_INSTALL)
test -z "$(shellrcdir)" || $(mkdir_p) "$(DESTDIR)$(shellrcdir)"
@list='$(shellrc_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(shellrcDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(shellrcdir)/$$f'"; \
$(shellrcDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(shellrcdir)/$$f"; \
done
uninstall-shellrcDATA:
@$(NORMAL_UNINSTALL)
@list='$(shellrc_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(shellrcdir)/$$f'"; \
rm -f "$(DESTDIR)$(shellrcdir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(shelldesktopdir)" "$(DESTDIR)$(shellrcdir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-shelldesktopDATA install-shellrcDATA
install-exec-am: install-binPROGRAMS
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
uninstall-shelldesktopDATA uninstall-shellrcDATA
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-shelldesktopDATA install-shellrcDATA install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-info-am uninstall-shelldesktopDATA \
uninstall-shellrcDATA
messages: rc.cpp
$(XGETTEXT) *.cpp --language=C --from-code=UTF-8 -o $(podir)/kompose.pot
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,88 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "kompose.h"
#include "komposeglobal.h"
#include "komposesettings.h"
#include "komposetaskmanager.h"
#include <klocale.h>
#include <kuniqueapplication.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#ifdef COMPOSITE
#include <X11/Xatom.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xrender.h>
#endif
Kompose::Kompose()
{
}
Kompose::~Kompose()
{}
bool Kompose::x11EventFilter (XEvent *event)
{
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
if ( event->type == KomposeGlobal::instance()->getDamageEvent() + XDamageNotify )
{
KomposeTaskManager::instance()->processX11Event( event );
// XDamageNotifyEvent *e = reinterpret_cast<XDamageNotifyEvent*>( event );
// // e->drawable is the window ID of the damaged window
// // e->geometry is the geometry of the damaged window
// // e->area is the bounding rect for the damaged area
// // e->damage is the damage handle returned by XDamageCreate()
//
// // Subtract all the damage, repairing the window.
// XDamageSubtract( dpy, e->damage, None, None );
}
//
// else if ( event->type == shape_event + ShapeNotify )
// {
// XShapeEvent *e = reinterpret_cast<XShapeEvent*>( event );
// // It's probably safe to assume that the window shape region
// // is invalid at this point...
// }
else if ( event->type == ConfigureNotify )
{
// XConfigureEvent *e = &event->xconfigure;
// The windows size, position or Z index in the stacking
// order has changed
KomposeTaskManager::instance()->processX11Event( event );
}
}
#endif
// This costed me nerves:
// Call this or kwinmodule won't work
return KApplication::x11EventFilter(event);
}
#include "kompose.moc"

@ -0,0 +1,19 @@
[Desktop Entry]
Comment=An Apple Exposé like Taskmanager
Comment[en_US]=An Apple Exposé like Taskmanager
Encoding=UTF-8
Exec=kompose
GenericName=Window Switcher
GenericName[en_US]=
Icon=kompose
MimeType=
Name=Komposé
Name[en_US]=Komposé
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

@ -0,0 +1,47 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _KOMPOSE_H_
#define _KOMPOSE_H_
// #ifdef HAVE_CONFIG_H
// #include <config.h>
// #endif
#include <kuniqueapplication.h>
/**
* @short Application Main entry point and x11 Event Receiver
* @author Hans Oischinger <hans.oischinger@kde-mail.net>
*/
class Kompose : public KUniqueApplication
{
Q_OBJECT
public:
Kompose();
virtual ~Kompose();
protected:
bool x11EventFilter (XEvent *);
};
#endif // _KOMPOSE_H_

@ -0,0 +1,16 @@
Begin3
Title: kompose -- Some description
Version: 0.5.2
Entered-date:
Description:
Keywords: KDE Qt
Author: Hans Oischinger <oisch@sourceforge.net>
Maintained-by: Hans Oischinger <oisch@sourceforge.net>
Home-page:
Alternate-site:
Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
xxxxxx kompose-0.5.2.tar.gz
xxx kompose.lsm
Platform: Linux. Needs KDE
Copying-policy: GPL
End

@ -0,0 +1,33 @@
//
// C++ Interface: %{MODULE}
//
// Description:
//
//
// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEDCOPIFACE_H
#define KOMPOSEDCOPIFACE_H
#include <dcopobject.h>
/**
@author Hans Oischinger
*/
class KomposeDcopIface : virtual public DCOPObject
{
K_DCOP
k_dcop:
virtual void createDefaultView() = 0;
virtual void createVirtualDesktopView() = 0;
virtual void createCurrentDesktopView() = 0;
virtual void createWorldView() = 0;
virtual void closeCurrentView() = 0;
};
#endif

@ -0,0 +1,239 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposedesktopwidget.h"
#include "komposelayout.h"
#include "komposetask.h"
#include "komposetaskwidget.h"
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include "komposesettings.h"
#include "komposeglobal.h"
#include <qdesktopwidget.h>
#include <qcolor.h>
#include <qpainter.h>
#include <qapplication.h>
#include <qdragobject.h>
#include <qtooltip.h>
#include <klocale.h>
#include <kwin.h>
#include <ksharedpixmap.h>
#include <krootpixmap.h>
#include <kwinmodule.h>
#include <kcursor.h>
#include <kdebug.h>
KomposeDesktopWidget::KomposeDesktopWidget(int desktop, QWidget *parent, KomposeLayout *l, const char *name)
: KomposeTaskContainerWidget( desktop, parent, l, name ),
highlight(false)
{
// Retrieve geometry
// QDesktopWidget *deskwidget = new QDesktopWidget();
// deskRect = deskwidget->screenGeometry();
// delete deskwidget;
initFonts();
// Set Desktop background as our background
setBackgroundMode( Qt::NoBackground );
KWinModule kwinmodule( this, 1 );
deskName = kwinmodule.desktopName(desktop+1);
QToolTip::add( this, i18n("Desktop %1 - %2").arg(desktop).arg(deskName) );
rootpix = new KRootPixmap (this);
rootpix->start();
setAcceptDrops(TRUE);
createTaskWidgets();
connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
setFocusPolicy(QWidget::ClickFocus);
}
KomposeDesktopWidget::~KomposeDesktopWidget()
{
disconnect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
}
void KomposeDesktopWidget::initFonts()
{
titleFont = KomposeSettings::instance()->getDesktopTitleFont();
}
// int KomposeDesktopWidget::getHeightForWidth( int w ) const
// {
// kdDebug() << "KomposeDesktopWidget::getHeightForWidth()");
// return ((double)w / (double)deskRect.width()) * deskRect.height();
// }
//
// int KomposeDesktopWidget::getWidthForHeight( int h ) const
// {
// kdDebug() << "KomposeDesktopWidget::getWidthForHeight()");
// return ((double)h / (double)deskRect.height()) * deskRect.width();
// }
//
// double KomposeDesktopWidget::getAspectRatio()
// {
// kdDebug() << "KomposeDesktopWidget::getAspectRatio()");
// return (double)deskRect.width() / (double)deskRect.height();
// }
void KomposeDesktopWidget::leaveEvent ( QEvent * )
{
// Unset highlight if cursor moves out of our rect
// but not if it enters a child widget
QRect deskRect;
deskRect.setTopLeft(mapToGlobal( QPoint(0,0) ));
deskRect.setWidth(width());
deskRect.setHeight(height());
if ( !deskRect.contains( QCursor::pos() ) )
highlight = false;
unsetCursor();
repaint();
}
void KomposeDesktopWidget::enterEvent ( QEvent * )
{
setFocus();
setCursor( KCursor::handCursor() );
highlight = true;
repaint();
}
void KomposeDesktopWidget::focusInEvent ( QFocusEvent * )
{
highlight = true;
repaint();
}
void KomposeDesktopWidget::focusOutEvent ( QFocusEvent * )
{
// Unset highlight if cursor moves out of our rect
// but not if it enters a child widget
QRect deskRect;
deskRect.setTopLeft(mapToGlobal( QPoint(0,0) ));
deskRect.setWidth(width());
deskRect.setHeight(height());
if ( !deskRect.contains( QCursor::pos() ) )
highlight = false;
repaint();
}
void KomposeDesktopWidget::mouseReleaseEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
KomposeViewManager::instance()->setCurrentDesktop(desktop);
}
void KomposeDesktopWidget::mouseDoubleClickEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
KomposeViewManager::instance()->setCurrentDesktop(desktop);
}
void KomposeDesktopWidget::paintEvent ( QPaintEvent * )
{
// KomposeWidget::paintEvent(e);
QPainter p;
p.begin( this );
// QPoint tl = mapToGlobal(QPoint(0,0));
// p.drawPixmap(0,0, *KomposeGlobal::instance()->getDesktopBgPixmap(),
// tl.x(), tl.y(), width(), height());
p.setFont(titleFont);
if (highlight)
p.setPen( KomposeSettings::instance()->getDesktopTitleFontHighlightColor() );
else
p.setPen( KomposeSettings::instance()->getDesktopTitleFontColor() );
// Bounding rect
p.drawRect(rect());
// paint the Desktop num & name (centered if empty, bottom right if not)
if ( layout->getNumofChilds() == 0 )
p.drawText(QRect(QPoint(0,0), size()), Qt::AlignCenter, QString("Desktop %1 - %2").arg(desktop+1).arg(deskName));
else
p.drawText(QRect(QPoint(0,0), size()), Qt::AlignRight | Qt::AlignBottom, QString("Desktop %1 - %2").arg(desktop+1).arg(deskName));
p.end();
}
void KomposeDesktopWidget::dragEnterEvent( QDragEnterEvent* e )
{
kdDebug() << "KomposeDesktopWidget::dragEnterEvent" << endl;
e->accept( QTextDrag::canDecode(e) );
}
void KomposeDesktopWidget::dropEvent ( QDropEvent * e )
{
QString text;
if ( QTextDrag::decode(e, text) )
{
kdDebug() << "KomposeDesktopWidget::dropEvent - Received Task drop" << endl;
KomposeTaskWidget* dropWidget = dynamic_cast<KomposeTaskWidget*>(e->source());
dropWidget->getTask()->toDesktop( desktop + 1);
//if ( dropWidget->parentWidget() != this)
// dropWidget->reparent( this, QPoint(0,0), true );
e->accept();
}
}
void KomposeDesktopWidget::childEvent ( QChildEvent * ce)
{
KomposeWidget::childEvent( ce );
emit contentsChanged();
}
void KomposeDesktopWidget::keyReleaseEvent ( QKeyEvent * e )
{
if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Space )
{
kdDebug() << "KomposeDesktopWidget::keyReleaseEvent - Switching to Desktop!" << endl;
KomposeViewManager::instance()->setCurrentDesktop(desktop);
e->accept();
}
else
{
kdDebug() << "KomposeDesktopWidget::keyReleaseEvent - ignored..." << endl;
e->ignore();
}
KomposeTaskContainerWidget::keyReleaseEvent(e);
}
#include "komposedesktopwidget.moc"

@ -0,0 +1,70 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSEDESKTOPWIDGET_H
#define KOMPOSEDESKTOPWIDGET_H
#include "komposetaskcontainerwidget.h"
class KomposeLayout;
class KomposeTask;
class KRootPixmap;
/**
@author Hans Oischinger
*/
class KomposeDesktopWidget : public KomposeTaskContainerWidget
{
Q_OBJECT
public:
KomposeDesktopWidget(int desktop, QWidget *parent = 0, KomposeLayout *l = 0, const char *name = 0);
~KomposeDesktopWidget();
// int getHeightForWidth( int w ) const;
// int getWidthForHeight( int h ) const;
// double getAspectRatio();
signals:
void contentsChanged();
protected:
void paintEvent ( QPaintEvent * );
void dragEnterEvent ( QDragEnterEvent * );
void dropEvent ( QDropEvent * );
void leaveEvent ( QEvent * );
void enterEvent ( QEvent * );
void mouseReleaseEvent ( QMouseEvent * e );
void mouseDoubleClickEvent ( QMouseEvent * e );
void childEvent( QChildEvent * ce);
void focusInEvent ( QFocusEvent * );
void focusOutEvent ( QFocusEvent * );
void keyReleaseEvent ( QKeyEvent * e );
protected slots:
void initFonts();
private:
QRect deskRect;
QString deskName;
bool highlight; // Highlight widget?
QFont titleFont;
KRootPixmap *rootpix;
};
#endif

@ -0,0 +1,223 @@
//
// C++ Implementation: komposefullscreenwidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposefullscreenwidget.h"
#include "komposedesktopwidget.h"
#include "komposetaskwidget.h"
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include "komposeglobal.h"
#include "komposelayout.h"
#include <qobjectlist.h>
#include <qptrlist.h>
#include <qpainter.h>
#include <qdesktopwidget.h>
#include <kwin.h>
#include <kapplication.h>
#include <kpopupmenu.h>
#include <kaction.h>
#include <ksharedpixmap.h>
#include <kcursor.h>
#include <kglobalsettings.h>
#include <kdebug.h>
#include <krootpixmap.h>
KomposeFullscreenWidget::KomposeFullscreenWidget( int displayType, KomposeLayout *l )
: KomposeTaskContainerWidget( -1, 0, l ),
type(displayType)
{
// if ( QT_VERSION < 0x030300 )
/* use showMaximized instead of setWindowState to make it compile on qt 3.1 or whatever */
// showMaximized();
// KWin::setState( winId(), NET::KeepAbove );
// Set Desktop background as our background
setBackgroundMode( Qt::FixedPixmap );
// setBackgroundPixmap(*(KomposeGlobal::instance()->getDesktopBgPixmap()));
rootpix = new KRootPixmap (this);
rootpix->start();
initMenu();
initView();
//showFullScreen();
// Alternate showFullscreen
setWindowState(windowState() | WindowFullScreen);
//setWFlags(WStyle_NoBorder);
kdDebug() << KomposeSettings::instance()->getViewScreen() << endl;
if (KomposeSettings::instance()->getViewScreen() == -1)
setGeometry( KGlobalSettings::desktopGeometry( this ) );
else
{
QDesktopWidget deskwidget;
QRect deskRect = deskwidget.screenGeometry(KomposeSettings::instance()->getViewScreen());
setGeometry(deskRect);
kdDebug() << deskRect << endl;
}
if (!isTopLevel())
QApplication::sendPostedEvents(this, QEvent::ShowFullScreen);
setActiveWindow();
KWin::setOnAllDesktops( winId(), true );
}
KomposeFullscreenWidget::~KomposeFullscreenWidget()
{
menu->deleteLater();
}
void KomposeFullscreenWidget::initMenu()
{
menu = new KPopupMenu();
KomposeGlobal::instance()->getActShowWorldView()->plug(menu);
KomposeGlobal::instance()->getActShowVirtualDesktopView()->plug(menu);
KomposeGlobal::instance()->getActShowCurrentDesktopView()->plug(menu);
menu->insertSeparator();
KomposeGlobal::instance()->getActPreferencesDialog()->plug(menu);
KomposeGlobal::instance()->getActConfigGlobalShortcuts()->plug(menu);
KomposeGlobal::instance()->getActAboutDlg()->plug(menu);
//menu->insertSeparator();
//KomposeGlobal::instance()->getActQuit()->plug(menu);
}
void KomposeFullscreenWidget::destroyChildWidgets()
{
setUpdatesEnabled( false );
KomposeWidget *child;
QPtrListIterator<KomposeWidget> it( *(layout->getManagedWidgets()));
while ( (child = it.current()) != 0 )
{
++it;
layout->remove(child);
dynamic_cast<QWidget*>(child)->deleteLater();
}
setUpdatesEnabled( true );
kdDebug() << "KomposeFullscreenWidget::destroyChildWidgets() - all children destroyed" << endl;
}
void KomposeFullscreenWidget::initView()
{
setCursor( KCursor::waitCursor() );
destroyChildWidgets();
if ( type == KOMPOSEDISPLAY_VIRTUALDESKS )
{
disconnect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
layout->setType( TLAYOUT_TASKCONTAINERS );
setDesktop( -2 );
createDesktopWidgets();
}
else if ( type == KOMPOSEDISPLAY_WORLD )
{
layout->setType( TLAYOUT_GENERIC );
setDesktop( -1 );
createTaskWidgets();
connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
}
else if ( type == KOMPOSEDISPLAY_CURRENTDESK )
{
layout->setType( TLAYOUT_GENERIC );
setDesktop( KomposeViewManager::instance()->getDesktopBeforeSnaps() );
createTaskWidgets();
connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
}
unsetCursor();
}
void KomposeFullscreenWidget::createDesktopWidgets()
{
kdDebug() << "KomposeFullscreenWidget::createDesktopWidgets()" << endl;
// Create a Widget for every desktop
for (int i=0; i < KomposeTaskManager::instance()->getNumDesktops(); ++i)
{
//int row = i / 2;
//int col = i % 2;
//kdDebug() << "rc %d %d", row, col);
KomposeDesktopWidget *desktop = new KomposeDesktopWidget(i, this );
connect(desktop, SIGNAL(contentsChanged()), layout, SLOT(arrangeLayout()) );
desktop->show();
}
}
void KomposeFullscreenWidget::mouseReleaseEvent (QMouseEvent * )
{}
void KomposeFullscreenWidget::mousePressEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
switch ( e->button() )
{
case LeftButton:
break;
case MidButton:
// fall through
case RightButton:
menu->popup( e->globalPos() );
break;
default:
// nothing
break;
}
}
void KomposeFullscreenWidget::keyReleaseEvent ( QKeyEvent * e )
{
if ( e->key() == Qt::Key_Escape )
{
kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - Esc key pressed - Closing view" << endl;
KomposeViewManager::instance()->closeCurrentView();
e->accept();
}
else
{
kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - ignored..." << endl;
e->ignore();
}
KomposeTaskContainerWidget::keyReleaseEvent(e);
}
int KomposeFullscreenWidget::getHeightForWidth ( int w ) const
{
return (int)(((double)w / (double)width()) * (double)height());
}
int KomposeFullscreenWidget::getWidthForHeight ( int h ) const
{
return (int)(((double)h / (double)height()) * (double)width());
}
double KomposeFullscreenWidget::getAspectRatio()
{
return (double)width() / (double)height();
}
// void KomposeFullscreenWidget::paintEvent ( QPaintEvent * )
// {
// QPainter p( this );
// p.drawPixmap(rect(), *(KomposeGlobal::instance()->getDesktopBgPixmap()));
// p.end();
// }
#include "komposefullscreenwidget.moc"

@ -0,0 +1,61 @@
//
// C++ Interface: komposefullscreenwidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEFULLSCREENWIDGET_H
#define KOMPOSEFULLSCREENWIDGET_H
#include "komposetaskcontainerwidget.h"
#include "komposesettings.h"
class KRootPixmap;
class KomposeDesktopWidget;
class KPopupMenu;
/**
@author Hans Oischinger
*/
class KomposeFullscreenWidget : public KomposeTaskContainerWidget
{
Q_OBJECT
public:
KomposeFullscreenWidget( int displayType = KOMPOSEDISPLAY_VIRTUALDESKS ,KomposeLayout *l = 0 );
virtual ~KomposeFullscreenWidget();
int getHeightForWidth( int w ) const;
int getWidthForHeight( int h ) const;
double getAspectRatio();
void setType( int t ) { type = t; initView(); }
int getType() { return type; }
protected:
void initView();
void initMenu();
void createDesktopWidgets();
void mouseReleaseEvent (QMouseEvent *);
void mousePressEvent (QMouseEvent *);
void keyReleaseEvent ( QKeyEvent * e );
// void paintEvent ( QPaintEvent * );
void destroyChildWidgets();
// virtual void closeEvent ( QCloseEvent * e );
private:
int type;
KPopupMenu *menu;
KRootPixmap *rootpix;
};
#endif

@ -0,0 +1,116 @@
//
// C++ Implementation: komposegldesktopwidget
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposegldesktopwidget.h"
#include "komposetask.h"
#include "komposegltaskwidget.h"
#include "komposetaskmanager.h"
#include <qdesktopwidget.h>
#include <qobjectlist.h>
#include <kdebug.h>
#include <GL/gl.h>
KomposeGLDesktopWidget::KomposeGLDesktopWidget(int desktop, QObject *parent, const char *name)
: KomposeGLWidget( parent ),
deskNum( desktop )
{
// Retrieve geometry
QDesktopWidget *deskwidget = new QDesktopWidget();
deskRect = deskwidget->availableGeometry();
delete deskwidget;
createTaskWidgets();
//connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) );
}
KomposeGLDesktopWidget::~KomposeGLDesktopWidget()
{}
void KomposeGLDesktopWidget::createTaskWidgets()
{
TaskList tl = KomposeTaskManager::instance()->getTasks();
qDebug("KomposeGLDesktopWidget::createTaskWidgets() on %d tasks", tl.count());
QPtrListIterator<KomposeTask> it( tl );
KomposeTask *task;
while ( (task = it.current()) != 0 )
{
++it;
Q_CHECK_PTR(task);
createTaskWidget( task );
}
}
void KomposeGLDesktopWidget::createTaskWidget( KomposeTask* task )
{
if (deskNum == task->onDesktop()-1 )
{
qDebug("KomposeGLDesktopWidget::createTaskWidget()" );
KomposeGLTaskWidget *taskwidget = new KomposeGLTaskWidget( task, this, 0, "" );
}
}
int KomposeGLDesktopWidget::getHeightForWidth( int w ) const
{
qDebug("KomposeGLDesktopWidget::getHeightForWidth()");
return ((double)w / (double)deskRect.width()) * deskRect.height();
}
int KomposeGLDesktopWidget::getWidthForHeight( int h ) const
{
qDebug("KomposeGLDesktopWidget::getWidthForHeight()");
return ((double)h / (double)deskRect.height()) * deskRect.width();
}
double KomposeGLDesktopWidget::getAspectRatio()
{
qDebug("KomposeGLDesktopWidget::getAspectRatio()");
return (double)deskRect.width() / (double)deskRect.height();
}
void KomposeGLDesktopWidget::draw()
{
KomposeGLWidget::draw();
qDebug("KomposeGLDesktopWidget::draw() - %d,%d %dx%d", getRect().x(), getRect().y(), getRect().width(), getRect().height());
glColor3f(0.0f, 0.0f, 1.0f);
glBegin( GL_QUADS );
glVertex2i( getRect().x() + getRect().width(), getRect().y() );
glVertex2i( getRect().x(), getRect().y() );
glVertex2i( getRect().x(), getRect().y() + getRect().height() );
glVertex2i( getRect().x() + getRect().width(), getRect().y() + getRect().height() );
glEnd();
// Draw Task Widgets
QPtrListIterator<KomposeGLWidget> it( list );
// Check or empty list
if (it.count() == 0)
{
qDebug("KomposeGLDesktopWidget::draw() - empty list... skipping!");
return;
}
KomposeGLWidget *widget;
while ( (widget = (KomposeGLWidget*)it.current()) != 0 )
{
++it;
widget->draw();
}
}
#include "komposegldesktopwidget.moc"

@ -0,0 +1,176 @@
//
// C++ Implementation: komposeglwidget
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposeglfullscreenwidget.h"
#include "komposelayout.h"
#include "komposetaskmanager.h"
#include "komposegldesktopwidget.h"
#include <kdebug.h>
#include <GL/gl.h>
#include <GL/glut.h>
KomposeGLFullscreenWidget::KomposeGLFullscreenWidget(QWidget *parent, const char *name) :
QGLWidget(parent, name)
{
qDebug("KomposeGLFullscreenWidget::KomposeGLFullscreenWidget()");
layout = new KomposeLayout( this );
setWindowState(Qt::WindowMaximized | Qt::WindowActive);
showFullScreen();
createDesktopWidgets();
}
KomposeGLFullscreenWidget::~KomposeGLFullscreenWidget()
{}
void KomposeGLFullscreenWidget::createDesktopWidgets()
{
// Create a Widget for every desktop
for (int i=0; i < KomposeTaskManager::instance()->getNumDesktops(); ++i)
{
int row = i / 2;
int col = i % 2;
//qDebug("rc %d %d", row, col);
desktop[i] = new KomposeGLDesktopWidget(i, this);
layout->add(dynamic_cast<KomposeWidgetInterface*>(desktop[i]));
}
}
void KomposeGLFullscreenWidget::initializeGL()
{
// Set up the rendering context, define display lists etc.:
if( !format().hasOpenGL() )
{
qWarning( "KomposeGLFullscreenWidget::initializeGL() - OpenGL not supported!" );
return;
}
if ( !format().doubleBuffer() )
{
qWarning( "KomposeGLFullscreenWidget::initializeGL() - Direct rendering enabled !" );
}
// glShadeModel(GL_SMOOTH);
//
// format().setDirectRendering( true );
// format().setDoubleBuffer( true );
// format().setRgba( true );
// format().setDepth ( false );
// format().setAccum( false );
// format().setStencil( false );
// format().setAlpha( true );
// Alpha blend
// glEnable( GL_BLEND );
// glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
// All smoothing stuff
// glEnable( GL_POLYGON_SMOOTH );
// glHint( GL_POLYGON_SMOOTH_HINT, GL_FASTEST );
// glEnable( GL_POINT_SMOOTH );
// glHint( GL_POINT_SMOOTH_HINT, GL_FASTEST );
// glEnable( GL_LINE_SMOOTH );
// glHint( GL_LINE_SMOOTH_HINT, GL_FASTEST );
// Lighting and Depth Test
glDisable( GL_LIGHTING );
// glDisable( GL_DEPTH_TEST );
// glDisable( GL_NORMALIZE );
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_ACCUM_BUFFER_BIT );
/*! Setup sizes */
// glLineWidth( 1.0 );
// glPointSize( 2.0 );
setOrthographicProjection();
}
void KomposeGLFullscreenWidget::resizeGL( int w, int h )
{
// setup viewport, projection etc.:
setOrthographicProjection();
layout->arrangeLayout();
}
/*! draw OpenGL scene ( called from Qt ) */
void KomposeGLFullscreenWidget::paintGL()
{
qDebug("KomposeGLFullscreenWidget::paintGL()");
glPushMatrix();
// clears the color buffer (this will set the window to black)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Draw Desktop Widgets
for (int i=0; i < KomposeTaskManager::instance()->getNumDesktops(); ++i)
{
// FIXME: Make desktop arrays dynamic or at least avoid KomposeTaskManager::instance()->getNumDesktops() here
desktop[i]->draw();
}
glFlush();
glPopMatrix();
}
void KomposeGLFullscreenWidget::setOrthographicProjection()
{
qDebug("KomposeGLFullscreenWidget::setOrthographicProjection() - %dx%d", width(), height());
glViewport( 0, 0, (GLint)width(), (GLint)height() );
// switch to projection mode
glMatrixMode(GL_PROJECTION);
// reset matrix
glLoadIdentity();
// set a 2D orthographic projection
gluOrtho2D(0.0, (GLdouble)width(), 0.0, (GLdouble)height());
// invert the y axis, down is positive
glScalef(1, -1, 1);
// mover the origin from the bottom left corner
// to the upper left corner
glTranslatef(0, -height(), 0);
glMatrixMode(GL_MODELVIEW);;
}
// Redirect these functions to QGLWidget
void KomposeGLFullscreenWidget::setGeom ( const QRect &rect )
{
QGLWidget::setGeometry( rect );
}
void KomposeGLFullscreenWidget::setGeom ( const QSize &size )
{
QGLWidget::resize( size );
}
QSize KomposeGLFullscreenWidget::getSize() const
{
return QGLWidget::size();
}
QRect KomposeGLFullscreenWidget::getRect() const
{
return QGLWidget::rect();
}
void KomposeGLFullscreenWidget::removeChildWidget( KomposeWidgetInterface* obj )
{
QGLWidget::removeChild((QObject *) obj);
}
#include "komposeglfullscreenwidget.moc"

@ -0,0 +1,375 @@
//
// C++ Implementation: komposeglobal
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposeglobal.h"
#include "komposetaskmanager.h"
#include "komposeviewmanager.h"
#include "komposesettings.h"
#include "komposesystray.h"
#include <qtimer.h>
#include <kapplication.h>
#include <kpopupmenu.h>
#include <kaction.h>
#include <kactioncollection.h>
#include <klocale.h>
#include <kiconloader.h>
#include <kaccel.h>
#include <kkeydialog.h>
#include <kaboutapplication.h>
#include <ksharedpixmap.h>
#include <kwinmodule.h>
#include <kdebug.h>
#include <dcopclient.h>
#include <dcopref.h>
#include <dcopclient.h>
// #include those AFTER Qt-includes!
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Imlib2.h>
#ifdef COMPOSITE
#include <X11/Xatom.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xrender.h>
#endif
static KomposeGlobal* globalInstance = 0;
Display *disp;
static QString wallpaperForDesktop(int desktop)
{
return DCOPRef("kdesktop", "KBackgroundIface").call("currentWallpaper", desktop);
}
/**
* KomposeSettings is a singleton
*/
KomposeGlobal* KomposeGlobal::instance()
{
if ( !globalInstance )
{
kdDebug() << "KomposeSettings::instance() - Creating Singleton instance" << endl;
KomposeGlobal *settiglobalInstance = new KomposeGlobal();
}
return globalInstance;
}
KomposeGlobal::KomposeGlobal(QObject *parent, const char *name)
: QObject(parent, name),
aboutDialogOpen(0),
hideSystray( false ),
singleShot( false ),
xcomposite(0),
damageEvent(0)
{
globalInstance = this;
kwin_module = new KWinModule(); //FIXME: only needed for sharedpixmap :(
currentDesktop = kwin_module->currentDesktop();
desktopBgPixmap = new KSharedPixmap;
connect(desktopBgPixmap, SIGNAL(done(bool)), SLOT(slotDone(bool)));
initSharedPixmaps();
initCompositeExt();
initImlib();
connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(slotConfigChanged()) );
}
KomposeGlobal::~KomposeGlobal()
{
delete systray;
delete actionCollection;
delete actConfigGlobalShortcuts;
delete actPreferencesDialog;
delete actShowVirtualDesktopView;
delete actShowCurrentDesktopView;
delete actShowWorldView;
delete actAboutDlg;
delete actQuit;
delete desktopBgPixmap;
}
void KomposeGlobal::slotConfigChanged( )
{
initCompositeExt();
}
/**
* Gives us control about when the GUI should appear. Called from outside
* Called from outside as KomposeGlobal is a singleton that can be instantiated at any time
*/
void KomposeGlobal::initGui()
{
// Initialise the Singleton instances
KomposeSettings::instance();
KomposeViewManager::instance();
KomposeTaskManager::instance();
// Create DCop Client
kapp->dcopClient()->setDefaultObject( "KomposeTaskMgrDcopIface" );
initActions();
if ( !hideSystray && !singleShot )
{
// Create systray
systray = new KomposeSysTray();
kapp->setMainWidget( systray );
systray->currentDesktopChanged( currentDesktop );
actionCollection->setWidget( systray );
systray->show();
}
else
kdDebug() << "KomposeGlobal::initGui() - Hiding systray icon" << endl;
if ( singleShot )
{
kdDebug() << "KomposeGlobal::initGui() - SingleShot has been selected" << endl;
KomposeViewManager::instance()->createView();
}
}
/**
* Initialise Kompose's global actions. Retrieve these via the getters in KomposeGlobal
*/
void KomposeGlobal::initActions()
{
actionCollection = new KActionCollection( (QWidget*)0 );
// Actions
actQuit = KStdAction::quit( kapp, SLOT(quit()), actionCollection );
actShowWorldView = new KAction(i18n("Komposé (ungrouped)"), "kompose_ungrouped",
0,
KomposeViewManager::instance(), SLOT(createWorldView()),
actionCollection, "showWorldView");
actShowVirtualDesktopView = new KAction(i18n("Komposé (grouped by virtual desktops)"), "kompose_grouped_by_virtual_desktop",
0,
KomposeViewManager::instance(), SLOT(createVirtualDesktopView()),
actionCollection, "showVirtualDesktopView");
actShowCurrentDesktopView = new KAction(i18n("Komposé (current virtual desktop)"), "kompose_current_virtual_desktop",
0,
KomposeViewManager::instance(), SLOT(createCurrentDesktopView()),
actionCollection, "showCurrentDesktopView");
actPreferencesDialog = KStdAction::preferences( KomposeSettings::instance(), SLOT(showPreferencesDlg()), actionCollection );
actConfigGlobalShortcuts = KStdAction::keyBindings(this, SLOT(showGlobalShortcutsSettingsDialog()),
actionCollection, "options_configure_global_keybinding");
actConfigGlobalShortcuts->setText(i18n("Configure &Global Shortcuts..."));
actAboutDlg = new KAction(i18n("About Komposé"), "kompose",
0,
this, SLOT(showAboutDlg()),
actionCollection, "showAboutDlg");
}
void KomposeGlobal::initSharedPixmaps()
{
// Whenever the background pixmap changes we'll have to reload it:
//connect(kwin_module, SIGNAL(windowChanged(WId, unsigned int)), SLOT(desktopChanged(WId, unsigned int)));
connect(kwin_module, SIGNAL(currentDesktopChanged(int)), SLOT(slotDesktopChanged(int)));
connect(kapp, SIGNAL(backgroundChanged(int)), SLOT(slotBackgroundChanged(int)));
enablePixmapExports();
// When Kompose is started by session management the bg shared pixmap may not be available yet
if (!desktopBgPixmap->isAvailable( pixmapName(1) ))
{
qWarning("KomposeGlobal::initSharedPixmaps() - Pixmap not available");
//enablePixmapExports();
QTimer::singleShot( 1000, this, SLOT( initSharedPixmaps() ) );
//initSharedPixmaps();
//return;
}
kdDebug() << "KomposeGlobal::initSharedPixmaps()" << endl;
refreshSharedPixmaps();
}
void KomposeGlobal::slotDesktopChanged(int desktop)
{
systray->currentDesktopChanged( desktop );
if (desktop != -2)
{
// -2 is for manual loading, everything else enables the following checks:
if (wallpaperForDesktop(currentDesktop) == wallpaperForDesktop(desktop) &&
!wallpaperForDesktop(currentDesktop).isNull())
return;
if ( !(pixmapName(currentDesktop) != pixmapName(desktop)) )
return;
}
currentDesktop = kwin_module->currentDesktop();
refreshSharedPixmaps();
}
void KomposeGlobal::slotBackgroundChanged(int)
{
refreshSharedPixmaps();
}
void KomposeGlobal::refreshSharedPixmaps()
{
desktopBgPixmap->loadFromShared( pixmapName(currentDesktop) );
}
QString KomposeGlobal::pixmapName(int desk)
{
// To simplify things we take the background of the first desktop
QString pattern = QString("DESKTOP%1");
int screen_number = DefaultScreen(qt_xdisplay());
if (screen_number)
{
pattern = QString("SCREEN%1-DESKTOP").arg(screen_number) + "%1";
}
return pattern.arg( desk );
}
void KomposeGlobal::slotDone(bool success)
{
if (!success)
{
kdDebug() << "KomposeGlobal::slotDone() - loading of desktop background failed.\n" << endl;
//QTimer::singleShot( 1000, this, SLOT( initSharedPixmaps() ) );
}
}
void KomposeGlobal::enablePixmapExports()
{
#ifdef Q_WS_X11
kdDebug() << "KomposeGlobal::enablePixmapExports()" << endl;
DCOPClient *client = kapp->dcopClient();
if (!client->isAttached())
client->attach();
QByteArray data;
QDataStream args( data, IO_WriteOnly );
args << 1;
QCString appname( "kdesktop" );
int screen_number = DefaultScreen(qt_xdisplay());
if ( screen_number )
appname.sprintf("kdesktop-screen-%d", screen_number );
client->send( appname, "KBackgroundIface", "setExport(int)", data );
#endif
}
/**
* Show Global Shortcuts Dialog for Kompose
*/
void KomposeGlobal::showGlobalShortcutsSettingsDialog()
{
KKeyDialog::configure( KomposeSettings::instance()->getGlobalAccel() );
KomposeSettings::instance()->writeConfig();
}
/**
* Show About Dialog for Kompose
*/
void KomposeGlobal::showAboutDlg()
{
aboutDialogOpen = true;
KAboutApplication* kabout = new KAboutApplication();
kabout->exec();
delete kabout;
aboutDialogOpen = false;
}
/**
* Initialise Imlib2.
* Should only be called by the KomposeGlobal constructor
*/
void KomposeGlobal::initImlib()
{
Display *disp;
Visual *vis;
Colormap cm;
//int screen;
disp = QPaintDevice::x11AppDisplay();
vis = DefaultVisual(disp, DefaultScreen(disp));
cm = DefaultColormap(disp, DefaultScreen(disp));
// context = imlib_context_new();
// imlib_context_push(d->context);
imlib_set_cache_size(0);
imlib_set_color_usage(128);
imlib_context_set_dither(1);
imlib_context_set_display(disp);
imlib_context_set_visual(vis);
imlib_context_set_colormap(cm);
kdDebug() << "KomposeGlobal::initImlib() - Imlib2 support enabled." << endl;
}
/**
* Detect and initialise the XComposite extension.
* Should only be called by the KomposeGlobal constructor
*/
void KomposeGlobal::initCompositeExt()
{
if ( !(!xcomposite && KomposeSettings::instance()->getUseComposite()) )
return;
xcomposite = false;
#ifdef COMPOSITE
// Check for XComposite
Display *dpy = QPaintDevice::x11AppDisplay();
int event_base, error_base;
if ( XCompositeQueryExtension( dpy, &event_base, &error_base ) )
{
// If we get here the server supports the extension
xcomposite = true;
// XComposite version check
int major = 1, minor = 1; // The highest version we support
XCompositeQueryVersion( dpy, &major, &minor );
// major and minor will now contain the version the server supports.
if (!(major > 0 || minor >= 2))
{
kdDebug() << "KomposeGlobal::initCompositeExt() - XComposite doesn't allow NamePixmap requests! - Disabling XComposite support" << endl;
// TODO: create a namewindowpixbool to make it work with composite 0.1
xcomposite = false;
}
// XRender version check
int renderEvent, renderError;
if (!XRenderQueryExtension (dpy, &renderEvent, &renderError))
{
kdDebug() << "KomposeGlobal::initCompositeExt() - XRender not available! - Disabling XComposite support" << endl;
}
//XDamage version check
//int damageEvent, damageError; // The event base is important here
if (!XDamageQueryExtension( dpy, &damageEvent, &damageError ))
{
kdDebug() << "KomposeGlobal::initCompositeExt() - XDamage is not available! - Disabling XComposite support" << endl;
xcomposite = false;
}
}
else
xcomposite = false;
#endif
if ( xcomposite )
kdDebug() << "KomposeGlobal::initCompositeExt() - XComposite extension found and enabled." << endl;
}
#include "komposeglobal.moc"

@ -0,0 +1,109 @@
//
// C++ Interface: komposeglobal
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEGLOBAL_H
#define KOMPOSEGLOBAL_H
class KomposeSysTray;
#include <qobject.h>
#include <qstring.h>
class KPopupMenu;
class KActionCollection;
class KAction;
class KSharedPixmap;
class KWinModule;
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#if defined(Q_WS_X11) && defined(HAVE_XCOMPOSITE) && defined(HAVE_XDAMAGE) && QT_VERSION >= 0x030300
# define COMPOSITE
#endif
/**
@author Hans Oischinger
*/
class KomposeGlobal : public QObject
{
Q_OBJECT
protected:
KomposeGlobal(QObject *parent = 0, const char *name = 0);
~KomposeGlobal();
public:
static KomposeGlobal *instance();
KomposeSysTray* getSysTray() { return systray; }
void initGui();
bool hasAboutDialogOpen() { return aboutDialogOpen; }
void setHideSystray( bool b ) { hideSystray = b; }
void setSingleShot( bool b ) { singleShot = b; }
bool getSingleShot() { return singleShot; }
bool hasXcomposite() { return xcomposite; }
int getDamageEvent() { return damageEvent; }
// Action getters
KAction *getActConfigGlobalShortcuts() { return actConfigGlobalShortcuts; }
KAction *getActPreferencesDialog() { return actPreferencesDialog; }
KAction *getActShowVirtualDesktopView() { return actShowVirtualDesktopView; }
KAction *getActShowCurrentDesktopView() { return actShowCurrentDesktopView; }
KAction *getActShowWorldView() { return actShowWorldView; }
KAction *getActAboutDlg() { return actAboutDlg; }
KAction *getActQuit() { return actQuit; }
const KSharedPixmap *getDesktopBgPixmap() const { return desktopBgPixmap; }
protected:
void initActions();
void initImlib();
protected slots:
void initSharedPixmaps();
QString pixmapName(int desk);
void slotDone(bool success);
void enablePixmapExports();
void slotDesktopChanged(int desktop);
void slotBackgroundChanged(int desktop);
void refreshSharedPixmaps();
void slotConfigChanged();
void initCompositeExt();
void showGlobalShortcutsSettingsDialog();
void showAboutDlg();
private:
bool aboutDialogOpen;
bool hideSystray;
bool singleShot;
bool xcomposite;
int damageEvent, damageError;
KSharedPixmap *desktopBgPixmap;
int currentDesktop;
KomposeSysTray* systray;
KActionCollection* actionCollection;
KAction *actConfigGlobalShortcuts;
KAction *actPreferencesDialog;
KAction *actShowVirtualDesktopView;
KAction *actShowCurrentDesktopView;
KAction *actShowWorldView;
KAction *actAboutDlg;
KAction *actQuit;
KWinModule* kwin_module;
};
#endif

@ -0,0 +1,119 @@
//
// C++ Implementation: komposegltaskwidget
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposegltaskwidget.h"
#include "komposetaskmanager.h"
#include "komposetask.h"
#include "komposelayout.h"
#include <kdebug.h>
#include <qgl.h>
#include <qimage.h>
KomposeGLTaskWidget::KomposeGLTaskWidget(KomposeTask *t, QObject *parent, KomposeLayout *l, const char *name)
: KomposeGLWidget(parent, l),
task(t)
{
QImage img = task->getScreenshot().convertToImage();
img = img.smoothScale( 256, 256, QImage::ScaleMin );
tex = QGLWidget::convertToGLFormat( img );
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
/* glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); // cheap scaling when image bigger than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); // cheap scaling when image smalled than texture*/
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // scale linearly when image bigger than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // scale linearly when image smalled than texture
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
glTexImage2D( GL_TEXTURE_2D, 0, 3, 256, 256, 0,
GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
connect( t, SIGNAL( closed() ), this, SLOT( slotTaskDestroyed() ) );
connect( t, SIGNAL( stateChanged() ), this, SLOT( draw() ) );
}
KomposeGLTaskWidget::~KomposeGLTaskWidget()
{}
void KomposeGLTaskWidget::slotTaskDestroyed()
{
disconnect( task, SIGNAL( closed() ), this, SLOT( slotTaskDestroyed() ) );
disconnect( task, SIGNAL( stateChanged() ), this, SLOT( draw() ) );
if (KomposeTaskManager::instance()->hasActiveView())
{
this->parent()->removeChild( this );
}
}
int KomposeGLTaskWidget::getHeightForWidth ( int w ) const
{
qDebug("KomposeGLTaskWidget::getHeightForWidth()");
return task->getHeightForWidth(w);
}
int KomposeGLTaskWidget::getWidthForHeight ( int h ) const
{
qDebug("KomposeGLTaskWidget::getWidthForHeight()");
return task->getWidthForHeight(h);
}
double KomposeGLTaskWidget::getAspectRatio()
{
qDebug("KomposeGLTaskWidget::getAspectRatio()");
return task->getAspectRatio();
}
void KomposeGLTaskWidget::draw()
{
KomposeGLWidget::draw();
qDebug("KomposeGLTaskWidget::draw() - %d,%d %dx%d", getRect().x(), getRect().y(), getRect().width(), getRect().height());
glColor3f(1.0f, 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, texture);
/* glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );*/
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glEnable( GL_TEXTURE_2D );
// glTexImage2D( GL_TEXTURE_2D, 0, 3, tex.width(), tex.height(), 0,
// GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
// qDebug("KomposeGLTaskWidget::draw() - tex: %dx%d", tex.width(), tex.height() );
glBegin( GL_QUADS );
glTexCoord2f(0.0, 0.0);
glVertex2i( getRect().x(), getRect().y() );
glTexCoord2f(0.0, 1.0);
glVertex2i( getRect().x(), getRect().y() + getRect().height() );
glTexCoord2f(1.0, 1.0);
glVertex2i( getRect().x() + getRect().width(), getRect().y() + getRect().height() );
glTexCoord2f(1.0, 0.0);
glVertex2i( getRect().x() + getRect().width(), getRect().y() );
glEnd();
glDisable( GL_TEXTURE_2D );
/*
glRasterPos2i (getRect().x(), getRect().y());
glPixelZoom( (GLfloat)(getSize().width())/(GLfloat)(tex.width()), (GLfloat)(getSize().height())/(GLfloat)(tex.height()) );
glDrawPixels(tex.width(), tex.height(), GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() ); */
}
#include "komposegltaskwidget.moc"

@ -0,0 +1,119 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* oisch@sourceforge.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposeglwidget.h"
#include "komposelayout.h"
#include <qtimer.h>
#include <kdebug.h>
/*
* The constructor accepts a custom layout, if none is specified a defaultlayout is used
*/
KomposeGLWidget::KomposeGLWidget(QObject *parent, KomposeLayout *l, const char *name)
: QObject(parent)
{
geometry = QRect(0,0,1,1);
if (!l)
layout = new KomposeLayout( this );
else
layout = l;
}
KomposeGLWidget::~KomposeGLWidget()
{}
/*
* Whenever a child is added to the widget it's also added to the layout
*/
void KomposeGLWidget::childEvent ( QChildEvent * ce )
{
if ( !ce->child()->inherits("KomposeGLWidget") )
return;
if ( ce->inserted() )
{
qDebug("KomposeGLWidget::childEvent : Added widget " << ce->child()->className() << " to " << className() << endl;
list.append( dynamic_cast<KomposeGLWidget*>(ce->child()) );
layout->add( dynamic_cast<KomposeWidgetInterface*>(ce->child()) );
}
else if ( ce->removed() )
{
qDebug("KomposeGLWidget::childEvent : Removed widget %s from %s", ce->child()->className(), className() );
list.remove( dynamic_cast<KomposeGLWidget*>(ce->child()) );
layout->remove( dynamic_cast<KomposeWidgetInterface*>(ce->child()) );
}
// Whenever a child is added/removed: rearrange layout
// FIXME: sometimes widget's aren't added in time, so we have to add a short delay:
QTimer::singleShot( 200, layout, SLOT( arrangeLayout() ) );
}
/*
* Main GL draw routine
*/
void KomposeGLWidget::draw()
{
qDebug("KomposeGLWidget::draw - Arranging layout");
layout->arrangeLayout();
}
// Redirect these functions to QWidget
void KomposeGLWidget::setGeom ( const QRect &rect )
{
geometry = rect;
}
void KomposeGLWidget::setGeom ( const QSize &size )
{
geometry.setSize( size );
}
QSize KomposeGLWidget::getSize() const
{
return geometry.size();
}
QRect KomposeGLWidget::getRect() const
{
return geometry;
}
KomposeWidgetInterface* KomposeGLWidget::getParentWidget() const
{
if ( QObject::parent()->inherits("KomposeWidgetInterface") )
return (KomposeWidgetInterface*)QObject::parent();
else
{
qDebug("KomposeGLWidget::getParentWidget() - QWidget::parent() does not inherit (KomposeWidgetInterface)");
return NULL;
}
}
void KomposeGLWidget::removeChildWidget( KomposeWidgetInterface* obj )
{
QObject::removeChild((QObject *) obj);
}
#include "komposeglwidget.moc"

@ -0,0 +1,256 @@
//
// C++ Implementation: komposeimage
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposeimage.h"
#include "komposesettings.h"
#include <kdebug.h>
KomposeImage::KomposeImage( Imlib_Image& im )
: QObject( 0L, 0L ),
bhasImage(true),
bhasSourcePixmap(false),
lasteffect( IEFFECT_NONE ),
myWidth(-1),
myHeight(-1)
{
myIm = im;
imlib_context_set_image( myIm );
myWidth = imlib_image_get_width();
myHeight = imlib_image_get_height();
myIsDirty = true;
init();
}
KomposeImage::KomposeImage()
: QObject( 0L, 0L ),
bhasImage(false),
bhasSourcePixmap(false),
lasteffect( IEFFECT_NONE ),
myWidth(-1),
myHeight(-1)
{
myIsDirty = false;
init();
}
KomposeImage::~KomposeImage()
{
clearCached();
}
/*
* Call this function when the Imlib image and the qpixmap that is drawn is not needed anymore
* (normally when Komposé view is closed)
*/
void KomposeImage::clearCached()
{
if ( bhasSourcePixmap && bhasImage)
{
// Delete image as it takes a lot of ram
bhasImage = false;
imlib_context_set_image( myIm );
imlib_free_image();
}
if ( !KomposeSettings::instance()->getCacheScaledPixmaps() )
{
myQPixmap.resize(0,0);
myIsDirty = true;
}
}
void KomposeImage::init()
{
myOrigWidth = myWidth;
myOrigHeight = myHeight;
myQPixmap.setOptimization( QPixmap::BestOptim );
// Create highlight color modifier
cmHighlight = imlib_create_color_modifier();
imlib_context_set_color_modifier(cmHighlight);
imlib_modify_color_modifier_brightness(0.13);
cmMinimized = imlib_create_color_modifier();
imlib_context_set_color_modifier(cmMinimized);
imlib_modify_color_modifier_brightness(-0.13);
imlib_context_set_color_modifier(0);
}
void KomposeImage::setImage( Imlib_Image &im )
{
if (bhasImage)
{
imlib_context_set_image( myIm );
imlib_free_image();
}
myIm = im;
if ( !bhasSourcePixmap ) // SourcePixmap overrides Image
{
imlib_context_set_image( myIm );
myOrigWidth = imlib_image_get_width();
myOrigHeight = imlib_image_get_height();
qDebug("KomposeTask::setImage() - Set Image: size:" << myWidth << "x" << myHeight << endl;
}
myIsDirty = true;
bhasImage = true;
}
void KomposeImage::setImage( QPixmap &pm )
{
mySourceQPixmap = pm;
bhasSourcePixmap = true;
myOrigWidth = pm.width();
myOrigHeight = pm.height();
myIsDirty = true;
}
void KomposeImage::createImageFromPixmap()
{
if ( !bhasSourcePixmap )
return;
qDebug("KomposeImage::createImageFromPixmap()");
imlib_context_set_drawable( mySourceQPixmap.handle() );
if ( !KomposeSettings::instance()->getImageEffects() )
{
Imlib_Image img = imlib_create_image_from_drawable((Pixmap)0, 0, 0, mySourceQPixmap.width(), mySourceQPixmap.height(), 1);
setImage( img );
}
else
{
Imlib_Image imgOrig = imlib_create_image_from_drawable((Pixmap)0, 0, 0, mySourceQPixmap.width(), mySourceQPixmap.height(), 1);
imlib_context_set_anti_alias(1);
imlib_context_set_image( imgOrig );
Imlib_Image img = imlib_create_cropped_scaled_image(0, 0, mySourceQPixmap.width(), mySourceQPixmap.height(), myWidth, myHeight);
imlib_free_image();
setImage( img );
}
}
void KomposeImage::resize( int width, int height )
{
if ( myWidth == width && myHeight == height )
return;
if (bhasImage)
{
bhasImage = false;
imlib_context_set_image( myIm );
imlib_free_image();
}
myWidth = width;
myHeight = height;
myIsDirty = true;
}
QPixmap* KomposeImage::qpixmap( int effect )
{
if ( KomposeSettings::instance()->getImageEffects() && (lasteffect != effect ) )
{
myIsDirty = true;
lasteffect = effect;
}
if ( myIsDirty)
renderPixmap();
return &myQPixmap;
}
void KomposeImage::renderPixmap()
{
// Is image dirty? has a width been set?
if ( !myIsDirty || myWidth==-1 )
return;
emit startRendering();
if ( !bhasImage && bhasSourcePixmap )
createImageFromPixmap();
else if ( !bhasImage && !bhasSourcePixmap )
return;
qDebug("KomposeImage::renderPixmap() - Creating %dx%d pixmap", myWidth, myHeight);
imlib_context_set_image( myIm );
imlib_image_set_has_alpha(0);
if ( KomposeSettings::instance()->getImageEffects() )
applyEffect();
myQPixmap.resize( myWidth, myHeight);
imlib_context_set_drawable(myQPixmap.handle());
imlib_context_set_anti_alias(1);
imlib_render_image_on_drawable_at_size(0, 0, myWidth, myHeight);
emit stoppedRendering();
myIsDirty = false;
}
void KomposeImage::applyEffect()
{
imlib_context_set_color_modifier(0);
if ( lasteffect == IEFFECT_MINIMIZED || lasteffect == IEFFECT_MINIMIZED_AND_TITLE )
{
//FIXME: maybe there is a faster tint filter?!
imlib_context_set_color_modifier(cmMinimized);
}
if ( lasteffect == IEFFECT_HIGHLIGHT )
{
//FIXME: maybe there is a faster tint filter?!
imlib_context_set_color_modifier(cmHighlight);
}
if ( lasteffect == IEFFECT_TITLE || lasteffect == IEFFECT_MINIMIZED_AND_TITLE )
{
/* we can blend stuff now */
imlib_context_set_blend(1);
/* our color range */
Imlib_Color_Range range;
/* draw a gradient on top of things at the top left of the window */
/* create a range */
range = imlib_create_color_range();
imlib_context_set_color_range(range);
imlib_context_set_color(255, 255, 255, 0);
imlib_add_color_to_color_range(0);
imlib_context_set_color(255, 255, 255, 255);
imlib_add_color_to_color_range(1000);
/* draw the range */
imlib_context_set_image(myIm);
imlib_image_fill_color_range_rectangle(0, 0, myWidth, KomposeSettings::instance()->getWindowTitleFontAscent() * 3, -180.0);
/* free it */
imlib_free_color_range();
}
}
#include "komposeimage.moc"

@ -0,0 +1,87 @@
//
// C++ Interface: komposeimage
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEIMAGE_H
#define KOMPOSEIMAGE_H
#include <qobject.h>
#include <qstring.h>
#include <qpixmap.h>
// #include those AFTER Qt-includes!
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Imlib2.h>
enum ImageEffect { IEFFECT_NONE, IEFFECT_TITLE, IEFFECT_MINIMIZED, IEFFECT_MINIMIZED_AND_TITLE, IEFFECT_HIGHLIGHT };
/**
@author Hans Oischinger
*/
class KomposeImage : public QObject
{
Q_OBJECT
public:
KomposeImage( Imlib_Image &im );
KomposeImage();
~KomposeImage();
int width() const { return myWidth; }
int height() const { return myHeight; }
int originalWidth() const { return myOrigWidth; }
int originalHeight() const { return myOrigHeight; }
void resize( int width, int height );
QPixmap* qpixmap( int effect );
void renderPixmap();
void setDirty( bool d ) { myIsDirty = d; }
bool isDirty() const { return myIsDirty; }
bool isValid() { return bhasImage || bhasSourcePixmap; }
bool hasImage() { return bhasImage; }
void setImage( Imlib_Image &im );
void setImage( QPixmap &pm );
public slots:
void clearCached();
protected:
void createImageFromPixmap();
void applyEffect();
void init();
private:
int myWidth;
int myHeight;
Imlib_Image myIm;
QPixmap myQPixmap;
QPixmap mySourceQPixmap;
Imlib_Color_Modifier cmHighlight, cmMinimized;
bool myIsDirty;
bool bhasImage;
bool bhasSourcePixmap;
int myOrigWidth;
int myOrigHeight;
int lasteffect;
signals:
void startRendering();
void stoppedRendering();
};
#endif

@ -0,0 +1,426 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposelayout.h"
#include "komposewidget.h"
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include "komposefullscreenwidget.h"
#include <math.h>
#include <kwin.h>
#include <kdebug.h>
KomposeLayout::KomposeLayout( KomposeWidget *parent, int type, int dist, const char *name )
: QObject(parent, name),
spacing(dist),
widgetsChanged(false),
currentRows(0),
currentColumns(0),
parentWidget(parent)
{
setType( type );
currentSize = QSize( 1, 1 );
}
KomposeLayout::~KomposeLayout()
{}
void KomposeLayout::setType( int t )
{
if ( t == TLAYOUT_TASKCONTAINERS &&
!KomposeSettings::instance()->getDynamicVirtDeskLayout() )
t = TLAYOUT_GENERIC;
layoutType = t;
}
void KomposeLayout::add( KomposeWidget *w )
{
//kdDebug() << "KomposeLayout::add()@%s - Added widget to layout", parent()->className());
//kdDebug() << "KomposeLayout::add() - Added widget to layout");
list.append( w );
widgetsChanged = true;
}
void KomposeLayout::remove( KomposeWidget *w )
{
list.remove( w );
widgetsChanged = true;
}
void KomposeLayout::arrangeLayout()
{
//kdDebug() << "KomposeLayout::arrangeLayout()");
rearrangeContents();
}
void KomposeLayout::rearrangeContents()
{
// Check or empty list
if (list.count() == 0)
{
kdDebug() << "KomposeLayout::rearrangeContents() - empty list... skipping!" << endl;
return;
}
// Check for layout Type and do the work
if (layoutType==TLAYOUT_TASKCONTAINERS)
{
filledContainers.clear();
emptyContainers.clear();
// Check for empty containers
QPtrListIterator<KomposeWidget> it( list );
KomposeWidget *task;
while ( (task = it.current()) != 0 )
{
++it;
KomposeTaskContainerWidget *containerTask = dynamic_cast<KomposeTaskContainerWidget*>(task);
if ( containerTask->getNumofChilds() > 0 )
{
filledContainers.append( containerTask );
}
else
{
emptyContainers.append( containerTask );
}
}
// Arrange filled containers
QRect filledRect( 0,
0,
parentWidget->width(),
parentWidget->height() - ( 40 + 2*spacing ) );
// arrange the filled desktops taking 90% of the screen
rearrangeContents( filledRect, filledContainers );
// Arrange empty containers
QRect emptyRect( 0,
parentWidget->height() - ( 40 + 2*spacing ),
parentWidget->width(),
( 40 + 2*spacing ) );
// arrange the empty widget in one row
rearrangeContents( emptyRect, emptyContainers, 1, -1, false );
}
else // default type (generic)
{
QRect availRect( 0,
0,
parentWidget->width(),
parentWidget->height());
rearrangeContents( availRect, list );
}
currentSize = parentWidget->size();
widgetsChanged = false;
}
/**
* availRect specifies the size&pos of the contents
* Specify either rows or cols to set a fixed number of those (setting both won't work correctly)
*/
void KomposeLayout::rearrangeContents( const QRect& availRect, const QPtrList<KomposeWidget> widgets, int rows, int columns, bool setMemberRowsCols )
{
// Check or empty list
if (widgets.count() == 0)
{
kdDebug() << "KomposeLayout::rearrangeContents() - empty list... skipping!" << endl;
return;
}
QPtrListIterator<KomposeWidget> it( widgets );
// Calculate grid's rows & cols
if ( rows != -1 ) // rows have been specified
{
columns = (int)ceil(widgets.count() / rows);
}
else if ( columns != -1 ) // columns have been specified
{
rows = (int)ceil(widgets.count() / columns);
}
else // neither rows nor cols have been specified
{
double parentRatio = (double)availRect.width() / (double)availRect.height();
// Use more columns than rows when parent's width > parent's height
if ( parentRatio > 1 )
{
columns = (int)ceil( sqrt(widgets.count()) );
rows = (int)ceil( (double)widgets.count() / (double)columns );
}
else
{
rows = (int)ceil( sqrt(widgets.count()) );
columns = (int)ceil( (double)widgets.count() / (double)rows );
}
}
kdDebug() << "KomposeLayout::rearrangeContents() - Relayouting " << widgets.count() << " child widgets with " << rows << " rows & " << columns << " columns" << endl;
// Calculate width & height
int w = (availRect.width() - (columns+1) * spacing ) / columns;
int h = (availRect.height() - (rows+1) * spacing ) / rows;
QValueList<QRect> geometryRects;
QValueList<int> maxRowHeights;
// Process rows
for ( int i=0; i<rows; ++i )
{
int xOffsetFromLastCol = 0;
int maxHeightInRow = 0;
// Process columns
for ( int j=0; j<columns; ++j )
{
KomposeWidget *task;
// Check for end of List
if ( (task = it.current()) == 0)
break;
// Calculate width and height of widget
double ratio = task->getAspectRatio();
int widgetw = 100;
int widgeth = 100;
int usableW = w;
int usableH = h;
// use width of two boxes if there is no right neighbour
if (it.atLast() && j!=columns-1)
{
usableW = 2*w;
}
++it; // We need access to the neighbour in the following
// expand if right neighbour has ratio < 1
if (j!=columns-1 && it.current() && it.current()->getAspectRatio() < 1)
{
int addW = w - it.current()->getWidthForHeight(h);
if ( addW > 0 )
{
usableW = w + addW;
}
}
if ( ratio == -1 )
{
widgetw = w;
widgeth = h;
}
else
{
double widthForHeight = task->getWidthForHeight(usableH);
double heightForWidth = task->getHeightForWidth(usableW);
if ( (ratio >= 1.0 && heightForWidth <= usableH) ||
(ratio < 1.0 && widthForHeight > usableW) )
{
widgetw = usableW;
widgeth = (int)heightForWidth;
}
else if ( (ratio < 1.0 && widthForHeight <= usableW) ||
(ratio >= 1.0 && heightForWidth > usableH) )
{
widgeth = usableH;
widgetw = (int)widthForHeight;
}
}
// Set the Widget's size
int alignmentXoffset = 0;
int alignmentYoffset = 0;
if ( i==0 && h > widgeth )
alignmentYoffset = h - widgeth;
if ( j==0 && w > widgetw )
alignmentXoffset = w - widgetw;
QRect geom( availRect.x() + j * (w + spacing) + spacing + alignmentXoffset + xOffsetFromLastCol,
availRect.y() + i * (h + spacing) + spacing + alignmentYoffset,
widgetw, widgeth );
geometryRects.append(geom);
// Set the x offset for the next column
if (alignmentXoffset==0)
xOffsetFromLastCol += widgetw-w;
if (maxHeightInRow < widgeth)
maxHeightInRow = widgeth;
}
maxRowHeights.append(maxHeightInRow);
}
it.toFirst();
QValueList<QRect>::iterator geomIt = geometryRects.begin();
QValueList<int>::iterator maxRowHeightIt = maxRowHeights.begin();
int topOffset = 0;
for ( int i=0; i<rows; ++i )
{
// Process columns again
for ( int j=0; j<columns; ++j )
{
KomposeWidget *task;
if ( (task = it.current()) == 0)
break;
QRect geom = *geomIt;
geom.setY( geom.y() + topOffset );
// geom.setHeight( geom.height() - topOffset );
task->setGeometry( geom );
kdDebug() << "KomposeLayout::rearrangeContents() - Put item " << task->className() << " at x: " << geom.x() << " y: " << geom.y() << " with size: " << geom.width() << "x" << geom.height() << endl;
++geomIt;
++it;
}
if ( *maxRowHeightIt-h > 0 )
topOffset += *maxRowHeightIt-h;
++maxRowHeightIt;
}
// Sync cols/rows member vars to current cols/rows
if ( setMemberRowsCols )
{
currentRows = rows;
currentColumns = columns;
}
}
/*
* Search for neighbour (called from outside)
*/
KomposeWidget* KomposeLayout::getNeighbour( const KomposeWidget* widget, int direction, int wrap )
{
kdDebug() << "KomposeLayout::getNeighbour() - Called with list.count: " << list.count() << endl;
if (layoutType==TLAYOUT_TASKCONTAINERS)
{
KomposeWidget* neighbour = 0;
if ( filledContainers.containsRef(widget) )
{
if ( ( neighbour = getNeighbour( filledContainers, widget, direction, WLAYOUT_HORIZONTAL ) ) == 0 )
return emptyContainers.first();
}
else if ( emptyContainers.containsRef(widget) )
{
if ( ( neighbour = getNeighbour( emptyContainers, widget, direction, WLAYOUT_HORIZONTAL ) ) == 0 )
if ( direction == DLAYOUT_TOP )
return filledContainers.last();
else
return filledContainers.first();
}
return neighbour;
}
else if (layoutType==TLAYOUT_GENERIC)
return getNeighbour( list, widget, direction, wrap );
kdDebug() << "KomposeLayout::getNeighbour() - this should never happen!" << endl;
return NULL;
}
/*
* Search for neighbour in the given list (called from inside)
*/
KomposeWidget* KomposeLayout::getNeighbour(
QPtrList<KomposeWidget> listToSearch,
const KomposeWidget* widget,
int direction,
int wrap )
{
QPtrListIterator<KomposeWidget> it( listToSearch );
KomposeWidget *task;
KomposeWidget *neighbour;
int index = 0;
if (widget == 0)
{
kdDebug() << "KomposeLayout::getNeighbour() - NULL startWidget given. using first()" << endl;
return listToSearch.first();
}
while ( (task = it.current()) != 0 )
{
if ( task == widget )
{
switch ( direction )
{
case DLAYOUT_RIGHT:
++it;
if ( (index)%currentColumns == currentColumns-1 || ( neighbour = it.current() ) == 0 )
{
if (wrap == WLAYOUT_HORIZONTAL || wrap == WLAYOUT_BOTH )
return listToSearch.at(index+1-currentColumns);
kdDebug() << "KomposeLayout::getNeighbour() - No valid neighbour available" << endl;
return NULL;
}
return neighbour;
case DLAYOUT_LEFT:
--it;
if ( index%currentColumns == 0 || ( neighbour = it.current() ) == 0 )
{
if (wrap == WLAYOUT_HORIZONTAL || wrap == WLAYOUT_BOTH )
if ( (uint)(index+currentColumns-1) < listToSearch.count() )
return listToSearch.at(index+currentColumns-1);
else
return listToSearch.last();
kdDebug() << "KomposeLayout::getNeighbour() - No valid neighbour available" << endl;
return NULL;
}
return neighbour;
case DLAYOUT_TOP:
if ( index < currentColumns || (neighbour = listToSearch.at( index - currentColumns )) == 0)
{
if (wrap == WLAYOUT_VERTICAL || wrap == WLAYOUT_BOTH )
if ( listToSearch.count()%currentColumns == 0 || listToSearch.count()%currentColumns > (uint)(index) )
return listToSearch.at( (currentRows-1)*currentColumns + index );
else
return listToSearch.at( (currentRows-2)*currentColumns + index );
kdDebug() << "KomposeLayout::getNeighbour() - No valid neighbour available" << endl;
return NULL;
}
return neighbour;
case DLAYOUT_BOTTOM:
if ( listToSearch.count() <= (uint)(index + currentColumns) || (neighbour = listToSearch.at( index + currentColumns )) == 0)
{
if (wrap == WLAYOUT_VERTICAL || wrap == WLAYOUT_BOTH )
return listToSearch.at( index%currentColumns );
kdDebug() << "KomposeLayout::getNeighbour() - No valid neighbour available" << endl;
return NULL;
}
return neighbour;
}
}
++index;
++it;
}
kdDebug() << "KomposeLayout::getNeighbour() - this should never happen!" << endl;
return NULL;
}
#include "komposelayout.moc"

@ -0,0 +1,95 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSELAYOUT_H
#define KOMPOSELAYOUT_H
#include <qobject.h>
#include <qptrlist.h>
#include "komposewidget.h"
class QRect;
enum LayoutType { TLAYOUT_GENERIC, // layouts all KomposeWidget classes
TLAYOUT_TASKCONTAINERS // layouts containers only
};
enum LayoutDirections { DLAYOUT_LEFT, DLAYOUT_RIGHT, DLAYOUT_TOP, DLAYOUT_BOTTOM };
enum WrapDirections { WLAYOUT_NONE, WLAYOUT_HORIZONTAL, WLAYOUT_VERTICAL, WLAYOUT_BOTH };
/**
The main layout class.
QLayout just didn't fit :(
@author Hans Oischinger
*/
class KomposeLayout : public QObject
{
Q_OBJECT
public:
KomposeLayout( KomposeWidget *parent, int type = TLAYOUT_GENERIC, int dist = 10, const char *name = 0 );
~KomposeLayout();
void add( KomposeWidget *w );
void remove( KomposeWidget *w );
void setType( int t );
int getType() { return layoutType; }
const QPtrList<KomposeWidget> *getManagedWidgets() { return &list; }
int getNumofChilds() { return list.count(); }
KomposeWidget* getNeighbour( const KomposeWidget* widget,
int direction = DLAYOUT_RIGHT,
int wrap = WLAYOUT_NONE );
public slots:
void arrangeLayout();
protected:
KomposeWidget* getNeighbour( QPtrList<KomposeWidget> listToSearch,
const KomposeWidget* widget,
int direction = DLAYOUT_RIGHT,
int wrap = WLAYOUT_NONE );
void rearrangeContents();
void rearrangeContents( const QRect& availRect,
const QPtrList<KomposeWidget> widgets,
int rows = -1,
int columns = -1,
bool setMemberRowsCols = true );
private:
// List of all managed childs
QPtrList<KomposeWidget> list;
// List of container childs seperated by empty/full
QPtrList<KomposeWidget> filledContainers;
QPtrList<KomposeWidget> emptyContainers;
QSize currentSize;
int layoutType;
int spacing;
bool widgetsChanged;
int currentRows;
int currentColumns;
KomposeWidget* parentWidget;
};
#endif

@ -0,0 +1,411 @@
//
// C++ Implementation: komposepreferences
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposepreferences.h"
#include "komposesettings.h"
#include "komposeglobal.h"
#include <qlayout.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <kapplication.h>
#include <qwhatsthis.h>
#include <qtooltip.h>
#include <qspinbox.h>
#include <qgroupbox.h>
#include <qbuttongroup.h>
#include <qhbox.h>
#include <qslider.h>
#include <qpushbutton.h>
#include <qgrid.h>
#include <qvgroupbox.h>
#include <qradiobutton.h>
#include <kiconloader.h>
#include <kcolorbutton.h>
#include <kfontdialog.h>
KomposePreferences::KomposePreferences()
: KDialogBase(IconList, i18n("Komposé Preferences"), Ok|Apply|Cancel, Ok)
{
// FIXME: this is the biggest constructor I've EVER written!
// How about Qt Designer?!
m_hasXinerama = QDesktopWidget().numScreens() > 1;
QFrame *page1 = addPage( i18n("Behavior"), QString::null, DesktopIcon("winprops", KIcon::SizeMedium) );
QFrame *page2 = addPage( i18n("Appearance"), QString::null, DesktopIcon("appearance", KIcon::SizeMedium) );
QFrame *page3 = addPage( i18n("Layouts"), QString::null, DesktopIcon("window_list", KIcon::SizeMedium) );
QVBoxLayout *page1Layout = new QVBoxLayout( page1, 0, KDialog::spacingHint() );
defaultViewBtnGroup = new QButtonGroup( 2, Horizontal, i18n("Default Layout"), page1 );
defaultViewBtnGroup->setExclusive( true );
QString defaultViewBtnGroupHelp = i18n("Determines which view should be started by default (e.g. when you click on the systray icon).");
QWhatsThis::add( defaultViewBtnGroup, defaultViewBtnGroupHelp );
QToolTip::add( defaultViewBtnGroup, defaultViewBtnGroupHelp );
defaultViewWorld = new QRadioButton(i18n("Ungrouped"), defaultViewBtnGroup );
QString defaultViewWorldHelp = i18n("Fullscreen layout that shows all windows in no specific order");
QWhatsThis::add( defaultViewWorld, defaultViewWorldHelp );
QToolTip::add( defaultViewWorld, defaultViewWorldHelp );
defaultViewVirtualDesks = new QRadioButton(i18n("Grouped by virtual desktops"), defaultViewBtnGroup );
QString defaultViewVirtualDesksHelp = i18n("Fullscreen layout that shows a representation of your virtual desktops\n and places the windows inside.");
QWhatsThis::add( defaultViewVirtualDesks, defaultViewVirtualDesksHelp );
QToolTip::add( defaultViewVirtualDesks, defaultViewVirtualDesksHelp );
defaultViewCurrentDesk = new QRadioButton(i18n("Current virtual desktop"), defaultViewBtnGroup );
QString defaultViewCurrentDeskHelp = i18n("Fullscreen layout that shows the windows of the desktop you're currently working on.");
QWhatsThis::add( defaultViewCurrentDesk, defaultViewCurrentDeskHelp );
QToolTip::add( defaultViewCurrentDesk, defaultViewCurrentDeskHelp );
page1Layout->addWidget(defaultViewBtnGroup);
if (m_hasXinerama)
{
QGroupBox *xineramaGroupBox = new QGroupBox( 2, Vertical, i18n("Xinerama"), page1 );
QDesktopWidget deskwidget;
m_viewScreenAll = new QCheckBox(i18n("Use the whole desktop for Komposé"), xineramaGroupBox);
QHBox *hLayXineramaGrabDelay = new QHBox(xineramaGroupBox);
QLabel *xineramaLabel = new QLabel(i18n("Use screen:"), hLayXineramaGrabDelay);
m_viewScreen = new QSpinBox(0, deskwidget.numScreens()-1, 1, hLayXineramaGrabDelay);
connect( m_viewScreenAll, SIGNAL(toggled(bool)), m_viewScreen, SLOT(setDisabled(bool)) );
xineramaLabel->setBuddy(m_viewScreen);
QString xineramaHelp = i18n("Specify the screen where Komposé should appear." );
QWhatsThis::add( m_viewScreen, xineramaHelp );
QToolTip::add( m_viewScreen, xineramaHelp );
QWhatsThis::add( xineramaLabel, xineramaHelp );
QToolTip::add( xineramaLabel, xineramaHelp );
page1Layout->addWidget(xineramaGroupBox);
}
#ifdef COMPOSITE
QGroupBox *screenshotsGroupBox = new QGroupBox( 4, Vertical, i18n("Screenshots"), page1 );
useComposite = new QCheckBox(i18n("Use XComposite if available"), screenshotsGroupBox);
QString useCompositeHelp = i18n("Making use of the Composite extension of newer X Servers makes the grabbing of screenshots obsolete.\nThe contents of all windows are drawn in back buffers that will be accessed by Komposé\nNote that the Composite implementation of even modern graphic card drivers is still very slow and may make your system pretty unusable.");
QWhatsThis::add( useComposite, useCompositeHelp );
QToolTip::add( useComposite, useCompositeHelp );
connect( useComposite, SIGNAL(toggled(bool)), SLOT(setUseCompositeToggled(bool)) );
#else
QGroupBox *screenshotsGroupBox = new QGroupBox( 3, Vertical, i18n("Screenshots"), page1 );
#endif
passiveScreenshots = new QCheckBox(i18n("Passive screenshots"), screenshotsGroupBox);
QString passiveScreenshotsHelp = i18n("Create a screenshot whenever you raise or active a window.\nWhen selected the amount the annoying popup-effect before every Komposé activation will be minimized to nearly zero.\nThe drawback is that the screenshots are not so recent and may not display the actual content.");
QWhatsThis::add( passiveScreenshots, passiveScreenshotsHelp );
QToolTip::add( passiveScreenshots, passiveScreenshotsHelp );
QHBox *hLayScreenshotGrabDelay = new QHBox(screenshotsGroupBox);
QLabel *screenshotGrabDelayLabel = new QLabel(i18n("Delay between screenshots (ms):"), hLayScreenshotGrabDelay);
screenshotGrabDelay = new QSpinBox(0, 999, 10, hLayScreenshotGrabDelay);
screenshotGrabDelayLabel->setBuddy(screenshotGrabDelay);
QString screenshotGrabDelayHelp = i18n("Specifies the time to wait between the activation of a window and the screenshot taking.\nIncrease it when your windows need more time to draw themselves after activation.\nValues below 300ms are not recommended, but may work in some cases." );
QWhatsThis::add( screenshotGrabDelay, screenshotGrabDelayHelp );
QToolTip::add( screenshotGrabDelay, screenshotGrabDelayHelp );
QWhatsThis::add( screenshotGrabDelayLabel, screenshotGrabDelayHelp );
QToolTip::add( screenshotGrabDelayLabel, screenshotGrabDelayHelp );
cacheScaledPixmaps = new QCheckBox(i18n("Cache scaled Screenshots"), screenshotsGroupBox);
QString cacheScaledPixmapsHelp = i18n("This may avoid some scaling operations to be called repeatedly when Komposé has been displayed before and the screenshot's size didn't change.\nIt will however increase memory usage quite a bit.");
QWhatsThis::add( cacheScaledPixmaps, cacheScaledPixmapsHelp );
QToolTip::add( cacheScaledPixmaps, cacheScaledPixmapsHelp );
page1Layout->addWidget(screenshotsGroupBox);
// Autolock
QGroupBox* autoLockGroup = new QGroupBox( 0, Qt::Horizontal, i18n("Autoactivate when mouse moves into"), page1 );
QGridLayout* autoLockLayout = new QGridLayout( autoLockGroup->layout(), 5, 2, KDialog::spacingHint() );
m_topLeftCorner = new QCheckBox( i18n("Top-left corner"), autoLockGroup);
autoLockLayout->addWidget( m_topLeftCorner, 0, 0 );
m_topRightCorner = new QCheckBox( i18n("Top-right corner"), autoLockGroup );
autoLockLayout->addWidget( m_topRightCorner, 1, 0 );
m_bottomLeftCorner = new QCheckBox( i18n("Bottom-left corner"), autoLockGroup );
autoLockLayout->addWidget( m_bottomLeftCorner, 2, 0 );
m_bottomRightCorner = new QCheckBox( i18n("Bottom-right corner"), autoLockGroup );
autoLockLayout->addWidget( m_bottomRightCorner, 3, 0 );
m_topEdge = new QCheckBox( i18n("Top edge"), autoLockGroup);
autoLockLayout->addWidget( m_topEdge, 0, 1 );
m_bottomEdge = new QCheckBox( i18n("Bottom edge"), autoLockGroup );
autoLockLayout->addWidget( m_bottomEdge, 1, 1 );
m_leftEdge = new QCheckBox( i18n("Left edge"), autoLockGroup );
autoLockLayout->addWidget( m_leftEdge, 2, 1 );
m_rightEdge = new QCheckBox( i18n("Right edge"), autoLockGroup );
autoLockLayout->addWidget( m_rightEdge, 3, 1 );
QHBox *hLayAutoLockDelay = new QHBox(autoLockGroup);
QLabel *autoLockDelayLabel = new QLabel(i18n("Delay until activation (ms):"), hLayAutoLockDelay);
autoLockDelay = new QSpinBox(0, 5000, 10, hLayAutoLockDelay);
autoLockDelayLabel->setBuddy(autoLockDelay);
QString autoLockDelayHelp = i18n("Specifies the time in ms for which the mouse pointer must rest in the corner until auto-activation." );
QWhatsThis::add( autoLockDelay, autoLockDelayHelp );
QToolTip::add( autoLockDelay, autoLockDelayHelp );
QWhatsThis::add( autoLockDelayLabel, autoLockDelayHelp );
QToolTip::add( autoLockDelayLabel, autoLockDelayHelp );
autoLockLayout->addMultiCellWidget( hLayAutoLockDelay, 4, 4, 0, 1 );
page1Layout->addWidget(autoLockGroup);
page1Layout->insertStretch(-1);
QVBoxLayout *page2Layout = new QVBoxLayout( page2, 0, KDialog::spacingHint() );
imageEffects = new QCheckBox(i18n("Enable image effects"), page2);
QString imageEffectsHelp = i18n("Lighten windows when the mouse moves over it or gray out minimized windows.\nDepending on your system specs this can be a bit slower." );
QWhatsThis::add( imageEffects, imageEffectsHelp );
QToolTip::add( imageEffects, imageEffectsHelp );
page2Layout->addWidget(imageEffects);
showDesktopNum = new QCheckBox(i18n("Show Desktop number on Systray icon"), page2);
QString showDesktopNumHelp = i18n("Displays the number of the currently active Desktop on the Komposé systray icon." );
QWhatsThis::add( showDesktopNum, showDesktopNumHelp );
QToolTip::add( showDesktopNum, showDesktopNumHelp );
page2Layout->addWidget(showDesktopNum);
QGroupBox *windowTitleGroupBox = new QGroupBox( 3, Vertical, i18n("Window Titles"), page2 );
QHBox *hBoxWindowTitles = new QHBox(windowTitleGroupBox);
showWindowTitles = new QCheckBox(i18n("Show window titles"), hBoxWindowTitles);
windowTitleFontBtn = new QPushButton(i18n("Select Font..."), hBoxWindowTitles);
QString showWindowTitlesHelp = i18n( "Display the name of every window in Komposé" );
QWhatsThis::add( showWindowTitles, showWindowTitlesHelp );
QToolTip::add( showWindowTitles, showWindowTitlesHelp );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontBtn, SLOT(setEnabled(bool)) );
connect( windowTitleFontBtn, SIGNAL(clicked()), this, SLOT(showWindowTitleFontDialog()) );
QGrid *gridWindowTitlesColor = new QGrid(2, windowTitleGroupBox);
// windowTitleFontColorLabel = new QLabel(windowTitleFontColor, i18n("Text color: "), gridWindowTitlesColor); // FIXME: How to link to a buddy that doesn't yet exist?
windowTitleFontColorLabel = new QLabel(i18n("Text color:"), gridWindowTitlesColor);
windowTitleFontColor = new KColorButton(Qt::black, gridWindowTitlesColor);
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontColorLabel, SLOT(setEnabled(bool)) );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontColor, SLOT(setEnabled(bool)) );
showWindowTitleShadow = new QCheckBox(i18n("Shadow color:"), gridWindowTitlesColor);
windowTitleFontShadowColor = new KColorButton(Qt::lightGray, gridWindowTitlesColor);
connect( showWindowTitles, SIGNAL(toggled(bool)), showWindowTitleShadow, SLOT(setEnabled(bool)) );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontShadowColor, SLOT(setEnabled(bool)) );
connect( showWindowTitleShadow, SIGNAL(toggled(bool)), windowTitleFontShadowColor, SLOT(setEnabled(bool)) );
page2Layout->addWidget(windowTitleGroupBox);
QGroupBox *iconGroupBox = new QGroupBox( 3, Vertical, i18n("Task Icons"), page2 );
showIcons = new QCheckBox(i18n("Show icons"), iconGroupBox);
iconSize = new QSlider(0, 3, 1, 0, Qt::Horizontal, iconGroupBox);
iconSizeDescription = new QLabel( iconSize, "", iconGroupBox);
connect( iconSize, SIGNAL( sliderMoved(int) ), this, SLOT( updateIconSliderDesc(int) ) );
connect( iconSize, SIGNAL( valueChanged(int) ), this, SLOT( updateIconSliderDesc(int) ) );
connect( showIcons, SIGNAL( toggled(bool) ), iconSize, SLOT( setEnabled(bool) ) );
connect( showIcons, SIGNAL( toggled(bool) ), iconSizeDescription, SLOT( setEnabled(bool) ) );
page2Layout->addWidget(iconGroupBox);
page2Layout->insertStretch(-1);
QVBoxLayout *page3Layout = new QVBoxLayout( page3, 0, KDialog::spacingHint() );
QVGroupBox *virtDesksLayoutGroupBox = new QVGroupBox( i18n("Grouped by Virtual Desktops"), page3 );
dynamicVirtDeskLayout = new QCheckBox(i18n("Layout empty virtual desktops minimized"), virtDesksLayoutGroupBox );
QString dynamicVirtDeskLayoutHelp = i18n("Check this if you want empty virtual desktops to take less space on the screen.\nUncheck it if you want them to be arranged statically, each of the same size.");
QWhatsThis::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
QToolTip::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
QGrid *desktopColorsGroupBox = new QGrid( 2, virtDesksLayoutGroupBox );
desktopColorsGroupBox->setSpacing( 4 );
desktopTitleFontColorLabel = new QLabel(i18n("Desktop frame color:"), desktopColorsGroupBox);
desktopTitleFontColor = new KColorButton(Qt::black, desktopColorsGroupBox);
desktopTitleFontHighlightColorLabel = new QLabel(i18n("Desktop frame highlight color:"), desktopColorsGroupBox);
desktopTitleFontHighlightColor = new KColorButton(Qt::black, desktopColorsGroupBox);
page3Layout->addWidget(virtDesksLayoutGroupBox);
desktopTitleFontBtn = new QPushButton(i18n("Select Desktop Names Font..."), virtDesksLayoutGroupBox);
connect( desktopTitleFontBtn, SIGNAL(clicked()), this, SLOT(showDesktopTitleFontDialog()) );
page3Layout->insertStretch(-1);
fillPages();
}
KomposePreferences::~KomposePreferences()
{}
void KomposePreferences::updateIconSliderDesc( int val )
{
switch( val )
{
case 0:
iconSizeDescription->setText( i18n("16x16") );
break;
case 1:
iconSizeDescription->setText( i18n("32x32") );
break;
case 2:
iconSizeDescription->setText( i18n("64x64") );
break;
case 3:
iconSizeDescription->setText( i18n("Don't scale, show as they are (preferably bigger)") );
break;
}
}
void KomposePreferences::showWindowTitleFontDialog()
{
KFontDialog::getFont( *windowTitleFont );
// if ( result == KFontDialog::Accepted )
}
void KomposePreferences::showDesktopTitleFontDialog()
{
KFontDialog::getFont( *desktopTitleFont );
}
void KomposePreferences::fillPages()
{
// Sync Settings to Preferences dialog
switch ( KomposeSettings::instance()->getDefaultView() )
{
case KOMPOSEDISPLAY_VIRTUALDESKS:
defaultViewVirtualDesks->setChecked( true );
break;
case KOMPOSEDISPLAY_WORLD:
defaultViewWorld->setChecked( true );
break;
case KOMPOSEDISPLAY_CURRENTDESK:
defaultViewCurrentDesk->setChecked( true );
break;
}
#ifdef COMPOSITE
useComposite->setChecked( KomposeSettings::instance()->getUseComposite() );
#endif
passiveScreenshots->setChecked( KomposeSettings::instance()->getPassiveScreenshots() );
screenshotGrabDelay->setValue( KomposeSettings::instance()->getScreenshotGrabDelay() / 1000000 );
cacheScaledPixmaps->setChecked( KomposeSettings::instance()->getCacheScaledPixmaps() );
dynamicVirtDeskLayout->setChecked( KomposeSettings::instance()->getDynamicVirtDeskLayout() );
imageEffects->setChecked( KomposeSettings::instance()->getImageEffects() );
showDesktopNum->setChecked( KomposeSettings::instance()->getShowDesktopNum() );
showWindowTitles->setChecked( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFont = new QFont(KomposeSettings::instance()->getWindowTitleFont());
windowTitleFontColor->setColor( KomposeSettings::instance()->getWindowTitleFontColor() );
windowTitleFontShadowColor->setColor( KomposeSettings::instance()->getWindowTitleFontShadowColor() );
showWindowTitleShadow->setChecked( KomposeSettings::instance()->getShowWindowTitleShadow() );
// Disable dependant widgets
windowTitleFontBtn->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontColorLabel->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontColor->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
showWindowTitleShadow->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontShadowColor->setEnabled( KomposeSettings::instance()->getShowWindowTitles() || KomposeSettings::instance()->getShowWindowTitleShadow() );
desktopTitleFont = new QFont(KomposeSettings::instance()->getDesktopTitleFont());
desktopTitleFontColor->setColor( KomposeSettings::instance()->getDesktopTitleFontColor() );
desktopTitleFontHighlightColor->setColor( KomposeSettings::instance()->getDesktopTitleFontHighlightColor() );
showIcons->setChecked( KomposeSettings::instance()->getShowIcons() );
iconSize->setValue( KomposeSettings::instance()->getIconSize() );
iconSize->setEnabled( showIcons->isChecked() );
iconSizeDescription->setEnabled( showIcons->isChecked() );
updateIconSliderDesc( iconSize->value() );
m_topLeftCorner->setChecked( KomposeSettings::instance()->getActivateOnTopLeftCorner() );
m_bottomLeftCorner->setChecked( KomposeSettings::instance()->getActivateOnBottomLeftCorner() );
m_topRightCorner->setChecked( KomposeSettings::instance()->getActivateOnTopRightCorner() );
m_bottomRightCorner->setChecked( KomposeSettings::instance()->getActivateOnBottomRightCorner() );
m_topEdge->setChecked( KomposeSettings::instance()->getActivateOnTopEdge() );
m_bottomEdge->setChecked( KomposeSettings::instance()->getActivateOnBottomEdge() );
m_rightEdge->setChecked( KomposeSettings::instance()->getActivateOnRightEdge() );
m_leftEdge->setChecked( KomposeSettings::instance()->getActivateOnLeftEdge() );
autoLockDelay->setValue( KomposeSettings::instance()->getAutoLockDelay() );
if (m_hasXinerama)
{
m_viewScreenAll->setChecked( KomposeSettings::instance()->getViewScreen() == -1 );
if (KomposeSettings::instance()->getViewScreen() >= 0 )
m_viewScreen->setValue( KomposeSettings::instance()->getViewScreen() );
m_viewScreen->setDisabled( m_viewScreenAll->isChecked() );
}
}
void KomposePreferences::slotApply()
{
KomposeSettings::instance()->setDefaultView( defaultViewBtnGroup->selectedId() );
#ifdef COMPOSITE
KomposeSettings::instance()->setUseComposite( useComposite->isChecked() );
#endif
KomposeSettings::instance()->setPassiveScreenshots( passiveScreenshots->isChecked() );
KomposeSettings::instance()->setScreenshotGrabDelay( screenshotGrabDelay->value() * 1000000 );
KomposeSettings::instance()->setCacheScaledPixmaps( cacheScaledPixmaps->isChecked() );
KomposeSettings::instance()->setDynamicVirtDeskLayout( dynamicVirtDeskLayout->isChecked() );
KomposeSettings::instance()->setImageEffects( imageEffects->isChecked() );
KomposeSettings::instance()->setShowDesktopNum( showDesktopNum->isChecked() );
KomposeSettings::instance()->setShowWindowTitles( showWindowTitles->isChecked() );
KomposeSettings::instance()->setWindowTitleFont( *windowTitleFont );
KomposeSettings::instance()->setWindowTitleFontColor( windowTitleFontColor->color() );
KomposeSettings::instance()->setWindowTitleFontShadowColor( windowTitleFontShadowColor->color() );
KomposeSettings::instance()->setShowWindowTitleShadow( showWindowTitleShadow->isChecked() );
KomposeSettings::instance()->setDesktopTitleFont( *desktopTitleFont );
KomposeSettings::instance()->setDesktopTitleFontColor( desktopTitleFontColor->color() );
KomposeSettings::instance()->setDesktopTitleFontHighlightColor( desktopTitleFontHighlightColor->color() );
KomposeSettings::instance()->setShowIcons( showIcons->isChecked() );
KomposeSettings::instance()->setIconSize( iconSize->value() );
KomposeSettings::instance()->setActivateOnTopLeftCorner( m_topLeftCorner->isChecked() );
KomposeSettings::instance()->setActivateOnTopRighCorner( m_topRightCorner->isChecked() );
KomposeSettings::instance()->setActivateOnBottomLeftCorner( m_bottomLeftCorner->isChecked() );
KomposeSettings::instance()->setActivateOnBottomRightCorner( m_bottomRightCorner->isChecked() );
KomposeSettings::instance()->setActivateOnTopEdge( m_topEdge->isChecked() );
KomposeSettings::instance()->setActivateOnRightEdge( m_rightEdge->isChecked() );
KomposeSettings::instance()->setActivateOnBottomEdge( m_bottomEdge->isChecked() );
KomposeSettings::instance()->setActivateOnLeftEdge( m_leftEdge->isChecked() );
KomposeSettings::instance()->setAutoLockDelay( autoLockDelay->value() );
if (m_hasXinerama)
{
int viewScreen = m_viewScreen->value();
if ( m_viewScreenAll->isChecked() )
viewScreen = -1;
KomposeSettings::instance()->setViewScreen( viewScreen );
}
KomposeSettings::instance()->writeConfig();
KDialogBase::slotApply();
}
void KomposePreferences::slotOk()
{
slotApply();
KDialogBase::slotOk();
}
void KomposePreferences::setUseCompositeToggled( bool )
{}
#include "komposepreferences.moc"

@ -0,0 +1,291 @@
//
// C++ Implementation: komposepreferences
//
// Description:
//
//
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposepreferences.h"
#include "komposesettings.h"
#include <qlayout.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <kapplication.h>
#include <qwhatsthis.h>
#include <qtooltip.h>
#include <qspinbox.h>
#include <qgroupbox.h>
#include <qbuttongroup.h>
#include <qhbox.h>
#include <qslider.h>
#include <qpushbutton.h>
#include <qgrid.h>
#include <qvgroupbox.h>
#include <qradiobutton.h>
#include <kiconloader.h>
#include <kcolorbutton.h>
#include <kfontdialog.h>
KomposePreferences::KomposePreferences()
: KDialogBase(IconList, i18n(QString::fromUtf8("Komposé Preferences").utf8()), Ok|Apply|Cancel, Ok)
{
QFrame *page1 = addPage( i18n("Behavior"), QString::null, DesktopIcon("winprops", KIcon::SizeMedium) );
QFrame *page2 = addPage( i18n("Appearance"), QString::null, DesktopIcon("appearance", KIcon::SizeMedium) );
QFrame *page3 = addPage( i18n("Layouts"), QString::null, DesktopIcon("window_list", KIcon::SizeMedium) );
QVBoxLayout *page1Layout = new QVBoxLayout( page1, 0, KDialog::spacingHint() );
defaultViewBtnGroup = new QButtonGroup( 2, Horizontal, i18n("Default Layout"), page1 );
defaultViewBtnGroup->setExclusive( true );
QString defaultViewBtnGroupHelp = i18n("Determines which view should be started by default (e.g. when you click on the systray icon).");
QWhatsThis::add( defaultViewBtnGroup, defaultViewBtnGroupHelp );
QToolTip::add( defaultViewBtnGroup, defaultViewBtnGroupHelp );
defaultViewWorld = new QRadioButton(i18n("Ungrouped"), defaultViewBtnGroup );
QString defaultViewWorldHelp = i18n("Fullscreen layout that shows all windows in no specific order");
QWhatsThis::add( defaultViewWorld, defaultViewWorldHelp );
QToolTip::add( defaultViewWorld, defaultViewWorldHelp );
defaultViewVirtualDesks = new QRadioButton(i18n("Grouped by virtual desktops"), defaultViewBtnGroup );
QString defaultViewVirtualDesksHelp = i18n("Fullscreen layout that shows a representation of your virtual desktops\n and places the windows inside.");
QWhatsThis::add( defaultViewVirtualDesks, defaultViewVirtualDesksHelp );
QToolTip::add( defaultViewVirtualDesks, defaultViewVirtualDesksHelp );
page1Layout->addWidget(defaultViewBtnGroup);
QGroupBox *screenshotsGroupBox = new QGroupBox( 3, Vertical, i18n("Screenshots"), page1 );
passiveScreenshots = new QCheckBox(i18n("Passive screenshots"), screenshotsGroupBox);
QString passiveScreenshotsHelp = i18n(QString::fromUtf8("Create a screenshot whenever you raise or active a window.\nWhen selected the amount the annoying popup-effect before every Komposé activation will be minimized to nearly zero.\nThe drawback is that the screenshots are not so recent and may not display the actual content.").utf8());
QWhatsThis::add( passiveScreenshots, passiveScreenshotsHelp );
QToolTip::add( passiveScreenshots, passiveScreenshotsHelp );
// onlyOneScreenshot = new QCheckBox(i18n("Only grab a screenshot when none exists"), screenshotsGroupBox);
// QString onlyOneScreenshotHelp = i18n("When disabled new screenshots will be taken whenever possible.\nEnabling will only create a screenshot once the application is first activated and will never update it.");
// QWhatsThis::add( onlyOneScreenshot, onlyOneScreenshotHelp );
// QToolTip::add( onlyOneScreenshot, onlyOneScreenshotHelp );
QHBox *hLayScreenshotGrabDelay = new QHBox(screenshotsGroupBox);
QLabel *screenshotGrabDelayLabel = new QLabel(i18n("Delay between screenshots (ms):"), hLayScreenshotGrabDelay);
screenshotGrabDelay = new QSpinBox(0, 2000, 1, hLayScreenshotGrabDelay);
screenshotGrabDelayLabel->setBuddy(screenshotGrabDelay);
QString screenshotGrabDelayHelp = i18n("Specifies the time to wait between the activation of a window and the screenshot taking.\nIncrease it when your windows need more time to draw themselves after activation.\nValues below 300ms are not recommended, but may work in some cases." );
QWhatsThis::add( screenshotGrabDelay, screenshotGrabDelayHelp );
QToolTip::add( screenshotGrabDelay, screenshotGrabDelayHelp );
QWhatsThis::add( screenshotGrabDelayLabel, screenshotGrabDelayHelp );
QToolTip::add( screenshotGrabDelayLabel, screenshotGrabDelayHelp );
page1Layout->addWidget(screenshotsGroupBox);
page1Layout->insertStretch(-1);
QVBoxLayout *page2Layout = new QVBoxLayout( page2, 0, KDialog::spacingHint() );
imageEffects = new QCheckBox(i18n("Enable image effects"), page2);
QString imageEffectsHelp = i18n("Lighten windows when the mouse moves over it or gray out minimized windows.\nDepending on your system specs this can be a bit slower." );
QWhatsThis::add( imageEffects, imageEffectsHelp );
QToolTip::add( imageEffects, imageEffectsHelp );
page2Layout->addWidget(imageEffects);
QGroupBox *windowTitleGroupBox = new QGroupBox( 3, Vertical, i18n("Window Titles"), page2 );
QHBox *hBoxWindowTitles = new QHBox(windowTitleGroupBox);
showWindowTitles = new QCheckBox(i18n("Show window titles"), hBoxWindowTitles);
windowTitleFontBtn = new QPushButton(i18n("Select Font..."), hBoxWindowTitles);
QString showWindowTitlesHelp = i18n( QString::fromUtf8("Display the name of every window in Komposé") );
QWhatsThis::add( showWindowTitles, showWindowTitlesHelp );
QToolTip::add( showWindowTitles, showWindowTitlesHelp );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontBtn, SLOT(setEnabled(bool)) );
connect( windowTitleFontBtn, SIGNAL(clicked()), this, SLOT(showWindowTitleFontDialog()) );
QGrid *gridWindowTitlesColor = new QGrid(2, windowTitleGroupBox);
// windowTitleFontColorLabel = new QLabel(windowTitleFontColor, i18n("Text color: "), gridWindowTitlesColor); // FIXME: How to link to a buddy that doesn't yet exist?
windowTitleFontColorLabel = new QLabel(i18n("Text color:"), gridWindowTitlesColor);
windowTitleFontColor = new KColorButton(Qt::black, gridWindowTitlesColor);
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontColorLabel, SLOT(setEnabled(bool)) );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontColor, SLOT(setEnabled(bool)) );
showWindowTitleShadow = new QCheckBox(i18n("Shadow color:"), gridWindowTitlesColor);
windowTitleFontShadowColor = new KColorButton(Qt::lightGray, gridWindowTitlesColor);
connect( showWindowTitles, SIGNAL(toggled(bool)), showWindowTitleShadow, SLOT(setEnabled(bool)) );
connect( showWindowTitles, SIGNAL(toggled(bool)), windowTitleFontShadowColor, SLOT(setEnabled(bool)) );
connect( showWindowTitleShadow, SIGNAL(toggled(bool)), windowTitleFontShadowColor, SLOT(setEnabled(bool)) );
page2Layout->addWidget(windowTitleGroupBox);
QGroupBox *iconGroupBox = new QGroupBox( 3, Vertical, i18n("Task Icons"), page2 );
showIcons = new QCheckBox(i18n("Show icons"), iconGroupBox);
iconSize = new QSlider(0, 3, 1, 0, Qt::Horizontal, iconGroupBox);
iconSizeDescription = new QLabel( iconSize, "", iconGroupBox);
connect( iconSize, SIGNAL( sliderMoved(int) ), this, SLOT( updateIconSliderDesc(int) ) );
connect( iconSize, SIGNAL( valueChanged(int) ), this, SLOT( updateIconSliderDesc(int) ) );
connect( showIcons, SIGNAL( toggled(bool) ), iconSize, SLOT( setEnabled(bool) ) );
connect( showIcons, SIGNAL( toggled(bool) ), iconSizeDescription, SLOT( setEnabled(bool) ) );
page2Layout->addWidget(iconGroupBox);
page2Layout->insertStretch(-1);
QVBoxLayout *page3Layout = new QVBoxLayout( page3, 0, KDialog::spacingHint() );
QVGroupBox *virtDesksLayoutGroupBox = new QVGroupBox( i18n("Grouped by Virtual Desktops"), page3 );
dynamicVirtDeskLayout = new QCheckBox(i18n("Layout empty virtual desktops minimized"), virtDesksLayoutGroupBox );
QString dynamicVirtDeskLayoutHelp = i18n("Check this if you want empty virtual desktops to take less space on the screen.\nUncheck it if you want them to be arranged statically, each of the same size.");
QWhatsThis::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
QToolTip::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
QGrid *desktopColorsGroupBox = new QGrid( 2, virtDesksLayoutGroupBox );
desktopColorsGroupBox->setSpacing( 4 );
tintVirtDesks = new QCheckBox(i18n("Tint virtual desktop widgets:"), desktopColorsGroupBox);
tintVirtDesksColor = new KColorButton(Qt::blue, desktopColorsGroupBox);
QString tintVirtDesksHelp = i18n("Colorize the transparent background of the virtual desktop widgets" );
QWhatsThis::add( tintVirtDesks, tintVirtDesksHelp );
QToolTip::add( tintVirtDesks, tintVirtDesksHelp );
QWhatsThis::add( tintVirtDesksColor, tintVirtDesksHelp );
QToolTip::add( tintVirtDesksColor, tintVirtDesksHelp );
connect( tintVirtDesks, SIGNAL(toggled(bool)), tintVirtDesksColor, SLOT(setEnabled(bool)) );
desktopTitleFontColorLabel = new QLabel(i18n("Desktop frame color:"), desktopColorsGroupBox);
desktopTitleFontColor = new KColorButton(Qt::black, desktopColorsGroupBox);
desktopTitleFontHighlightColorLabel = new QLabel(i18n("Desktop frame highlight color:"), desktopColorsGroupBox);
desktopTitleFontHighlightColor = new KColorButton(Qt::black, desktopColorsGroupBox);
page3Layout->addWidget(virtDesksLayoutGroupBox);
desktopTitleFontBtn = new QPushButton(i18n("Select Desktop Names Font..."), virtDesksLayoutGroupBox);
connect( desktopTitleFontBtn, SIGNAL(clicked()), this, SLOT(showDesktopTitleFontDialog()) );
page3Layout->insertStretch(-1);
fillPages();
}
KomposePreferences::~KomposePreferences()
{}
void KomposePreferences::updateIconSliderDesc( int val )
{
switch( val )
{
case 0:
iconSizeDescription->setText( i18n("16x16") );
break;
case 1:
iconSizeDescription->setText( i18n("32x32") );
break;
case 2:
iconSizeDescription->setText( i18n("64x64") );
break;
case 3:
iconSizeDescription->setText( i18n("Don't scale, show as they are (preferably bigger)") );
break;
}
}
void KomposePreferences::showWindowTitleFontDialog()
{
KFontDialog::getFont( *windowTitleFont );
// if ( result == KFontDialog::Accepted )
}
void KomposePreferences::showDesktopTitleFontDialog()
{
KFontDialog::getFont( *desktopTitleFont );
}
void KomposePreferences::fillPages()
{
// Sync Settings to Preferences dialog
switch ( KomposeSettings::instance()->getDefaultView() )
{
case KOMPOSEDISPLAY_VIRTUALDESKS:
defaultViewVirtualDesks->setChecked( true );
break;
case KOMPOSEDISPLAY_WORLD:
defaultViewWorld->setChecked( true );
break;
}
passiveScreenshots->setChecked( KomposeSettings::instance()->getPassiveScreenshots() );
screenshotGrabDelay->setValue( KomposeSettings::instance()->getScreenshotGrabDelay() / 1000000 );
dynamicVirtDeskLayout->setChecked( KomposeSettings::instance()->getDynamicVirtDeskLayout() );
imageEffects->setChecked( KomposeSettings::instance()->getImageEffects() );
tintVirtDesks->setChecked( KomposeSettings::instance()->getTintVirtDesks() );
tintVirtDesksColor->setColor( KomposeSettings::instance()->getTintVirtDesksColor() );
tintVirtDesksColor->setEnabled( KomposeSettings::instance()->getTintVirtDesks() );
showWindowTitles->setChecked( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFont = new QFont(KomposeSettings::instance()->getWindowTitleFont());
windowTitleFontColor->setColor( KomposeSettings::instance()->getWindowTitleFontColor() );
windowTitleFontShadowColor->setColor( KomposeSettings::instance()->getWindowTitleFontShadowColor() );
showWindowTitleShadow->setChecked( KomposeSettings::instance()->getShowWindowTitleShadow() );
// Disable dependant widgets
windowTitleFontBtn->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontColorLabel->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontColor->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
showWindowTitleShadow->setEnabled( KomposeSettings::instance()->getShowWindowTitles() );
windowTitleFontShadowColor->setEnabled( KomposeSettings::instance()->getShowWindowTitles() || KomposeSettings::instance()->getShowWindowTitleShadow() );
desktopTitleFont = new QFont(KomposeSettings::instance()->getDesktopTitleFont());
desktopTitleFontColor->setColor( KomposeSettings::instance()->getDesktopTitleFontColor() );
desktopTitleFontHighlightColor->setColor( KomposeSettings::instance()->getDesktopTitleFontHighlightColor() );
showIcons->setChecked( KomposeSettings::instance()->getShowIcons() );
iconSize->setValue( KomposeSettings::instance()->getIconSize() );
iconSize->setEnabled( showIcons->isChecked() );
iconSizeDescription->setEnabled( showIcons->isChecked() );
updateIconSliderDesc( iconSize->value() );
}
void KomposePreferences::slotApply()
{
KomposeSettings::instance()->setDefaultView( defaultViewBtnGroup->selectedId() );
KomposeSettings::instance()->setPassiveScreenshots( passiveScreenshots->isChecked() );
KomposeSettings::instance()->setScreenshotGrabDelay( screenshotGrabDelay->value() * 1000000 );
KomposeSettings::instance()->setDynamicVirtDeskLayout( dynamicVirtDeskLayout->isChecked() );
KomposeSettings::instance()->setImageEffects( imageEffects->isChecked() );
KomposeSettings::instance()->setTintVirtDesks( tintVirtDesks->isChecked() );
KomposeSettings::instance()->setTintVirtDesksColor( tintVirtDesksColor->color() );
KomposeSettings::instance()->setShowWindowTitles( showWindowTitles->isChecked() );
KomposeSettings::instance()->setWindowTitleFont( *windowTitleFont );
KomposeSettings::instance()->setWindowTitleFontColor( windowTitleFontColor->color() );
KomposeSettings::instance()->setWindowTitleFontShadowColor( windowTitleFontShadowColor->color() );
KomposeSettings::instance()->setShowWindowTitleShadow( showWindowTitleShadow->isChecked() );
KomposeSettings::instance()->setDesktopTitleFont( *desktopTitleFont );
KomposeSettings::instance()->setDesktopTitleFontColor( desktopTitleFontColor->color() );
KomposeSettings::instance()->setDesktopTitleFontHighlightColor( desktopTitleFontHighlightColor->color() );
KomposeSettings::instance()->setShowIcons( showIcons->isChecked() );
KomposeSettings::instance()->setIconSize( iconSize->value() );
KomposeSettings::instance()->writeConfig();
KDialogBase::slotApply();
}
void KomposePreferences::slotOk()
{
slotApply();
KDialogBase::slotOk();
}
#include "komposepreferences.moc"

@ -0,0 +1,109 @@
//
// C++ Interface: komposepreferences
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEPREFERENCES_H
#define KOMPOSEPREFERENCES_H
#include <kdialogbase.h>
#include <klocale.h>
class QCheckBox;
class QFrame;
class QSpinBox;
class KColorButton;
class QButtonGroup;
class QSlider;
class QPushButton;
class QFont;
class QRadioButton;
/**
@author Hans Oischinger
*/
class KomposePreferences : public KDialogBase
{
Q_OBJECT
public:
KomposePreferences();
~KomposePreferences();
protected:
void fillPages();
protected slots:
void slotApply();
void slotOk();
void updateIconSliderDesc( int );
void showDesktopTitleFontDialog();
void showWindowTitleFontDialog();
void setUseCompositeToggled( bool );
private:
bool m_hasXinerama;
QFrame *page1;
QFrame *page2;
QButtonGroup *defaultViewBtnGroup;
QRadioButton *defaultViewWorld;
QRadioButton *defaultViewVirtualDesks;
QRadioButton *defaultViewCurrentDesk;
QCheckBox *useComposite;
QCheckBox *passiveScreenshots;
QCheckBox *dynamicVirtDeskLayout;
QCheckBox *cacheScaledPixmaps;
QCheckBox *imageEffects;
QSpinBox *screenshotGrabDelay;
QCheckBox *showIcons;
QSlider *iconSize;
QLabel *iconSizeDescription;
QCheckBox *showWindowTitles;
QPushButton *windowTitleFontBtn;
QFont *windowTitleFont;
KColorButton *windowTitleFontColor;
QCheckBox *showWindowTitleShadow;
KColorButton *windowTitleFontShadowColor;
QLabel *windowTitleFontColorLabel;
QPushButton *desktopTitleFontBtn;
QLabel *desktopTitleFontColorLabel;
QLabel *desktopTitleFontHighlightColorLabel;
KColorButton *desktopTitleFontColor;
KColorButton *desktopTitleFontHighlightColor;
QFont *desktopTitleFont;
QCheckBox *m_topLeftCorner;
QCheckBox *m_bottomLeftCorner;
QCheckBox *m_topRightCorner;
QCheckBox *m_bottomRightCorner;
QCheckBox *m_topEdge;
QCheckBox *m_bottomEdge;
QCheckBox *m_rightEdge;
QCheckBox *m_leftEdge;
QSpinBox *autoLockDelay;
QCheckBox *showDesktopNum;
QSpinBox *m_viewScreen;
QCheckBox *m_viewScreenAll;
};
#endif

@ -0,0 +1,235 @@
//
// C++ Implementation: komposesettings
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposesettings.h"
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include "komposepreferences.h"
#include <qcolor.h>
#include <kglobalaccel.h>
#include <kapplication.h>
#include <kconfig.h>
#include <kglobal.h>
#include <kiconloader.h>
#include <kdebug.h>
static KomposeSettings* settingsInstance = 0;
/*
* KomposeSettings is a singleton
*/
KomposeSettings* KomposeSettings::instance()
{
if ( !settingsInstance )
{
// kdDebug() << "KomposeSettings::instance() - Creating Singleton instance"); // FIXME: How can this apper multiple times??
settingsInstance = new KomposeSettings();
}
return settingsInstance;
}
KomposeSettings::KomposeSettings(QObject *parent, const char *name)
: QObject(parent, name),
dialogOpen(0),
windowTitleFontMetrics(0)
{
// Init global shortcut object
globalAccel = new KGlobalAccel( this );
globalAccel->insert( "showDefaultView", i18n("Show Komposé (default view)"),
i18n("Displays the view you have configured as default"),
KKey::QtWIN+Key_Tab, KKey::QtWIN+CTRL+SHIFT+Key_Tab,
KomposeViewManager::instance(), SLOT(createDefaultView()) );
globalAccel->insert( "showWorldView", i18n("Show Komposé (ungrouped)"),
i18n("Displays all windows unsorted"),
CTRL+SHIFT+Key_J, KKey::QtWIN+CTRL+SHIFT+Key_J,
KomposeViewManager::instance(), SLOT(createWorldView()) );
globalAccel->insert( "showVirtualDesktopView", i18n("Show Komposé (grouped by virtual desktops)"),
i18n("Displays all windows sorted by virtual desktops"),
CTRL+SHIFT+Key_I, KKey::QtWIN+CTRL+SHIFT+Key_I,
KomposeViewManager::instance(), SLOT(createVirtualDesktopView()) );
globalAccel->insert( "showCurrentDesktopView", i18n("Show Komposé (current virtual desktop)"),
i18n("Displays all windows on the current desktop"),
CTRL+SHIFT+Key_K, KKey::QtWIN+CTRL+SHIFT+Key_K,
KomposeViewManager::instance(), SLOT(createCurrentDesktopView()) );
// read Settings from cfg file
readConfig();
settingsInstance = this;
}
KomposeSettings::~KomposeSettings()
{
delete globalAccel;
delete settingsInstance;
}
void KomposeSettings::readConfig()
{
kdDebug() << "KomposeSettings::readConfig()" << endl;
// Read Shortcut Settings from config
globalAccel->readSettings();
globalAccel->updateConnections();
kapp->config()->setGroup("Main window");
defaultView = kapp->config()->readNumEntry("defaultView", KOMPOSEDISPLAY_VIRTUALDESKS);
useComposite = kapp->config()->readBoolEntry("useComposite", false);
passiveScreenshots = kapp->config()->readBoolEntry("passiveScreenshots", true);
screenshotGrabDelay = kapp->config()->readNumEntry("screenshotGrabDelay", 400000000);
dynamicVirtDeskLayout = kapp->config()->readBoolEntry("dynamicVirtDeskLayout", true);
imageEffects = kapp->config()->readBoolEntry("imageEffects", true);
showIcons = kapp->config()->readBoolEntry("showIcons", true);
iconSize = kapp->config()->readNumEntry("iconSize", 3);
showWindowTitles = kapp->config()->readBoolEntry("showWindowTitles", true );
windowTitleFont = kapp->config()->readFontEntry("windowTitleFont", new QFont( "arial", 11, QFont::Bold ) );
windowTitleFontColor = kapp->config()->readColorEntry("windowTitleFontColor", new QColor(Qt::black) );
showWindowTitleShadow = kapp->config()->readBoolEntry("showWindowTitleShadow", true );
windowTitleFontShadowColor = kapp->config()->readColorEntry("windowTitleFontShadowColor", new QColor(Qt::lightGray) );
desktopTitleFont = kapp->config()->readFontEntry("desktopTitleFont", new QFont( "arial", 10 ) );
desktopTitleFontColor = kapp->config()->readColorEntry("desktopTitleFontColor", new QColor(Qt::gray) );
desktopTitleFontHighlightColor = kapp->config()->readColorEntry("desktopTitleFontHighlightColor", new QColor(Qt::black) );
cacheScaledPixmaps = kapp->config()->readBoolEntry("cacheScaledPixmaps", true);
activateOnTopLeftCorner = kapp->config()->readBoolEntry("activateOnTopLeftCorner", false );
activateOnTopRightCorner = kapp->config()->readBoolEntry("activateOnTopRightCorner", false );
activateOnBottomLeftCorner = kapp->config()->readBoolEntry("activateOnBottomLeftCorner", false );
activateOnBottomRightCorner = kapp->config()->readBoolEntry("activateOnBottomRightCorner", false );
activateOnTopEdge = kapp->config()->readBoolEntry("activateOnTopEdge", false );
activateOnBottomEdge = kapp->config()->readBoolEntry("activateOnBottomEdge", false );
activateOnLeftEdge = kapp->config()->readBoolEntry("activateOnLeftEdge", false );
activateOnRightEdge = kapp->config()->readBoolEntry("activateOnRightEdge", false );
autoLockDelay = kapp->config()->readNumEntry("autoLockDelay", 1000);
showDesktopNum = kapp->config()->readBoolEntry("showDesktopNum", false );
viewScreen = kapp->config()->readNumEntry("viewScreen", -1);
calcFontMetrics();
emit settingsChanged();
}
void KomposeSettings::writeConfig()
{
kdDebug() << "KomposeSettings::writeConfig()" << endl;
globalAccel->writeSettings();
globalAccel->updateConnections();
// Read from config file
kapp->config()->setGroup("Main window");
kapp->config()->writeEntry("defaultView", defaultView );
kapp->config()->writeEntry("useComposite", useComposite );
kapp->config()->writeEntry("passiveScreenshots", passiveScreenshots );
kapp->config()->writeEntry("screenshotGrabDelay", screenshotGrabDelay);
kapp->config()->writeEntry("dynamicVirtDeskLayout", dynamicVirtDeskLayout);
kapp->config()->writeEntry("imageEffects", imageEffects);
kapp->config()->writeEntry("showIcons", showIcons);
kapp->config()->writeEntry("iconSize", iconSize);
kapp->config()->writeEntry("showWindowTitles", showWindowTitles);
kapp->config()->writeEntry("windowTitleFont", windowTitleFont);
kapp->config()->writeEntry("windowTitleFontColor", windowTitleFontColor);
kapp->config()->writeEntry("showWindowTitleShadow", showWindowTitleShadow);
kapp->config()->writeEntry("windowTitleFontShadowColor", windowTitleFontShadowColor);
kapp->config()->writeEntry("desktopTitleFont", desktopTitleFont);
kapp->config()->writeEntry("desktopTitleFontColor", desktopTitleFontColor);
kapp->config()->writeEntry("desktopTitleFontHighlightColor", desktopTitleFontHighlightColor);
kapp->config()->writeEntry("cacheScaledPixmaps", cacheScaledPixmaps);
kapp->config()->writeEntry("activateOnTopLeftCorner", activateOnTopLeftCorner);
kapp->config()->writeEntry("activateOnTopRightCorner", activateOnTopRightCorner);
kapp->config()->writeEntry("activateOnBottomLeftCorner", activateOnBottomLeftCorner);
kapp->config()->writeEntry("activateOnBottomRightCorner", activateOnBottomRightCorner);
kapp->config()->writeEntry("activateOnTopEdge", activateOnTopEdge);
kapp->config()->writeEntry("activateOnBottomEdge", activateOnBottomEdge);
kapp->config()->writeEntry("activateOnLeftEdge", activateOnLeftEdge);
kapp->config()->writeEntry("activateOnRightEdge", activateOnRightEdge);
kapp->config()->writeEntry("autoLockDelay", autoLockDelay);
kapp->config()->writeEntry("showDesktopNum", showDesktopNum);
kapp->config()->writeEntry("viewScreen", viewScreen);
kapp->config()->sync();
kdDebug() << "KomposeSettings::writeConfig() - Settings saved to cfg file" << endl;
calcFontMetrics();
emit settingsChanged();
}
void KomposeSettings::showPreferencesDlg()
{
dialogOpen = true;
// popup preference dialog
KomposePreferences *dlg = new KomposePreferences();
dlg->exec();
delete dlg;
dialogOpen = false;
}
int KomposeSettings::getIconSizePixels()
{
switch( iconSize )
{
case 0:
return 16;
case 1:
return 32;
case 2:
return 64;
case 3:
return -1;
}
return 32;
}
void KomposeSettings::calcFontMetrics()
{
if (windowTitleFontMetrics != 0)
delete windowTitleFontMetrics;
windowTitleFontMetrics = new QFontMetrics( windowTitleFont );
windowTitleFontAscent = windowTitleFontMetrics->ascent();
windowTitleFontHeight = windowTitleFontMetrics->height();
}
#include "komposesettings.moc"

@ -0,0 +1,174 @@
//
// C++ Interface: komposesettings
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSESETTINGS_H
#define KOMPOSESETTINGS_H
#include <qobject.h>
#include <qcolor.h>
#include <qfont.h>
#define MAX_DESKTOPS 16
enum KomposeDisplay { KOMPOSEDISPLAY_WORLD, KOMPOSEDISPLAY_VIRTUALDESKS, KOMPOSEDISPLAY_CURRENTDESK };
class KGlobalAccel;
class QFontMetrics;
/**
@author Hans Oischinger
*/
class KomposeSettings : public QObject
{
Q_OBJECT
protected:
KomposeSettings(QObject *parent = 0, const char *name = 0);
~KomposeSettings();
public:
static KomposeSettings *instance();
void readConfig();
void writeConfig();
bool hasDialogOpen() { return dialogOpen; }
KGlobalAccel *getGlobalAccel() const { return globalAccel; }
bool getUseComposite() const { return useComposite; }
void setUseComposite( bool b ) { useComposite = b; }
bool getPassiveScreenshots() const { return passiveScreenshots; }
void setPassiveScreenshots( bool b ) { passiveScreenshots = b; }
uint getScreenshotGrabDelay() { return screenshotGrabDelay; }
void setScreenshotGrabDelay( uint val ) { screenshotGrabDelay=val; }
bool getDynamicVirtDeskLayout() const { return dynamicVirtDeskLayout; }
void setDynamicVirtDeskLayout( bool b ) { dynamicVirtDeskLayout = b; }
bool getImageEffects() const { return imageEffects; }
void setImageEffects( bool b ) { imageEffects = b; }
int getDefaultView() const { return defaultView; }
void setDefaultView( int d ) { defaultView = d; }
int getIconSize() { return iconSize; }
void setIconSize( int i ) { iconSize = i; }
int getShowIcons() { return showIcons; }
void setShowIcons( bool b ) { showIcons = b; }
int getIconSizePixels();
void setWindowTitleFont( QFont f ) { windowTitleFont = f; }
const QFont& getWindowTitleFont() const { return windowTitleFont; }
int getShowWindowTitles() { return showWindowTitles; }
void setShowWindowTitles( bool b ) { showWindowTitles = b; }
int getShowWindowTitleShadow() { return showWindowTitleShadow; }
void setShowWindowTitleShadow( bool b ) { showWindowTitleShadow = b; }
const QColor& getWindowTitleFontColor() const { return windowTitleFontColor; }
void setWindowTitleFontColor( QColor c ) { windowTitleFontColor = c; }
const QColor& getWindowTitleFontShadowColor() const { return windowTitleFontShadowColor; }
void setWindowTitleFontShadowColor( QColor c ) { windowTitleFontShadowColor = c; }
const QFontMetrics* getWindowTitleFontMetrics() { return windowTitleFontMetrics; }
int getWindowTitleFontAscent() { return windowTitleFontAscent; }
int getWindowTitleFontHeight() { return windowTitleFontHeight; }
void setDesktopTitleFont( QFont f ) { desktopTitleFont = f; }
const QFont& getDesktopTitleFont() const { return desktopTitleFont; }
const QColor& getDesktopTitleFontColor() const { return desktopTitleFontColor; }
void setDesktopTitleFontColor( QColor c ) { desktopTitleFontColor = c; }
const QColor& getDesktopTitleFontHighlightColor() const { return desktopTitleFontHighlightColor; }
void setDesktopTitleFontHighlightColor( QColor c ) { desktopTitleFontHighlightColor = c; }
bool getCacheScaledPixmaps() const { return cacheScaledPixmaps; }
void setCacheScaledPixmaps( bool b ) { cacheScaledPixmaps = b; }
bool getActivateOnTopLeftCorner() const { return activateOnTopLeftCorner; }
void setActivateOnTopLeftCorner( bool b ) { activateOnTopLeftCorner = b; }
bool getActivateOnTopRightCorner() const { return activateOnTopRightCorner; }
void setActivateOnTopRighCorner( bool b ) { activateOnTopRightCorner = b; }
bool getActivateOnBottomLeftCorner() const { return activateOnBottomLeftCorner; }
void setActivateOnBottomLeftCorner( bool b ) { activateOnBottomLeftCorner = b; }
bool getActivateOnBottomRightCorner() const { return activateOnBottomRightCorner; }
void setActivateOnBottomRightCorner( bool b ) { activateOnBottomRightCorner = b; }
bool getActivateOnTopEdge() const { return activateOnTopEdge; }
void setActivateOnTopEdge( bool b ) { activateOnTopEdge = b; }
bool getActivateOnLeftEdge() const { return activateOnLeftEdge; }
void setActivateOnLeftEdge( bool b ) { activateOnLeftEdge= b; }
bool getActivateOnBottomEdge() const { return activateOnBottomEdge; }
void setActivateOnBottomEdge( bool b ) { activateOnBottomEdge = b; }
bool getActivateOnRightEdge() const { return activateOnRightEdge; }
void setActivateOnRightEdge( bool b ) { activateOnRightEdge = b; }
uint getAutoLockDelay() { return autoLockDelay; }
void setAutoLockDelay( uint val ) { autoLockDelay=val; }
void setShowDesktopNum( bool b ) { showDesktopNum = b; }
bool getShowDesktopNum() const { return showDesktopNum; }
void setViewScreen( int screen ) { viewScreen = screen; }
int getViewScreen() const { return viewScreen; }
public slots:
void showPreferencesDlg();
protected slots:
void calcFontMetrics();
signals:
void settingsChanged();
private:
KGlobalAccel *globalAccel;
bool dialogOpen;
bool useComposite;
bool passiveScreenshots;
uint screenshotGrabDelay;
bool dynamicVirtDeskLayout;
bool imageEffects;
int defaultView;
int iconSize;
bool showIcons;
bool showWindowTitles;
QFont windowTitleFont;
QFontMetrics *windowTitleFontMetrics;
int windowTitleFontAscent;
int windowTitleFontHeight;
QColor windowTitleFontColor;
bool showWindowTitleShadow;
QColor windowTitleFontShadowColor;
QFont desktopTitleFont;
QColor desktopTitleFontColor;
QColor desktopTitleFontHighlightColor;
bool cacheScaledPixmaps;
bool activateOnTopLeftCorner;
bool activateOnTopRightCorner;
bool activateOnBottomLeftCorner;
bool activateOnBottomRightCorner;
bool activateOnTopEdge;
bool activateOnLeftEdge;
bool activateOnBottomEdge;
bool activateOnRightEdge;
uint autoLockDelay;
bool showDesktopNum;
int viewScreen;
};
#endif

@ -0,0 +1,127 @@
//
// C++ Implementation: komposesystray
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposesystray.h"
#include "komposeviewmanager.h"
#include "komposefullscreenwidget.h"
#include "komposesettings.h"
#include "komposeglobal.h"
#include "komposetaskmanager.h"
#include <qpixmap.h>
#include <qbitmap.h>
#include <qpainter.h>
#include <kapplication.h>
#include <kaction.h>
#include <kpopupmenu.h>
#include <kiconeffect.h>
#include <kglobalsettings.h>
KomposeSysTray::KomposeSysTray(QWidget *parent, const char *name)
: KSystemTray(parent, name)
{
// Create Menu
menu = contextMenu();
move( -1000, -1000 );
// Fill Menu
KomposeGlobal::instance()->getActShowWorldView()->plug(menu);
KomposeGlobal::instance()->getActShowVirtualDesktopView()->plug(menu);
KomposeGlobal::instance()->getActShowCurrentDesktopView()->plug(menu);
menu->insertSeparator();
KomposeGlobal::instance()->getActPreferencesDialog()->plug(menu);
KomposeGlobal::instance()->getActConfigGlobalShortcuts()->plug(menu);
KomposeGlobal::instance()->getActAboutDlg()->plug(menu);
slotConfigChanged();
connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(slotConfigChanged()) );
}
KomposeSysTray::~KomposeSysTray()
{}
void KomposeSysTray::slotConfigChanged( )
{
// set the icon here
QPixmap iconPixmap = loadIcon("kompose");
setPixmap(iconPixmap);
icon = iconPixmap.convertToImage();
currentDesktopChanged(KomposeTaskManager::instance()->getCurrentDesktopNum());
}
void KomposeSysTray::mouseReleaseEvent (QMouseEvent * )
{}
void KomposeSysTray::mousePressEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
switch ( e->button() )
{
case LeftButton:
KomposeViewManager::instance()->createView( KomposeSettings::instance()->getDefaultView() );
break;
case MidButton:
// fall through
case RightButton:
contextMenuAboutToShow( menu );
menu->popup( e->globalPos() );
break;
default:
// nothing
break;
}
}
void KomposeSysTray::currentDesktopChanged(int desktop)
{
if (!KomposeSettings::instance()->getShowDesktopNum())
return;
// update the icon to display the current desktop number
// qDebug("Displaying current desktop number on the tray icon....\n");
// copying from aKregator/src/trayicon.cpp
// from KMSystemTray
int oldW = pixmap()->size().width();
int oldH = pixmap()->size().height();
QString uStr=QString::number( desktop );
QFont f=KGlobalSettings::generalFont();
f.setBold(true);
f.setItalic(true);
float pointSize=f.pointSizeFloat();
QFontMetrics fm(f);
int w=fm.width(uStr);
if( w > (oldW) )
{
pointSize *= float(oldW) / float(w);
f.setPointSizeFloat(pointSize);
}
QPixmap pix(oldW, oldH);
pix.fill(Qt::white);
QPainter p(&pix);
p.setFont(f);
p.setPen(Qt::black);
p.drawText(pix.rect(), Qt::AlignCenter, uStr);
pix.setMask(pix.createHeuristicMask());
QImage img=pix.convertToImage();
// overlay
QImage overlayImg=icon.copy();
KIconEffect::overlay(overlayImg, img);
QPixmap newIcon;
newIcon.convertFromImage(overlayImg);
setPixmap(newIcon);
}
#include "komposesystray.moc"

@ -0,0 +1,47 @@
//
// C++ Interface: komposesystray
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSESYSTRAY_H
#define KOMPOSESYSTRAY_H
#include <ksystemtray.h>
#include <qimage.h>
class KAction;
class KGlobalAccel;
class KPopupMenu;
/**
@author Hans Oischinger
*/
class KomposeSysTray : public KSystemTray
{
Q_OBJECT
public:
KomposeSysTray(QWidget *parent = 0, const char *name = 0);
~KomposeSysTray();
void currentDesktopChanged(int desktop);
protected:
void mouseReleaseEvent (QMouseEvent *);
void mousePressEvent (QMouseEvent *);
protected slots:
void slotConfigChanged();
private:
KPopupMenu *menu;
QImage icon;
};
#endif

@ -0,0 +1,357 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposetask.h"
#include "komposetaskmanager.h"
#include "komposesettings.h"
#include "komposeglobal.h"
#include <qobject.h>
#include <qimage.h>
#include <qapplication.h>
#include <qtimer.h>
#include <qpixmap.h>
#include <kpixmapio.h>
#include <kwinmodule.h>
#include <klocale.h>
#include <kdebug.h>
#include <netwm.h>
#include <time.h>
// Last include as it's Xlibs includes conflict with qt includes
#include "komposetaskvisualizer.h"
#include <X11/Xlib.h>
KomposeTask::KomposeTask(WId win, KWinModule *kwinmod, QObject *parent, const char *name)
: QObject(parent, name),
kwinmodule(kwinmod),
windowID(win),
blockDamageEvents(false)
{
findWmFrame();
// Initial refresh
refresh();
// Create visualizer object
visualizer = new KomposeTaskVisualizer( this );
}
KomposeTask::~KomposeTask()
{
emit closed();
visualizer->deleteLater();
}
void KomposeTask::findWmFrame()
{
Window target_win, parent, root;
Window *children;
uint status, nchildren;
target_win = windowID;
for (;;)
{
status = XQueryTree(QPaintDevice::x11AppDisplay(), target_win, &root, &parent, &children, &nchildren);
if (!status)
break;
if (children)
XFree(children);
if (!parent || parent == root)
break;
else
target_win = parent;
}
wmframeID = target_win;
}
void KomposeTask::slotActivated()
{
visualizer->slotTaskActivated();
}
void KomposeTask::slotUpdateScreenshot()
{
visualizer->slotUpdateScreenshot();
}
bool KomposeTask::isOnTop() const
{
return KomposeTaskManager::instance()->isOnTop( this );
}
bool KomposeTask::isActive() const
{
if ( kwinmodule->activeWindow() == windowID )
return true;
else
return false;
}
bool KomposeTask::isMaximized() const
{
return (windowInfo.state() & NET::Max);
}
bool KomposeTask::isIconified() const
{
// return (windowInfo.mappingState == NET::Iconic);
return windowInfo.isMinimized();
}
bool KomposeTask::isAlwaysOnTop() const
{
return (windowInfo.state() & NET::StaysOnTop);
}
bool KomposeTask::isShaded() const
{
return (windowInfo.state() & NET::Shaded);
}
bool KomposeTask::isOnCurrentDesktop() const
{
return (windowInfo.onAllDesktops() || windowInfo.desktop() == KWin::currentDesktop());
}
int KomposeTask::onDesktop() const
{
return windowInfo.desktop();
}
bool KomposeTask::isOnAllDesktops() const
{
return windowInfo.onAllDesktops();
}
bool KomposeTask::isModified() const
{
static QString modStr = QString::fromUtf8("[") + i18n("modified") + QString::fromUtf8("]");
int modStrPos = windowInfo.visibleName().find(modStr);
return ( modStrPos != -1 );
}
void KomposeTask::maximize()
{
NETWinInfo ni( qt_xdisplay(), windowID, qt_xrootwin(), NET::WMState);
ni.setState( NET::Max, NET::Max );
if (windowInfo.mappingState() == NET::Iconic)
activate();
}
void KomposeTask::restore()
{
KWin::deIconifyWindow( windowID, false );
// NETWinInfo ni( qt_xdisplay(), windowID, qt_xrootwin(), NET::WMState);
// ni.setState( 0, NET::Max );
//
// if (windowInfo.mappingState == NET::Iconic)
// activate();
}
void KomposeTask::iconify()
{
//XIconifyWindow( qt_xdisplay(), windowID, qt_xscreen() );
KWin::iconifyWindow( windowID, false );
}
void KomposeTask::close()
{
NETRootInfo ri( qt_xdisplay(), NET::CloseWindow );
ri.closeWindowRequest( windowID );
}
void KomposeTask::raise()
{
// kdDebug(1210) << "Task::raise(): " << name() << endl;
XRaiseWindow( qt_xdisplay(), windowID );
}
void KomposeTask::lower()
{
// kdDebug(1210) << "Task::lower(): " << name() << endl;
XLowerWindow( qt_xdisplay(), windowID );
}
void KomposeTask::activate()
{
KWin::forceActiveWindow(windowID);
}
// void KomposeTask::activateOrRaise()
// {
// if ( !isActive() || isIconified() )
// {
// activate();
// }
// else if ( !isOnTop() )
// {
// raise();
// }
// }
void KomposeTask::minimizeOrRestore()
{
if ( isIconified() )
{
restore();
}
else
{
iconify();
}
}
void KomposeTask::toDesktop(int desk)
{
NETWinInfo ni(qt_xdisplay(), windowID, qt_xrootwin(), NET::WMDesktop);
if (desk == 0)
{
ni.setDesktop(NETWinInfo::OnAllDesktops);
return;
}
//ni.setDesktop(desk+1);
KWin::setOnDesktop( windowID, desk );
}
void KomposeTask::toCurrentDesktop()
{
toDesktop(kwinmodule->currentDesktop());
}
void KomposeTask::setAlwaysOnTop(bool stay)
{
NETWinInfo ni( qt_xdisplay(), windowID, qt_xrootwin(), NET::WMState);
if(stay)
ni.setState( NET::StaysOnTop, NET::StaysOnTop );
else
ni.setState( 0, NET::StaysOnTop );
}
void KomposeTask::toggleAlwaysOnTop()
{
setAlwaysOnTop( !isAlwaysOnTop() );
}
void KomposeTask::setShaded(bool shade)
{
NETWinInfo ni( qt_xdisplay(), windowID, qt_xrootwin(), NET::WMState);
if(shade)
ni.setState( NET::Shaded, NET::Shaded );
else
ni.setState( 0, NET::Shaded );
}
void KomposeTask::toggleShaded()
{
setShaded( !isShaded() );
}
/*
* Update Info data
*/
void KomposeTask::refresh()
{
//kdDebug() << "KomposeTask::refresh() (WId %d) - Window parameters have changed or initial refresh", windowID);
windowInfo = KWin::windowInfo(windowID);
if ( !windowInfo.valid() )
{
kdDebug() << "KomposeTask::refresh() (WId " << windowID << ") - Invalid window Info. window closed?!" << endl;
// TODO: Find out what I have todo when this happens ( it does! )
return;
}
emit stateChanged(); //TODO: Only emit this when state has really changed
}
/**
* This has to be called by x11EventFilter whenever ConfigureNotify for this win occurs
* sorta hacky but x11EventFilter can only be implemented in a kapp object which redirects it
* to the taskmanager, that picks out the right task by winId and notifies us :(
*/
void KomposeTask::slotX11ConfigureNotify()
{
emit x11ConfigureNotify();
}
/**
* This has to be called by x11EventFilter whenever DamageNotify for this win occurs
* sorta hacky but x11EventFilter can only be implemented in a kapp object which redirects it
* to the taskmanager, that picks out the right task by winId and notifies us :(
*/
void KomposeTask::slotX11DamageNotify()
{
if ( blockDamageEvents )
return;
blockDamageEvents = true;
emit x11DamageNotify();
QTimer::singleShot( 1000, this, SLOT( unBlockDamageEvents() ) );
}
int KomposeTask::getHeightForWidth ( int w ) const
{
return (int)(((double)w / (double)getGeometry().width()) * (double)getGeometry().height());
}
int KomposeTask::getWidthForHeight ( int h ) const
{
return (int)(((double)h / (double)getGeometry().height()) * (double)getGeometry().width());
}
double KomposeTask::getAspectRatio()
{
return (double)(getGeometry().width()) / (double)(getGeometry().height());
}
QPixmap KomposeTask::getIcon( int size )
{
// Cache the icons???
// if ( pm_icon.isNull() || pm_icon.width() != size )
// {
// if (size == -1)
// pm_icon = KWin::icon( windowID );
// else
// pm_icon = KWin::icon( windowID, size, size, true );
// }
//
// return pm_icon;
if (size == -1)
return KWin::icon( windowID );
else
return KWin::icon( windowID, size, size, true );
}
#include "komposetask.moc"

@ -0,0 +1,118 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSETASK_H
#define KOMPOSETASK_H
#include <qobject.h>
#include <qrect.h>
#include <kwin.h>
class KWinModule;
class KomposeTaskVisualizer;
/**
@author Hans Oischinger
*/
class KomposeTask : public QObject
{
Q_OBJECT
public:
KomposeTask(WId win, KWinModule *kwinmod, QObject *parent = 0, const char *name = 0);
~KomposeTask();
public:
// state
bool isMaximized() const;
bool isIconified() const;
bool isShaded() const;
bool isOnTop() const;
int onDesktop() const;
bool isOnCurrentDesktop() const;
bool isOnAllDesktops() const;
bool isAlwaysOnTop() const;
bool isActive() const;
bool isModified() const;
bool isValid() const { return windowInfo.valid(); }
WId window() const { return windowID; }
WId wmFrame() const { return wmframeID; }
QString name() const { return windowInfo.name(); }
QString visibleName() const { return windowInfo.visibleName(); }
QString visibleNameWithState() const { return windowInfo.visibleNameWithState(); }
QRect getGeometry() const { return windowInfo.geometry(); }
QRect getFrameGeometry() const { return windowInfo.frameGeometry(); }
QPixmap getIcon( int size );
double getAspectRatio();
int getHeightForWidth( int w ) const;
int getWidthForHeight( int h ) const;
KomposeTaskVisualizer* getVisualizer() { return visualizer; }
protected:
void paintEvent ( QPaintEvent * );
void mouseReleaseEvent ( QMouseEvent * e );
void findWmFrame();
signals:
void stateChanged();
void x11ConfigureNotify();
void x11DamageNotify();
void closed();
public slots:
void maximize();
void restore();
void iconify();
void close();
void raise();
void lower();
void activate();
// void activateOrRaise();
void minimizeOrRestore();
void toDesktop(int desk);
void toCurrentDesktop();
void setAlwaysOnTop(bool stay);
void toggleAlwaysOnTop();
void setShaded(bool shade);
void toggleShaded();
void refresh();
void slotX11ConfigureNotify();
void slotX11DamageNotify();
void slotActivated();
void slotUpdateScreenshot();
protected slots:
void unBlockDamageEvents() { blockDamageEvents = false; }
private:
KWinModule* kwinmodule;
WId windowID;
WId wmframeID;
KWin::WindowInfo windowInfo;
bool blockDamageEvents;
KomposeTaskVisualizer* visualizer;
};
#endif

@ -0,0 +1,254 @@
//
// C++ Implementation: komposetaskcontainerwidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposetaskcontainerwidget.h"
#include "komposetaskmanager.h"
#include "komposeviewmanager.h"
#include "komposelayout.h"
#include "komposesettings.h"
#include "komposetaskwidget.h"
#include <qobjectlist.h>
#include <qwidget.h>
#include <qtimer.h>
#include <kdebug.h>
static bool controlHold = false; // is the control key pressed
KomposeTaskContainerWidget::KomposeTaskContainerWidget( int desk, QWidget *parent, KomposeLayout *l, const char *name)
: KomposeWidget(parent, l, name),
desktop( desk )
{
connect(KomposeTaskManager::instance(), SIGNAL(taskDesktopChanged(KomposeTask*, int, int )),
SLOT(reparentTaskWidget(KomposeTask*, int, int )) );
}
KomposeTaskContainerWidget::~KomposeTaskContainerWidget()
{}
void KomposeTaskContainerWidget::reparentTaskWidget( KomposeTask* task, int fromDesktop, int toDesktop )
{
// noops
if ( (fromDesktop==-1 && ((toDesktop==-1) || desktop == toDesktop-1)) || desktop==-2)
return;
kdDebug() << "KomposeTaskContainerWidget::reparentTaskWidget()" << endl;
// Delete from current
if ( (toDesktop!= -1) && (desktop == fromDesktop-1 || fromDesktop==-1) )
{
KomposeTaskWidget *child;
QPtrListIterator<KomposeWidget> it( *(layout->getManagedWidgets()));
while ( (child = dynamic_cast<KomposeTaskWidget*>(it.current()) ) != 0 )
{
++it;
if (child->getTask() == task)
{
removeChild( task );
layout->remove(child);
//child->deleteLater();
child->close(true);
return;
}
}
}
// Add to new
if ( desktop == toDesktop -1 || (toDesktop == -1 && fromDesktop-1!=desktop) )
{
createTaskWidget( task, true );
//QTimer::singleShot( 200, layout, SLOT( arrangeLayout() ) );
// layout->arrangeLayout();
}
}
void KomposeTaskContainerWidget::keyPressEvent ( QKeyEvent * e )
{
if ( e->key() == Qt::Key_Control )
{
controlHold = true;
e->accept();
}
}
void KomposeTaskContainerWidget::keyReleaseEvent ( QKeyEvent * e )
{
if ( e->key() == Qt::Key_Control )
{
controlHold = false;
e->accept();
return;
}
if ( e->key() == Qt::Key_Right || e->key() == Qt::Key_D || e->key() == Qt::Key_H ||
e->key() == Qt::Key_Left || e->key() == Qt::Key_A || e->key() == Qt::Key_J ||
e->key() == Qt::Key_Up || e->key() == Qt::Key_W || e->key() == Qt::Key_K ||
e->key() == Qt::Key_Down || e->key() == Qt::Key_S || e->key() == Qt::Key_L )
{
if ( controlHold && desktop != -1 )
{
e->ignore();
return;
}
kdDebug() << "KomposeTaskContainerWidget::keyReleaseEvent - " << className() << ", Movement key pressed" << endl;
// Map keys to directions
int direction = DLAYOUT_RIGHT;
switch( e->key() )
{
case Qt::Key_Right:
direction = DLAYOUT_RIGHT;
break;
case Qt::Key_D:
direction = DLAYOUT_RIGHT;
break;
case Qt::Key_L:
direction = DLAYOUT_RIGHT;
break;
case Qt::Key_Left:
direction = DLAYOUT_LEFT;
break;
case Qt::Key_A:
direction = DLAYOUT_LEFT;
break;
case Qt::Key_H:
direction = DLAYOUT_LEFT;
break;
case Qt::Key_Up:
direction = DLAYOUT_TOP;
break;
case Qt::Key_W:
direction = DLAYOUT_TOP;
break;
case Qt::Key_K:
direction = DLAYOUT_TOP;
break;
case Qt::Key_Down:
direction = DLAYOUT_BOTTOM;
break;
case Qt::Key_S:
direction = DLAYOUT_BOTTOM;
break;
case Qt::Key_J:
direction = DLAYOUT_BOTTOM;
break;
}
focusNeighbourChild( direction );
e->accept();
return;
}
e->ignore();
}
bool KomposeTaskContainerWidget::focusNeighbourChild( int direction )
{
bool successfull = false;
if ( !children()->containsRef(focusWidget()) )
{
kdDebug() << "KomposeTaskContainerWidget::keyReleaseEvent - No widget focussed. Focussing first" << endl;
const QObjectList *lst = children();
if ( lst )
{
QObjectListIterator it( *lst );
QWidget *widget;
while ( (widget = (QWidget*)it.current() ) )
{
if (widget->inherits("KomposeTaskWidget") || widget->inherits("KomposeDesktopWidget"))
{
kdDebug() << "KomposeTaskContainerWidget::keyReleaseEvent - Focussing " << widget->className() << endl;
widget->setFocus();
successfull = true;
break;
}
++it;
}
}
}
else
{
KomposeWidget *widget;
if ( ( widget = layout->getNeighbour( dynamic_cast<KomposeWidget*>(focusWidget()), direction, WLAYOUT_BOTH ) ) != 0 )
{
kdDebug() << "KomposeTaskContainerWidget::keyReleaseEvent - Focussing " << widget->className() << endl;
widget->setFocus();
successfull = true;
}
}
return successfull;
}
void KomposeTaskContainerWidget::createTaskWidgets()
{
TaskList tl = KomposeTaskManager::instance()->getTasks();
QPtrListIterator<KomposeTask> it( tl );
KomposeTask *task;
while ( (task = it.current()) != 0 )
{
++it;
Q_CHECK_PTR(task);
createTaskWidget( task);
}
}
void KomposeTaskContainerWidget::createTaskWidget( KomposeTask* task, bool manualShow )
{
if ( desktop == -1 || desktop == task->onDesktop()-1 || task->onDesktop()==-1)
{
kdDebug() << "KomposeTaskContainerWidget::createTaskWidget() (Container: " << this->className() << ", WId: " << task->window() << ", onDesktop: " << task->onDesktop() << ")" << endl;
KomposeTaskWidget *taskwidget = new KomposeTaskWidget( task, this );
if (manualShow)
taskwidget->show();
connect( taskwidget, SIGNAL(requestRemoval(KomposeWidget*)), SLOT(requestRemoval(KomposeWidget*)) );
}
}
int KomposeTaskContainerWidget::getHeightForWidth( int ) const
{
return -1;
}
int KomposeTaskContainerWidget::getWidthForHeight( int ) const
{
return -1;
}
double KomposeTaskContainerWidget::getAspectRatio()
{
return -1;
}
void KomposeTaskContainerWidget::requestRemoval( KomposeWidget *obj )
{
layout->remove(obj);
// removeChild( obj ); // FIXME: This causes segfaults although it would
// be the correct way (ChildRemoveEvents to rearrange the layout...)
!obj->close(true);
layout->arrangeLayout();
}
void KomposeTaskContainerWidget::childEvent( QChildEvent * ce)
{
KomposeWidget::childEvent(ce);
// ReLayout when we are in a active view and a new window appeared somewhere
if ( KomposeViewManager::instance()->hasActiveView() )
layout->arrangeLayout();
}
#include "komposetaskcontainerwidget.moc"

@ -0,0 +1,58 @@
//
// C++ Interface: komposetaskcontainerwidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSETASKCONTAINERWIDGET_H
#define KOMPOSETASKCONTAINERWIDGET_H
#include "komposewidget.h"
#include "komposetask.h"
#include "komposelayout.h"
/**
* This abstract class contains some functions only usable for
* Widgets that display task widgets
* (so I won't have to double the code for the createTaskWidgets() funxtion :) )
*
* @author Hans Oischinger
*/
class KomposeTaskContainerWidget : public KomposeWidget
{
Q_OBJECT
public:
KomposeTaskContainerWidget( int desk = 0, QWidget *parent = 0, KomposeLayout *l = 0, const char *name = 0);
virtual ~KomposeTaskContainerWidget();
virtual int getHeightForWidth( int w ) const;
virtual int getWidthForHeight( int h ) const;
virtual double getAspectRatio();
void setDesktop( int desk ) { desktop = desk; }
int getDesktop() { return desktop; }
public slots:
void requestRemoval( KomposeWidget *obj );
protected slots:
void createTaskWidgets();
void createTaskWidget( KomposeTask* task, bool manualShow=true );
void reparentTaskWidget( KomposeTask* task, int fromDesktop, int toDesktop );
bool focusNeighbourChild( int direction );
protected:
void keyReleaseEvent ( QKeyEvent * e );
void keyPressEvent ( QKeyEvent * e );
void childEvent( QChildEvent * ce);
int desktop;
};
#endif

@ -0,0 +1,387 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposetaskmanager.h"
#include "komposelayout.h"
#include "komposedesktopwidget.h"
#include "komposesettings.h"
#include "komposetaskwidget.h"
#include "komposeglobal.h"
#include "komposetask.h"
#include "komposeviewmanager.h"
#include <qtimer.h>
#include <qimage.h>
#include <qpixmap.h>
#include <qwidget.h>
#include <kapplication.h>
#include <kwinmodule.h>
#include <netwm.h>
#include <kwin.h>
#include <kapplication.h>
#include <kdebug.h>
#ifdef COMPOSITE
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xrender.h>
#endif
static KomposeTaskManager* taskManagerInstance = 0;
/**
* Taskmanager is a singleton
*/
KomposeTaskManager* KomposeTaskManager::instance()
{
if ( !taskManagerInstance )
{
kdDebug() << "KomposeTaskManager::instance() - Creating Singleton instance" << endl;
taskManagerInstance = new KomposeTaskManager();
}
return taskManagerInstance;
}
KomposeTaskManager::KomposeTaskManager()
: QObject()
{
taskManagerInstance = this;
kwin_module = new KWinModule();
numDesks = KWin::numberOfDesktops();
callCompositeRedirect();
// Listeners for KWinmodule signals
connect( kwin_module, SIGNAL(windowAdded(WId)), this, SLOT(slotWindowAdded(WId)) );
connect( kwin_module, SIGNAL(windowRemoved(WId)), this, SLOT(slotWindowRemoved(WId)) );
connect( kwin_module, SIGNAL(numberOfDesktopsChanged(int)), this, SLOT(slotDesktopCountChanged(int)) );
connect( kwin_module, SIGNAL(currentDesktopChanged(int)), this, SLOT(slotCurrentDesktopChanged(int)) );
connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(slotStartWindowListeners()) );
connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(callCompositeRedirect()) );
// register existing windows
const QValueList<WId> windows = kwin_module->windows();
for (QValueList<WId>::ConstIterator it = windows.begin(); it != windows.end(); ++it )
slotWindowAdded(*it);
connect( kwin_module, SIGNAL(activeWindowChanged(WId)), this, SLOT(slotTaskActivated(WId)) );
slotStartWindowListeners();
}
KomposeTaskManager::~KomposeTaskManager()
{
delete kwin_module;
}
/**
* Redirect or unredirect all root windows to offscreen buffers
*/
void KomposeTaskManager::callCompositeRedirect()
{
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() )
{
Display *dpy = QPaintDevice::x11AppDisplay();
if ( KomposeSettings::instance()->getUseComposite() )
{
// Redirect
for ( int i = 0; i < ScreenCount( dpy ); i++ )
XCompositeRedirectSubwindows( dpy, RootWindow( dpy, i ), CompositeRedirectAutomatic );
}
else if ( !KomposeSettings::instance()->getUseComposite() )
{
// Unredirect
for ( int i = 0; i < ScreenCount( dpy ); i++ )
XCompositeUnredirectSubwindows( dpy, RootWindow( dpy, i ), CompositeRedirectAutomatic );
}
}
#endif
}
/**
* Helper function that finds a KomposeTask object by it's window id
* @param w WindowID of the Task
* @return Corresponding KomposeTask object
*/
KomposeTask* KomposeTaskManager::findTask(WId w, bool wmFrameIds )
{
for (KomposeTask* t = tasklist.first(); t != 0; t = tasklist.next())
if ((!wmFrameIds && t->window() == w) || (wmFrameIds && t->wmFrame() == w) )
return t;
return 0;
}
void KomposeTaskManager::slotStartWindowListeners()
{
disconnect( kwin_module, SIGNAL(windowChanged( WId, unsigned int )), this,
SLOT(slotWindowChanged( WId, unsigned int )) );
connect( kwin_module, SIGNAL(windowChanged( WId, unsigned int )), this,
SLOT(slotWindowChanged( WId, unsigned int )) );
}
void KomposeTaskManager::slotWindowChanged( WId w, unsigned int dirty)
{
if( dirty & NET::WMState )
{
NETWinInfo info ( qt_xdisplay(), w, qt_xrootwin(), NET::WMState );
if ( (info.state() & NET::SkipTaskbar) != 0 )
{
slotWindowRemoved( w );
return;
}
else
{
if( !findTask( w ))
slotWindowAdded( w );
}
}
// check if any state we are interested in is marked dirty
if(!(dirty & (NET::WMVisibleName|NET::WMVisibleIconName|NET::WMName|NET::WMState|NET::WMIcon|NET::XAWMState|NET::WMDesktop)) )
return;
// find task
KomposeTask* t = findTask( w );
if (!t) return;
int oldTaskDesktop = t->onDesktop();
// TODO: Instead of one refresh() method we could implement specific method for names and geometry, etc...
// checked like this: if(dirty & (NET::WMDesktop|NET::WMState|NET::XAWMState))
t->refresh();
// Finally check if the window has been moved to a different virtual desktop
if( (dirty & NET::WMDesktop ) && ( oldTaskDesktop != t->onDesktop() ) )
emit taskDesktopChanged( t, oldTaskDesktop, t->onDesktop() );
}
void KomposeTaskManager::slotWindowRemoved(WId w )
{
// find task
KomposeTask* task = findTask( w );
if (!task) return;
//kdDebug() << "KomposeTaskManager::slotWindowRemoved(WId w ) - Removing task %s", task->visibleNameWithState());
tasklist.remove( task );
delete task;
}
void KomposeTaskManager::slotWindowAdded(WId w )
{
// ignore myself
if ( QWidget::find(w) != 0 )
return;
// if ( KomposeViewManager::instance()->hasActiveView() && w == KomposeViewManager::instance()->getViewWidget()->winId() )
// {
// return;
// }
KWin::WindowInfo info = KWin::windowInfo(w);
// ignore NET::Tool and other special window types
NET::WindowType mytype = info.windowType(NET::NormalMask | NET::DesktopMask | NET::DockMask |
NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask
| NET::TopMenuMask | NET::UtilityMask | NET::SplashMask);
if (mytype != NET::Normal && mytype != NET::Override && mytype != NET::Unknown && mytype != NET::Dialog)
return;
// ignore windows that want to be ignored by the taskbar
if ((info.state() & NET::SkipTaskbar) != 0)
{
return;
}
if ( !info.valid() )
return;
kdDebug() << "KomposeTaskManager::slotWindowAdded(WId " << w <<" ) - Adding KomposeTask" << endl;
KomposeTask* t = new KomposeTask(w, kwin_module, this);
tasklist.append(t);
emit newTask( t );
}
/**
* Called when Komposé requires screenshots of all tasks
*/
void KomposeTaskManager::slotUpdateScreenshots( bool switchDesktops )
{
kdDebug() << "KomposeTaskManager::slotUpdateScreenshots()" << endl;
QPtrListIterator<KomposeTask> it( tasklist );
KomposeTask *task;
// Iterate through tasks sorted by desktops (this minimizes desktop switching if necessary)
for ( int desk = -1; desk <= numDesks; ++desk )
{
// Desk == 0 should not be possible, however -1 means on all desks
if (desk==0 || ( !switchDesktops && desk != KomposeViewManager::instance()->getDesktopBeforeSnaps()+1 ) )
continue;
it.toFirst();
while ( (task = it.current()) != 0 )
{
++it;
if ( task->onDesktop() == desk )
task->slotUpdateScreenshot();
}
}
}
/**
* simulates a window activated event for the currently active window (no forcing of screenshots)
*/
void KomposeTaskManager::simulatePasvScreenshotEvent()
{
kdDebug() << "KomposeTaskManager::simulatePasvScreenshotEvent()" << endl;
slotTaskActivated( kwin_module->activeWindow() );
}
/**
* Signals the task object that it's window has been activated
*/
void KomposeTaskManager::slotTaskActivated(WId winId)
{
kdDebug() << "KomposeTaskManager::slotTaskActivated ( " << winId << " )" << endl;
QPtrListIterator<KomposeTask> it( tasklist );
KomposeTask *task;
while ( (task = it.current()) != 0 )
{
++it;
if ( winId == task->window() )
{
task->slotActivated();
return;
}
}
}
void KomposeTaskManager::slotDesktopCountChanged(int d)
{
numDesks = d;
}
bool KomposeTaskManager::isOnTop(const KomposeTask* task)
{
if(!task) return false;
for (QValueList<WId>::ConstIterator it = kwin_module->stackingOrder().fromLast();
it != kwin_module->stackingOrder().end(); --it )
{
for (KomposeTask* t = tasklist.first(); t != 0; t = tasklist.next() )
{
if ( (*it) == t->window() )
{
if ( t == task )
return true;
if ( !t->isIconified() && (t->isAlwaysOnTop() == task->isAlwaysOnTop()) )
return false;
break;
}
}
}
return false;
}
QString KomposeTaskManager::getDesktopName(int desk) const
{
return kwin_module->desktopName(desk);
}
/**
* The kapp x11EventFilter method redirect to this method
* @param event
* @return
*/
bool KomposeTaskManager::processX11Event( XEvent *event )
{
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
if ( event->type == ConfigureNotify )
{
XConfigureEvent *e = &event->xconfigure;
KomposeTask* t = findTask( e->window, true );
if (!t)
return false;
t->slotX11ConfigureNotify();
return true;
}
else if ( event->type == KomposeGlobal::instance()->getDamageEvent() + XDamageNotify )
{
XDamageNotifyEvent *e = reinterpret_cast<XDamageNotifyEvent*>( event );
// e->drawable is the window ID of the damaged window
// e->geometry is the geometry of the damaged window
// e->area is the bounding rect for the damaged area
// e->damage is the damage handle returned by XDamageCreate()
// Subtract all the damage, repairing the window.
XDamageSubtract( QPaintDevice::x11AppDisplay(), e->damage, None, None );
if ( !KomposeViewManager::instance()->hasActiveView() )
return true;
// FIXME: too many damage events are called. block findTask here...
// FIXME: Don't try XDamage with KAsteroids! Do something to avoid 100% cpu usage
KomposeTask* t = findTask( e->drawable );
if (!t)
return false;
t->slotX11DamageNotify();
return true;
}
}
#endif
return false;
}
void KomposeTaskManager::slotCurrentDesktopChanged(int d)
{
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
// Strangely a ConfigureNotify is only sent when I click on a window on the new desktop
// and not when I cahnge the desktop, although the windows get mapped at this point.
// Is this a X bug? However the following hack helps:
// Do as if we received a ConfigureNotify event to update all backing pixmaps
for (KomposeTask* t = tasklist.first(); t != 0; t = tasklist.next())
if ( t->onDesktop() == d )
t->slotX11ConfigureNotify();
}
#endif
}
int KomposeTaskManager::getCurrentDesktopNum()
{
return kwin_module->currentDesktop();
}
#include "komposetaskmanager.moc"

@ -0,0 +1,86 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSETASKMANAGER_H
#define KOMPOSETASKMANAGER_H
#include <qobject.h>
#include <qptrlist.h>
class KWinModule;
class KomposeTaskManager;
class KomposeTask;
typedef QPtrList<KomposeTask> TaskList;
/**
@author Hans Oischinger
*/
class KomposeTaskManager : public QObject
{
Q_OBJECT
protected:
KomposeTaskManager();
~KomposeTaskManager();
public:
static KomposeTaskManager *instance();
bool isOnTop(const KomposeTask* task );
int getNumDesktops() const { return numDesks; }
QString getDesktopName(int desk) const;
int getCurrentDesktopNum();
TaskList getTasks() const { return tasklist; }
public slots:
bool processX11Event( XEvent *event );
void slotUpdateScreenshots( bool switchDesktops=true );
void simulatePasvScreenshotEvent();
void slotStartWindowListeners();
protected slots:
void slotTaskActivated(WId);
void slotWindowAdded( WId w );
void slotWindowRemoved( WId w );
void slotWindowChanged( WId, unsigned int );
void slotDesktopCountChanged(int);
void slotCurrentDesktopChanged(int);
void callCompositeRedirect();
signals:
void newTask( KomposeTask* task );
void taskDesktopChanged( KomposeTask* task, int fromDesktop, int toDesktop );
protected:
KomposeTask* findTask(WId w, bool wmFrameIds = false);
private:
KWinModule* kwin_module;
TaskList tasklist; // list of tasks handled by the WM
int numDesks; // total num of desks
};
#endif

@ -0,0 +1,54 @@
//
// C++ Implementation: komposetaskprefswidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposetaskprefswidget.h"
#include "komposetaskwidget.h"
#include "komposetask.h"
#include "komposetaskprefswidget.h"
#include "komposesettings.h"
#include <ktoolbar.h>
#include <ktoolbarbutton.h>
#include <kactioncollection.h>
#include <kaction.h>
#include <kshortcut.h>
#include <klocale.h>
#include <qiconset.h>
KomposeTaskPrefsWidget::KomposeTaskPrefsWidget(KomposeTaskWidget *parent, const char *name)
: QDockArea(Qt::Horizontal , QDockArea::Normal, parent, name)
{
KToolBar* pToolBar = new KToolBar( this, i18n("Task Actions") );
pToolBar->setLabel(i18n("Task"));
pToolBar->setResizeEnabled ( false );
pToolBar->setMovingEnabled ( false );
pToolBar->setHorizontallyStretchable ( false );
pToolBar->setVerticallyStretchable ( false );
pToolBar->setIconSize( 16 );
parent->getActMinimizeRestoreTask()->plug(pToolBar);
parent->getActCloseTask()->plug(pToolBar);
lineUp(false);
resize(pToolBar->size());
}
KomposeTaskPrefsWidget::~KomposeTaskPrefsWidget()
{
}
#include "komposetaskprefswidget.moc"

@ -0,0 +1,32 @@
//
// C++ Interface: komposetaskprefswidget
//
// Description:
//
//
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSETASKPREFSWIDGET_H
#define KOMPOSETASKPREFSWIDGET_H
#include <qdockarea.h>
class KomposeTaskWidget;
/**
@author Hans Oischinger
*/
class KomposeTaskPrefsWidget : public QDockArea
{
Q_OBJECT
public:
KomposeTaskPrefsWidget(KomposeTaskWidget *parent = 0, const char *name = 0);
~KomposeTaskPrefsWidget();
};
#endif

@ -0,0 +1,458 @@
//
// C++ Implementation: %{MODULE}
//
// Description:
//
//
// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposeglobal.h"
#include "komposesettings.h"
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include <qpixmap.h>
#include <qtimer.h>
#include <kwin.h>
#include <netwm.h>
#include <qapplication.h>
#include <kdebug.h>
#include <time.h>
#include "komposetaskvisualizer.h"
KomposeTaskVisualizer::KomposeTaskVisualizer(KomposeTask *parent, const char *name)
: QObject(parent, name),
task(parent),
scaledScreenshotDirty(false),
screenshotSuspended(false),
screenshotBlocked(false),
lasteffect( IEFFECT_NONE )
{
#ifdef COMPOSITE
validBackingPix = false;
compositeInit = false;
#endif
screenshot.setOptimization( QPixmap::BestOptim );
scaledScreenshot.setOptimization( QPixmap::BestOptim );
// Create highlight color modifier
cmHighlight = imlib_create_color_modifier();
imlib_context_set_color_modifier(cmHighlight);
imlib_modify_color_modifier_brightness(0.13);
cmMinimized = imlib_create_color_modifier();
imlib_context_set_color_modifier(cmMinimized);
imlib_modify_color_modifier_brightness(-0.13);
imlib_context_set_color_modifier(0);
if ( !KomposeSettings::instance()->getCacheScaledPixmaps() )
{
// clear cached pixmaps on viewclose
connect( KomposeViewManager::instance(), SIGNAL(viewClosed()), this, SLOT(clearCached()) );
}
initXComposite();
connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(initXComposite()) );
}
KomposeTaskVisualizer::~KomposeTaskVisualizer()
{
#ifdef COMPOSITE
if ( compositeInit )
XDamageDestroy( dpy, damage);
#endif
scaledScreenshot.resize(0,0);
screenshot.resize(0,0);
}
/**
* Called from outside to retrieve a screenshot
* @param pix The pixmap the screenshot will be rendered onto
*/
void KomposeTaskVisualizer::renderOnPixmap(QPixmap* pix, int effect)
{
if ( scaledScreenshotDirty || scaledScreenshot.isNull() || scaledScreenshot.size() != pix->size() ||
KomposeSettings::instance()->getImageEffects() && (lasteffect != effect ) )
{
lasteffect = effect;
renderScaledScreenshot( pix->size() );
}
copyBlt ( pix, 0, 0, &scaledScreenshot, 0, 0, pix->width(), pix->height() );
// QPainter p( pix );
// p.drawPixmap(0 ,0 , *scaledScreenshot, 0, 0, pix->width(), pix->height() );
// p.end();
}
/**
* Renders a scaled version of screenshot and stores it as scaledScreenshot
* @param newSize
*/
void KomposeTaskVisualizer::renderScaledScreenshot( QSize newSize )
{
kdDebug() << "KomposeTaskVisualizer::renderScaledScreenshot() (" << task->window() << ") " << newSize.width() << "x" << newSize.height() << endl;
scaledScreenshot.resize( newSize );
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
#ifdef COMPOSITE
if ( !validBackingPix )
{
// When we get here we have never referenced a backingpix...
// FIXME: Currently it seems that there is no way to retrieve unmapped backing pixmaps,
// even switching desktops won't work due to the latency of XComposite :(
// Return a empty pixmap
scaledScreenshot.fill(white);
return;
}
// Create a Screenshot qpixmap
screenshot.resize( task->getGeometry().size() );
Picture picture = XRenderCreatePicture( dpy, windowBackingPix, format, CPSubwindowMode, &pa );
XRenderComposite( dpy,
hasAlpha ? PictOpOver : PictOpSrc,
picture,
None,
screenshot.x11RenderHandle(),
task->getGeometry().x() - task->getFrameGeometry().x(),
task->getGeometry().y() - task->getFrameGeometry().y(),
0, 0, 0, 0,
screenshot.width(), screenshot.height() );
XRenderFreePicture (dpy, picture);
#endif
}
/* if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
// The XComposite way
#ifdef COMPOSITE
Picture picture = XRenderCreatePicture( dpy, windowBackingPix, format, CPSubwindowMode, &pa );
QRect geom = task->getGeometry();
double scale = (double)pix->width() / (double)geom.width();
XRenderSetPictureFilter( dpy, picture, FilterBilinear, 0, 0 );
// Scaling matrix
XTransform xform = {{
{ XDoubleToFixed( 1 ), XDoubleToFixed( 0 ), XDoubleToFixed( 0 ) },
{ XDoubleToFixed( 0 ), XDoubleToFixed( 1 ), XDoubleToFixed( 0 ) },
{ XDoubleToFixed( 0 ), XDoubleToFixed( 0 ), XDoubleToFixed( scale ) }
}};
XRenderSetPictureTransform( dpy, picture, &xform );
XRenderComposite( QPaintDevice::x11AppDisplay(),
hasAlpha ? PictOpOver : PictOpSrc,
picture,
None,
pix->x11RenderHandle(),
0, 0, 0, 0,
0, 0, pix->width(), pix->height() );
#endif
}
else
{*/
// Scale and render screenshot on scaledScreenshot
imlib_context_set_anti_alias(1);
imlib_context_set_drawable( screenshot.handle() );
Imlib_Image imgOrig = imlib_create_image_from_drawable((Pixmap)0, 0, 0, screenshot.width(), screenshot.height(), 1);
imlib_context_set_image( imgOrig );
Imlib_Image img = imlib_create_cropped_scaled_image(0, 0, screenshot.width(), screenshot.height(), newSize.width(), newSize.height());
imlib_free_image();
imlib_context_set_image( img );
applyEffect();
imlib_context_set_drawable( scaledScreenshot.handle() );
imlib_render_image_on_drawable_at_size(0, 0, newSize.width(), newSize.height());
imlib_free_image();
// }
scaledScreenshotDirty = false;
}
/**
* Called whenever the Window has been activated
*/
void KomposeTaskVisualizer::slotTaskActivated()
{
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
return;
}
if ( KomposeViewManager::instance()->getBlockScreenshots() && !screenshotSuspended )
{
// Retry 1 sec later
screenshotSuspended = true;
QTimer::singleShot( 500, this, SLOT( slotTaskActivated() ) );
}
screenshotSuspended = false;
// Grab a Passive Screenshot
if ( KomposeSettings::instance()->getPassiveScreenshots() &&
!KomposeViewManager::instance()->hasActiveView() &&
!KomposeViewManager::instance()->getBlockScreenshots() )
{
kdDebug() << "KomposeTaskVisualizer::slotTaskActivated() (WId " << task->window() << ") - Screenshot already exists, but passive mode on - Grabbing new one." << endl;
// Use a timer to make task switching feel more responsive
QTimer::singleShot( 300, this, SLOT( captureScreenshot_GrabWindow() ) );
//captureScreenshot_GrabWindow();
}
}
/**
* Called whenever Kompose needs a screenshot to display (normally before a view is shown)
*/
void KomposeTaskVisualizer::slotUpdateScreenshot()
{
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
if ( !validBackingPix )
{
kdDebug() << "KomposeTaskVisualizer::slotUpdateScreenshot() (WId " << task->window() << ") - No backing pixmap referenced. Bad :(" << endl;
// When we get here we have never referenced a backingpix...
// FIXME: Currently it seems that there is no way to retrieve unmapped backing pixmaps,
// even switching desktops won't work due to the latency of XComposite :(
}
return;
}
#endif
// If no screenshot exists grab one via activate/raise & capture
if ( screenshot.isNull() )
{
bool iconifyLater = false;
if ( task->isIconified() == true )
{
kdDebug() << "KomposeTaskVisualizer::slotUpdateScreenshot() (WId " << task->window() << ") - Window iconified... we have to raise it and iconify it again later." << endl;
iconifyLater = true;
}
kdDebug() << "KomposeTaskVisualizer::slotUpdateScreenshot() (WId " << task->window() << ") - Forcing activation (no screenshot exists)" << endl;
task->activate();
QApplication::flushX();
QApplication::syncX();
// Wait until window is fully redrawn
struct timespec req, rem;
req.tv_sec = 0;
req.tv_nsec = KomposeSettings::instance()->getScreenshotGrabDelay();
while(nanosleep(&req, &rem))
req = rem;
QApplication::flushX();
//task->refresh();
// Finally capture!
screenshot = QPixmap::grabWindow( task->window() );
//captureScreenshot_GrabWindow();
// Restore if formerly iconified
if ( iconifyLater )
QTimer::singleShot( 1000, task, SLOT( iconify() ) );
scaledScreenshotDirty = true;
}
}
/**
* This should be called whenever the window is unmapped as XComposite will reallocate
* or the backing pixmap (on resize, minimize, virt desk change, etc)
*/
void KomposeTaskVisualizer::updateXCompositeNamedPixmap()
{
#ifdef COMPOSITE
if ( compositeInit &&
KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite())
{
if( !task->isOnCurrentDesktop() )
{
kdDebug() << "KomposeTaskVisualizer::updateXCompositeNamedPixmap() (WId " << task->window() << ") - Not reallocationg (unmapped)" << endl;
return;
}
kdDebug() << "KomposeTaskVisualizer::updateXCompositeNamedPixmap() (WId " << task->window() << ") - Reallocating backing pixmap" << endl;
if ( validBackingPix )
XFreePixmap(dpy, windowBackingPix);
windowBackingPix = XCompositeNameWindowPixmap(dpy, task->wmFrame() );
validBackingPix = true;
scaledScreenshotDirty = true;
}
#endif
}
/**
* Initialise Composite backing store for this window
*/
void KomposeTaskVisualizer::initXComposite()
{
#ifdef COMPOSITE
if ( !compositeInit && KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite())
{
dpy = QPaintDevice::x11AppDisplay();
connect( task, SIGNAL(x11ConfigureNotify()), this, SLOT(updateXCompositeNamedPixmap()));
XSelectInput( dpy, task->wmFrame(), StructureNotifyMask );
connect( task, SIGNAL( x11DamageNotify() ), SLOT( setScaledScreenshotDirty() ) );
XWindowAttributes attr;
XGetWindowAttributes( dpy, task->wmFrame(), &attr );
format = XRenderFindVisualFormat( dpy, attr.visual );
hasAlpha = ( format->type == PictTypeDirect && format->direct.alphaMask ); //FIXME: move this to komposetask
// int x = attr.x;
// int y = attr.y;
// int width = attr.width;
// int height = attr.height;
pa.subwindow_mode = IncludeInferiors; // Don't clip child widgets
compositeInit = true;
updateXCompositeNamedPixmap();
kdDebug() << "KomposeTaskVisualizer::initXComposite() (WId " << task->window() << ") - Setting up Damage extension" << endl;
// Create a damage handle for the window, and specify that we want an event whenever the
// damage state changes from not damaged to damaged.
damage = XDamageCreate( dpy, task->window(), XDamageReportNonEmpty );
}
else
{
disconnect( task, SIGNAL(x11ConfigureNotify()), this, SLOT(updateXCompositeNamedPixmap()));
disconnect( task, SIGNAL( x11DamageNotify() ), this, SLOT( setScaledScreenshotDirty() ) );
if ( compositeInit )
{
XDamageDestroy( dpy, damage);
compositeInit = false;
}
}
#endif
}
/**
* Grabs a screenshot the old fashioned way
*/
void KomposeTaskVisualizer::captureScreenshot_GrabWindow()
{
if ( screenshotBlocked || ( !(task->isActive() && task->isOnTop()) ) )
{
kdDebug() << "KomposeTaskVisualizer::captureScreenshot_GrabWindow() (WId " << task->window() << ") - Could not grab screenshot." << endl;
return;
}
//task->activate();
// QWidget *rootWin = qApp->desktop();
// screenshot = QPixmap::grabWindow( rootWin->winId(), geom.x(), geom.y(), geom.width(), geom.height() );
screenshot = QPixmap::grabWindow( task->window() );
scaledScreenshotDirty = true;
// We've just grabbed a screenshot and don't want this to happen again in the next 3?! seconds
screenshotBlocked = true;
QTimer::singleShot( 3000, this, SLOT( enablePasvScreenshots() ) );
kdDebug() << "KomposeTaskVisualizer::captureScreenshot_GrabWindow() (WId " << task->window() << ") - Grabbed screenshot." << endl;
// Code to create a screenshot directly as an Imlib image
// QRect geom = windowInfo.geometry();
// Display *disp;
// Visual *vis;
// Colormap cm;
// int screen;
//
// //get display information
// disp = XOpenDisplay(0);
// screen = DefaultScreen(disp);
// vis = DefaultVisual(disp, screen);
// cm = DefaultColormap(disp, screen);
//
// //set imlib properties
// imlib_context_set_display(disp);
// imlib_context_set_visual(vis);
// imlib_context_set_colormap(cm);
// imlib_context_set_drawable(RootWindow(disp, screen));
// imlib_context_set_anti_alias(1);
// imlib_context_set_blend(0);
//
// Imlib_Image img = imlib_create_image_from_drawable((Pixmap)0,geom.x(), geom.y(), geom.width(), geom.height(),1);
//
//
// screenshot->setImage( img );
//
// XCloseDisplay(disp);
//kdDebug() << "KomposeTaskVisualizer::captureScreenshot() - Created Screenshot: x:%d y:%d size:%dx%d", geom.x(), geom.y(), screenshot->originalWidth(), screenshot->originalHeight() );
}
void KomposeTaskVisualizer::enablePasvScreenshots()
{
screenshotBlocked = false;
}
void KomposeTaskVisualizer::clearCached()
{
scaledScreenshot.resize(0,0);
}
void KomposeTaskVisualizer::applyEffect()
{
imlib_context_set_color_modifier(0);
if ( lasteffect == IEFFECT_MINIMIZED || lasteffect == IEFFECT_MINIMIZED_AND_TITLE )
{
//FIXME: maybe there is a faster tint filter?!
imlib_context_set_color_modifier(cmMinimized);
}
if ( lasteffect == IEFFECT_HIGHLIGHT )
{
//FIXME: maybe there is a faster tint filter?!
imlib_context_set_color_modifier(cmHighlight);
}
if ( lasteffect == IEFFECT_TITLE || lasteffect == IEFFECT_MINIMIZED_AND_TITLE )
{
/* we can blend stuff now */
imlib_context_set_blend(1);
/* our color range */
Imlib_Color_Range range;
/* draw a gradient on top of things at the top left of the window */
/* create a range */
range = imlib_create_color_range();
imlib_context_set_color_range(range);
imlib_context_set_color(255, 255, 255, 0);
imlib_add_color_to_color_range(0);
imlib_context_set_color(255, 255, 255, 255);
imlib_add_color_to_color_range(1000);
/* draw the range */
//imlib_context_set_image(myIm);
imlib_image_fill_color_range_rectangle(0, 0, scaledScreenshot.width(), KomposeSettings::instance()->getWindowTitleFontAscent() * 3, -180.0);
/* free it */
imlib_free_color_range();
}
}
#include "komposetaskvisualizer.moc"

@ -0,0 +1,87 @@
//
// C++ Interface: %{MODULE}
//
// Description:
//
//
// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSETASKVISUALIZER_H
#define KOMPOSETASKVISUALIZER_H
#include <qobject.h>
#include "komposetask.h"
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <Imlib2.h>
#ifdef COMPOSITE
#include <X11/Xatom.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xrender.h>
#endif
enum ImageEffect { IEFFECT_NONE, IEFFECT_TITLE, IEFFECT_MINIMIZED, IEFFECT_MINIMIZED_AND_TITLE, IEFFECT_HIGHLIGHT };
class QPixmap;
class QSize;
/**
@author Hans Oischinger
*/
class KomposeTaskVisualizer : public QObject
{
Q_OBJECT
public:
KomposeTaskVisualizer(KomposeTask *parent, const char *name = 0);
~KomposeTaskVisualizer();
void renderOnPixmap( QPixmap* pix, int effect );
protected:
void applyEffect();
protected slots:
void initXComposite();
void captureScreenshot_GrabWindow();
void updateXCompositeNamedPixmap();
void renderScaledScreenshot( QSize size );
void setScaledScreenshotDirty() { scaledScreenshotDirty = true; }
void clearCached();
void enablePasvScreenshots();
public slots:
void slotTaskActivated();
void slotUpdateScreenshot();
private:
KomposeTask *task;
QPixmap screenshot;
QPixmap scaledScreenshot;
bool scaledScreenshotDirty;
bool screenshotSuspended; // suspend pasv screenshots for this task
bool screenshotBlocked; // dis/enable pasv screenshots for this task
Imlib_Color_Modifier cmHighlight, cmMinimized;
int lasteffect; // the effect that has been applied to scaledScreenshot
#ifdef COMPOSITE
Pixmap windowBackingPix;
bool validBackingPix;
Display *dpy;
XRenderPictFormat *format;
XRenderPictureAttributes pa;
bool hasAlpha;
Damage damage;
bool compositeInit; // true if composite&damage has been initialised
#endif
};
#endif

@ -0,0 +1,427 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposetaskwidget.h"
#include "komposetaskmanager.h"
#include "komposeviewmanager.h"
#include "komposetask.h"
#include "komposetaskcontainerwidget.h"
#include "komposetaskprefswidget.h"
#include "komposesettings.h"
#include "komposeglobal.h"
#include "komposesettings.h"
#include <qpixmap.h>
#include <qimage.h>
#include <qpainter.h>
#include <qdragobject.h>
#include <qapplication.h>
#include <qtooltip.h>
#include <qiconset.h>
#include <qtimer.h>
#include <qcolor.h>
#include <qfont.h>
#include <kcursor.h>
#include <klocale.h>
#include <kpopupmenu.h>
#include <kactioncollection.h>
#include <kaction.h>
#include <kapplication.h>
#include <kiconloader.h>
#include <kdebug.h>
#include "komposetaskvisualizer.h"
KomposeTaskWidget::KomposeTaskWidget(KomposeTask *t, QWidget *parent, KomposeLayout *l, const char *name)
: KomposeWidget(parent, l, name),
highlight(false),
task(t)
{
setWFlags( WStaticContents | WRepaintNoErase | WResizeNoErase ); // avoid redraw errors
setBackgroundMode( Qt::NoBackground ); // avoid flickering
QToolTip::add( this, task->visibleNameWithState() );
pm_dbBackground.setOptimization( QPixmap::BestOptim );
setBackgroundMode( Qt::NoBackground );
//setBackgroundPixmap(pm_dbBackground);
initActions();
initMenu();
prefWidget = new KomposeTaskPrefsWidget( this, "Task prefs" );
prefWidget->hide();
setActionIcons();
//connect( t, SIGNAL( destroyed() ), this, SLOT( slotTaskDestroyed() ) );
connect( t, SIGNAL( closed() ), this, SLOT( slotTaskDestroyed() ) );
connect( t, SIGNAL( stateChanged() ), this, SLOT( drawWidgetAndRepaint() ) );
connect( t, SIGNAL( stateChanged() ), this, SLOT( reInitMenu() ) );
#ifdef COMPOSITE
if ( KomposeGlobal::instance()->hasXcomposite() && KomposeSettings::instance()->getUseComposite() )
{
connect( t, SIGNAL( x11DamageNotify() ), this, SLOT( drawWidgetAndRepaint() ) );
}
#endif
//setFocusPolicy(QWidget::ClickFocus);
setFocusPolicy(QWidget::StrongFocus);
initFonts();
}
KomposeTaskWidget::~KomposeTaskWidget()
{
prefWidget->deleteLater();
menu->deleteLater();
delete actMinimizeRestoreTask;
delete actCloseTask;
delete taskActionCollection;
}
void KomposeTaskWidget::reInitMenu()
{
delete menu;
initMenu();
}
void KomposeTaskWidget::initFonts()
{
titleFont = KomposeSettings::instance()->getWindowTitleFont();
}
void KomposeTaskWidget::slotTaskDestroyed()
{
disconnect( task, SIGNAL( closed() ), this, SLOT( slotTaskDestroyed() ) );
disconnect( task, SIGNAL( stateChanged() ), this, SLOT( drawWidgetAndRepaint() ) );
//if (KomposeViewManager::instance()->hasActiveView())
emit requestRemoval(this);
}
void KomposeTaskWidget::resizeEvent ( QResizeEvent * e )
{
if ( e->oldSize() != e->size())
{
prefWidget->move(width() - prefWidget->width() - 3, 3);
drawWidgetAndRepaint();
}
KomposeWidget::resizeEvent( e );
}
void KomposeTaskWidget::paintEvent ( QPaintEvent * )
{
if (size().height() < 40 ) // small hack that will prevent drawing on init
return;
if ( pm_dbBackground.isNull() )
drawWidget();
bitBlt( this, 0, 0, &pm_dbBackground, 0, 0, width(), height() );
}
void KomposeTaskWidget::drawWidgetAndRepaint()
{
if (size().height() < 40 ) // small hack that will prevent drawing on init
return;
drawWidget();
repaint();
}
void KomposeTaskWidget::drawWidget()
{
if ( !KomposeViewManager::instance()->hasActiveView() || !isShown() )
return;
pm_dbBackground.resize( width(), height() );
//pm_dbBackground.fill(white);
QPainter p( &pm_dbBackground );
int effect = IEFFECT_NONE;
if ( KomposeSettings::instance()->getShowWindowTitles() && !task->isIconified() )
effect = IEFFECT_TITLE;
if ( KomposeSettings::instance()->getShowWindowTitles() && task->isIconified() )
effect = IEFFECT_MINIMIZED_AND_TITLE;
if ( !KomposeSettings::instance()->getShowWindowTitles() && task->isIconified() )
effect = IEFFECT_MINIMIZED;
// if ( highlight ) // I hate it, so I disable it!
// effect = IEFFECT_HIGHLIGHT;
task->getVisualizer()->renderOnPixmap(&pm_dbBackground, effect);
// Icon
QPoint titleTextPos( 6, KomposeSettings::instance()->getWindowTitleFontHeight() + 1);
if ( KomposeSettings::instance()->getShowIcons() )
{
QPixmap icon = task->getIcon( KomposeSettings::instance()->getIconSizePixels() );
// Place the icon left or under the text, according to it's size
if ( KomposeSettings::instance()->getIconSize() < 2 || icon.height() < 50 )
{
// Medium sized or tiny Icon
p.drawPixmap( QPoint(5, 5), icon );
titleTextPos.setX(icon.width() + 10);
}
else
{
// Big Icon
p.drawPixmap( QPoint(5, 5), icon );
// titleTextPos.setX(icon.width());
}
}
// Title
if ( KomposeSettings::instance()->getShowWindowTitles() )
{
p.setFont(titleFont);
if ( KomposeSettings::instance()->getShowWindowTitleShadow() )
{
p.setPen( KomposeSettings::instance()->getWindowTitleFontShadowColor() );
p.drawText( titleTextPos, task->visibleNameWithState() );
}
p.setPen( KomposeSettings::instance()->getWindowTitleFontColor() );
p.drawText( QPoint( titleTextPos.x()-2, titleTextPos.y()-2 ), task->visibleNameWithState() );
}
// Border
if (!highlight)
{
QPen pen( gray, 1, Qt::SolidLine );
p.setPen( pen );
p.drawRect(rect());
}
else
{
QPen pen( black, 2, Qt::DotLine );
p.setPen( pen );
p.drawRect( QRect( 1, 1, rect().width()-1, rect().height()-1 ) );
}
p.end();
}
void KomposeTaskWidget::mouseReleaseEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
KomposeViewManager::instance()->activateTask( task );
}
void KomposeTaskWidget::mouseMoveEvent ( QMouseEvent * e )
{
if ( e->state() == Qt::LeftButton )
startDrag();
}
// void KomposeTaskWidget::mouseDoubleClickEvent ( QMouseEvent * e )
// {
// if ( !rect().contains( e->pos() ) )
// return;
// KomposeTaskManager::instance()->activateTask( task );
// }
void KomposeTaskWidget::keyReleaseEvent ( QKeyEvent * e )
{
if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Space )
{
kdDebug() << "KomposeTaskWidget::keyReleaseEvent - activating Task!" << endl;
e->accept();
KomposeViewManager::instance()->activateTask( task );
return;
}
else if ( e->key() == Qt::Key_C )
{
kdDebug() << "KomposeTaskWidget::keyReleaseEvent - closing Task!" << endl;
task->close();
e->accept();
}
else if ( e->key() == Qt::Key_M )
{
kdDebug() << "KomposeTaskWidget::keyReleaseEvent - toggling state!" << endl;
task->minimizeOrRestore();
e->accept();
}
else
{
kdDebug() << "KomposeTaskWidget::keyReleaseEvent - ignored..." << endl;
e->ignore();
}
KomposeWidget::keyReleaseEvent(e);
}
void KomposeTaskWidget::leaveEvent ( QEvent * )
{
highlight = false;
unsetCursor();
// drawWidgetAndRepaint();
prefWidget->hide();
if ( parentWidget() )
parentWidget()->setFocus();
}
void KomposeTaskWidget::enterEvent ( QEvent * )
{
setFocus();
setCursor( KCursor::handCursor() );
highlight = true;
// drawWidgetAndRepaint();
prefWidget->show();
}
void KomposeTaskWidget::focusInEvent ( QFocusEvent * )
{
highlight = true;
drawWidgetAndRepaint();
}
void KomposeTaskWidget::focusOutEvent ( QFocusEvent * )
{
highlight = false;
drawWidgetAndRepaint();
}
int KomposeTaskWidget::getHeightForWidth ( int w ) const
{
//kdDebug() << "KomposeTaskWidget::getHeightForWidth()");
return task->getHeightForWidth(w);
}
int KomposeTaskWidget::getWidthForHeight ( int h ) const
{
//kdDebug() << "KomposeTaskWidget::getWidthForHeight()");
return task->getWidthForHeight(h);
}
double KomposeTaskWidget::getAspectRatio()
{
//kdDebug() << "KomposeTaskWidget::getAspectRatio()");
return task->getAspectRatio();
}
void KomposeTaskWidget::startDrag()
{
// The text is just a dummy
// FIXME: Maybe we should us a "Task"-Mimetype
QDragObject *d = new QTextDrag( "toDesktop()", this );
d->dragCopy();
}
void KomposeTaskWidget::setGeometry( const QRect &rect )
{
int width = task->getGeometry().width();
int height = task->getGeometry().height();
// Don't scale images bigger than they actually are
if ( rect.width() > width || rect.height() > height )
{
QWidget::setGeometry( QRect( rect.left(), rect.top(), width, height ) );
}
else
QWidget::setGeometry( rect );
}
void KomposeTaskWidget::initActions()
{
taskActionCollection = new KActionCollection( this );
actCloseTask = new KAction( i18n("Close"), "fileclose", Key_Delete , task,
SLOT( close() ), taskActionCollection, "closeTask" );
actCloseTask->setToolTip(i18n("Close"));
actMinimizeRestoreTask = new KAction( i18n("Minimize/Restore"), "", KShortcut() , this,
SLOT( slotMinimizeRestoreToggled() ), taskActionCollection, "minimizeRestoreTask" );
}
void KomposeTaskWidget::initMenu()
{
menu = new KPopupMenu();
actMinimizeRestoreTask->plug(menu);
// toDesktop menu
QPopupMenu* m = new QPopupMenu( this );
m->setCheckable( true );
int id = m->insertItem( i18n("&All Desktops"), task, SLOT( toDesktop(int) ) );
m->setItemParameter( id, 0 ); // 0 means all desktops
m->setItemChecked( id, task->isOnAllDesktops() );
m->insertSeparator();
for( int i = 1; i <= KomposeTaskManager::instance()->getNumDesktops(); i++ )
{
QString name = QString( "&%1 %2" ).arg( i ).arg( KomposeTaskManager::instance()->getDesktopName( i ).replace( '&', "&&" ) );
id = m->insertItem( name, task, SLOT( toDesktop(int) ) );
m->setItemParameter( id, i );
m->setItemChecked( id, !task->isOnAllDesktops() && task->onDesktop() == i );
}
menu->insertItem(i18n("To &Desktop"), m);
menu->insertSeparator();
actCloseTask->plug(menu);
}
/**
* Set the toggle icons for some actions
*
* The inverse flag is a hack to allow toggling of the icons when the minimized/restored event
* hasn't yet reached the Task object ( which is the case on buttonpress)
*/
void KomposeTaskWidget::setActionIcons( bool inverse )
{
if ( ( task->isIconified() && !inverse ) || ( !task->isIconified() && inverse ) )
actMinimizeRestoreTask->setIconSet( kapp->iconLoader()->loadIconSet ( "up", KIcon::NoGroup, 16 ) );
else
actMinimizeRestoreTask->setIconSet( kapp->iconLoader()->loadIconSet ( "bottom", KIcon::NoGroup, 16 ) );
}
void KomposeTaskWidget::slotMinimizeRestoreToggled()
{
setActionIcons( true );
task->minimizeOrRestore();
}
void KomposeTaskWidget::mousePressEvent ( QMouseEvent * e )
{
if ( !rect().contains( e->pos() ) )
return;
switch ( e->button() )
{
case LeftButton:
break;
case MidButton:
// fall through
case RightButton:
menu->popup( e->globalPos() );
break;
default:
// nothing
break;
}
}
#include "komposetaskwidget.moc"

@ -0,0 +1,100 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSETASKWIDGET_H
#define KOMPOSETASKWIDGET_H
#include "komposewidget.h"
#include "komposetaskprefswidget.h"
#include <qimage.h>
#include <qpixmap.h>
class KomposeTask;
class KomposeLayout;
class KPopupMenu;
class KAction;
class KActionCollection;
/**
@author Hans Oischinger
*/
class KomposeTaskWidget : public KomposeWidget
{
Q_OBJECT
public:
KomposeTaskWidget(KomposeTask *t, QWidget *parent = 0, KomposeLayout *l = 0, const char *name = 0);
~KomposeTaskWidget();
int getHeightForWidth( int w ) const;
int getWidthForHeight( int h ) const;
double getAspectRatio();
KomposeTask* getTask() const { return task; };
KAction* getActMinimizeRestoreTask() { return actMinimizeRestoreTask; }
KAction* getActCloseTask() { return actCloseTask; }
signals:
void requestRemoval(KomposeWidget*);
protected:
void paintEvent ( QPaintEvent * );
void mouseReleaseEvent ( QMouseEvent * e );
void mousePressEvent ( QMouseEvent * e );
void mouseMoveEvent ( QMouseEvent * e );
void leaveEvent ( QEvent * );
void enterEvent ( QEvent * );
void resizeEvent ( QResizeEvent * );
void focusInEvent ( QFocusEvent * );
void focusOutEvent ( QFocusEvent * );
void keyReleaseEvent ( QKeyEvent * e );
void startDrag();
void initActions();
void initMenu();
protected slots:
void slotTaskDestroyed();
void drawWidget();
void drawWidgetAndRepaint();
void initFonts();
void setGeometry( const QRect &rect );
void reInitMenu();
void slotMinimizeRestoreToggled();
void setActionIcons( bool inverse=false );
private:
QPixmap pm_dbBackground;
bool highlight; // Highlight widget?
QFont titleFont;
KomposeTask* task;
KomposeTaskPrefsWidget *prefWidget;
KPopupMenu *menu;
KActionCollection *taskActionCollection;
KAction *actMinimizeRestoreTask;
KAction *actCloseTask;
};
#endif

@ -0,0 +1,8 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="kompose" version="1">
<MenuBar>
<Menu name="custom"><text>C&amp;ustom</text>
<Action name="custom_action" />
</Menu>
</MenuBar>
</kpartgui>

@ -0,0 +1,258 @@
//
// C++ Implementation: %{MODULE}
//
// Description:
//
//
// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "komposeviewmanager.h"
#include "komposetaskmanager.h"
#include "komposeglobal.h"
#include "komposesettings.h"
#include "komposesystray.h"
#include <qtimer.h>
#include <qcursor.h>
#include <qapplication.h>
#include <qptrlist.h>
#include <qwidgetlist.h>
#include <qdesktopwidget.h>
#include <kwin.h>
#include <kapplication.h>
#include <kdebug.h>
static KomposeViewManager* viewManagerInstance = 0;
/**
* Viewmanager is a singleton
*/
KomposeViewManager* KomposeViewManager::instance()
{
if ( !viewManagerInstance )
{
kdDebug() << "KomposeViewManager::instance() - Creating Singleton instance" << endl;
viewManagerInstance = new KomposeViewManager();
}
return viewManagerInstance;
}
KomposeViewManager::KomposeViewManager():
DCOPObject( "KomposeDcopIface" ),
QObject(),
viewWidget(),
activeView(0),
blockScreenshots(0)
{
viewManagerInstance = this;
// Setup cursorupdate timer to check for mouse moves into corner
cursorUpdateTimer = new QTimer();
slotStartCursorUpdateTimer();
// dirty hack. see uglyQtHackInitFunction()
QTimer::singleShot( 500, this, SLOT( uglyQtHackInitFunction() ) );
}
KomposeViewManager::~KomposeViewManager()
{
delete cursorUpdateTimer;
}
/**
* This is a hack that should be called by a timer as this connect won't work in the constructor
*/
void KomposeViewManager::uglyQtHackInitFunction()
{
connect( KomposeSettings::instance(), SIGNAL( settingsChanged() ), SLOT( slotStartCursorUpdateTimer() ) );
}
/**
* Starts the corner check timer which polls QCursor::pos() every second
@see checkCursorPos()
*/
void KomposeViewManager::slotStartCursorUpdateTimer()
{
disconnect( cursorUpdateTimer, SIGNAL( timeout() ), this, SLOT( checkCursorPos() ) );
if ( KomposeSettings::instance()->getActivateOnBottomLeftCorner() ||
KomposeSettings::instance()->getActivateOnBottomRightCorner() ||
KomposeSettings::instance()->getActivateOnTopLeftCorner() ||
KomposeSettings::instance()->getActivateOnTopRightCorner() ||
KomposeSettings::instance()->getActivateOnTopEdge() ||
KomposeSettings::instance()->getActivateOnBottomEdge() ||
KomposeSettings::instance()->getActivateOnLeftEdge() ||
KomposeSettings::instance()->getActivateOnRightEdge() )
{
kdDebug() << "KomposeViewManager::slotStartCursorUpdateTimer() - QCursor::pos() checks enabled" << endl;
QRect deskRect = QApplication::desktop()->screenGeometry();
topLeftCorner = deskRect.topLeft();
topRightCorner = deskRect.topRight();
bottomLeftCorner = deskRect.bottomLeft();
bottomRightCorner = deskRect.bottomRight();
connect( cursorUpdateTimer, SIGNAL( timeout() ), SLOT( checkCursorPos() ) );
cursorUpdateTimer->start( 200, false ); // TODO: Find out why even an interval of 1ms doesn't hit performance!
}
}
/**
* Checks if cursor hovered over a corner that activates Kompose
*/
void KomposeViewManager::checkCursorPos()
{
if (
( KomposeSettings::instance()->getActivateOnTopLeftCorner() &&
!activeView && QCursor::pos() == topLeftCorner ) ||
( KomposeSettings::instance()->getActivateOnTopRightCorner() &&
!activeView && QCursor::pos() == topRightCorner ) ||
( KomposeSettings::instance()->getActivateOnBottomLeftCorner() &&
!activeView && QCursor::pos() == bottomLeftCorner ) ||
( KomposeSettings::instance()->getActivateOnBottomRightCorner() &&
!activeView && QCursor::pos() == bottomRightCorner ) ||
( KomposeSettings::instance()->getActivateOnTopEdge() &&
!activeView && QCursor::pos().y() == topLeftCorner.y() ) ||
( KomposeSettings::instance()->getActivateOnBottomEdge() &&
!activeView && QCursor::pos().y() == bottomLeftCorner.y() ) ||
( KomposeSettings::instance()->getActivateOnLeftEdge() &&
!activeView && QCursor::pos().x() == topLeftCorner.x() ) ||
( KomposeSettings::instance()->getActivateOnRightEdge() &&
!activeView && QCursor::pos().x() == topRightCorner.x() )
)
{
//cursorUpdateTimer->stop();
QTimer::singleShot( KomposeSettings::instance()->getAutoLockDelay(), this, SLOT( reCheckCursorPos() ) );
}
}
/**
* Called after the cursor was in a hotspot to check if it's still there
*/
void KomposeViewManager::reCheckCursorPos()
{
if (
( KomposeSettings::instance()->getActivateOnTopLeftCorner() &&
!activeView && QCursor::pos() == topLeftCorner ) ||
( KomposeSettings::instance()->getActivateOnTopRightCorner() &&
!activeView && QCursor::pos() == topRightCorner ) ||
( KomposeSettings::instance()->getActivateOnBottomLeftCorner() &&
!activeView && QCursor::pos() == bottomLeftCorner ) ||
( KomposeSettings::instance()->getActivateOnBottomRightCorner() &&
!activeView && QCursor::pos() == bottomRightCorner ) ||
( KomposeSettings::instance()->getActivateOnTopEdge() &&
!activeView && QCursor::pos().y() == topLeftCorner.y() ) ||
( KomposeSettings::instance()->getActivateOnBottomEdge() &&
!activeView && QCursor::pos().y() == bottomLeftCorner.y() ) ||
( KomposeSettings::instance()->getActivateOnLeftEdge() &&
!activeView && QCursor::pos().x() == topLeftCorner.x() ) ||
( KomposeSettings::instance()->getActivateOnRightEdge() &&
!activeView && QCursor::pos().x() == topRightCorner.x() )
)
{
cursorUpdateTimer->stop();
createView();
}
}
void KomposeViewManager::createView( int type )
{
if (KomposeSettings::instance()->hasDialogOpen() ||
KomposeGlobal::instance()->hasAboutDialogOpen())
{
kdDebug() << "KomposeViewManager::createView() - Another Kompose Dialog is open... close it first" << endl;
return;
}
if (type == -1)
type = KomposeSettings::instance()->getDefaultView();
kdDebug() << "KomposeViewManager::createView( type " << type << " )" << endl;
if ( !activeView )
{
// Remember current desktop
deskBeforeSnaps = KWin::currentDesktop();
kdDebug() << "KomposeViewManager::createView() - Remembering desktop " << deskBeforeSnaps << endl;
// Update screenshot of the current window to be more up2date
// KomposeTaskManager::instance()->simulatePasvScreenshotEvent();
// Update all other
blockScreenshots = true;
if ( type == KOMPOSEDISPLAY_CURRENTDESK )
KomposeTaskManager::instance()->slotUpdateScreenshots( false );
else
KomposeTaskManager::instance()->slotUpdateScreenshots();
blockScreenshots = false;
}
if ( !activeView )
viewWidget = new KomposeFullscreenWidget( type );
else
viewWidget->setType( type );
viewWidget->show();
KWin::forceActiveWindow( viewWidget->winId() );
activeView = true;
}
void KomposeViewManager::closeCurrentView()
{
if ( !activeView )
return;
blockScreenshots = true;
activeView = false;
//viewWidget->setUpdatesEnabled( false );
//viewWidget->hide();
viewWidget->close();
viewWidget->deleteLater();
//viewWidget = 0;
emit viewClosed();
if ( KomposeGlobal::instance()->getSingleShot() )
kapp->quit();
// Reset old Desktop
KWin::setCurrentDesktop( deskBeforeSnaps );
// A short delay until we allow screenshots again (would cause overlapping else
QTimer::singleShot( 400, this, SLOT( toggleBlockScreenshots() ) );
// Restart Timer for corner checks
slotStartCursorUpdateTimer();
}
void KomposeViewManager::toggleBlockScreenshots()
{
blockScreenshots = !blockScreenshots;
}
void KomposeViewManager::setCurrentDesktop( int desknum )
{
closeCurrentView();
KWin::setCurrentDesktop(desknum+1);
}
void KomposeViewManager::activateTask( KomposeTask *task )
{
closeCurrentView();
task->activate();
}
#include "komposeviewmanager.moc"

@ -0,0 +1,79 @@
//
// C++ Interface: %{MODULE}
//
// Description:
//
//
// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef KOMPOSEVIEWMANAGER_H
#define KOMPOSEVIEWMANAGER_H
#include <qpoint.h>
#include <dcopobject.h>
#include "komposedcopiface.h"
#include "komposefullscreenwidget.h"
class KomposeTask;
class QTimer;
/**
@author Hans Oischinger
*/
class KomposeViewManager : public QObject, virtual public KomposeDcopIface
{
Q_OBJECT
protected:
KomposeViewManager();
~KomposeViewManager();
public:
static KomposeViewManager *instance();
KomposeFullscreenWidget* getViewWidget() { return viewWidget; }
public slots:
void createView( int type = -1 ); // -1 means the user's default
void createVirtualDesktopView() { createView( KOMPOSEDISPLAY_VIRTUALDESKS ); }
void createCurrentDesktopView() { createView( KOMPOSEDISPLAY_CURRENTDESK ); }
void createWorldView() { createView( KOMPOSEDISPLAY_WORLD ); }
void createDefaultView() { createView(); }
void closeCurrentView();
bool hasActiveView() { return activeView; }
bool getBlockScreenshots() { return blockScreenshots; }
int getDesktopBeforeSnaps() { return deskBeforeSnaps - 1; }
void setCurrentDesktop( int desknum );
void activateTask( KomposeTask* task );
protected slots:
void toggleBlockScreenshots();
void checkCursorPos();
void reCheckCursorPos();
void uglyQtHackInitFunction();
void slotStartCursorUpdateTimer();
signals:
void viewClosed();
private:
KomposeFullscreenWidget *viewWidget; // the widget where all action takes place
bool activeView; // used to check if a view is active
bool blockScreenshots; // no screenshots when true
int deskBeforeSnaps; // the virtual desk we were on befor screenshots were taken
QTimer *cursorUpdateTimer;
// The 4 corners
QPoint topLeftCorner;
QPoint topRightCorner;
QPoint bottomLeftCorner;
QPoint bottomRightCorner;
};
#endif

@ -0,0 +1,94 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "komposewidget.h"
#include "komposelayout.h"
#include <qtimer.h>
#include <kdebug.h>
/*
* The constructor accepts a custom layout, if none is specified a defaultlayout is used
*/
KomposeWidget::KomposeWidget(QWidget *parent, KomposeLayout *l, const char *name)
: QWidget(parent, name)
{
if (!l)
layout = new KomposeLayout( this );
else
layout = l;
}
KomposeWidget::~KomposeWidget()
{
delete layout;
}
/*
* Whenever a child is added to the widget it's also added to the layout
*/
void KomposeWidget::childEvent ( QChildEvent * ce)
{
KomposeWidget* kwChild = 0;
kwChild = ::qt_cast<KomposeWidget*>(ce->child());
if ( !kwChild )
return;
if ( ce->inserted() )
{
kdDebug() << "KomposeWidget::childEvent : Added widget " << ce->child()->className() << " to " << className() << endl;
layout->add( kwChild );
}
else if ( ce->removed() )
{
kdDebug() << "KomposeWidget::childEvent : Removed widget " << ce->child()->className() << " from " << className() << endl;
layout->remove( kwChild );
}
layout->arrangeLayout();
}
/*
* Whenever a resize occurs rearrange the layout
*/
void KomposeWidget::resizeEvent ( QResizeEvent * e )
{
kdDebug() << "KomposeWidget(" << className() << ")::resizeEvent - Size:" << e->size().width() << "x"<< e->size().height() << endl;
layout->arrangeLayout();
}
KomposeWidget* KomposeWidget::getParentWidget() const
{
if ( QWidget::parent()->inherits("KomposeWidget") )
return (KomposeWidget*)QWidget::parent();
else
{
kdDebug() << "KomposeWidget::getParentWidget() - QWidget::parent() does not inherit (KomposeWidget)" << endl;
return NULL;
}
}
int KomposeWidget::getNumofChilds()
{
return layout->getNumofChilds();
}
#include "komposewidget.moc"

@ -0,0 +1,56 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KOMPOSEWIDGET_H
#define KOMPOSEWIDGET_H
#include <qwidget.h>
class KomposeLayout;
/**
This base class for all Kompose Widgets glues the Layout and the widget together:
@author Hans Oischinger
*/
class KomposeWidget : public QWidget
{
Q_OBJECT
public:
KomposeWidget( QWidget *parent = 0, KomposeLayout *l = 0, const char *name = 0);
virtual ~KomposeWidget();
// KomposeWidgetInterface:
virtual KomposeWidget* getParentWidget() const;
virtual int getHeightForWidth( int w ) const = 0;
virtual int getWidthForHeight( int h ) const = 0;
virtual double getAspectRatio() = 0;
KomposeLayout* getLayout() { return layout; }
int getNumofChilds();
protected:
void childEvent( QChildEvent * ce);
void resizeEvent ( QResizeEvent * e );
protected:
KomposeLayout *layout;
};
#endif

@ -0,0 +1,94 @@
/***************************************************************************
* Copyright (C) 2004 by Hans Oischinger *
* hans.oischinger@kde-mail.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "kompose.h"
#include "komposeglobal.h"
#include <stdlib.h>
#include <kaboutdata.h>
#include <kcmdlineargs.h>
#include <klocale.h>
static const char description[] =
I18N_NOOP("A fullscreen task manager for KDE");
static const char version[] = "0.5.3";
static KCmdLineOptions options[] =
{
{ "nosystray", I18N_NOOP( "Do not show the systray icon" ), 0 },
{ "singleshot", I18N_NOOP( "Display the default view and exit (non daemon mode)" ), 0 },
KCmdLineLastOption
};
void myMessageOutput( QtMsgType type, const char *msg )
{
return;
switch ( type )
{
case QtDebugMsg:
fprintf( stderr, "Debug: %s\n", msg );
break;
case QtWarningMsg:
fprintf( stderr, "Warning: %s\n", msg );
break;
case QtFatalMsg:
fprintf( stderr, "Fatal: %s\n", msg );
abort(); // deliberately core dump
}
}
int main(int argc, char **argv)
{
// qInstallMsgHandler( myMessageOutput );
KAboutData about("kompose", I18N_NOOP("Kompose"), version, description,
KAboutData::License_GPL, "(C) 2005 Hans Oischinger", "", "http://developer.berlios.de/projects/kompose", "hans.oischinger@kde-mail.net");
about.addAuthor( "Hans Oischinger", 0, "hans.oischinger@kde-mail.net" );
KCmdLineArgs::init(argc, argv, &about);
KCmdLineArgs::addCmdLineOptions( options );
Kompose *app = new Kompose();
// no session.. just start up normally
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
if ( !args->isSet("systray") )
{
KomposeGlobal::instance()->setHideSystray(true);
}
if ( args->isSet("singleshot") )
{
KomposeGlobal::instance()->setHideSystray(true);
KomposeGlobal::instance()->setSingleShot(true);
}
KomposeGlobal::instance()->initGui();
//app.setMainWidget( mainWin );
args->clear();
// mainWin has WDestructiveClose flag by default, so it will delete itself.
return app->exec();
}

@ -0,0 +1,3 @@
doc
po
src
Loading…
Cancel
Save