Added old abandoned KDE3 version of gwenview
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/gwenview@1088034 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
commit
c66249b79a
@ -0,0 +1,73 @@
|
||||
DEVELOPERS
|
||||
----------
|
||||
|
||||
Aurélien Gâteau <aurelien.gateau@free.fr>
|
||||
|
||||
Lubos Lunak <l.lunak@suse.cz>
|
||||
|
||||
|
||||
|
||||
THIRD PARTY CODE
|
||||
----------------
|
||||
|
||||
Gwenview includes code from the Imlib2 library. Imlib2 copyright follows:
|
||||
"""
|
||||
Copyright (C) 2000 Carsten Haitzler and various contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies of the Software and its Copyright notices. In addition publicly
|
||||
documented acknowledgment must be given that this software has been used if no
|
||||
source code of this software is made available publicly. This includes
|
||||
acknowledgments in either Copyright notices, Manuals, Publicity and Marketing
|
||||
documents or any documentation provided with any product containing this
|
||||
software. This License does not apply to any software that links to the
|
||||
libraries provided by this software (statically or dynamically), but only to
|
||||
the software provided.
|
||||
|
||||
Please see the COPYING.PLAIN for a plain-english explanation of this notice
|
||||
and it's intent.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
|
||||
Gwenview includes code from Daniel M. Duley <dan.duley@verizon.net>. Copyright
|
||||
follows:
|
||||
"""
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
|
||||
Gwenview includes code from the libjpeg library, developed by "the Independent
|
||||
JPEG Group".
|
@ -0,0 +1,397 @@
|
||||
GNU Free Documentation License
|
||||
Version 1.2, November 2002
|
||||
|
||||
|
||||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document "free" in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The "Document", below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as "you". You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML, PostScript or PDF designed for human modification. Examples of
|
||||
transparent image formats include PNG, XCF and JPG. Opaque formats
|
||||
include proprietary formats that can be read and edited only by
|
||||
proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML, PostScript or PDF produced by some word
|
||||
processors for output purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section "Entitled XYZ" means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as "Acknowledgements",
|
||||
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section "Entitled XYZ" according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
|
||||
4. MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section Entitled "History", Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the "History" section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||||
Preserve the Title of the section, and preserve in the section all
|
||||
the substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section Entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section to be Entitled "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
O. Preserve any Warranty Disclaimers.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section Entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
|
||||
5. COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections Entitled "History"
|
||||
in the various original documents, forming one section Entitled
|
||||
"History"; likewise combine any sections Entitled "Acknowledgements",
|
||||
and any sections Entitled "Dedications". You must delete all sections
|
||||
Entitled "Endorsements".
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an "aggregate" if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled "Acknowledgements",
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document 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.
|
||||
|
||||
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation 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. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
|
||||
ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the "with...Texts." line with this:
|
||||
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
@ -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,11 @@
|
||||
/** @mainpage Extragear - Graphics
|
||||
*
|
||||
* The Graphics Extragear contains the following applications:
|
||||
*
|
||||
* - <a href="digikam/digikam/html/">digikam</a>
|
||||
* - gwenview
|
||||
* - kphotoalbum
|
||||
* - kst
|
||||
* - showimg
|
||||
*
|
||||
*/
|
@ -0,0 +1,10 @@
|
||||
# COMPILE_BEFORE_digikamimageplugins = digikam
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.6.1
|
||||
|
||||
include admin/deps.am
|
||||
include admin/Doxyfile.am
|
||||
|
||||
|
||||
$(top_srcdir)/acinclude.m4:
|
||||
SUBDIRS=$(TOPSUBDIRS)
|
@ -0,0 +1,9 @@
|
||||
COMPILE_BEFORE_digikamimageplugins = digikam
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.6.1
|
||||
|
||||
include admin/deps.am
|
||||
include admin/Doxyfile.am
|
||||
|
||||
$(top_srcdir)/acinclude.m4: $(top_srcdir)/*/*.m4
|
||||
|
@ -0,0 +1,863 @@
|
||||
2007.09.15 - v1.4.2
|
||||
- New features:
|
||||
- Settings in the dialog to edit the thumbnail view details are now directly
|
||||
applied, no need to click "Apply" anymore.
|
||||
- OSD can now display more image information: aperture, focal length, iso and
|
||||
exposure time. Patch by Carles Pina i Estany.
|
||||
- Fixes:
|
||||
- Bug 123516: After renaming, thumbnail panel is not updated
|
||||
- Bug 138467: Crash in Exiv2 readMetadata when reading image saved in Photoshop
|
||||
- Bug 131162: Autorotate images preference setting is forgotten
|
||||
- Bug 132556: Gwenview asks to save the wrong file if the modified file is read-only
|
||||
- Bug 111641: When several printing images in a row, "Keep Ratio" keeps ratio of first image
|
||||
- Avoid crash when viewing extremely large images.
|
||||
- Fix optimization compiler flags being disabled for scaling code.
|
||||
- In fullscreen mode, make sure the cursor does not come back after moving to
|
||||
the next image. Patch by Carles Pina i Estany.
|
||||
- Bug 130511: In the KParts, make Gwenview translations the active one, to
|
||||
avoid using KDELibs instead.
|
||||
|
||||
2006.11.26 - v1.4.1
|
||||
- New features:
|
||||
- Show preview of images when dragging them.
|
||||
- Added "back/forward/reload/save as" actions to the KPart context menu
|
||||
(Bug 127560).
|
||||
- Fixes:
|
||||
- Fix crash when showing current folder properties from context menu (Bug
|
||||
129890).
|
||||
- Load JPEG rotated images using the right rotation directly instead of
|
||||
loading them first and rotate them after (Bug 117173).
|
||||
- Do not show the name of the current file in the status bar: it's already
|
||||
shown in the title bar and it was causing the mainwindow to be enlarged if
|
||||
the name was very long (Bug 127004).
|
||||
- Show the "rotate left" button in KParts.
|
||||
- Use Exiv2 instead of libexif to fix troubles with some JPEG (Bug 136112).
|
||||
- Fix crash when using Gwenview KPart in kwebdesktop (Bug 130379).
|
||||
- Fix content of KPart context menu when viewing remote images.
|
||||
- Do not let the KPart title get overriden when switching tabs.
|
||||
- Make context menu behavior coherent with KDE (Bug 136449).
|
||||
- Fix compilation with --enable-final (Bug 134919).
|
||||
- Do not loose selection when switching from detail to thumbnail view
|
||||
(Bug 126218).
|
||||
- In KPart, do not loose selection when starting a drag.
|
||||
- Fixed behavior of the middle-mouse button (Bug 134590).
|
||||
- Unless the user rotated the image, saving from the KPart now does a copy of
|
||||
the image instead of recompressing it. This ensures the KPart won't fail to
|
||||
save certain files (Bug 131833).
|
||||
|
||||
2006.09.16 - v1.4.0
|
||||
- Fixes:
|
||||
- In a slideshow, let videos play to the end before showing next image/video.
|
||||
For now it only works with Avi and Ogg videos, not with Mpeg or Quicktime
|
||||
videos.
|
||||
|
||||
2006.07.19 - v1.3.93
|
||||
- New features:
|
||||
- Use the same delete dialog as Amarok and Juk, to easily choose between
|
||||
sending files to trash or permanently deleting them.
|
||||
- It's now possible to define whether Gwenview should remember the last url
|
||||
and the filter state when it is restarted (Bug 126475).
|
||||
- Fixes:
|
||||
- The thumbnail files are now generated using correct name and permissions
|
||||
according to Thumbnail Managing Standard
|
||||
(http://jens.triq.net/thumbnail-spec/index.html) (Bug 130937).
|
||||
- In fullscreen mode, a "Location:" text would sometimes appear above the
|
||||
fullscreen toolbar.
|
||||
- Sometimes the Orientation tag was not reset after rotating JPEG images.
|
||||
|
||||
2006.07.14 - v1.3.92b
|
||||
- Fixes:
|
||||
- Fix build error (if you got errors about doublespinbox.h, this is it).
|
||||
|
||||
2006.07.14 - v1.3.92
|
||||
- New features:
|
||||
- When available, Gwenview now uses the shooting date instead of the file date
|
||||
(Bug 98740).
|
||||
- An entry to start the slide show has been added to the image popup menu (Bug
|
||||
130407).
|
||||
- In the rename dialogs, the file extension is no longer selected by
|
||||
default (Bug 130408)
|
||||
- Fixes:
|
||||
- Fixed file renaming, which got broken in 1.3.91.
|
||||
- Do not reset filters when configuring image list.
|
||||
- Do not set keyboard focus on the location field on startup.
|
||||
- In the status bar, show resolution of remote images, but don't show 0x0 for
|
||||
files whose resolution is unknown.
|
||||
- Correct of by one error in selection after files have been removed (Bug
|
||||
111240).
|
||||
- List of supported archive formats is no longer hard coded, so you can for
|
||||
example add support for rar archives by installing kio_rar (Bug 120974).
|
||||
- Some focus bugs have been fixed (Bugs 102852 and 130143).
|
||||
- Do not apply lossless rotations until actual saving, this speeds up
|
||||
rotations (Bug 130146).
|
||||
- Reduced the width of the filter bar.
|
||||
|
||||
2006.06.24 - v1.3.91
|
||||
- New features:
|
||||
- Gwenview can now play videos and display SVG files.
|
||||
- It's now possible to create symbolic links from the main menu and from the
|
||||
image contextual menu.
|
||||
(Patch by Steffen Schoenwiese)
|
||||
- Zoom has been improved: you can now zoom to to width or height, and a zoom
|
||||
combobox has been added to the application and KPart toolbars.
|
||||
- Read support for X cursors has been added.
|
||||
- The slideshow now starts directly. Slideshow options like timing or
|
||||
fullscreen can be set from the configuration dialog.
|
||||
(Patch by Martin Filser)
|
||||
- The slideshow now waits for the next image to be fully prefetched before
|
||||
advancing.
|
||||
- The main toolbar is much lighter now that the image specific buttons have
|
||||
been moved to an image view toolbar.
|
||||
- The file view from the folder KPart now features the same toolbar as in the
|
||||
application.
|
||||
- The file view toolbar can now show a filter bar to filter images by name
|
||||
and/or date.
|
||||
- The folder view has been reworked (this may not be definitive).
|
||||
- Fixes:
|
||||
- Significantly improved redrawing speed for very large images.
|
||||
- Fix MMX configure check with GCC 4.x.
|
||||
- Removed internal libexif.
|
||||
- Make sure Gwenview libs do not require an executable stack.
|
||||
(Patch by Christopher Martin)
|
||||
- Fix a bug which could lead to truncated images when saving to non-local
|
||||
URLs.
|
||||
- Only load KIPI plugins when the "Plugins" menu is opened, for faster startup
|
||||
time and less memory usage.
|
||||
- Added a confirmation dialog for the window reset menu and renamed the "File
|
||||
Info" window to "Image Comment" (Bug 116791).
|
||||
- Simplified configuration of OSD.
|
||||
- The shadow around the thumbnails has been replaced with a light thin border.
|
||||
- The history of the url bar is now remembered among sessions.
|
||||
- In the print dialog, make it possible to enter rational values for width and
|
||||
height.
|
||||
- In the save dialog, always set a filename, even for remote urls (Bug 102008).
|
||||
- In the image KPart, do not switch to another KPart when using the previous
|
||||
and next buttons.
|
||||
- In the image and folder KParts, make sure the context menu is adapted to the
|
||||
mimetype.
|
||||
- The folder KPart remembers the width of the file view and uses the same
|
||||
configuration as the application (Bug 83343).
|
||||
- In the folder KPart, the "trash/remove" context menu entry has been fixed.
|
||||
|
||||
2005.09.11 - v1.3.0
|
||||
- Fixes:
|
||||
- Keyboard shortcuts for file operations now work even if no image is selected.
|
||||
- Pressing Enter to enter a folder works again.
|
||||
- On the image view, the "hand" cursors have been replaced with standard
|
||||
cursors.
|
||||
- The click/double-click behaviour of the bookmark view has been changed to
|
||||
match the behaviour of the folder view.
|
||||
- Icons of the folder KPart have been enhanced.
|
||||
- Authentication dialogs should now always appear over the main window.
|
||||
- Folders are no longer included in the image list of KIPI albums.
|
||||
- A crash which could happen when loading indexed XCF files produced by
|
||||
recent versions of GIMP has been fixed.
|
||||
- A bug introduced in the previous version which caused EXIF information to be
|
||||
removed after editing a comment has been fixed.
|
||||
- The external tool dialog has been made a bit easier to use by disabling the
|
||||
detail widgets when no tool is selected.
|
||||
- Avoid rare cases of the image KPart getting stuck.
|
||||
- By popular demand (*): double clicking on a thumbnail or the image view now
|
||||
toggles fullscreen instead of browse mode.
|
||||
* http://gwenview.sourceforge.net/node/132
|
||||
|
||||
2005.08.21 - v1.2.92
|
||||
- New features:
|
||||
- The slide show can now display images in random order.
|
||||
- New shortcuts have been introduced to browse the folder hierarchy:
|
||||
- Alt+Down goes to the first sub-folder
|
||||
- Alt+Backspace goes to the previous folder
|
||||
- Alt+Space goes to the next folder
|
||||
(Patch by Michael Rolf)
|
||||
- It is now possible to scroll images with the keyboard.
|
||||
(Patch by Michael Rolf)
|
||||
- A new view has been added to quickly access bookmarks.
|
||||
- Images are now prefetched in advance also when browsing in the thumbnail
|
||||
view using the cursor keys or keys for next/previous.
|
||||
- In full screen mode, pressing Enter will toggle the full screen bar.
|
||||
- KIPI plugins can now access JPEG comments.
|
||||
- Zoom in and out actions have been added to the KParts.
|
||||
- An "Other..." entry has been added to the external tools menu.
|
||||
- The drag'n'drop popup menu now contains an entry to create a symbolic link.
|
||||
- Fixes:
|
||||
- In the thumbnail view, folder and archive filenames are always shown, even
|
||||
if the user choose to hide image filenames.
|
||||
- When right clicking on files from the folder KPart, the Konqueror popup
|
||||
menu will now appear, instead of Gwenview's menu.
|
||||
- The context menu which appears when right clicking on the background of a
|
||||
file view now shows information relative to the current folder, rather than
|
||||
the current image.
|
||||
- The destination URL is now set to the current URL in KIPI plugins.
|
||||
- The folder name is used as the album name for KIPI plugins.
|
||||
- The JPEG comment editor has been fixed to avoid adding a dummy character at
|
||||
the end.
|
||||
- Double click behaviour has been changed to always toggle browse mode.
|
||||
|
||||
2005.07.17 - v1.2.91
|
||||
- New features:
|
||||
- The file view now features three modes: details, thumbnail with info on the
|
||||
right and thumbnail with info on bottom. In the "info on the right"
|
||||
mode, the file name, date, image size and file size are displayed.
|
||||
In the "info on bottom" mode, the user can choose what information should be
|
||||
displayed.
|
||||
- The thumbnail size can now be set with a slider.
|
||||
- Thumbnail can now be as big as 256x256.
|
||||
- Non-blocking image preloading in advance.
|
||||
- With two-pass painting, turn off dithering in the first pass for a small
|
||||
performance improvement with non-truecolor displays.
|
||||
- Hints for mouse usage in the image view are shown in the status bar.
|
||||
- In addition to the file count, the status bar now shows the current image
|
||||
position.
|
||||
- Two variables have been introduced for the On Screen Display: %n is the
|
||||
current image position, %N is the image count.
|
||||
- An option has been added to disable automatic rotation of images.
|
||||
- Fixes:
|
||||
- Progressive JPEG files are really shown progressively.
|
||||
- In the thumbnail view, make sure we report image sizes for JPEG with
|
||||
embedded thumbnails.
|
||||
- The JPEG loader has been fixed so that it doesn't crash on some broken
|
||||
JPEGs.
|
||||
- Fix premature end when decoding MNG images.
|
||||
- Gwenview now dynamically links with installed version of libexif by default.
|
||||
The included libexif copy is only used if libexif is not installed. Using it
|
||||
is considered deprecated.
|
||||
- The "best" smoothing algorithm has been tweaked to produce slightly less
|
||||
blurry results.
|
||||
- External tools are now sorted by name in the menu and the dialog.
|
||||
|
||||
2005.04.03 - v1.2.0
|
||||
- Fixes:
|
||||
- A crash which could happen when pressing the 'back' button has been fixed.
|
||||
|
||||
2005.03.19 - v1.2.0pre4
|
||||
- New features:
|
||||
- An item to open the "external tools" dialog has been added at the end of the
|
||||
"external tools" menu.
|
||||
- Fixes:
|
||||
- The layout of the "external tools" dialog has been reworked.
|
||||
- The image was not correctly displayed after a manual rotation.
|
||||
- When saving a file, its permissions are kept if it exists or set using umask
|
||||
if not.
|
||||
- The history and the back/forward/up buttons in the directory KPart has been
|
||||
fixed.
|
||||
|
||||
2005.02.27 - v1.2.0pre3
|
||||
- Fixes:
|
||||
- Support for smb:/ and digikamtags:/ ioslaves has been fixed.
|
||||
- The documentation now appears in KHelpCenter tree.
|
||||
- When starting a slideshow from a picture in the middle of the list, Gwenview
|
||||
now loops once to show all images before the start picture, even if the
|
||||
"Loop" option is not activated.
|
||||
- The On Screen Display totally hides itself after a while.
|
||||
|
||||
2005.02.13 - v1.2.0pre2
|
||||
- New features:
|
||||
- A documentation has been written.
|
||||
- Fixes:
|
||||
- Mouse wheel zooming is now consistent with other KDE applications.
|
||||
- Show rotation and mirroring buttons on main toolbar.
|
||||
- Moved all navigation buttons (back, forward, up and home) to the location
|
||||
toolbar.
|
||||
- Items in the "Windows" menu are now disabled when Gwenview is in View mode.
|
||||
- The slideshow has been reworked: it now starts from the current picture and
|
||||
correctly handles manual image browsing.
|
||||
|
||||
2005.01.23 - v1.2.0pre1
|
||||
- Fixes:
|
||||
- Zoom step halved (100%->150%->200%).
|
||||
- No image quality loss when printing large images.
|
||||
- More explicit messages when an error occurs while saving.
|
||||
|
||||
2005.01.08 - v1.1.8
|
||||
- New features:
|
||||
- Zoom actions added to both KPart's.
|
||||
- Support for animated pictures.
|
||||
- Fast image scaling function from Imlib2/Mosfet (select 'fast' smoothing
|
||||
in the configuration dialog).
|
||||
- Added an item in the "Windows" menu to reset the window layout to the default
|
||||
configuration.
|
||||
- Fixes:
|
||||
- "Lock zoom"/"Auto zoom" options fixed
|
||||
- Fixed "Clear location"/"Location" shortcuts.
|
||||
- Make it impossible to undock the file view. It should be easier for new
|
||||
users to use it this way.
|
||||
- Fixed crash which could occur when copying multiple files.
|
||||
|
||||
2004.12.19 - v1.1.7
|
||||
- New features:
|
||||
- Double clicking the image view toggles the full screen mode (By Daniel
|
||||
Thaler)
|
||||
- It's now possible to select which KIPI plugins should be loaded.
|
||||
- The On Screen Display now contains "Previous", "Next" and "Exit fullscreen"
|
||||
buttons. These buttons automatically hide when the cursor hides
|
||||
itself.
|
||||
- Adjust brightness, contrast and gamma.
|
||||
- Going to next/previous image in the image KPart.
|
||||
- Fixes:
|
||||
- If the URL given as an argument is a directory, start in browse mode,
|
||||
not in view mode.
|
||||
- On Screen Display is back, it was broken in 1.1.6.
|
||||
- Updated man page.
|
||||
- KIPI Batch image processing tools now work again.
|
||||
- Fixed a few bugs in image saving.
|
||||
- Made the save error messages more explicit.
|
||||
- Removed the "show toolbar/menubar/statusbar in fullscreen" options.
|
||||
- When selecting multiple images with Ctrl or Shift, block the "double click
|
||||
an image goes to fullscreen" feature.
|
||||
- Removed the "Auto load image" option, it's useless since Gwenview does not
|
||||
block anymore when loading images.
|
||||
- Fix reloading in the image KPart.
|
||||
|
||||
2004.10.24 - v1.1.6
|
||||
- New features:
|
||||
- The application now has two modes: browse and view. Browse mode shows all
|
||||
views: folder, file and image. View mode only shows the image. Gwenview
|
||||
starts in browse mode except if an image URL is given as an argument. You
|
||||
can switch between modes using the toolbar button, or with the "View/Browse
|
||||
mode" menu item or with the Ctrl+Return shortcut.
|
||||
- JPEGTran code has been integrated into Gwenview, there's no need to install
|
||||
it separately anymore.
|
||||
- Fixes:
|
||||
- Update the EXIF thumbnail when rotating a JPEG file.
|
||||
- In the folder view, folders now open with a single click (By Daniel Thaler).
|
||||
- Reworked image->widget coordinate conversions in order to avoid subtle
|
||||
paint errors.
|
||||
- Remember computed optimal repaint sizes in the config file, so they are
|
||||
available immediately after next start.
|
||||
- Remember shown URL after session restore.
|
||||
|
||||
2004.09.19 - v1.1.5
|
||||
- New features:
|
||||
- The thumbnail progress bar and stop buttons are now embedded in the
|
||||
thumbnail view.
|
||||
- The location bar now shows the file names instead of the folders.
|
||||
- The thumbnails toolbar buttons have been moved to a specialized file view
|
||||
toolbar.
|
||||
- It's now possible to assign key shortcuts to KIPI plugins.
|
||||
- New manpage by Christopher Martin.
|
||||
- Fixes:
|
||||
- Do not display the folder name as an image in the status bar.
|
||||
- Make sure the folder KPart starts in the right folder.
|
||||
- Unbreak the saving of key shortcuts.
|
||||
- Remote urls are correctly bookmarked.
|
||||
- Do not try to overwrite the trash when trashing only one file.
|
||||
|
||||
2004.07.31 - v1.1.4
|
||||
- New features:
|
||||
- In the thumbnail view, It's now possible to sort images in reverse order.
|
||||
- Use EXIF-stored thumbnail if available.
|
||||
- Option to disable saving of generated thumbnails to cache.
|
||||
- In fullscreen mode, it's now possible to display the image comment or size
|
||||
in addition to the file path.
|
||||
- The fullscreen On-Screen-Display is more readable now.
|
||||
- The background color of the image view can be configured.
|
||||
- When printing, it's now possible to enlarge images so that they fill the
|
||||
page.
|
||||
- Fixes:
|
||||
- In the folder view, pressing Enter now opens the selected folder.
|
||||
- Use icon list for the configuration dialog.
|
||||
- Avoid data loss if the JPEG images are saved while being rotated by
|
||||
JPEGTran.
|
||||
- The back button in Konqueror now works correctly with gvimagepart.
|
||||
- The default layout is more user-friendly.
|
||||
- Non-trivial URLs (e.g. http query URL) are correctly handled.
|
||||
- You can now drop images on the image view.
|
||||
|
||||
2004.06.11 - v1.1.3 - "Hurry up, I'm getting married tomorrow"
|
||||
- New features:
|
||||
- You can now define custom branches in the dir view (By Craig Drummond)
|
||||
- An image cache has been added to speedup image loading.
|
||||
- Gwenview now uses freedesktop.org thumbnail spec to store thumbnails.
|
||||
- A new option to automatically empty thumbnail cache on exit (By Angelo
|
||||
Naselli).
|
||||
- The image size is now displayed below file names in thumbnail view.
|
||||
- Fixes:
|
||||
- Don't crash when switching to fullscreen while generating thumbnails and
|
||||
coming back (By Lubos Lunak)
|
||||
- Faster thumbnail generation (By Lubos Lunak)
|
||||
- Faster image painting by dynamically determining suitable paint
|
||||
size (By Lubos Lunak)
|
||||
- Use the "Standard Background" color as the background for thumbnails and
|
||||
folders (By Craig Drummond).
|
||||
- Make sure the current image is reloaded if it has been modified outside
|
||||
Gwenview.
|
||||
|
||||
2004.05.09 - v1.1.2
|
||||
- New features:
|
||||
- Optional support for KIPI, KDE Image Plugin Interface.
|
||||
- Incremental downloading of images.
|
||||
- Image smoothing is much more configurable (By Lubos Lunak).
|
||||
- KParts will now remember their settings.
|
||||
- Fixes:
|
||||
- Fixed several image loading bugs.
|
||||
- Make sure small and medium size thumbnails do not look jagged.
|
||||
- Work-around a Qt bug which caused the window title to not come back after
|
||||
leaving fullscreen mode and reduces flickering (By Lubos Lunak).
|
||||
- Fixed several bugs in file saving.
|
||||
- Make sure the loading cursor disappear when the image has finished to load
|
||||
(By Lubos Lunak).
|
||||
- Remember last used folder in "copy to" and "move to" dialogs (By Lubos
|
||||
Lunak).
|
||||
- Horizontal mouse wheels should work correctly now.
|
||||
- Entering "~username" in location combo box works now.
|
||||
- Selecting an URL in the location combo box opens it.
|
||||
- When viewing an image from within a frame based web site in Konqueror, don't
|
||||
crash when opening popup menu.
|
||||
- Give higher priority to the loading of the image than to the generation of
|
||||
thumbnails (By Lubos Lunak).
|
||||
|
||||
2004.03.20 - v1.1.1
|
||||
- New features:
|
||||
- Added KPart support, this installs in Konqueror a new file view mode and let
|
||||
you view images in an embedded Gwenview (By Jonathan Riddell).
|
||||
- Asynchronous JPEG loading, based on Khtml loader.
|
||||
- Really asynchronous PNG loading (By Lubos Lunak).
|
||||
- Mouse wheel will now scroll the image by default. Holding Ctrl will scroll
|
||||
horizontally. An option has been added to the setting dialog to toggle
|
||||
between scroll and browse (By Jeroen Peters).
|
||||
- When holding shift over the image, right click will zoom out (By Jeroen
|
||||
Peters).
|
||||
- Image painting is now progressive (By Lubos Lunak).
|
||||
- Fixes:
|
||||
- The rotate and mirror functions can now work on multiple selection.
|
||||
- Make it possible to load another image or quit even if you can't save your
|
||||
changes.
|
||||
- Gwenview won't spawn multiple instances of jpegtran anymore.
|
||||
|
||||
2004.02.01 - v1.1.0
|
||||
- New features:
|
||||
- New settings in print dialog to specify how the image must be print.
|
||||
- Big thumbnails are really BIG now :-).
|
||||
- First implementation of asynchronous image loading. Only for PNG right now.
|
||||
- Double-clicking an image in the file view will open it in fullscreen [*].
|
||||
- Fixes:
|
||||
- The move and copy dialog now use a tree view.
|
||||
- In the thumbnail view, create thumbnails for the visible images first
|
||||
(Thanks to Lubos Lunak).
|
||||
- Gwenview now uses its own thumbnail cache dir.
|
||||
- Gave contributors the credit they deserve in the about box [*].
|
||||
- Updated to libexif 0.5.12 and applied patches from libexif CVS [*].
|
||||
- When going to the parent folder, make sure the folder we were in before is
|
||||
selected [*].
|
||||
- If there's no image in the current folder, select the first visible file [*].
|
||||
- When holding down Shift to zoom, keep the same area of the image under the
|
||||
cursor [*].
|
||||
- Nicer drag cursor [*].
|
||||
- Hopefully fixed every cases where the image was not centered in the view [*].
|
||||
*: Backported to 1.0.1.
|
||||
|
||||
2003.12.07 - v1.0.0
|
||||
- New features:
|
||||
- Show a wait icon for not-generated-yet thumbnails (inspired from Nautilus
|
||||
thumbnail view).
|
||||
- Show a broken icon for broken images.
|
||||
- Fixes:
|
||||
- If auto-zoom is on, make sure the zoom is updated after rotating an image.
|
||||
- Fixed crash when loading XCF images if Gwenview was compiled with gcc 3.3.1.
|
||||
- Before running an external tool, change working directory to current folder.
|
||||
- When switching images in fullscreen, don't show the cursor.
|
||||
- Use standard KDE icons for zoom actions.
|
||||
- New icons for slideshow and image operations.
|
||||
- New magnifier cursor.
|
||||
|
||||
2003.11.16 - v1.0.0pre4
|
||||
- New features:
|
||||
- Added a new option to hide the busy pointer when loading an image in
|
||||
fullscreen.
|
||||
- Added a popup menu to select the sorting mode. Usefull in thumbnail view.
|
||||
- Fixes:
|
||||
- Use a KDE dialog for the configuration dialog.
|
||||
- Removed the image view mouse behavior configuration options. The behavior is
|
||||
much simpler now: left button to drag image, middle button to toggle
|
||||
auto-zoom and mouse-wheel to browse images. If you want to zoom hold Shift
|
||||
and use either the mouse-wheel or the left button.
|
||||
|
||||
2003.11.01 - v1.0.0pre3
|
||||
- New features:
|
||||
- Added a "don't ask me again" check box to the save prompt dialog.
|
||||
- Added a reload button.
|
||||
- Added a "Go" button to the location toolbar.
|
||||
- Fixes:
|
||||
- Really fixed saving of external tools.
|
||||
- Make sure the folder view is updated when a folder is renamed.
|
||||
- The mouse-wheel behaviors are not messed anymore by dialogs or by showing
|
||||
the popup menu.
|
||||
|
||||
2003.10.11 - v1.0.0pre2
|
||||
- New features:
|
||||
- Added Back/Forward history buttons (based on work from Tudor Calin).
|
||||
- The parent button can now display a popup menu (by Tudor Calin).
|
||||
- Simple printing support (by Angelo Naselli).
|
||||
- Fixes:
|
||||
- The image comment editor shows more explicit messages when the comment is
|
||||
empty and when the image can't be commented.
|
||||
- The external tool dialog won't fail on fresh installation.
|
||||
- The path to jpegtran is now stored correctly, even if it's not absolute.
|
||||
- Fixed compilation failure on KDE 3.0.
|
||||
|
||||
|
||||
2003.09.27 - v1.0.0pre1
|
||||
- New features:
|
||||
- Toolbars are now configurable and toolbar settings are remembered.
|
||||
- New dock window to display Meta Info (thanks to Jos van den Oever).
|
||||
- Cursor over image view changes to reflect the current behavior.
|
||||
- When toggling autozoom off, restore the previous zoom and position (Based
|
||||
on a patch by Jos van den Oever).
|
||||
- It's now possible to define external tools associated with images or
|
||||
directories.
|
||||
- Fixes:
|
||||
- Exiting with Ctrl+Q from the fullscreen won't close the file view for
|
||||
the next startup.
|
||||
- Do not switch the file view to detailed mode when leaving the fullscreen
|
||||
mode.
|
||||
- Do not stop displaying images when browsing folders containing lots of JPEG
|
||||
files (more than a thousand).
|
||||
|
||||
2003.06.09 - v0.17.1a
|
||||
- Fixes:
|
||||
- Fixed compilation failure on KDE 3.0.
|
||||
|
||||
2003.03.29 - v0.17.1
|
||||
- Fixes:
|
||||
- In the folder view, show the "+" sign in front of folders if they have
|
||||
sub-folders.
|
||||
- Lossless manipulations of JPEG images won't remove the EXIF information
|
||||
anymore.
|
||||
- Handling of the EXIF orientation tag should now work on KDE 3.0.
|
||||
- When "auto-zoom" was on, pressing the "reset zoom" button would not
|
||||
deactivate it.
|
||||
- Added an "Edit" submenu to the popup menu of the image view, similar to the
|
||||
main window "Edit" menu.
|
||||
- Moved "Open with editor" in the "Edit" menu.
|
||||
- Display the image file name in the window title.
|
||||
- Fixed the bug which caused the window to grow up when entering folders with
|
||||
long names (Thanks to Stefan Heinze for the tip).
|
||||
- Rotating big JPEG images with JPEGTran won't hang anymore.
|
||||
- Keep the fullscreen button activated to be able to go back to normal mode
|
||||
when moving to a dir without images in fullscreen mode.
|
||||
|
||||
2003.05.04 - v0.17.0
|
||||
- New features:
|
||||
- Added a cancel button to popup menus, like Konqueror does.
|
||||
- Added support for dropping files to the file view.
|
||||
- Fixes:
|
||||
- Fixed compilation failure on KDE 3.0.
|
||||
- Clear the image view when the last image of the current folder is removed.
|
||||
- Hopefully fixed the bug which caused Gwenview to sometimes crash when
|
||||
invoked with a folder in the command line.
|
||||
|
||||
2003.04.27 - v0.17.0pre3
|
||||
- Fixes:
|
||||
- Really fixed the bug which caused the dock layout to be messed after going
|
||||
fullscreen.
|
||||
- Always display the location bar on a new line.
|
||||
- Fixed the lock which could occur if you kept the go-to-previous or
|
||||
go-to-next shortcut keys pressed for too long.
|
||||
|
||||
2003.04.26 - v0.17.0pre2
|
||||
- New features:
|
||||
- Support for EXIF orientation information.
|
||||
- Fixes:
|
||||
- Don't alter the layout of the docks when toggling dir and file views or
|
||||
going fullscreen.
|
||||
- File name won't be cut anymore in the thumbnail view.
|
||||
- Prompt to save a modified image before quitting.
|
||||
- Fixed an inconsistency with JPEG lossless rotation.
|
||||
|
||||
2003.04.21 - v0.17.0pre1
|
||||
- New features:
|
||||
- Added bookmarks.
|
||||
- Show/hide hidden files.
|
||||
- Image rotation and mirroring (using jpegtran when working on JPEG files to
|
||||
perform lossless manipulations).
|
||||
- Image saving.
|
||||
- You can now smooth scale images.
|
||||
- New entry in the "View" menu: "Hide Folder And File Views".
|
||||
- New option to enlarge smaller images when using auto zoom.
|
||||
- New option to toggle scroll bars on image view.
|
||||
- New option to select whether deleting files should send them to the trash or
|
||||
not.
|
||||
- Fixes:
|
||||
- Moved the slide show settings to a separate dialog shown before starting it.
|
||||
- Image count in the status bar doesn't include archives anymore.
|
||||
- Do not zoom the transparency checkerboard.
|
||||
|
||||
2003.02.13 - v0.16.2
|
||||
- Fixes:
|
||||
- Uses opaque resize for docked views.
|
||||
- Resizing the window resizes the image view only.
|
||||
- When using double click mode, double clicking a folder in the icon view
|
||||
did not open the folder.
|
||||
|
||||
2003.01.31 - v0.16.1
|
||||
- Fixes:
|
||||
- Fixed compilation failure with KDE 3.0 (Thanks to GeniusR13).
|
||||
|
||||
2003.01.30 - v0.16.0
|
||||
- New features:
|
||||
- Support for zip IO slave.
|
||||
- Added an "erase url" button.
|
||||
- Fixes:
|
||||
- Corrected toolbar layout for RTL languages (Thanks to Meni Livne).
|
||||
- Do not give focus to the address bar on start.
|
||||
- Do not exit when trying to thumbnailing a broken JPEG (Thanks to Marco
|
||||
Gazzetta).
|
||||
- The previous/next shortcuts were wrong in 0.16.0pre1.
|
||||
|
||||
2003.01.12 - v0.16.0pre1
|
||||
- New features:
|
||||
- Support for IO slaves: you can browse FTP files, Windows shares, go into
|
||||
tarballs...
|
||||
- Multi-selection support (at last!).
|
||||
- Added a "home folder" tree branch to the folder view.
|
||||
- Added a simple slideshow feature.
|
||||
- Now uses the trash to delete images.
|
||||
- Added an address bar.
|
||||
- Displays the filename of the current image in a different (configurable)
|
||||
color.
|
||||
- Fixes:
|
||||
- Do not start dragging folders in the folder view when not necessary.
|
||||
- When dropping urls and selecting "Move", the drop item will become the
|
||||
current one only if the item which was the current one was part of the
|
||||
drop.
|
||||
|
||||
2002.11.05 - v0.15.2
|
||||
- Fixes:
|
||||
- Small jpeg images were getting a stretched thumbnail.
|
||||
- Fixed the centering of image in scrollable view.
|
||||
- Enabled the "show folders in file view" by default.
|
||||
|
||||
2002.10.26 - v0.15.1
|
||||
- New features:
|
||||
- Added an item to the popup menus to show the file properties.
|
||||
- Fixes:
|
||||
- The selected thumbnail does not look strange anymore when changing the
|
||||
thumbnail size.
|
||||
- Always zoom on the center of the image.
|
||||
- Do not reload the image every time when opening the context menu.
|
||||
|
||||
2002.10.04 - v0.15.0
|
||||
- File count was also counting folders.
|
||||
- Integrated the updated man page by Michael Spanier.
|
||||
- Selected thumbnail looks nicer now.
|
||||
- Fixed automatic deselection of the selected thumbnail when using single-click
|
||||
mode.
|
||||
|
||||
2002.09.14 - v0.15.0pre1
|
||||
- New option to prevent Gwenview from loading the first image when it enters a
|
||||
folder (Thanks to Andreas Pfaller for the patch).
|
||||
- You can now show the folders in the file view. By enabling this and hiding
|
||||
the folder view, Gwenview won't have to open all parent folders on startup.
|
||||
- XCF file format support, thanks to the QXCFI library by Lignum Computing
|
||||
(http://lignumcomputing.com).
|
||||
- Thumbnail generator now always saves the thumbnail at the biggest size :
|
||||
for smaller sizes the big thumbnail is loaded and scaled. This uses less disk
|
||||
space and make thumbnail size switching faster.
|
||||
- Reworked the zoom behavior so that it works like the zoom tool in the GIMP.
|
||||
|
||||
2002.08.11 - v0.14.5
|
||||
- Fixed the horizontal one pixel lines which appeared in fullscreen mode when
|
||||
the toolbar was hidden.
|
||||
- New command line option (-f) to start in fullscreen mode.
|
||||
|
||||
2002.07.28 - v0.14.4
|
||||
- Updated thumbnail generation to store thumbnails in the same folder
|
||||
Konqueror 3 uses (Thanks to Andreas Pfaller and Renchi Raju for the patches).
|
||||
- Fixed a crash on exit under certain circumstances.
|
||||
- Should not crash anymore when loading big images.
|
||||
|
||||
2002.07.15 - v0.14.3
|
||||
- Really fixed the bug which caused Gwenview to not display image file given as
|
||||
an argument.
|
||||
- Fixed ugly look of file names in thumbnail view when word wrap was enabled.
|
||||
- Fixed flickering and drawing artefacts remaining after zooming in and out.
|
||||
- Lock zoom state was not properly remembered.
|
||||
- Updated polish translation.
|
||||
- Updated german translation.
|
||||
|
||||
2002.07.10 - v0.14.2
|
||||
- Fixed a crash if a directory contained URL-like encoded characters (Thanks to
|
||||
Dario Abatianni for the bug report)
|
||||
- Do not reload all thumbnails if an image is removed.
|
||||
- When starting Gwenview with an image file as an argument, the image does
|
||||
not hide anymore.
|
||||
- Gwenview won't crash anymore if started with a file that doesn't exist as an
|
||||
argument.
|
||||
|
||||
2002.06.17 - v0.14.1
|
||||
- Fixed a bug in recognition of progressive jpeg images.
|
||||
- Updated swedish translation by Anders Lindén.
|
||||
- Added a japanese translation by Ryota Simamoto.
|
||||
|
||||
2002.06.15 - v0.14.0
|
||||
- Ported to KDE3
|
||||
- Gwenview uses KImageIO for file formats, bringing a few other file formats
|
||||
such as ico, eps or g3.
|
||||
- Replaced my own dir widget with the new KDirView widget provided by KDE3.
|
||||
|
||||
2002.05.04 - v0.13.0
|
||||
- Thumbnail selection buttons are always activated.
|
||||
- You can now choose between 'auto-zoom' or 'scroll-and-zoom' in fullscreen
|
||||
mode.
|
||||
- You can now lock the zoom to keep the same zoom value during browsing.
|
||||
- Integrated a patch from Frank Becker to speed up JPEG thumbnail generation.
|
||||
- Swedish translation.
|
||||
- More personalizable wheel behavior.
|
||||
- Gwenview now remembers the 'auto-zoom' state.
|
||||
- You can now define what interface elements you want to hide in fullscreen
|
||||
mode.
|
||||
- Fixed a bug in cache cleaning if the cache was already empty.
|
||||
|
||||
|
||||
2002.03.04 - v0.12.0
|
||||
- Navigation buttons are now enabled or disabled according to the
|
||||
position of the file in the folder.
|
||||
- New zoom option : fit to window.
|
||||
- Zoom actions are disabled when there's no image.
|
||||
- No more ugly thumbnails when selected.
|
||||
- Images are now centered in main view.
|
||||
- Added popup menus to the file and image views.
|
||||
- Thumbnails aren't reloaded anymore when deleting a file.
|
||||
- Added support for external editor.
|
||||
|
||||
|
||||
2001.12.30 - v0.11.1
|
||||
- Added TIFF support.
|
||||
- Added drag'n drop support to folder view.
|
||||
- Bug fix when renaming folder containing folders.
|
||||
|
||||
|
||||
2001.12.15 - v0.11.0
|
||||
- Korean translation.
|
||||
- New folder view : more responsive, get automatically updated on
|
||||
changes, features a popup menu.
|
||||
- Scrollbars are now reset on image change.
|
||||
- Should now installs itself in <appdir>/Graphics rather than in
|
||||
<appdir>/Multimedia/Graphics.
|
||||
- New buttons in config dialog to get the cache size and to empty it.
|
||||
- Added a man page by Michael Spanier.
|
||||
|
||||
|
||||
2001.10.11 - v0.10.1
|
||||
- Dutch translation.
|
||||
- Hungarian translation.
|
||||
- Now uses Konqueror central thumbnail cache folder.
|
||||
|
||||
|
||||
2001.09.29 - v0.10.0
|
||||
- Italian translation.
|
||||
- Polish translation.
|
||||
- Redesigned the configuration dialog with Qt-Designer, now features
|
||||
GUI for Avinash Chopde's patch.
|
||||
- Added a file/open menu item.
|
||||
- Added an option to hide file names in fullscreen mode.
|
||||
- Gwenview now displays an error message when it can't load an image.
|
||||
|
||||
|
||||
2001.09.01 - v0.9.2
|
||||
- German translation.
|
||||
- Fixed a bug which caused the fullscreen view to be updated even after
|
||||
coming back to normal.
|
||||
- Merged a patch from Avinash Chopde to provide default folders for file
|
||||
copy/move and bypass file operation confirmations (No GUI yet).
|
||||
|
||||
|
||||
2001.08.29 - v0.9.1
|
||||
- Spanish translation.
|
||||
- Fixed bad encoding in French translation (no more '?' instead of accent).
|
||||
- Dock icons were too big. Fixed.
|
||||
|
||||
|
||||
2001.08.20 - v0.9.0
|
||||
- Added support for alpha channel.
|
||||
- Gwenview now displays the image size in status bar.
|
||||
- Fixed wrong icon size for folders on some distributions (my mistake).
|
||||
|
||||
|
||||
2001.07.30 - v0.8.0
|
||||
- Replaced thumbnail generation with Konqueror code : don't freeze the
|
||||
interface anymore and cache generated thumbnails on disk.
|
||||
- You can now select the size of the thumbnails from the menu/toolbar.
|
||||
|
||||
|
||||
2001.07.11 - v0.7.0
|
||||
- Added zoom in and out feature.
|
||||
- Thumbnail generation is now non-blocking.
|
||||
- Uses KIO for file operations.
|
||||
- Added "move" to file operations.
|
||||
- Selecting a folder which does not contain images will now empty the image
|
||||
widget.
|
||||
- Added a status bar displaying folder and file information.
|
||||
- Opera-like previous-next mouse navigation.
|
||||
- Scroll the image by dragging it.
|
||||
- Fixed a bug which could prevent the toolbar from showing on the first launch.
|
||||
|
||||
|
||||
2001.05.23 - v0.6.1
|
||||
- Fixed a bug in file view that might not display files.
|
||||
- Added a Norwegian translation, thanks to Rune Nordvik.
|
||||
|
||||
|
||||
2001.05.16 - v0.6.0
|
||||
- Full screen support with keyboard, mouse button and mouse wheel navigation.
|
||||
- Added a toolbar.
|
||||
- Folder view uses standard folder icons.
|
||||
- Integration with Konqueror : right click on any folder and select "Browse
|
||||
with Gwenview".
|
||||
|
||||
|
||||
2001.04.10 - v0.5.1
|
||||
- Fixed drag'n'drop for file detail view.
|
||||
|
||||
|
||||
2001.03.31 - v0.5.0
|
||||
- File view items can now be dragged to any KDE application (for example Konqueror).
|
||||
- French translation.
|
||||
- File copy dialog opens in current folder.
|
||||
- Fixed a bug on file copy cancel.
|
||||
- Fixed a crash on file deletion.
|
||||
- Shortcut keys are now configurable.
|
||||
- When using thumbnail view, files are all shown before thumbnail generation begins.
|
||||
- Added a configuration dialog.
|
||||
|
||||
|
||||
2001.03.09 - v0.4.1
|
||||
- Fixed crash on file manipulation using thumbnail view.
|
||||
- Added a progress gauge for thumbnail generation.
|
||||
|
||||
|
||||
2001.02.26 - v0.4.0
|
||||
- File list use a standard KDE detail view.
|
||||
- Added a configurable memory cache to speed up image loading.
|
||||
|
||||
|
||||
2001.01.28 - v0.3.0
|
||||
- Nicer window menu.
|
||||
- Removed FilePath module : use QT instead.
|
||||
- Some code cleaning.
|
||||
- New shortcut for first/previous/next/last image.
|
||||
- Icon for folders.
|
||||
- Removed folder column header.
|
||||
- Thumbnail view.
|
||||
|
||||
|
||||
2001.01.16 - v0.2.2
|
||||
- Added a window menu to toggle visibility of windows.
|
||||
- Changed the default button in delete dialog to "Yes".
|
||||
|
||||
|
||||
2001.01.15 - v0.2.1
|
||||
- Updated mail address and web site.
|
||||
|
||||
|
||||
2001.01.08 - v0.2.0
|
||||
- Uses docked windows.
|
||||
- Remember window sizes and configurations.
|
||||
- Added Help menu with about dialog.
|
||||
- Uses the KDE way to handle command line parameters.
|
||||
- Added ability to copy a file.
|
||||
|
||||
|
||||
2000.12.10 - v0.1.0
|
||||
- Initial release.
|
||||
|
@ -0,0 +1,85 @@
|
||||
Gwenview - http://gwenview.sourceforge.net
|
||||
|
||||
|
||||
|
||||
-> What is it ?
|
||||
|
||||
Gwenview is a simple image viewer for KDE. It features a folder tree window
|
||||
and a file list window to provide easy navigation in your file hierarchy.
|
||||
Image loading is done by Qt library, so it supports all image formats your
|
||||
Qt installation supports.
|
||||
|
||||
|
||||
-> Requirements
|
||||
|
||||
KDE 3.1 or more.
|
||||
|
||||
|
||||
-> Installation
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
If configure fails to find your Qt or KDE libs, you will have to type
|
||||
'export KDEDIR=/path/to/kde'
|
||||
and
|
||||
'export QTDIR=/path/to/Qt/lib'
|
||||
|
||||
|
||||
-> Uninstallation
|
||||
|
||||
make uninstall
|
||||
|
||||
|
||||
-> Tips concerning docked windows
|
||||
|
||||
Docked windows are great, but they take a little time to get
|
||||
accustomed to. Here comes a few tips that you might find handy.
|
||||
|
||||
- While dragging a window, press Esc to cancel the drag.
|
||||
|
||||
- After undocking a window, if you want to dock it back, don't drag it
|
||||
with the title bar, it won't dock. Drag the little horizontal grip
|
||||
below the title bar instead. You may also click on the small arrow in
|
||||
the top right corner, this will get it back to its previous docked place.
|
||||
|
||||
- If you closed a window you can get it back using the "Window" menu.
|
||||
|
||||
- To dock window A on an edge of window B, drag the grip of A to the wanted
|
||||
edge. To make A and B use tabs, drag the grip of A on the center of B.
|
||||
|
||||
|
||||
-> Mouse operations
|
||||
|
||||
You can browse through your image using the Opera-like previous-next mouse
|
||||
navigation: Keep the left mouse button down and click on the right button to
|
||||
go to the next image. Keep the right mouse button down and click on the left
|
||||
button to go to the previous one.
|
||||
Thanks to Michael Spanier for sending me a patch which started this new feature.
|
||||
|
||||
You can also scroll your image by holding the left mouse button down and
|
||||
moving the mouse around.
|
||||
|
||||
Middle mouse will toggle the auto zoom on and off.
|
||||
|
||||
By default, the mouse wheel will either scroll the image vertically or go to
|
||||
previous/next image. This can be configured in the configure dialog.
|
||||
|
||||
Use Shift + mouse wheel to zoom in and out.
|
||||
|
||||
Use Ctrl + mouse wheel to scroll the image horizontally.
|
||||
|
||||
|
||||
-> Contact
|
||||
|
||||
mailto:aurelien.gateau@free.fr http://gwenview.sourceforge.net
|
||||
|
||||
You can also join the mailing list:
|
||||
http://lists.sourceforge.net/lists/listinfo/gwenview-general
|
||||
|
||||
|
||||
-> Copyright
|
||||
|
||||
Gwenview is GPL. See the COPYING file for more information.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,913 @@
|
||||
# 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])])
|
||||
|
||||
# Figure out how to run the assembler. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 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 4
|
||||
|
||||
# AM_PROG_AS
|
||||
# ----------
|
||||
AC_DEFUN([AM_PROG_AS],
|
||||
[# By default we simply use the C compiler to build assembly code.
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
test "${CCAS+set}" = set || CCAS=$CC
|
||||
test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
|
||||
AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)])
|
||||
AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
|
||||
])
|
||||
|
||||
# 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])])
|
||||
|
||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright (C) 1996, 1998, 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 4
|
||||
|
||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
dnl maintainer-mode is disabled by default
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer],
|
||||
USE_MAINTAINER_MODE=$enableval,
|
||||
USE_MAINTAINER_MODE=no)
|
||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
||||
AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
AC_SUBST(MAINT)dnl
|
||||
]
|
||||
)
|
||||
|
||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
||||
|
||||
# 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,273 @@
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* If we have libkipi installed */
|
||||
#undef GV_HAVE_KIPI
|
||||
|
||||
/* Define to 1 if you have Xcursor */
|
||||
#undef GV_HAVE_XCURSOR
|
||||
|
||||
/* 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 <exiv2/image.hpp> header file. */
|
||||
#undef HAVE_EXIV2_IMAGE_HPP
|
||||
|
||||
/* 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 libmng */
|
||||
#undef HAVE_LIBMNG
|
||||
|
||||
/* 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 if you have lround */
|
||||
#undef HAVE_LROUND
|
||||
|
||||
/* 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 to 1 if the assembler supports AltiVec instructions. */
|
||||
#undef HAVE_PPC_ALTIVEC
|
||||
|
||||
/* 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 to 1 if you have the <X11/Xcursor/Xcursor.h> header file. */
|
||||
#undef HAVE_X11_XCURSOR_XCURSOR_H
|
||||
|
||||
/* Define to 1 if the assembler supports 3DNOW instructions. */
|
||||
#undef HAVE_X86_3DNOW
|
||||
|
||||
/* Define to 1 if the assembler supports MMX instructions. */
|
||||
#undef HAVE_X86_MMX
|
||||
|
||||
/* Define to 1 if the assembler supports SSE instructions. */
|
||||
#undef HAVE_X86_SSE
|
||||
|
||||
/* Define to 1 if the assembler supports SSE2 instructions. */
|
||||
#undef HAVE_X86_SSE2
|
||||
|
||||
/* Suffix for lib directories */
|
||||
#undef KDELIBSUFF
|
||||
|
||||
/* 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 `char *', as computed by sizeof. */
|
||||
#undef SIZEOF_CHAR_P
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
#undef SIZEOF_SIZE_T
|
||||
|
||||
/* The size of `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
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
/* define to 1 if -fvisibility is supported */
|
||||
#undef __KDE_HAVE_GCC_VISIBILITY
|
||||
|
||||
|
||||
#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
|
@ -0,0 +1,4 @@
|
||||
./admin/configure.in.min
|
||||
configure.in.in
|
||||
./src/configure.in.bot
|
||||
configure.in.bot
|
@ -0,0 +1,290 @@
|
||||
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., 51 Franklin Street, Fifth Floor,
|
||||
dnl Boston, MA 02110-1301, 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(gwenview-1.4.2, "3.5.7") dnl searches for some needed programs
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
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)
|
||||
|
||||
KDE_ENABLE_HIDDEN_VISIBILITY
|
||||
|
||||
KDE_CHECK_LIB(m, lround, [
|
||||
AC_DEFINE(HAVE_LROUND, 1, [Define if you have lround])
|
||||
])
|
||||
|
||||
#
|
||||
# KIPI
|
||||
#
|
||||
AC_ARG_WITH(kipi,
|
||||
AC_HELP_STRING([--without-kipi], [build Gwenview without KIPI, 'KDE Image Plugin Interface']),
|
||||
[want_kipi=$withval],
|
||||
[want_kipi=yes]
|
||||
)
|
||||
|
||||
if test "$want_kipi" = "yes"; then
|
||||
AC_MSG_NOTICE(checking if KIPI is installed)
|
||||
KDE_CHECK_HEADER(libkipi/interface.h,
|
||||
have_kipi=yes,
|
||||
have_kipi=no)
|
||||
|
||||
if test "$have_kipi" = "yes"; then
|
||||
AC_DEFINE(GV_HAVE_KIPI, 1, [If we have libkipi installed])
|
||||
GV_LIB_KIPI="-lkipi"
|
||||
AC_SUBST(GV_LIB_KIPI)
|
||||
else
|
||||
AC_MSG_WARN([KIPI is not installed. Gwenview will be build without KIPI support.])
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Imlib/Mosfet scaling
|
||||
#
|
||||
AM_PROG_AS
|
||||
|
||||
# MMX test duped from kdelibs/kdefx - it should be probably moved to admin/
|
||||
dnl -----------------------------------------------------
|
||||
dnl IA32 checks
|
||||
dnl -----------------------------------------------------
|
||||
|
||||
gv_asm_defs=
|
||||
case $host_cpu in
|
||||
i*86 )
|
||||
AC_MSG_CHECKING(for assembler support for IA32 extensions)
|
||||
|
||||
dnl MMX check
|
||||
AC_TRY_COMPILE(, [ __asm__("pxor %mm0, %mm0") ],
|
||||
[
|
||||
echo $ECHO_N "MMX yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_MMX, 1, [Define to 1 if the assembler supports MMX instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_MMX"
|
||||
], [ echo $ECHO_N "MMX no$ECHO_C" ])
|
||||
|
||||
dnl SSE check
|
||||
AC_TRY_COMPILE(,[ __asm__("xorps %xmm0, %xmm0") ],
|
||||
[
|
||||
echo $ECHO_N ", SSE yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_SSE, 1, [Define to 1 if the assembler supports SSE instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_SSE"
|
||||
], [ echo $ECHO_N ", SSE no$ECHO_C" ])
|
||||
|
||||
dnl SSE2 check
|
||||
AC_TRY_COMPILE(, [ __asm__("xorpd %xmm0, %xmm0") ],
|
||||
[
|
||||
echo $ECHO_N ", SSE2 yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_SSE2, 1, [Define to 1 if the assembler supports SSE2 instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_SSE2"
|
||||
], [ echo $ECHO_N ", SSE2 no$ECHO_C" ])
|
||||
|
||||
dnl 3DNOW check
|
||||
AC_TRY_COMPILE(, [ __asm__("femms") ],
|
||||
[
|
||||
echo $ECHO_N ", 3DNOW yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_3DNOW, 1, [Define to 1 if the assembler supports 3DNOW instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_3DNOW"
|
||||
], [ echo $ECHO_N ", 3DNOW no$ECHO_C" ])
|
||||
echo
|
||||
;;
|
||||
powerpc )
|
||||
AC_MSG_CHECKING(for assembler support for AltiVec instructions)
|
||||
dnl AltiVec check
|
||||
AC_TRY_COMPILE(, [ __asm__("mtspr 256, %0\n\t" "vand %%v0, %%v0, %%v0" : : "r"(-1) ) ],
|
||||
[
|
||||
echo $ECHO_N " yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_PPC_ALTIVEC, 1, [Define to 1 if the assembler supports AltiVec instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_PPC_ALTIVEC"
|
||||
], [ echo $ECHO_N ", AltiVec no$ECHO_C" ])
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
|
||||
GV_ASM_DEFS="$gv_asm_defs"
|
||||
AC_SUBST(GV_ASM_DEFS)
|
||||
|
||||
#
|
||||
# libmng check (for gvmngformattype.*)
|
||||
#
|
||||
LIBMNG=
|
||||
KDE_CHECK_HEADER(libmng.h,
|
||||
[
|
||||
KDE_CHECK_LIB(mng, mng_initialize,
|
||||
[
|
||||
AC_DEFINE_UNQUOTED(HAVE_LIBMNG, 1, [Define if you have libmng])
|
||||
LIBMNG="-lmng $LIBZ -lm"
|
||||
], [], $LIBZ -lm)
|
||||
])
|
||||
AC_SUBST(LIBMNG)
|
||||
if test -z "$LIBMNG"; then
|
||||
AC_WARN([Can't find libmng.h, Gwenview won't be compiled with MNG support])
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# libxcursor
|
||||
#
|
||||
KDE_CHECK_HEADERS(X11/Xcursor/Xcursor.h,
|
||||
[KDE_CHECK_LIB(Xcursor, XcursorXcFileLoadImages, [
|
||||
GV_LIB_XCURSOR=-lXcursor
|
||||
AC_DEFINE_UNQUOTED(GV_HAVE_XCURSOR, 1, [Define to 1 if you have Xcursor])
|
||||
], [ GV_LIB_XCURSOR= ], [ $X_PRE_LIBS -lX11 $X_EXTRA_LIBS ])],
|
||||
[ GV_LIB_XCURSOR= ], [#include <X11/Xlib.h>])
|
||||
AC_SUBST(GV_LIB_XCURSOR)
|
||||
if test -z "$GV_LIB_XCURSOR"; then
|
||||
AC_WARN([Can't find Xcursor.h, Gwenview won't be compiled with X cursor support])
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# libexiv2
|
||||
#
|
||||
KDE_CHECK_HEADERS(exiv2/image.hpp, have_exiv2=yes, have_exiv2=no)
|
||||
|
||||
if test "$have_exiv2" = "yes"; then
|
||||
LIB_EXIV2="-lexiv2"
|
||||
AC_SUBST(LIB_EXIV2)
|
||||
else
|
||||
AC_MSG_ERROR([You are missing libexiv2, which is required to compile Gwenview])
|
||||
DO_NOT_COMPILE="$DO_NOT_COMPILE gwenview"
|
||||
fi
|
||||
KDE_CREATE_SUBDIRSLIST
|
||||
AM_CONDITIONAL(doc_SUBDIR_included, test "x$doc_SUBDIR_included" = xyes)
|
||||
AM_CONDITIONAL(src_SUBDIR_included, test "x$src_SUBDIR_included" = xyes)
|
||||
AC_CONFIG_FILES([ Makefile ])
|
||||
AC_CONFIG_FILES([ doc/Makefile ])
|
||||
AC_CONFIG_FILES([ src/Makefile ])
|
||||
AC_CONFIG_FILES([ src/app/Makefile ])
|
||||
AC_CONFIG_FILES([ src/desktopfiles/Makefile ])
|
||||
AC_CONFIG_FILES([ src/doc/Makefile ])
|
||||
AC_CONFIG_FILES([ src/gvcore/Makefile ])
|
||||
AC_CONFIG_FILES([ src/gvdirpart/Makefile ])
|
||||
AC_CONFIG_FILES([ src/gvimagepart/Makefile ])
|
||||
AC_CONFIG_FILES([ src/imageutils/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/action/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/app/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/cursor/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/thumbnail/Makefile ])
|
||||
AC_CONFIG_FILES([ src/tools/Makefile ])
|
||||
AC_CONFIG_FILES([ src/tsthread/Makefile ])
|
||||
AC_CONFIG_FILES([ src/updates/Makefile ])
|
||||
AC_OUTPUT
|
||||
if test "$want_kipi" = "yes" ; then
|
||||
if test "$have_kipi" != "yes" ; then
|
||||
echo ""
|
||||
echo "KIPI is not installed. Gwenview will be build without KIPI support."
|
||||
echo ""
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "KIPI support has been disabled. Gwenview will be build without KIPI support."
|
||||
echo ""
|
||||
fi
|
||||
dnl Put here things to be done at the very end - telling users
|
||||
dnl about additional packages to install. Better yet is giving
|
||||
dnl each project / subdr its own configure.in.bot.
|
||||
|
||||
# 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,4 @@
|
||||
dnl Put here things to be done at the very end - telling users
|
||||
dnl about additional packages to install. Better yet is giving
|
||||
dnl each project / subdr its own configure.in.bot.
|
||||
|
@ -0,0 +1,141 @@
|
||||
#MIN_CONFIG(3.2)
|
||||
|
||||
KDE_ENABLE_HIDDEN_VISIBILITY
|
||||
|
||||
KDE_CHECK_LIB(m, lround, [
|
||||
AC_DEFINE(HAVE_LROUND, 1, [Define if you have lround])
|
||||
])
|
||||
|
||||
#
|
||||
# KIPI
|
||||
#
|
||||
AC_ARG_WITH(kipi,
|
||||
AC_HELP_STRING([--without-kipi], [build Gwenview without KIPI, 'KDE Image Plugin Interface']),
|
||||
[want_kipi=$withval],
|
||||
[want_kipi=yes]
|
||||
)
|
||||
|
||||
if test "$want_kipi" = "yes"; then
|
||||
AC_MSG_NOTICE(checking if KIPI is installed)
|
||||
KDE_CHECK_HEADER(libkipi/interface.h,
|
||||
have_kipi=yes,
|
||||
have_kipi=no)
|
||||
|
||||
if test "$have_kipi" = "yes"; then
|
||||
AC_DEFINE(GV_HAVE_KIPI, 1, [If we have libkipi installed])
|
||||
GV_LIB_KIPI="-lkipi"
|
||||
AC_SUBST(GV_LIB_KIPI)
|
||||
else
|
||||
AC_MSG_WARN([KIPI is not installed. Gwenview will be build without KIPI support.])
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Imlib/Mosfet scaling
|
||||
#
|
||||
AM_PROG_AS
|
||||
|
||||
# MMX test duped from kdelibs/kdefx - it should be probably moved to admin/
|
||||
dnl -----------------------------------------------------
|
||||
dnl IA32 checks
|
||||
dnl -----------------------------------------------------
|
||||
|
||||
gv_asm_defs=
|
||||
case $host_cpu in
|
||||
i*86 )
|
||||
AC_MSG_CHECKING(for assembler support for IA32 extensions)
|
||||
|
||||
dnl MMX check
|
||||
AC_TRY_COMPILE(, [ __asm__("pxor %mm0, %mm0") ],
|
||||
[
|
||||
echo $ECHO_N "MMX yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_MMX, 1, [Define to 1 if the assembler supports MMX instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_MMX"
|
||||
], [ echo $ECHO_N "MMX no$ECHO_C" ])
|
||||
|
||||
dnl SSE check
|
||||
AC_TRY_COMPILE(,[ __asm__("xorps %xmm0, %xmm0") ],
|
||||
[
|
||||
echo $ECHO_N ", SSE yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_SSE, 1, [Define to 1 if the assembler supports SSE instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_SSE"
|
||||
], [ echo $ECHO_N ", SSE no$ECHO_C" ])
|
||||
|
||||
dnl SSE2 check
|
||||
AC_TRY_COMPILE(, [ __asm__("xorpd %xmm0, %xmm0") ],
|
||||
[
|
||||
echo $ECHO_N ", SSE2 yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_SSE2, 1, [Define to 1 if the assembler supports SSE2 instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_SSE2"
|
||||
], [ echo $ECHO_N ", SSE2 no$ECHO_C" ])
|
||||
|
||||
dnl 3DNOW check
|
||||
AC_TRY_COMPILE(, [ __asm__("femms") ],
|
||||
[
|
||||
echo $ECHO_N ", 3DNOW yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_X86_3DNOW, 1, [Define to 1 if the assembler supports 3DNOW instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_X86_3DNOW"
|
||||
], [ echo $ECHO_N ", 3DNOW no$ECHO_C" ])
|
||||
echo
|
||||
;;
|
||||
powerpc )
|
||||
AC_MSG_CHECKING(for assembler support for AltiVec instructions)
|
||||
dnl AltiVec check
|
||||
AC_TRY_COMPILE(, [ __asm__("mtspr 256, %0\n\t" "vand %%v0, %%v0, %%v0" : : "r"(-1) ) ],
|
||||
[
|
||||
echo $ECHO_N " yes$ECHO_C"
|
||||
AC_DEFINE_UNQUOTED(HAVE_PPC_ALTIVEC, 1, [Define to 1 if the assembler supports AltiVec instructions.])
|
||||
gv_asm_defs="$gv_asm_defs -DHAVE_PPC_ALTIVEC"
|
||||
], [ echo $ECHO_N ", AltiVec no$ECHO_C" ])
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
|
||||
GV_ASM_DEFS="$gv_asm_defs"
|
||||
AC_SUBST(GV_ASM_DEFS)
|
||||
|
||||
#
|
||||
# libmng check (for gvmngformattype.*)
|
||||
#
|
||||
LIBMNG=
|
||||
KDE_CHECK_HEADER(libmng.h,
|
||||
[
|
||||
KDE_CHECK_LIB(mng, mng_initialize,
|
||||
[
|
||||
AC_DEFINE_UNQUOTED(HAVE_LIBMNG, 1, [Define if you have libmng])
|
||||
LIBMNG="-lmng $LIBZ -lm"
|
||||
], [], $LIBZ -lm)
|
||||
])
|
||||
AC_SUBST(LIBMNG)
|
||||
if test -z "$LIBMNG"; then
|
||||
AC_WARN([Can't find libmng.h, Gwenview won't be compiled with MNG support])
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# libxcursor
|
||||
#
|
||||
KDE_CHECK_HEADERS(X11/Xcursor/Xcursor.h,
|
||||
[KDE_CHECK_LIB(Xcursor, XcursorXcFileLoadImages, [
|
||||
GV_LIB_XCURSOR=-lXcursor
|
||||
AC_DEFINE_UNQUOTED(GV_HAVE_XCURSOR, 1, [Define to 1 if you have Xcursor])
|
||||
], [ GV_LIB_XCURSOR= ], [ $X_PRE_LIBS -lX11 $X_EXTRA_LIBS ])],
|
||||
[ GV_LIB_XCURSOR= ], [#include <X11/Xlib.h>])
|
||||
AC_SUBST(GV_LIB_XCURSOR)
|
||||
if test -z "$GV_LIB_XCURSOR"; then
|
||||
AC_WARN([Can't find Xcursor.h, Gwenview won't be compiled with X cursor support])
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# libexiv2
|
||||
#
|
||||
KDE_CHECK_HEADERS(exiv2/image.hpp, have_exiv2=yes, have_exiv2=no)
|
||||
|
||||
if test "$have_exiv2" = "yes"; then
|
||||
LIB_EXIV2="-lexiv2"
|
||||
AC_SUBST(LIB_EXIV2)
|
||||
else
|
||||
AC_MSG_ERROR([You are missing libexiv2, which is required to compile Gwenview])
|
||||
DO_NOT_COMPILE="$DO_NOT_COMPILE gwenview"
|
||||
fi
|
@ -0,0 +1,2 @@
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = gwenview
|
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
Binary file not shown.
After Width: | Height: | Size: 566 B |
@ -0,0 +1,70 @@
|
||||
<sect1 id='docked_windows'><title>Docked windows</title>
|
||||
<para>The &kappname; interface is composed of a number of smaller docked windows.
|
||||
Manipulating these windows can be difficult at first. To focus a particular
|
||||
window in the &kappname; interface, simply click within it.</para>
|
||||
|
||||
<para>Each docked window has a small grip bar along the top. It contains a dock/undock button
|
||||
resembling an arrow at its right end and a close button resembling the
|
||||
letter X. It looks like this:
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Grip bar of a docked window</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="dock_grip.png" format="PNG" />
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Grip bar of a docked window</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>Clicking the close button on a docked window will remove it from the interface.
|
||||
To bring it back, select its name in the <guimenu>Window</guimenu>
|
||||
menu.</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>To resize docked windows, drag the border between the
|
||||
windows.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>To re-arrange the docked windows, drag a window by its grip bar
|
||||
over to the desired position. While dragging, a small box
|
||||
outline will appear to indicate the position the window
|
||||
will take when you end the drag.
|
||||
</para>
|
||||
<para>If you wish to stack two windows and use tabs to choose between them,
|
||||
drag the window to the very center of the other window with which you wish
|
||||
to stack.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>To undock a window, either click the dock/undock button in its top right corner, or
|
||||
double-click on the window's grip bar.</para>
|
||||
<para>Double-clicking again or clicking on the dock/undock button, should return the window to its original
|
||||
position.</para>
|
||||
<para>You can also dock an undocked window by dragging its grip bar back to a
|
||||
point within the general interface, just as if you were rearranging an already
|
||||
docked window.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The file view window cannot be undocked or moved, but by moving other windows
|
||||
around, it can itself be shifted about.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>While dragging a window, press the <keycap>Escape</keycap> key to cancel the operation. To reset
|
||||
the docked windows to the default &kappname; layout, use
|
||||
<menuchoice>
|
||||
<guimenu>Window</guimenu>
|
||||
<guimenuitem>Reset</guimenuitem>
|
||||
</menuchoice>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
<!-- vim: set ft=xml: -->
|
@ -0,0 +1,69 @@
|
||||
<chapter id="external_tools">
|
||||
<title>External tools</title>
|
||||
|
||||
<para>You can easily extend &kappname; by defining external tools. These tools
|
||||
are accessible from the contextual popup menu which appears when
|
||||
right-clicking on a thumbnail or in the image view. Look in the
|
||||
<menuchoice><guimenu>External Tools</guimenu></menuchoice> entry.</para>
|
||||
|
||||
<para>&kappname; comes with a few predefined external tools, but it's very
|
||||
easy to add more through the <guilabel>Configure External Tools</guilabel> dialog. You can open
|
||||
it from <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure
|
||||
External Tools...</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
|
||||
<para>Here is how it looks:
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>External tools dialog</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="external_tools_dialog.png" format="PNG" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
|
||||
<para>In this example, I defined an external tool which will call Exiftran to
|
||||
regenerate the EXIF tags for JPEG images. Here is a more detailed description
|
||||
of its definition:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The <guilabel>Name:</guilabel> field contains the description of your
|
||||
tool, has it will appear in the menu.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The <guilabel>Command:</guilabel> field contains the command which
|
||||
will be run when this tool is invoked.
|
||||
Click on the little question mark on the right of the field to get a list
|
||||
of the keywords you can use in this field. These keywords will get
|
||||
expanded to the image files.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The button on the right lets you associate an icon with your tool.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guilabel>File Associations</guilabel> group indicates what type of
|
||||
files this tool can work with. Your tool will only appear in the
|
||||
<menuchoice><guimenu>External Tools</guimenu></menuchoice> menu if the
|
||||
selected files are of the correct type. In my example, this tool is only
|
||||
valid with JPEG images, so I choose <guilabel>Custom:</guilabel>, then
|
||||
<guilabel>image/jpeg</guilabel> and <guilabel>image/pjpeg</guilabel>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<tip>
|
||||
<para>You can find other external tool examples from
|
||||
<ulink url="http://gwenview.sourceforge.net/tools">&kappname; web site</ulink>.
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
</chapter>
|
||||
<!-- vim: set ft=xml: -->
|
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN"
|
||||
"dtd/kdex.dtd" [
|
||||
<!ENTITY kappname "Gwenview">
|
||||
<!ENTITY package "gwenview">
|
||||
<!ENTITY introduction SYSTEM "introduction.docbook">
|
||||
<!ENTITY interface SYSTEM "interface.docbook">
|
||||
<!ENTITY mouse SYSTEM "mouse.docbook">
|
||||
<!ENTITY keybindings SYSTEM "keybindings.docbook">
|
||||
<!ENTITY docked_windows SYSTEM "docked_windows.docbook">
|
||||
<!ENTITY external_tools SYSTEM "external_tools.docbook">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
<title>Gwenview User Manual</title>
|
||||
|
||||
<bookinfo>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Aurélien</firstname>
|
||||
<surname>Gâteau</surname>
|
||||
<affiliation><address><email>aurelien.gateau@free.fr</email></address></affiliation>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Christopher</firstname><surname>Martin</surname>
|
||||
<affiliation><address><email>chrsmrtn@debian.org</email></address></affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>Aurélien Gâteau</holder>
|
||||
</copyright>
|
||||
<!-- <legalnotice>&FDLNotice;</legalnotice> -->
|
||||
|
||||
<date>2005-08-21</date>
|
||||
<releaseinfo>1.2.92</releaseinfo>
|
||||
<abstract>
|
||||
<para>&kappname; is an image viewer for KDE.</para>
|
||||
</abstract>
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>image</keyword>
|
||||
<keyword>viewer</keyword>
|
||||
<keyword>artist</keyword>
|
||||
<keyword>photo</keyword>
|
||||
<keyword>picture</keyword>
|
||||
</keywordset>
|
||||
</bookinfo>
|
||||
&introduction;
|
||||
&interface;
|
||||
|
||||
&external_tools;
|
||||
|
||||
<chapter id="tips">
|
||||
<title>Tips</title>
|
||||
&mouse;
|
||||
&keybindings;
|
||||
&docked_windows;
|
||||
</chapter>
|
||||
|
||||
</book>
|
@ -0,0 +1,50 @@
|
||||
<chapter id="interface">
|
||||
<title>The interface</title>
|
||||
|
||||
<sect1 id='browse_and_view_modes'><title>Browse and View modes</title>
|
||||
|
||||
<para>By default, &kappname; opens in Browse mode.</para>
|
||||
|
||||
<para>In this mode you can easily navigate through your files and folders. As
|
||||
you can see on the screenshot, the preview window shows the current image as
|
||||
well as any embedded image comment.</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Browse Mode Screenshot</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="browse_mode.png" format="PNG" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
|
||||
<para>From the Browse mode,
|
||||
unchecking
|
||||
<menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>Return</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>View</guimenu>
|
||||
<guimenuitem>Browse</guimenuitem>
|
||||
</menuchoice>
|
||||
will put you in View mode, where the image takes all the
|
||||
space of the window.</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>View Mode Screenshot</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="view_mode.png" format="PNG" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<tip><para>You can start directly in View mode by starting &kappname; with an image
|
||||
as an argument.</para>
|
||||
</tip>
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
<!-- vim: set ft=xml: -->
|
@ -0,0 +1,27 @@
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<sect1 id="what-is-gwenview">
|
||||
<title>What is &kappname;</title>
|
||||
|
||||
<para>
|
||||
&kappname; is a fast and easy to use image viewer for KDE.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It features a folder tree window and a file list window to provide easy
|
||||
navigation of your file hierarchy. &kappname; uses docked windows, so you can
|
||||
alter its layout any way you wish. You can also browse your images in
|
||||
full-screen mode, or embedded within &konqueror; using the Image View and Kpart.</para>
|
||||
|
||||
<para>Image loading is handled by the Qt library, so &kappname; supports all
|
||||
image formats your Qt installation supports. &kappname; correctly displays images
|
||||
with an alpha channel as well as animations.</para>
|
||||
|
||||
<para>&kappname; supports the displaying and editing of EXIF comments in JPEG
|
||||
images. Lossless JPEG transforms such as rotations and mirroring are also supported.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
<!-- vim: set ft=xml: -->
|
@ -0,0 +1,21 @@
|
||||
<sect1 id="keybindings">
|
||||
<title>Key bindings</title>
|
||||
|
||||
<para>&kappname; comes with a range of keyboard shortcuts, all of which can be viewed and remapped by
|
||||
selecting <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure
|
||||
Shortcuts...</guimenuitem></menuchoice>. Note that in the Files and Folders windows,
|
||||
all the normal KDE shortcuts are functional, unless otherwise remapped.</para>
|
||||
|
||||
<para>A few of the most useful default bindings are:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para><keycap>Space</keycap>: Displays the next image in the directory.</para></listitem>
|
||||
<listitem><para><keycap>Backspace</keycap>: Displays the previous image in the directory.</para></listitem>
|
||||
<listitem><para><keycombo
|
||||
action="simul">&Ctrl;<keycap>Return</keycap></keycombo>: Toggles between Browse and View modes.</para></listitem>
|
||||
<listitem><para><keycombo action="simul">&Ctrl;
|
||||
&Shift;<keycap>F</keycap></keycombo>: Activates Full Screen mode.</para></listitem>
|
||||
<listitem><para><keycap>Escape</keycap>: Exits from Full Screen mode.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
<!-- vim: set ft=xml: -->
|
@ -0,0 +1,41 @@
|
||||
<sect1 id='mouse'><title>Using the mouse</title>
|
||||
|
||||
<sect2 id='mouse_panning'><title>Panning with the mouse</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>Holding down the left mouse button on an image allows you to
|
||||
scroll the image.</para></listitem>
|
||||
<listitem><para>The mouse wheel will scroll the image up and
|
||||
down.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
|
||||
<sect2 id='mouse_zooming'><title>Zooming with the mouse</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>Clicking the middle mouse button will toggle the auto zoom
|
||||
on/off.</para></listitem>
|
||||
<listitem><para>Hold down the Control key, then either use the mouse wheel to
|
||||
zoom in and out or left click to zoom in and right click to zoom
|
||||
out.</para></listitem>
|
||||
|
||||
<listitem><para>The mouse wheel, used while holding down the Alt key, will
|
||||
scroll the image horizontally.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
|
||||
<sect2 id='mouse_browsing'><title>Browsing with the mouse</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>Double-clicking on an image toggles Browse
|
||||
mode.</para></listitem>
|
||||
<listitem><para>By default, the mouse wheel will scroll the image up and down. But,
|
||||
this can be configured to browse the images in the current directory
|
||||
instead.</para></listitem>
|
||||
<listitem><para>Hold down the left mouse button over an image, then click the right
|
||||
button to go to the next image.</para>
|
||||
<para>Hold down the right button, then click the
|
||||
left button to load the previous image.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<!-- vim: set ft=xml: -->
|
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
@ -0,0 +1,88 @@
|
||||
CURRENT PACKAGERS
|
||||
-----------------
|
||||
|
||||
ASP Linux:
|
||||
Andrew "nording" Chernyak <nording@yandex.ru>
|
||||
|
||||
Debian:
|
||||
Christopher Martin <chrsmrtn@debian.org>
|
||||
|
||||
Fedora Core:
|
||||
Domenico Cotroneo <ricewind73@yahoo.it>
|
||||
|
||||
Mandriva:
|
||||
Angelo Naselli <anaselli@mandriva.org>
|
||||
|
||||
Red Hat:
|
||||
Bobby Rockers <brockers@dps.state.ok.us>
|
||||
|
||||
SuSE:
|
||||
Sarah "cokie" Jaromij <cokie@shitt-happens.de>
|
||||
|
||||
Slackware:
|
||||
Mark Tucker <mark@tucker.net>
|
||||
|
||||
|
||||
PAST PACKAGERS
|
||||
--------------
|
||||
|
||||
These fine people contributed binary packages:
|
||||
|
||||
Red Hat:
|
||||
Ian Koenig <iguy@ionsphere.org>
|
||||
|
||||
SuSE 7.2:
|
||||
Dario Abatianni <eisfuchs@tigress.com>
|
||||
|
||||
SuSE 9.0:
|
||||
Marco Puszina <marco@hackerwelt.de>
|
||||
|
||||
Debian:
|
||||
Michael Spanier <mail@michael-spanier.de>
|
||||
|
||||
Slackware:
|
||||
Luca Cavalli <luca.cav@tiscali.it>
|
||||
|
||||
|
||||
TRANSLATORS
|
||||
-----------
|
||||
|
||||
Back in the days when Gwenview was not in KDE Extra Gear, the following nice
|
||||
people contributed translations.
|
||||
|
||||
Dutch:
|
||||
Rindert Vonk <rindertvonk@gmx.net>
|
||||
|
||||
German:
|
||||
Robert Gogolok <robertgogolok@gmx.de>
|
||||
|
||||
Hungarian:
|
||||
Arpad Biro <biro_arpad@yahoo.com>
|
||||
|
||||
Italian:
|
||||
Marco De Simone <marco@studenti.unina.it>
|
||||
|
||||
Japanese:
|
||||
Ryota Simamoto <liangtai@nns.ne.jp>
|
||||
|
||||
Korean:
|
||||
Park Yu-Chan <super@linuxone.co.kr>
|
||||
|
||||
Norwegian:
|
||||
Rune Nordvik <rune@linuxnorge.com>
|
||||
|
||||
Polish:
|
||||
Szymon Janc <szymon@janc.int.pl>
|
||||
|
||||
Spanish:
|
||||
Daniel R. Ome <keziah@uole.com>
|
||||
|
||||
Swedish:
|
||||
Karolina Lindqvist <pgd-karolinali@algonet.se>
|
||||
|
||||
|
||||
Now translations are done by the KDE translation teams, so I don't really know
|
||||
how are the translators. I guess some of the people I quoted here are still
|
||||
working on translating Gwenview.
|
||||
|
||||
Thanks to all of you.
|
@ -0,0 +1,142 @@
|
||||
# Folders
|
||||
|
||||
Here is a description of each folder:
|
||||
|
||||
* app/
|
||||
Code specific to the standalone application (== not the KParts)
|
||||
|
||||
* desktopfiles/
|
||||
Desktop files, to start the standalone application, from the menu and from
|
||||
within Konqueror.
|
||||
|
||||
* doc/
|
||||
Man page. This is not the HTML doc. The HTML doc is in
|
||||
extragear/graphics/doc/gwenview.
|
||||
|
||||
* gvcore/
|
||||
Code shared between the application and the KParts.
|
||||
|
||||
* gvdirpart/
|
||||
The Gwenview KPart used to browse folders.
|
||||
|
||||
* gvimagepart/
|
||||
The Gwenview KPart to display images.
|
||||
|
||||
* imageutils/
|
||||
Various image code, like rotation (lossless for JPEG, classic for others),
|
||||
scaling...
|
||||
|
||||
* pics/
|
||||
Icons.
|
||||
|
||||
* spec/
|
||||
.spec files to build RPM (probably outdated)
|
||||
|
||||
* tools/
|
||||
Desktop files describing external tools.
|
||||
|
||||
* tsthread/
|
||||
A thread library written by Lubos Lunak.
|
||||
|
||||
* updates/
|
||||
Update scripts to migrate configuration files within versions.
|
||||
|
||||
|
||||
# Code
|
||||
|
||||
In this part we describe the main classes, not getting too deeply into details
|
||||
so that this document doesn't get obsoleted too fast :-)
|
||||
|
||||
|
||||
## gvcore
|
||||
### Document classes
|
||||
document.h
|
||||
document*impl.h
|
||||
|
||||
This is the heart of Gwenview. The Document class represents a media file. It
|
||||
uses the "State" design pattern to adapt its behavior depending on its state.
|
||||
The various states are implemented in the Document*Impl classes.
|
||||
It knows how to load, save, edit a comment, rotate and mirror a document.
|
||||
|
||||
|
||||
### Image loader and cache
|
||||
imageloader.h
|
||||
cache.h
|
||||
|
||||
Image loading is done by the ImageLoader classes, which work together with the
|
||||
cache to avoid loading an image multiple times.
|
||||
A loader may be shared, for example if an image is selected and a thumbnail of
|
||||
it is being generated, the same loader will be used by both.
|
||||
|
||||
|
||||
### File views
|
||||
fileviewcontroller.h
|
||||
filedetailview*.h
|
||||
filethumbnailview*.h
|
||||
fileviewbase.h
|
||||
|
||||
The main class is FileViewController, which contains the KDirLister responsible
|
||||
for listing folder content. It also contains a QWidgetStack which contains
|
||||
both the FileDetailView and the FileThumbnailView.
|
||||
FileViewBase is an abstract class, which inherits from KFileView and adds the
|
||||
concept of a "shown item": the item currently viewed in the image view.
|
||||
|
||||
|
||||
### Image view
|
||||
imageview.h
|
||||
imageviewtools.h
|
||||
|
||||
The ImageView class inherits from QScrollView to show the current image. It
|
||||
implements zooming and panning.
|
||||
The ImageViewTools implements the different behaviors: for example when you
|
||||
use the mouse wheel you will scroll (or browse): This is implemented by the
|
||||
ImageView::ScrollTool class. If you press Ctrl and use the mouse wheel, you
|
||||
will zoom in the image: This is implemented by the ImageView::ZoomTool.
|
||||
|
||||
|
||||
### ImageViewController
|
||||
|
||||
ImageViewController contains a stack which contains an ImageView and a KPart.
|
||||
The ImageView class is used to show raster images. For SVG images and movies,
|
||||
the ImageViewController loads the corresponding KPart.
|
||||
|
||||
|
||||
### File operations
|
||||
fileoperation.h
|
||||
fileopobject.h
|
||||
|
||||
These classes implements file operations: from the user interface to the actual
|
||||
operation.
|
||||
|
||||
|
||||
## app
|
||||
|
||||
### Main window
|
||||
mainwindow.h
|
||||
|
||||
The MainWindow class is responsible for gluing together all components of the
|
||||
application. It is made of a QWidgetStack which contains two pages: one for
|
||||
the docked windows (==Browse mode) and another for the ImageViewController
|
||||
(==View and Fullscreen modes).
|
||||
There is only one instance of ImageViewController. It is 'reparent'ed when the
|
||||
QWidgetStack switch between modes.
|
||||
|
||||
|
||||
### Folder view
|
||||
dirviewcontroller.h
|
||||
vtabwidget.h
|
||||
bookmarkviewcontroller.h
|
||||
treeview.h
|
||||
|
||||
These classes implement the folder view. The main class is DirViewController.
|
||||
It contains a VTabWidget, which contains an instance of the
|
||||
BoookmarkViewController and TreeView classes.
|
||||
|
||||
|
||||
## gvdirpart
|
||||
|
||||
This KPart is made of a splitter, a FileThumbnailView and an ImageView.
|
||||
|
||||
## gvimagepart
|
||||
|
||||
This KPart is simply an ImageView.
|
@ -0,0 +1,95 @@
|
||||
This file describes the coding conventions used in Gwenview.
|
||||
|
||||
|
||||
Naming
|
||||
------
|
||||
|
||||
Classes should be named like this: MyClass. The class MyClass should be defined
|
||||
in the myclass.h file and implemented in myclass.cpp.
|
||||
|
||||
Variables and functions should be named like this: myVariable. Static and
|
||||
member variables are identified by a prefix (s or m), without underscore.
|
||||
|
||||
int sStaticVariable.
|
||||
|
||||
class MyClass {
|
||||
int mMemberVariable;
|
||||
|
||||
void doSomething() {
|
||||
int localVariable;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Enum items and consts are spelled like this:
|
||||
|
||||
const int MY_CONST_VALUE=120;
|
||||
enum AnEnum { ITEM1, ITEM2, ITEM3 };
|
||||
|
||||
|
||||
Namespace
|
||||
---------
|
||||
|
||||
All code should be enclosed in the "Gwenview" namespace. Make sure the closing
|
||||
curly bracket of the namespace looks like this :
|
||||
|
||||
} // namespace
|
||||
|
||||
This avoids wondering why the curly bracket is here.
|
||||
|
||||
|
||||
Code layout
|
||||
-----------
|
||||
|
||||
Use tabs, not spaces.
|
||||
|
||||
The opening brace follows the function/class/for/while. Insert a space after
|
||||
commas and after for/while keywords.
|
||||
|
||||
void myFunction() {
|
||||
int v1;
|
||||
int v2=12;
|
||||
for (v1=0; v1<10; ++v1) {
|
||||
doSomething(v1, v2);
|
||||
}
|
||||
}
|
||||
|
||||
class MyClass {
|
||||
};
|
||||
|
||||
|
||||
If the if content is only one line long, you can place it on the same line and
|
||||
omit the curly braces, but DO NOT omit them if you place the content after the
|
||||
if.
|
||||
|
||||
// Ok
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Ok too
|
||||
if (!data) return;
|
||||
|
||||
// Bad
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
|
||||
Include files
|
||||
-------------
|
||||
|
||||
Group include files in the Qt, KDE or local groups and sort them
|
||||
alphabetically. When writing the implementation file of a class which is a
|
||||
Q_OBJECT, make sure you include the .moc file, not the .h.
|
||||
|
||||
// Qt
|
||||
#include <qobject.h>
|
||||
#include <qwidget.h>
|
||||
|
||||
// KDE
|
||||
#include <kiconview.h>
|
||||
#include <klistview.h>
|
||||
|
||||
// Local
|
||||
#include "aclass.h"
|
||||
#include "myclass.moc"
|
@ -0,0 +1,8 @@
|
||||
SUBDIRS = tsthread imageutils gvcore pics desktopfiles doc tools updates gvimagepart gvdirpart app
|
||||
|
||||
EXTRA_DIST = AUTHORS ChangeLog COPYING INSTALL NEWS README TODO CREDITS DESIGN
|
||||
|
||||
messages: rc.cpp
|
||||
$(EXTRACTRC) `find . -name "*.ui"` >> rc.cpp
|
||||
$(EXTRACTRC) `find . -name "*.rc"` >> rc.cpp
|
||||
$(XGETTEXT) `find . -name "*.cpp"` `find . -name "*.h"` -o $(podir)/gwenview.pot
|
@ -0,0 +1,4 @@
|
||||
set tabstop=4
|
||||
set shiftwidth=4
|
||||
set noexpandtab
|
||||
set makeprg=unsermake
|
@ -0,0 +1,56 @@
|
||||
bin_PROGRAMS=
|
||||
lib_LTLIBRARIES=
|
||||
|
||||
kdeinit_LTLIBRARIES = gwenview.la
|
||||
|
||||
# -D_LARGEFILE64_SOURCE is necessary on Debian Woody
|
||||
AM_CPPFLAGS = -D_LARGEFILE64_SOURCE
|
||||
|
||||
noinst_LTLIBRARIES = libgwenshared.la
|
||||
|
||||
libgwenshared_la_SOURCES = vtabwidget.cpp
|
||||
|
||||
gwenview_COMPILE_FIRST = ../gvcore/miscconfig.h ../gvcore/slideshowconfig.h ../gvcore/fileoperationconfig.h ../gvcore/fullscreenconfig.h ../gvcore/imageviewconfig.h ../gvcore/fileviewconfig.h
|
||||
|
||||
gwenview_la_SOURCES = \
|
||||
bookmarkowner.cpp \
|
||||
bookmarkviewcontroller.cpp \
|
||||
bookmarkdialogbase.ui \
|
||||
bookmarkdialog.cpp \
|
||||
configfileoperationspage.ui \
|
||||
configfullscreenpage.ui \
|
||||
configimagelistpage.ui \
|
||||
configimageviewpage.ui \
|
||||
configmiscpage.ui \
|
||||
configslideshowpage.ui \
|
||||
kipiinterface.cpp \
|
||||
mainwindow.cpp \
|
||||
metaedit.cpp \
|
||||
treeview.cpp \
|
||||
dirviewcontroller.cpp \
|
||||
configdialog.cpp \
|
||||
history.cpp \
|
||||
main.cpp
|
||||
|
||||
gwenview_la_LIBADD = libgwenshared.la ../gvcore/libgwenviewcore.la $(GV_LIB_KIPI) $(LIB_KUTILS)
|
||||
|
||||
# the library search path.
|
||||
gwenview_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
|
||||
|
||||
|
||||
# set the include path for X, qt and KDE
|
||||
INCLUDES = -I$(srcdir)/.. $(all_includes)
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
rcdir = $(kde_datadir)/gwenview
|
||||
rc_DATA = gwenviewui.rc
|
||||
|
||||
|
||||
check_PROGRAMS = testvtabwidget
|
||||
testvtabwidget_SOURCES = testvtabwidget.cpp
|
||||
testvtabwidget_LDADD = \
|
||||
libgwenshared.la \
|
||||
$(LIB_KUTILS) $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_KDEPRINT) $(LIB_QT) \
|
||||
$(LIBJPEG)
|
||||
testvtabwidget_LDFLAGS = $(all_libraries)
|
@ -0,0 +1,115 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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 "bookmarkdialog.moc"
|
||||
// Qt
|
||||
#include <qlabel.h>
|
||||
|
||||
// KDE
|
||||
#include <kfile.h>
|
||||
#include <kicondialog.h>
|
||||
#include <klineedit.h>
|
||||
#include <klocale.h>
|
||||
#include <kurlrequester.h>
|
||||
|
||||
// Local
|
||||
#include "bookmarkdialogbase.h"
|
||||
namespace Gwenview {
|
||||
|
||||
class BookmarkDialogPrivate {
|
||||
public:
|
||||
BookmarkDialogBase* mContent;
|
||||
BookmarkDialog::Mode mMode;
|
||||
};
|
||||
|
||||
BookmarkDialog::BookmarkDialog(QWidget* parent, BookmarkDialog::Mode mode)
|
||||
: KDialogBase(parent,"folderconfig",true,QString::null,Ok|Cancel)
|
||||
{
|
||||
d=new BookmarkDialogPrivate;
|
||||
d->mContent=new BookmarkDialogBase(this);
|
||||
d->mMode=mode;
|
||||
|
||||
setMainWidget(d->mContent);
|
||||
setCaption(d->mContent->caption());
|
||||
d->mContent->mUrl->setMode(KFile::Directory);
|
||||
d->mContent->mIcon->setIcon("folder");
|
||||
|
||||
connect(d->mContent->mTitle,SIGNAL(textChanged(const QString&)),
|
||||
this, SLOT(updateOk()));
|
||||
connect(d->mContent->mIcon,SIGNAL(iconChanged(QString)),
|
||||
this, SLOT(updateOk()));
|
||||
|
||||
if (mode==BOOKMARK_GROUP) {
|
||||
d->mContent->mUrlLabel->hide();
|
||||
d->mContent->mUrl->hide();
|
||||
} else {
|
||||
connect(d->mContent->mUrl,SIGNAL(textChanged(const QString&)),
|
||||
this, SLOT(updateOk()));
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case BOOKMARK_GROUP:
|
||||
setCaption( i18n("Add/Edit Bookmark Folder") );
|
||||
break;
|
||||
case BOOKMARK:
|
||||
setCaption( i18n("Add/Edit Bookmark") );
|
||||
break;
|
||||
}
|
||||
|
||||
updateOk();
|
||||
}
|
||||
|
||||
BookmarkDialog::~BookmarkDialog() {
|
||||
delete d;
|
||||
}
|
||||
|
||||
void BookmarkDialog::updateOk() {
|
||||
bool enabled=
|
||||
!d->mContent->mTitle->text().isEmpty()
|
||||
&& (d->mMode==BOOKMARK_GROUP || !d->mContent->mUrl->url().isEmpty());
|
||||
|
||||
enableButton(Ok, enabled);
|
||||
}
|
||||
|
||||
void BookmarkDialog::setIcon(const QString& icon) {
|
||||
d->mContent->mIcon->setIcon(icon);
|
||||
}
|
||||
|
||||
QString BookmarkDialog::icon() const {
|
||||
return d->mContent->mIcon->icon();
|
||||
}
|
||||
|
||||
void BookmarkDialog::setTitle(const QString& title) {
|
||||
d->mContent->mTitle->setText(title);
|
||||
}
|
||||
|
||||
QString BookmarkDialog::title() const {
|
||||
return d->mContent->mTitle->text();
|
||||
}
|
||||
|
||||
void BookmarkDialog::setURL(const QString& url) {
|
||||
d->mContent->mUrl->setURL(url);
|
||||
}
|
||||
|
||||
QString BookmarkDialog::url() const {
|
||||
return d->mContent->mUrl->url();
|
||||
}
|
||||
|
||||
} // namespace
|
@ -0,0 +1,54 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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 BOOKMARKDIALOG_H
|
||||
#define BOOKMARKDIALOG_H
|
||||
|
||||
// KDE includes
|
||||
#include <kdialogbase.h>
|
||||
namespace Gwenview {
|
||||
|
||||
class BookmarkDialogPrivate;
|
||||
|
||||
class BookmarkDialog : public KDialogBase {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Mode { BOOKMARK_GROUP, BOOKMARK };
|
||||
BookmarkDialog(QWidget* parent, Mode mode);
|
||||
~BookmarkDialog();
|
||||
|
||||
|
||||
void setIcon(const QString&);
|
||||
QString icon() const;
|
||||
void setTitle(const QString&);
|
||||
QString title() const;
|
||||
void setURL(const QString&);
|
||||
QString url() const;
|
||||
|
||||
protected slots:
|
||||
void updateOk();
|
||||
|
||||
private:
|
||||
BookmarkDialogPrivate* d;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
#endif
|
||||
|
@ -0,0 +1,109 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>BookmarkDialogBase</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>BookmarkDialogBase</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>500</width>
|
||||
<height>90</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Add New Branch</string>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QLabel" row="2" column="0">
|
||||
<property name="name">
|
||||
<cstring>mUrlLabel</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>URL:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KLineEdit" row="1" column="1" rowspan="1" colspan="2">
|
||||
<property name="name">
|
||||
<cstring>mTitle</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KURLRequester" row="2" column="1" rowspan="1" colspan="2">
|
||||
<property name="name">
|
||||
<cstring>mUrl</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="1" column="0">
|
||||
<property name="name">
|
||||
<cstring>textLabel2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Title:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="0" column="0">
|
||||
<property name="name">
|
||||
<cstring>textLabel2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Icon:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KIconButton" row="0" column="1">
|
||||
<property name="name">
|
||||
<cstring>mIcon</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer row="0" column="2">
|
||||
<property name="name">
|
||||
<cstring>spacer1</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>383</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</grid>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
</customwidgets>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>klineedit.h</includehint>
|
||||
<includehint>kurlrequester.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,53 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
// KDE
|
||||
#include <kbookmarkmenu.h>
|
||||
|
||||
// Local
|
||||
#include "bookmarkowner.moc"
|
||||
namespace Gwenview {
|
||||
|
||||
|
||||
BookmarkOwner::BookmarkOwner(QWidget* parent)
|
||||
: QObject(parent)
|
||||
{}
|
||||
|
||||
|
||||
void BookmarkOwner::openBookmarkURL(const QString& strURL)
|
||||
{
|
||||
KURL url(strURL);
|
||||
emit openURL(url);
|
||||
}
|
||||
|
||||
|
||||
QString BookmarkOwner::currentURL() const
|
||||
{
|
||||
return mURL.prettyURL();
|
||||
}
|
||||
|
||||
|
||||
void BookmarkOwner::setURL(const KURL& url)
|
||||
{
|
||||
mURL=url;
|
||||
}
|
||||
|
||||
} // namespace
|
@ -0,0 +1,53 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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 BOOKMARKOWNER_H
|
||||
#define BOOKMARKOWNER_H
|
||||
|
||||
|
||||
// KDE includes
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kurl.h>
|
||||
namespace Gwenview {
|
||||
|
||||
|
||||
class BookmarkOwner : public QObject, public KBookmarkOwner {
|
||||
Q_OBJECT
|
||||
public:
|
||||
BookmarkOwner(QWidget* parent);
|
||||
|
||||
// KBookmarkOwner interface
|
||||
void openBookmarkURL(const QString&);
|
||||
QString currentURL() const;
|
||||
|
||||
public slots:
|
||||
void setURL(const KURL&);
|
||||
|
||||
signals:
|
||||
void openURL(const KURL&);
|
||||
|
||||
private:
|
||||
KURL mURL;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
#endif
|
||||
|
@ -0,0 +1,415 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2005 Aurelien Gateau
|
||||
|
||||
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 "bookmarkviewcontroller.moc"
|
||||
|
||||
#include <memory>
|
||||
|
||||
// Qt
|
||||
#include <qcursor.h>
|
||||
#include <qheader.h>
|
||||
#include <qpopupmenu.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qvbox.h>
|
||||
|
||||
// KDE
|
||||
#include <kaction.h>
|
||||
#include <kactioncollection.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kdebug.h>
|
||||
#include <kdeversion.h>
|
||||
#include <kiconloader.h>
|
||||
#include <klistview.h>
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <kmimetype.h>
|
||||
#include <ktoolbar.h>
|
||||
#include <kurl.h>
|
||||
#include <kurldrag.h>
|
||||
|
||||
// Local
|
||||
#include "bookmarkdialog.h"
|
||||
#include "../gvcore/fileoperation.h"
|
||||
|
||||
namespace Gwenview {
|
||||
|
||||
// URLDropListView
|
||||
URLDropListView::URLDropListView(QWidget* parent)
|
||||
: KListView(parent) {
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
||||
|
||||
void URLDropListView::contentsDragMoveEvent(QDragMoveEvent* event) {
|
||||
if (KURLDrag::canDecode(event)) {
|
||||
event->accept();
|
||||
} else {
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
struct BookmarkItem : public KListViewItem {
|
||||
template <class ItemParent>
|
||||
BookmarkItem(ItemParent* parent, const KBookmark& bookmark)
|
||||
: KListViewItem(parent)
|
||||
, mBookmark(bookmark)
|
||||
{
|
||||
refresh();
|
||||
}
|
||||
|
||||
void refresh() {
|
||||
setText(0, mBookmark.text() );
|
||||
setPixmap(0, SmallIcon(mBookmark.icon()) );
|
||||
}
|
||||
|
||||
KBookmark mBookmark;
|
||||
};
|
||||
|
||||
|
||||
class BookmarkToolTip : public QToolTip {
|
||||
public:
|
||||
BookmarkToolTip(KListView* lv)
|
||||
: QToolTip(lv->viewport())
|
||||
, mListView(lv) {}
|
||||
|
||||
void maybeTip(const QPoint& pos) {
|
||||
BookmarkItem *item = static_cast<BookmarkItem*>( mListView->itemAt(pos) );
|
||||
if ( !item) return;
|
||||
if (item->mBookmark.isGroup()) return;
|
||||
|
||||
QRect rect=mListView->itemRect(item);
|
||||
tip(rect, item->mBookmark.url().prettyURL());
|
||||
};
|
||||
|
||||
KListView* mListView;
|
||||
};
|
||||
|
||||
|
||||
struct BookmarkViewController::Private {
|
||||
QVBox* mBox;
|
||||
KListView* mListView;
|
||||
KBookmarkManager* mManager;
|
||||
KURL mCurrentURL;
|
||||
std::auto_ptr<BookmarkToolTip> mToolTip;
|
||||
KActionCollection* mActionCollection;
|
||||
KURL mDroppedURL;
|
||||
|
||||
template <class ItemParent>
|
||||
void addGroup(ItemParent* itemParent, const KBookmarkGroup& group) {
|
||||
KBookmark bookmark=group.first();
|
||||
BookmarkItem* previousItem=0;
|
||||
BookmarkItem* item=0;
|
||||
for (;!bookmark.isNull(); bookmark=group.next(bookmark) ) {
|
||||
if (bookmark.isSeparator()) continue;
|
||||
|
||||
// Create the item and make sure it's placed at the end
|
||||
previousItem=item;
|
||||
item=new BookmarkItem(itemParent, bookmark);
|
||||
if (previousItem) {
|
||||
item->moveItem(previousItem);
|
||||
}
|
||||
|
||||
if (bookmark.isGroup()) {
|
||||
addGroup(item, static_cast<const KBookmarkGroup&>(bookmark) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
KBookmarkGroup findBestParentGroup() {
|
||||
KBookmarkGroup parentGroup;
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>( mListView->currentItem() );
|
||||
if (item) {
|
||||
if (item->mBookmark.isGroup()) {
|
||||
parentGroup=item->mBookmark.toGroup();
|
||||
} else {
|
||||
parentGroup=item->mBookmark.parentGroup();
|
||||
}
|
||||
} else {
|
||||
parentGroup=mManager->root();
|
||||
}
|
||||
|
||||
return parentGroup;
|
||||
}
|
||||
|
||||
void bookmarkURL(const KURL& url) {
|
||||
BookmarkDialog dialog(mListView, BookmarkDialog::BOOKMARK);
|
||||
dialog.setTitle(url.fileName());
|
||||
dialog.setURL(url.prettyURL());
|
||||
dialog.setIcon(KMimeType::iconForURL(url));
|
||||
if (dialog.exec()==QDialog::Rejected) return;
|
||||
|
||||
KBookmarkGroup parentGroup=findBestParentGroup();
|
||||
parentGroup.addBookmark(mManager, dialog.title(), dialog.url(), dialog.icon());
|
||||
mManager->emitChanged(parentGroup);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void URLDropListView::contentsDropEvent(QDropEvent* event) {
|
||||
KURL::List urls;
|
||||
if (!KURLDrag::decode(event, urls)) return;
|
||||
emit urlDropped(event, urls);
|
||||
}
|
||||
|
||||
|
||||
BookmarkViewController::BookmarkViewController(QWidget* parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
d=new Private;
|
||||
d->mManager=0;
|
||||
|
||||
d->mBox=new QVBox(parent);
|
||||
|
||||
// Init listview
|
||||
d->mListView=new URLDropListView(d->mBox);
|
||||
d->mToolTip.reset(new BookmarkToolTip(d->mListView) );
|
||||
d->mActionCollection=new KActionCollection(d->mListView);
|
||||
|
||||
d->mListView->header()->hide();
|
||||
d->mListView->setRootIsDecorated(true);
|
||||
d->mListView->addColumn(QString::null);
|
||||
d->mListView->setSorting(-1);
|
||||
d->mListView->setShowToolTips(false);
|
||||
d->mListView->setFullWidth(true);
|
||||
|
||||
connect(d->mListView, SIGNAL(clicked(QListViewItem*)),
|
||||
this, SLOT(slotOpenBookmark(QListViewItem*)) );
|
||||
connect(d->mListView, SIGNAL(returnPressed(QListViewItem*)),
|
||||
this, SLOT(slotOpenBookmark(QListViewItem*)) );
|
||||
connect(d->mListView, SIGNAL(contextMenuRequested(QListViewItem*, const QPoint&, int)),
|
||||
this, SLOT(slotContextMenu(QListViewItem*)) );
|
||||
connect(d->mListView, SIGNAL(urlDropped(QDropEvent*, const KURL::List&)),
|
||||
this, SLOT(slotURLDropped(QDropEvent*, const KURL::List&)) );
|
||||
|
||||
// Init toolbar
|
||||
KToolBar* toolbar=new KToolBar(d->mBox, "", true);
|
||||
KAction* action;
|
||||
toolbar->setIconText(KToolBar::IconTextRight);
|
||||
action=new KAction(i18n("Add a bookmark (keep it short)", "Add"), "bookmark_add", 0,
|
||||
this, SLOT(bookmarkCurrentURL()), d->mActionCollection);
|
||||
action->plug(toolbar);
|
||||
action=new KAction(i18n("Remove a bookmark (keep it short)", "Remove"), "editdelete", 0,
|
||||
this, SLOT(deleteCurrentBookmark()), d->mActionCollection);
|
||||
action->plug(toolbar);
|
||||
}
|
||||
|
||||
|
||||
BookmarkViewController::~BookmarkViewController() {
|
||||
delete d;
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::init(KBookmarkManager* manager) {
|
||||
// This method should not be called twice
|
||||
Q_ASSERT(!d->mManager);
|
||||
|
||||
d->mManager=manager;
|
||||
// For now, we ignore the caller parameter and just refresh the full list on update
|
||||
connect(d->mManager, SIGNAL(changed(const QString&, const QString&)),
|
||||
this, SLOT(fill()) );
|
||||
fill();
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::setURL(const KURL& url) {
|
||||
d->mCurrentURL=url;
|
||||
}
|
||||
|
||||
|
||||
QWidget* BookmarkViewController::widget() const {
|
||||
return d->mBox;
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::fill() {
|
||||
d->mListView->clear();
|
||||
KBookmarkGroup root=d->mManager->root();
|
||||
d->addGroup(d->mListView, root);
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::slotURLDropped(QDropEvent* event, const KURL::List& urls) {
|
||||
// Get a pointer to the drop item
|
||||
QPoint point(0,event->pos().y());
|
||||
KListView* lst=d->mListView;
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>( lst->itemAt(lst->contentsToViewport(point)) );
|
||||
|
||||
QPopupMenu menu(lst);
|
||||
int addBookmarkID=menu.insertItem( SmallIcon("bookmark_add"), i18n("&Add Bookmark"),
|
||||
this, SLOT(slotBookmarkDroppedURL()) );
|
||||
if (urls.count()==1) {
|
||||
d->mDroppedURL=*urls.begin();
|
||||
} else {
|
||||
menu.setItemEnabled(addBookmarkID, false);
|
||||
}
|
||||
|
||||
if (item) {
|
||||
menu.insertSeparator();
|
||||
KURL dest=item->mBookmark.url();
|
||||
FileOperation::fillDropURLMenu(&menu, urls, dest);
|
||||
}
|
||||
|
||||
menu.insertSeparator();
|
||||
menu.insertItem( SmallIcon("cancel"), i18n("Cancel") );
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::slotBookmarkDroppedURL() {
|
||||
d->bookmarkURL(d->mDroppedURL);
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::slotOpenBookmark(QListViewItem* item_) {
|
||||
if (!item_) return;
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>(item_);
|
||||
const KURL& url=item->mBookmark.url();
|
||||
if (!url.isValid()) return;
|
||||
emit openURL(url);
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::slotContextMenu(QListViewItem* item_) {
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>(item_);
|
||||
QPopupMenu menu(d->mListView);
|
||||
menu.insertItem(SmallIcon("bookmark_add"), i18n("Add Bookmark..."),
|
||||
this, SLOT(bookmarkCurrentURL()));
|
||||
menu.insertItem(SmallIcon("bookmark_folder"), i18n("Add Bookmark Folder..."),
|
||||
this, SLOT(addBookmarkGroup()));
|
||||
|
||||
if (item) {
|
||||
menu.insertSeparator();
|
||||
menu.insertItem(SmallIcon("edit"), i18n("Edit..."),
|
||||
this, SLOT(editCurrentBookmark()));
|
||||
menu.insertItem(SmallIcon("editdelete"), i18n("Delete"),
|
||||
this, SLOT(deleteCurrentBookmark()));
|
||||
}
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::bookmarkCurrentURL() {
|
||||
d->bookmarkURL(d->mCurrentURL);
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::addBookmarkGroup() {
|
||||
BookmarkDialog dialog(d->mListView, BookmarkDialog::BOOKMARK_GROUP);
|
||||
if (dialog.exec()==QDialog::Rejected) return;
|
||||
|
||||
KBookmarkGroup parentGroup=d->findBestParentGroup();
|
||||
KBookmarkGroup newGroup=parentGroup.createNewFolder(d->mManager, dialog.title());
|
||||
newGroup.internalElement().setAttribute("icon", dialog.icon());
|
||||
d->mManager->emitChanged(parentGroup);
|
||||
QListViewItem* item=d->mListView->currentItem();
|
||||
if (item) {
|
||||
item->setOpen(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::editCurrentBookmark() {
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>( d->mListView->currentItem() );
|
||||
Q_ASSERT(item);
|
||||
if (!item) return;
|
||||
KBookmark bookmark=item->mBookmark;
|
||||
bool isGroup=bookmark.isGroup();
|
||||
|
||||
BookmarkDialog dialog(d->mListView,
|
||||
isGroup ? BookmarkDialog::BOOKMARK_GROUP : BookmarkDialog::BOOKMARK);
|
||||
|
||||
dialog.setIcon(bookmark.icon());
|
||||
dialog.setTitle(bookmark.text());
|
||||
if (!isGroup) {
|
||||
dialog.setURL(bookmark.url().prettyURL());
|
||||
}
|
||||
if (dialog.exec()==QDialog::Rejected) return;
|
||||
|
||||
QDomElement element=bookmark.internalElement();
|
||||
element.setAttribute("icon", dialog.icon());
|
||||
if (!isGroup) {
|
||||
element.setAttribute("href", dialog.url());
|
||||
}
|
||||
|
||||
// Find title element (or create it if it does not exist)
|
||||
QDomElement titleElement;
|
||||
QDomNode tmp=element.namedItem("title");
|
||||
if (tmp.isNull()) {
|
||||
titleElement=element.ownerDocument().createElement("title");
|
||||
element.appendChild(titleElement);
|
||||
} else {
|
||||
titleElement=tmp.toElement();
|
||||
}
|
||||
Q_ASSERT(!titleElement.isNull());
|
||||
|
||||
// Get title element content (or create)
|
||||
QDomText titleText;
|
||||
tmp=titleElement.firstChild();
|
||||
if (tmp.isNull()) {
|
||||
titleText=element.ownerDocument().createTextNode("");
|
||||
titleElement.appendChild(titleText);
|
||||
} else {
|
||||
titleText=tmp.toText();
|
||||
}
|
||||
Q_ASSERT(!titleText.isNull());
|
||||
|
||||
// Set title (at last!)
|
||||
titleText.setData(dialog.title());
|
||||
|
||||
KBookmarkGroup group=bookmark.parentGroup();
|
||||
d->mManager->emitChanged(group);
|
||||
}
|
||||
|
||||
|
||||
void BookmarkViewController::deleteCurrentBookmark() {
|
||||
BookmarkItem* item=static_cast<BookmarkItem*>( d->mListView->currentItem() );
|
||||
Q_ASSERT(item);
|
||||
if (!item) return;
|
||||
KBookmark bookmark=item->mBookmark;
|
||||
|
||||
QString msg;
|
||||
QString title;
|
||||
if (bookmark.isGroup()) {
|
||||
msg=i18n("Are you sure you want to delete the bookmark folder <b>%1</b>?<br>This will delete the folder and all the bookmarks in it.")
|
||||
.arg(bookmark.text());
|
||||
title=i18n("Delete Bookmark &Folder");
|
||||
} else {
|
||||
msg=i18n("Are you sure you want to delete the bookmark <b>%1</b>?")
|
||||
.arg(bookmark.text());
|
||||
title=i18n("Delete &Bookmark");
|
||||
}
|
||||
|
||||
int response=KMessageBox::warningContinueCancel(d->mListView,
|
||||
"<qt>" + msg + "</qt>", title,
|
||||
KGuiItem(title, "editdelete")
|
||||
);
|
||||
if (response==KMessageBox::Cancel) return;
|
||||
|
||||
KBookmarkGroup group=bookmark.parentGroup();
|
||||
group.deleteBookmark(bookmark);
|
||||
d->mManager->emitChanged(group);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
@ -0,0 +1,93 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2005 Aurelien Gateau
|
||||
|
||||
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 BOOKMARKVIEWCONTROLLER_H
|
||||
#define BOOKMARKVIEWCONTROLLER_H
|
||||
|
||||
// Qt
|
||||
#include <qobject.h>
|
||||
|
||||
// KDE
|
||||
#include <klistview.h>
|
||||
#include <kurl.h>
|
||||
|
||||
class QDragMoveEvent;
|
||||
class QDropEvent;
|
||||
class QListViewItem;
|
||||
class QPoint;
|
||||
class KBookmarkManager;
|
||||
class KURL;
|
||||
|
||||
namespace Gwenview {
|
||||
|
||||
|
||||
/**
|
||||
* A listview on which the user can drop urls
|
||||
*/
|
||||
class URLDropListView : public KListView {
|
||||
Q_OBJECT
|
||||
public:
|
||||
URLDropListView(QWidget* parent);
|
||||
|
||||
signals:
|
||||
void urlDropped(QDropEvent*, const KURL::List&);
|
||||
|
||||
protected:
|
||||
virtual void contentsDragMoveEvent(QDragMoveEvent* event);
|
||||
virtual void contentsDropEvent(QDropEvent* event);
|
||||
};
|
||||
|
||||
|
||||
class BookmarkViewController : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
BookmarkViewController(QWidget*);
|
||||
~BookmarkViewController();
|
||||
|
||||
void init(KBookmarkManager*);
|
||||
|
||||
QWidget* widget() const;
|
||||
|
||||
signals:
|
||||
void openURL(const KURL&);
|
||||
|
||||
public slots:
|
||||
void setURL(const KURL&);
|
||||
|
||||
private slots:
|
||||
void slotOpenBookmark(QListViewItem*);
|
||||
void fill();
|
||||
void slotContextMenu(QListViewItem*);
|
||||
void slotURLDropped(QDropEvent*, const KURL::List&);
|
||||
void slotBookmarkDroppedURL();
|
||||
void bookmarkCurrentURL();
|
||||
void addBookmarkGroup();
|
||||
void editCurrentBookmark();
|
||||
void deleteCurrentBookmark();
|
||||
|
||||
private:
|
||||
struct Private;
|
||||
Private* d;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
#endif
|
||||
|
@ -0,0 +1,173 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigFileOperationsPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigFileOperationsPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>308</width>
|
||||
<height>252</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Configure File Operations</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel2_2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Moving & Copying Files</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_confirmCopy</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show copy dialog</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_confirmMove</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show move dialog</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>Layout2</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>TextLabel2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Default destination folder:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KURLRequester">
|
||||
<property name="name">
|
||||
<cstring>kcfg_destDir</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>3</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer10_2_2_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Deleting Files</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_confirmDelete</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Ask for confirmation</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QButtonGroup">
|
||||
<property name="name">
|
||||
<cstring>mDeleteGroup</cstring>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>NoFrame</enum>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string></string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mDeleteToTrash</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Move deleted files to the trash</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mReallyDelete</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Really delete files (dangerous)</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
</customwidgets>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>kurlrequester.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,144 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigFullScreenPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigFullScreenPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>516</width>
|
||||
<height>411</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Configure Full Screen Mode</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_showBusyPtr</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show busy mouse pointer when loading an image</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer10_2_3_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel3_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>On Screen Display</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTextEdit">
|
||||
<property name="name">
|
||||
<cstring>kcfg_osdFormat</cstring>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>PlainText</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>%f - %n/%N
|
||||
%c</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<enum>WidgetWidth</enum>
|
||||
</property>
|
||||
<property name="autoFormatting">
|
||||
<set>AutoNone</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Preview:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>mOSDPreviewLabel</cstring>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>LineEditPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>Sunken</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>file.jpg - 1024x768
|
||||
The file comment</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><qt>
|
||||
You can use the following keywords to format the On Screen Display:
|
||||
<ul>
|
||||
<li>%f: filename</li>
|
||||
<li>%p: filepath</li>
|
||||
<li>%c: comment</li>
|
||||
<li>%r: resolution</li>
|
||||
<li>%n: current image position</li>
|
||||
<li>%N: image count</li>
|
||||
<li>%a: aperture</li>
|
||||
<li>%t: exposure time</li>
|
||||
<li>%i: iso</li>
|
||||
<li>%l: focal length</li>
|
||||
</ul>
|
||||
</qt></string>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer10_2_3</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>18</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</vbox>
|
||||
</widget>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
</UI>
|
@ -0,0 +1,294 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigImageListPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigImageListPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>352</width>
|
||||
<height>437</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Configure Image List</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_showDirs</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show folders and archives</string>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer10_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_2_2</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Thumbnail View</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>Layout6</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>TextLabel1</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>1</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Margin between thumbnails:</string>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring></cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSpinBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_thumbnailMarginSize</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>UpDownArrows</enum>
|
||||
</property>
|
||||
<property name="maxValue">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="minValue">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="lineStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>Spacer7</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Information to display in the thumbnail text:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout6</cstring>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<spacer row="1" column="0">
|
||||
<property name="name">
|
||||
<cstring>spacer7</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QCheckBox" row="0" column="1">
|
||||
<property name="name">
|
||||
<cstring>mShowFileName</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>File name</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="3" column="1">
|
||||
<property name="name">
|
||||
<cstring>mShowImageSize</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Image size</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="2" column="1">
|
||||
<property name="name">
|
||||
<cstring>mShowFileSize</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>File size</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="1" column="1">
|
||||
<property name="name">
|
||||
<cstring>mShowFileDate</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>File date</string>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer10</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_2</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Thumbnail Cache</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_storeThumbnailsInCache</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Store thumbnails in cache</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_deleteCacheOnExit</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Automatically empty thumbnail cache on exit</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout7</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QPushButton">
|
||||
<property name="name">
|
||||
<cstring>mCalculateCacheSize</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Calculate Cache Size</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton">
|
||||
<property name="name">
|
||||
<cstring>mEmptyCache</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Empty Cache</string>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
</UI>
|
@ -0,0 +1,330 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigImageViewPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigImageViewPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>387</width>
|
||||
<height>404</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Configure Image View</string>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>kcfg_enlargeSmallImages</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enlarge small images when auto &zoom is activated</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="2" column="0" rowspan="1" colspan="2">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Background color:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KColorButton" row="2" column="2">
|
||||
<property name="name">
|
||||
<cstring>kcfg_backgroundColor</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer row="2" column="3" rowspan="1" colspan="3">
|
||||
<property name="name">
|
||||
<cstring>spacer2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>181</width>
|
||||
<height>21</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel" row="3" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Smoothing</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget" row="4" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>layout4</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QButtonGroup">
|
||||
<property name="name">
|
||||
<cstring>kcfg_smoothAlgorithm</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>NoFrame</enum>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string></string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mSmoothNone</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mSmoothFast</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Fast</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mSmoothNormal</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Normal</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>2</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mSmoothBest</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Best</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<widget class="Line">
|
||||
<property name="name">
|
||||
<cstring>line1</cstring>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>Sunken</enum>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QFrame">
|
||||
<property name="name">
|
||||
<cstring>frame3</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>Raised</enum>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_delayedSmoothing</cstring>
|
||||
</property>
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Delayed smoothing</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_4</cstring>
|
||||
</property>
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Using this option, Gwenview will display the image as fast as possible, and smooth it after a short delay.
|
||||
Use this option if your computer is not very fast.</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>WordBreak|AlignTop</set>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>mDelayedSmoothing</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<spacer row="5" column="4">
|
||||
<property name="name">
|
||||
<cstring>spacer10_2_3_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QButtonGroup" row="7" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>mMouseWheelGroup</cstring>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>NoFrame</enum>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string></string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mMouseWheelScroll</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Scroll current image</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mMouseWheelBrowse</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse image list</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<widget class="QLabel" row="6" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Mouse Wheel Behavior over Image</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>kcfg_showScrollBars</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show scroll bars</string>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
</customwidgets>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>mSmoothNone</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>kcfg_delayedSmoothing</receiver>
|
||||
<slot>setDisabled(bool)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>mSmoothNone</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>textLabel1_4</receiver>
|
||||
<slot>setDisabled(bool)</slot>
|
||||
</connection>
|
||||
</connections>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>kcolorbutton.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,204 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigMiscPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigMiscPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>457</width>
|
||||
<height>303</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Miscellaneous Settings</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_2_2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>What to do when leaving a modified image</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QButtonGroup">
|
||||
<property name="name">
|
||||
<cstring>kcfg_modifiedBehavior</cstring>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>NoFrame</enum>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string></string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mModifyAsk</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Ask</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mModifySave</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save silently</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton">
|
||||
<property name="name">
|
||||
<cstring>mModifyDiscard</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Discard changes</string>
|
||||
</property>
|
||||
<property name="buttonGroupId">
|
||||
<number>2</number>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer1</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>24</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QCheckBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_autoRotateImages</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Automatically rotate images on load</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer1_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>24</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Which settings should be remembered next time you start Gwenview</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout1</cstring>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<spacer row="1" column="0">
|
||||
<property name="name">
|
||||
<cstring>spacer6</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>11</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QCheckBox" row="1" column="1">
|
||||
<property name="name">
|
||||
<cstring>kcfg_rememberURL</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Last opened URL</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="0" column="1">
|
||||
<property name="name">
|
||||
<cstring>kcfg_rememberFilter</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>State of filter</string>
|
||||
</property>
|
||||
<property name="accel">
|
||||
<string></string>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer5</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>41</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</vbox>
|
||||
</widget>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
</UI>
|
@ -0,0 +1,134 @@
|
||||
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||
<class>ConfigSlideshowPage</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>ConfigSlideshowPage</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>494</width>
|
||||
<height>148</height>
|
||||
</rect>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
|
||||
<property name="name">
|
||||
<cstring>kcfg_loop</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Loop</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
|
||||
<property name="name">
|
||||
<cstring>kcfg_random</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show images in random order</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
|
||||
<property name="name">
|
||||
<cstring>kcfg_fullscreen</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start in fullscreen mode</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="3">
|
||||
<property name="name">
|
||||
<cstring>kcfg_stopAtEnd</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Stop on the last image of the folder</string>
|
||||
</property>
|
||||
<property name="whatsThis" stdset="0">
|
||||
<string>By default, if you start the slideshow from the middle of a folder, the slideshow will show all images after the start image, then all images before the start image.
|
||||
|
||||
When this option is enabled, the slideshow will stop on the last image of the folder.</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="4" column="0">
|
||||
<property name="name">
|
||||
<cstring>mDelayLabel</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>1</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Delay between images (in seconds):</string>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring></cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer row="4" column="2">
|
||||
<property name="name">
|
||||
<cstring>Spacer7_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>180</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="KDoubleSpinBox" row="4" column="1">
|
||||
<property name="name">
|
||||
<cstring>kcfg_delay</cstring>
|
||||
</property>
|
||||
<property name="maxValue">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="minValue">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="lineStep">
|
||||
<number>0.1</number>
|
||||
</property>
|
||||
<property name="acceptLocalizedNumbers">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>2</number>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
</customwidgets>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>kcfg_loop</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>kcfg_stopAtEnd</receiver>
|
||||
<slot>setDisabled(bool)</slot>
|
||||
</connection>
|
||||
</connections>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>knuminput.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,143 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
// kate: indent-mode csands; indent-width 4; replace-tabs-save off; replace-tabs off; replace-trailing-space-save off; space-indent off; tabs-indents on; tab-width 4;
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2005 Aurelien Gateau
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
// Self
|
||||
#include "dirviewcontroller.moc"
|
||||
|
||||
// Qt
|
||||
#include <qpopupmenu.h>
|
||||
|
||||
// KDE
|
||||
#include <kdebug.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kinputdialog.h>
|
||||
#include <klocale.h>
|
||||
#include <kpropsdlg.h>
|
||||
|
||||
// Local
|
||||
#include <treeview.h>
|
||||
#include <gvcore/fileoperation.h>
|
||||
|
||||
|
||||
namespace Gwenview {
|
||||
|
||||
#undef ENABLE_LOG
|
||||
#undef LOG
|
||||
//#define ENABLE_LOG
|
||||
#ifdef ENABLE_LOG
|
||||
#define LOG(x) kdDebug() << k_funcinfo << x << endl
|
||||
#else
|
||||
#define LOG(x) ;
|
||||
#endif
|
||||
|
||||
struct DirViewController::Private {
|
||||
TreeView* mTreeView;
|
||||
};
|
||||
|
||||
|
||||
DirViewController::DirViewController(QWidget* parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
d=new Private;
|
||||
|
||||
d->mTreeView=new TreeView(parent);
|
||||
|
||||
connect(d->mTreeView, SIGNAL(selectionChanged(QListViewItem*)),
|
||||
this, SLOT(slotTreeViewSelectionChanged(QListViewItem*)) );
|
||||
|
||||
connect(d->mTreeView, SIGNAL(contextMenu(KListView*, QListViewItem*, const QPoint&)),
|
||||
this, SLOT(slotTreeViewContextMenu(KListView*, QListViewItem*, const QPoint&)) );
|
||||
}
|
||||
|
||||
|
||||
DirViewController::~DirViewController() {
|
||||
delete d;
|
||||
}
|
||||
|
||||
|
||||
QWidget* DirViewController::widget() const {
|
||||
return d->mTreeView;
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::setURL(const KURL& url) {
|
||||
d->mTreeView->setURL(url);
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::slotTreeViewSelectionChanged(QListViewItem* item) {
|
||||
if (!item) return;
|
||||
LOG(d->mTreeView->currentURL());
|
||||
emit urlChanged(d->mTreeView->currentURL());
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::slotTreeViewContextMenu(KListView*, QListViewItem*, const QPoint& pos) {
|
||||
QPopupMenu menu(d->mTreeView);
|
||||
menu.insertItem(SmallIcon("folder_new"),i18n("New Folder..."),this,SLOT(makeDir()));
|
||||
menu.insertSeparator();
|
||||
menu.insertItem(i18n("Rename..."),this,SLOT(renameDir()));
|
||||
menu.insertItem(SmallIcon("editdelete"),i18n("Delete"),this,SLOT(removeDir()));
|
||||
menu.insertSeparator();
|
||||
menu.insertItem(i18n("Properties"),this,SLOT(showPropertiesDialog()));
|
||||
|
||||
menu.exec(pos);
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::makeDir() {
|
||||
if (!d->mTreeView->currentItem()) return;
|
||||
FileOperation::makeDir(d->mTreeView->currentURL(), d->mTreeView, this, SLOT(slotDirMade()) );
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::slotDirMade() {
|
||||
if (!d->mTreeView->currentItem()) return;
|
||||
d->mTreeView->currentItem()->setOpen(true);
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::renameDir() {
|
||||
if (!d->mTreeView->currentItem()) return;
|
||||
FileOperation::rename(d->mTreeView->currentURL(), d->mTreeView);
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::removeDir() {
|
||||
if (!d->mTreeView->currentItem()) return;
|
||||
|
||||
KURL::List list;
|
||||
list << d->mTreeView->currentURL();
|
||||
FileOperation::del(list, d->mTreeView);
|
||||
|
||||
QListViewItem* item=d->mTreeView->currentItem();
|
||||
if (!item) return;
|
||||
item=item->parent();
|
||||
if (!item) return;
|
||||
d->mTreeView->setCurrentItem(item);
|
||||
}
|
||||
|
||||
|
||||
void DirViewController::showPropertiesDialog() {
|
||||
(void)new KPropertiesDialog(d->mTreeView->currentURL(), d->mTreeView);
|
||||
}
|
||||
|
||||
} // namespace
|
@ -0,0 +1,71 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
// kate: indent-mode csands; indent-width 4; replace-tabs-save off; replace-tabs off; replace-trailing-space-save off; space-indent off; tabs-indents on; tab-width 4;
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2005 Aurelien Gateau
|
||||
|
||||
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 DIRVIEWCONTROLLER_H
|
||||
#define DIRVIEWCONTROLLER_H
|
||||
|
||||
// Qt
|
||||
#include "qobject.h"
|
||||
|
||||
class QListViewItem;
|
||||
class QPoint;
|
||||
class QWidget;
|
||||
class KListView;
|
||||
class KURL;
|
||||
|
||||
namespace KIO {
|
||||
class Job;
|
||||
}
|
||||
|
||||
namespace Gwenview {
|
||||
|
||||
class DirViewController : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
DirViewController(QWidget* parent);
|
||||
virtual ~DirViewController();
|
||||
QWidget* widget() const;
|
||||
|
||||
public slots:
|
||||
void setURL(const KURL&);
|
||||
|
||||
signals:
|
||||
void urlChanged(const KURL&);
|
||||
void urlRenamed(const KURL& from, const KURL& to);
|
||||
|
||||
private:
|
||||
struct Private;
|
||||
Private* d;
|
||||
|
||||
private slots:
|
||||
void slotTreeViewSelectionChanged(QListViewItem*);
|
||||
void slotTreeViewContextMenu(KListView*, QListViewItem*, const QPoint&);
|
||||
|
||||
void makeDir();
|
||||
void slotDirMade();
|
||||
void renameDir();
|
||||
void removeDir();
|
||||
void showPropertiesDialog();
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif /* DIRVIEWCONTROLLER_H */
|
@ -0,0 +1,133 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE gui SYSTEM "kpartgui.dtd">
|
||||
<kpartgui name="Gwenview" version="27">
|
||||
<MenuBar>
|
||||
<Menu name="file">
|
||||
<Action name="file_rename"/>
|
||||
<Action name="file_copy"/>
|
||||
<Action name="file_move"/>
|
||||
<Action name="file_link"/>
|
||||
<Action name="file_delete"/>
|
||||
<Separator/>
|
||||
<Action name="file_properties"/>
|
||||
</Menu>
|
||||
<Menu name="edit">
|
||||
<Action name="rotate_left"/>
|
||||
<Action name="rotate_right"/>
|
||||
<Action name="mirror"/>
|
||||
<Action name="flip"/>
|
||||
</Menu>
|
||||
<Menu name="view" noMerge="1">
|
||||
<text>&View</text>
|
||||
<Action name="reload"/>
|
||||
<Separator/>
|
||||
<Action name="switch_to_view_mode" />
|
||||
<Action name="switch_to_browse_mode" />
|
||||
<Action name="fullscreen"/>
|
||||
<Action name="slideshow"/>
|
||||
<Separator/>
|
||||
<Action name="list_mode" />
|
||||
<Action name="side_thumbnail_mode" />
|
||||
<Action name="bottom_thumbnail_mode" />
|
||||
<Action name="show_dot_files"/>
|
||||
<Separator/>
|
||||
<Menu name="colors">
|
||||
<text>&Colors</text>
|
||||
<Action name="increase_gamma"/>
|
||||
<Action name="decrease_gamma"/>
|
||||
<Action name="increase_brightness"/>
|
||||
<Action name="decrease_brightness"/>
|
||||
<Action name="increase_contrast"/>
|
||||
<Action name="decrease_contrast"/>
|
||||
<Action name="adjust_bcg"/>
|
||||
</Menu>
|
||||
<Action name="view_zoom_to_fit"/>
|
||||
<Action name="view_zoom_to_width"/>
|
||||
<Action name="view_zoom_to_height"/>
|
||||
<Action name="view_zoom_in"/>
|
||||
<Action name="view_zoom_out"/>
|
||||
<Action name="view_actual_size"/>
|
||||
<Action name="view_zoom_lock"/>
|
||||
</Menu>
|
||||
<Menu name="go_web" noMerge="1">
|
||||
<text>&Go</text>
|
||||
<Action name="first"/>
|
||||
<Action name="previous"/>
|
||||
<Action name="next"/>
|
||||
<Action name="last"/>
|
||||
<Separator/>
|
||||
<Action name="go_back"/>
|
||||
<Action name="go_forward"/>
|
||||
<Action name="go_home"/>
|
||||
<Separator/>
|
||||
<Action name="go_up"/>
|
||||
<Action name="first_sub_folder"/>
|
||||
<Action name="previous_folder"/>
|
||||
<Action name="next_folder"/>
|
||||
</Menu>
|
||||
<Action name="bookmarks"/>
|
||||
<Menu name="settings">
|
||||
<Action name="configure_tools" append="configure_merge"/>
|
||||
</Menu>
|
||||
<Menu name="plugins">
|
||||
<text>&Plugins</text>
|
||||
<Menu name="kipi_images">
|
||||
<text>Images</text>
|
||||
<ActionList name="image_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_effects">
|
||||
<text>Effects</text>
|
||||
<ActionList name="effect_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_tools">
|
||||
<text>Tools</text>
|
||||
<ActionList name="tool_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_batch">
|
||||
<text>Batch Processing</text>
|
||||
<ActionList name="batch_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_import">
|
||||
<text>Import</text>
|
||||
<ActionList name="import_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_export">
|
||||
<text>Export</text>
|
||||
<ActionList name="export_actions"/>
|
||||
</Menu>
|
||||
<Menu name="kipi_collections">
|
||||
<text>Collections</text>
|
||||
<ActionList name="collection_actions"/>
|
||||
</Menu>
|
||||
</Menu>
|
||||
<Menu name="window">
|
||||
<text>&Window</text>
|
||||
<ActionList name="winlist"/>
|
||||
<Separator/>
|
||||
<Action name="reset_dock_widgets"/>
|
||||
</Menu>
|
||||
</MenuBar>
|
||||
|
||||
<ToolBar name="mainToolBar" noMerge="1" iconText="icontextright">
|
||||
<text>Main Toolbar</text>
|
||||
<Action name="switch_to_browse_mode"/>
|
||||
<Action name="switch_to_view_mode"/>
|
||||
<Action name="fullscreen"/>
|
||||
<Action name="slideshow"/>
|
||||
</ToolBar>
|
||||
|
||||
<ToolBar name="locationToolBar">
|
||||
<text>Location Toolbar</text>
|
||||
<Action name="go_back" />
|
||||
<Action name="go_forward" />
|
||||
<Action name="go_up" />
|
||||
<Action name="go_home" />
|
||||
<Action name="clear_location" />
|
||||
<Action name="location_label" />
|
||||
<Action name="location_url" />
|
||||
<Action name="location_go" />
|
||||
</ToolBar>
|
||||
|
||||
<StatusBar/>
|
||||
|
||||
</kpartgui>
|
@ -0,0 +1,137 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
Copyright 2003 Tudor Calin
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
// KDE
|
||||
#include <kaction.h>
|
||||
#include <klocale.h>
|
||||
#include <kpopupmenu.h>
|
||||
#include <kdeversion.h>
|
||||
#include <kstdaccel.h>
|
||||
#include <kstdguiitem.h>
|
||||
|
||||
// Local
|
||||
#include "history.moc"
|
||||
namespace Gwenview {
|
||||
|
||||
|
||||
const unsigned int MAX_HISTORY_SIZE=12;
|
||||
|
||||
History::History(KActionCollection* actionCollection) {
|
||||
mPosition=mHistoryList.end();
|
||||
mMovingInHistory=false;
|
||||
|
||||
// Actions
|
||||
QPair<KGuiItem, KGuiItem> backForward = KStdGuiItem::backAndForward();
|
||||
mGoBack=new KToolBarPopupAction(backForward.first,
|
||||
KStdAccel::shortcut(KStdAccel::Back),
|
||||
this, SLOT(goBack()), actionCollection, "go_back");
|
||||
mGoForward=new KToolBarPopupAction(backForward.second,
|
||||
KStdAccel::shortcut(KStdAccel::Forward),
|
||||
this, SLOT(goForward()), actionCollection, "go_forward");
|
||||
|
||||
// Connections
|
||||
connect(mGoBack->popupMenu(),SIGNAL(activated(int)),
|
||||
this,SLOT(goBackTo(int)) );
|
||||
connect(mGoForward->popupMenu(),SIGNAL(activated(int)),
|
||||
this,SLOT(goForwardTo(int)) );
|
||||
|
||||
connect(mGoBack->popupMenu(), SIGNAL(aboutToShow()),
|
||||
this, SLOT(fillGoBackMenu()) );
|
||||
connect(mGoForward->popupMenu(), SIGNAL(aboutToShow()),
|
||||
this, SLOT(fillGoForwardMenu()) );
|
||||
}
|
||||
|
||||
|
||||
History::~History() {
|
||||
}
|
||||
|
||||
|
||||
void History::addURLToHistory(const KURL& url2) {
|
||||
KURL url( url2 );
|
||||
url.setFileName( QString::null );
|
||||
if (!mMovingInHistory) {
|
||||
if (mPosition!=mHistoryList.end() && url.equals(*mPosition, true)) return;
|
||||
|
||||
// Drop everything after current
|
||||
HistoryList::iterator it=mPosition;
|
||||
++it;
|
||||
mHistoryList.erase(it, mHistoryList.end());
|
||||
|
||||
mHistoryList.append(url);
|
||||
if(mHistoryList.count()==MAX_HISTORY_SIZE) mHistoryList.pop_front();
|
||||
mPosition=mHistoryList.fromLast();
|
||||
}
|
||||
|
||||
mGoBack->setEnabled(mPosition!=mHistoryList.begin());
|
||||
mGoForward->setEnabled(mPosition!=mHistoryList.fromLast());
|
||||
}
|
||||
|
||||
|
||||
void History::fillGoBackMenu() {
|
||||
QPopupMenu* menu=mGoBack->popupMenu();
|
||||
menu->clear();
|
||||
HistoryList::ConstIterator it;
|
||||
|
||||
int pos=1;
|
||||
for(it=mHistoryList.begin(); it!=mPosition; ++it, ++pos) {
|
||||
menu->insertItem( (*it).prettyURL(-1), pos, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void History::fillGoForwardMenu() {
|
||||
QPopupMenu* menu=mGoForward->popupMenu();
|
||||
menu->clear();
|
||||
HistoryList::ConstIterator it=mPosition;
|
||||
++it;
|
||||
|
||||
int pos=1;
|
||||
for(; it!=mHistoryList.end(); ++it, ++pos) {
|
||||
menu->insertItem( (*it).prettyURL(-1), pos, -1);
|
||||
}
|
||||
}
|
||||
|
||||
void History::goBack() {
|
||||
goBackTo(1);
|
||||
}
|
||||
|
||||
|
||||
void History::goForward() {
|
||||
goForwardTo(1);
|
||||
}
|
||||
|
||||
|
||||
void History::goBackTo(int id) {
|
||||
for (;id>0; --id) --mPosition;
|
||||
mMovingInHistory=true;
|
||||
emit urlChanged(*mPosition);
|
||||
mMovingInHistory=false;
|
||||
}
|
||||
|
||||
|
||||
void History::goForwardTo(int id) {
|
||||
for (;id>0; --id) ++mPosition;
|
||||
mMovingInHistory=true;
|
||||
emit urlChanged(*mPosition);
|
||||
mMovingInHistory=false;
|
||||
}
|
||||
|
||||
} // namespace
|
@ -0,0 +1,71 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
Copyright 2003 Tudor Calin
|
||||
|
||||
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 HISTORY_H
|
||||
#define HISTORY_H
|
||||
|
||||
// Qt
|
||||
#include <qobject.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
// KDE
|
||||
#include <kurl.h>
|
||||
|
||||
class KToolBarPopupAction;
|
||||
class KActionCollection;
|
||||
|
||||
typedef QValueList<KURL> HistoryList;
|
||||
|
||||
namespace Gwenview {
|
||||
class History : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
History(KActionCollection*);
|
||||
~History();
|
||||
|
||||
signals:
|
||||
void urlChanged(const KURL&);
|
||||
|
||||
public slots:
|
||||
void addURLToHistory(const KURL&);
|
||||
|
||||
private:
|
||||
KToolBarPopupAction* mGoBack;
|
||||
KToolBarPopupAction* mGoForward;
|
||||
HistoryList mHistoryList;
|
||||
HistoryList::Iterator mPosition;
|
||||
bool mMovingInHistory;
|
||||
|
||||
private slots:
|
||||
void fillGoBackMenu();
|
||||
void fillGoForwardMenu();
|
||||
void goBack();
|
||||
void goForward();
|
||||
void goBackTo(int);
|
||||
void goForwardTo(int);
|
||||
};
|
||||
|
||||
} // namespace
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -0,0 +1,224 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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 <config.h>
|
||||
#ifdef GV_HAVE_KIPI
|
||||
|
||||
// Qt
|
||||
#include <qdir.h>
|
||||
#include <qregexp.h>
|
||||
#include <qtimer.h>
|
||||
|
||||
// KDE
|
||||
#include <kdebug.h>
|
||||
#include <kfileitem.h>
|
||||
#include <klocale.h>
|
||||
#include <kurl.h>
|
||||
|
||||
// KIPI
|
||||
#include <libkipi/imagecollectionshared.h>
|
||||
#include <libkipi/imageinfoshared.h>
|
||||
|
||||
// Local
|
||||
#include "gvcore/archive.h"
|
||||
#include "gvcore/cache.h"
|
||||
#include "gvcore/fileviewbase.h"
|
||||
#include "gvcore/fileviewcontroller.h"
|
||||
#include "imageutils/jpegcontent.h"
|
||||
#include "kipiinterface.moc"
|
||||
namespace Gwenview {
|
||||
|
||||
#undef ENABLE_LOG
|
||||
#undef LOG
|
||||
//#define ENABLE_LOG
|
||||
#ifdef ENABLE_LOG
|
||||
#define LOG(x) kdDebug() << k_funcinfo << x << endl
|
||||
#else
|
||||
#define LOG(x) ;
|
||||
#endif
|
||||
|
||||
class ImageCollection : public KIPI::ImageCollectionShared {
|
||||
public:
|
||||
ImageCollection(KURL dirURL, const QString& name, const KURL::List& images)
|
||||
: KIPI::ImageCollectionShared()
|
||||
, mDirURL(dirURL)
|
||||
, mName(name)
|
||||
, mImages(images) {}
|
||||
|
||||
QString name() { return mName; }
|
||||
QString comment() { return QString::null; }
|
||||
KURL::List images() { return mImages; }
|
||||
KURL uploadRoot() { return KURL("/"); }
|
||||
KURL uploadPath() { return mDirURL; }
|
||||
QString uploadRootName() { return "/"; }
|
||||
bool isDirectory() { return true; }
|
||||
|
||||
private:
|
||||
KURL mDirURL;
|
||||
QString mName;
|
||||
KURL::List mImages;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class ImageInfo : public KIPI::ImageInfoShared {
|
||||
static const QRegExp sExtensionRE;
|
||||
public:
|
||||
ImageInfo(KIPI::Interface* interface, const KURL& url) : KIPI::ImageInfoShared(interface, url) {}
|
||||
|
||||
QString title() {
|
||||
QString txt=_url.fileName();
|
||||
txt.replace("_", " ");
|
||||
txt.replace(sExtensionRE, "");
|
||||
return txt;
|
||||
}
|
||||
|
||||
QString description() {
|
||||
if (!_url.isLocalFile()) return QString::null;
|
||||
|
||||
ImageUtils::JPEGContent content;
|
||||
bool ok=content.load(_url.path());
|
||||
if (!ok) return QString::null;
|
||||
|
||||
return content.comment();
|
||||
}
|
||||
|
||||
void setDescription(const QString&) {}
|
||||
|
||||
QMap<QString,QVariant> attributes() {
|
||||
return QMap<QString,QVariant>();
|
||||
}
|
||||
|
||||
void clearAttributes() {}
|
||||
|
||||
void addAttributes(const QMap<QString, QVariant>&) {}
|
||||
};
|
||||
|
||||
const QRegExp ImageInfo::sExtensionRE("\\.[a-z0-9]+$", false /*caseSensitive*/);
|
||||
|
||||
|
||||
struct KIPIInterfacePrivate {
|
||||
FileViewController* mFileView;
|
||||
};
|
||||
|
||||
|
||||
KIPIInterface::KIPIInterface( QWidget* parent, FileViewController* fileView)
|
||||
:KIPI::Interface(parent, "Gwenview kipi interface") {
|
||||
d=new KIPIInterfacePrivate;
|
||||
d->mFileView=fileView;
|
||||
|
||||
connect(d->mFileView, SIGNAL(selectionChanged()),
|
||||
this, SLOT(slotSelectionChanged()) );
|
||||
|
||||
connect(d->mFileView, SIGNAL(completed()),
|
||||
this, SLOT(slotDirectoryChanged()) );
|
||||
// delay a bit, so that it's called after loadPlugins()
|
||||
QTimer::singleShot( 0, this, SLOT( init()));
|
||||
}
|
||||
|
||||
|
||||
KIPIInterface::~KIPIInterface() {
|
||||
delete d;
|
||||
}
|
||||
|
||||
|
||||
void KIPIInterface::init() {
|
||||
slotDirectoryChanged();
|
||||
slotSelectionChanged();
|
||||
}
|
||||
|
||||
KIPI::ImageCollection KIPIInterface::currentAlbum() {
|
||||
LOG("");
|
||||
KURL::List list;
|
||||
KFileItemListIterator it( *d->mFileView->currentFileView()->items() );
|
||||
for ( ; it.current(); ++it ) {
|
||||
KFileItem* item=it.current();
|
||||
if (!Archive::fileItemIsDirOrArchive(item)) {
|
||||
list.append(it.current()->url());
|
||||
}
|
||||
}
|
||||
KURL url=d->mFileView->dirURL();
|
||||
return KIPI::ImageCollection(new ImageCollection(url, url.fileName(), list));
|
||||
}
|
||||
|
||||
|
||||
KIPI::ImageCollection KIPIInterface::currentSelection() {
|
||||
LOG("");
|
||||
KURL::List list=d->mFileView->selectedImageURLs();
|
||||
KURL url=d->mFileView->dirURL();
|
||||
return KIPI::ImageCollection(new ImageCollection(url, i18n("%1 (Selected Images)").arg(url.fileName()), list));
|
||||
}
|
||||
|
||||
|
||||
QValueList<KIPI::ImageCollection> KIPIInterface::allAlbums() {
|
||||
LOG("");
|
||||
QValueList<KIPI::ImageCollection> list;
|
||||
list << currentAlbum() << currentSelection();
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
KIPI::ImageInfo KIPIInterface::info(const KURL& url) {
|
||||
LOG("");
|
||||
return KIPI::ImageInfo( new ImageInfo(this, url) );
|
||||
}
|
||||
|
||||
int KIPIInterface::features() const {
|
||||
return KIPI::AcceptNewImages;
|
||||
}
|
||||
|
||||
/**
|
||||
* KDirLister will pick up the image if necessary, so no updating is needed
|
||||
* here, it is however necessary to discard caches if the plugin preserves timestamp
|
||||
*/
|
||||
bool KIPIInterface::addImage(const KURL& url, QString&) {
|
||||
Cache::instance()->invalidate( url );
|
||||
return true;
|
||||
}
|
||||
|
||||
void KIPIInterface::delImage(const KURL& url) {
|
||||
Cache::instance()->invalidate( url );
|
||||
}
|
||||
|
||||
// TODO currently KDirWatch doesn't have watching of files in a directory
|
||||
// implemented, so KDirLister will not inform when a file changes
|
||||
void KIPIInterface::refreshImages( const KURL::List& urls ) {
|
||||
for( KURL::List::ConstIterator it = urls.begin();
|
||||
it != urls.end();
|
||||
++it ) {
|
||||
Cache::instance()->invalidate( *it );
|
||||
}
|
||||
d->mFileView->refreshItems( urls );
|
||||
}
|
||||
|
||||
|
||||
void KIPIInterface::slotSelectionChanged() {
|
||||
emit selectionChanged(d->mFileView->selectionSize() > 0);
|
||||
}
|
||||
|
||||
|
||||
void KIPIInterface::slotDirectoryChanged() {
|
||||
emit currentAlbumChanged(d->mFileView->fileCount() > 0);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif /* GV_HAVE_KIPI */
|
@ -0,0 +1,62 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2004 Aurélien Gâteau
|
||||
|
||||
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 KIPIINTERFACE_H
|
||||
#define KIPIINTERFACE_H
|
||||
|
||||
#include <config.h>
|
||||
#ifdef GV_HAVE_KIPI
|
||||
|
||||
#include <libkipi/interface.h>
|
||||
namespace Gwenview {
|
||||
|
||||
class KIPIInterfacePrivate;
|
||||
|
||||
class FileViewController;
|
||||
|
||||
class KIPIInterface :public KIPI::Interface {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
KIPIInterface( QWidget* parent, FileViewController*);
|
||||
virtual ~KIPIInterface();
|
||||
|
||||
KIPI::ImageCollection currentAlbum();
|
||||
KIPI::ImageCollection currentSelection();
|
||||
QValueList<KIPI::ImageCollection> allAlbums();
|
||||
KIPI::ImageInfo info( const KURL& );
|
||||
int features() const;
|
||||
virtual bool addImage(const KURL&, QString& err);
|
||||
virtual void delImage( const KURL& );
|
||||
virtual void refreshImages( const KURL::List& urls );
|
||||
|
||||
private:
|
||||
KIPIInterfacePrivate* d;
|
||||
|
||||
private slots:
|
||||
void slotSelectionChanged();
|
||||
void slotDirectoryChanged();
|
||||
void init();
|
||||
};
|
||||
|
||||
#endif /* GV_HAVE_KIPI */
|
||||
} // namespace
|
||||
#endif /* KIPIINTERFACE_H */
|
||||
|
@ -0,0 +1,163 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2000-2006 Aurelien Gateau
|
||||
|
||||
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 <qdir.h>
|
||||
|
||||
#include <kaboutdata.h>
|
||||
#include <kapplication.h>
|
||||
#include <kcmdlineargs.h>
|
||||
#include <kdebug.h>
|
||||
#include <klocale.h>
|
||||
|
||||
#include "gvcore/cache.h"
|
||||
#include "gvcore/fileviewcontroller.h"
|
||||
#include <../gvcore/fileviewconfig.h>
|
||||
#include <../gvcore/miscconfig.h>
|
||||
#include "mainwindow.h"
|
||||
namespace Gwenview {
|
||||
|
||||
static KCmdLineOptions options[] = {
|
||||
{ "f", I18N_NOOP("Start in fullscreen mode"), 0 },
|
||||
{ "filter-type <all,images,videos>", I18N_NOOP("Filter by file type"), 0 },
|
||||
{ "filter-name <pattern>", I18N_NOOP("Filter by file pattern (*.jpg, 01*...)"), 0 },
|
||||
{ "filter-from <date>", I18N_NOOP("Only show files newer or equal to <date>"), 0 },
|
||||
{ "filter-to <date>", I18N_NOOP("Only show files older or equal to <date>"), 0 },
|
||||
{ "+[file or folder]", I18N_NOOP("A starting file or folder"), 0 },
|
||||
KCmdLineLastOption
|
||||
};
|
||||
|
||||
static const char version[] = "1.4.2";
|
||||
|
||||
|
||||
void applyFilterArgs(KCmdLineArgs* args, FileViewController* controller) {
|
||||
QString filterType = args->getOption("filter-type");
|
||||
QString filterName = args->getOption("filter-name");
|
||||
QString filterFrom = args->getOption("filter-from");
|
||||
QString filterTo = args->getOption("filter-to");
|
||||
// Do nothing if there is no filter
|
||||
if (filterType.isEmpty() && filterName.isEmpty()
|
||||
&& filterFrom.isEmpty() && filterTo.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QStringList typeList;
|
||||
typeList << "all" << "images" << "videos";
|
||||
int mode = typeList.findIndex(filterType);
|
||||
if (mode == -1) {
|
||||
// Default to "all"
|
||||
controller->setFilterMode(0);
|
||||
} else {
|
||||
controller->setFilterMode(mode);
|
||||
}
|
||||
|
||||
controller->setShowFilterBar(
|
||||
!filterName.isEmpty()
|
||||
|| !filterFrom.isEmpty()
|
||||
|| !filterTo.isEmpty() );
|
||||
|
||||
controller->setFilterName(filterName);
|
||||
|
||||
bool ok = false;
|
||||
QDate date;
|
||||
if (!filterFrom.isEmpty()) {
|
||||
date = KGlobal::locale()->readDate(filterFrom, &ok);
|
||||
if (!ok) {
|
||||
kdWarning() << "Invalid value for filter-from option\n";
|
||||
}
|
||||
}
|
||||
controller->setFilterFromDate(date);
|
||||
|
||||
date=QDate();
|
||||
if (!filterTo.isEmpty()) {
|
||||
date = KGlobal::locale()->readDate(filterTo, &ok);
|
||||
if (!ok) {
|
||||
kdWarning() << "Invalid value for filter-to option\n";
|
||||
}
|
||||
}
|
||||
controller->setFilterToDate(date);
|
||||
|
||||
controller->applyFilter();
|
||||
}
|
||||
|
||||
|
||||
#ifndef __KDE_HAVE_GCC_VISIBILITY
|
||||
#undef KDE_EXPORT
|
||||
#define KDE_EXPORT
|
||||
#endif
|
||||
|
||||
extern "C"
|
||||
KDE_EXPORT int kdemain (int argc, char *argv[]) {
|
||||
KAboutData aboutData("gwenview", I18N_NOOP("Gwenview"),
|
||||
version, I18N_NOOP("An image viewer for KDE"), KAboutData::License_GPL,
|
||||
"Copyright 2000-2006, The Gwenview developers",0,"http://gwenview.sourceforge.net");
|
||||
aboutData.addAuthor("Aurélien Gâteau", I18N_NOOP("Main developer"), "aurelien.gateau@free.fr");
|
||||
aboutData.addAuthor("Luboš Luňák", I18N_NOOP("Developer"), "l.lunak@suse.cz");
|
||||
|
||||
aboutData.addCredit("Frank Becker", I18N_NOOP("Fast JPEG thumbnail generation (v0.13.0)"), "ff@telus.net");
|
||||
aboutData.addCredit("Tudor Calin", I18N_NOOP("Address bar (v0.16.0)\nHistory support (v1.0.0)"), "tudor_calin@mymail.ro");
|
||||
aboutData.addCredit("Avinash Chopde", I18N_NOOP("File operation patch (v0.9.2)"), "avinash@acm.org");
|
||||
aboutData.addCredit("Marco Gazzetta", I18N_NOOP("Fixed crash when trying to generate a thumbnail for a broken JPEG file (v0.16.0)"), "mililani@pobox.com");
|
||||
aboutData.addCredit("GeniusR13", I18N_NOOP("Fixed compilation on KDE 3.0 (v0.16.1)"), "geniusr13@gmx.net");
|
||||
aboutData.addCredit("Ian Koenig", I18N_NOOP("First RPM spec file"), "iguy@ionsphere.org");
|
||||
aboutData.addCredit("Meni Livne", I18N_NOOP("Toolbar layout patch for RTL languages (v0.16.0)"), "livne@kde.org");
|
||||
aboutData.addCredit("Angelo Naselli", I18N_NOOP("Printing support (v1.0.0)"), "anaselli@linux.it");
|
||||
aboutData.addCredit("Jos van den Oever", I18N_NOOP("File info view (v1.0.0)\nPatch to toggle auto-zoom on click (v1.0.0)"), "jos@vandenoever.info");
|
||||
aboutData.addCredit("Jeroen Peters", I18N_NOOP("Configurable mouse wheel behavior (v1.1.1)"), "jpeters@coldmail.nl");
|
||||
aboutData.addCredit("Andreas Pfaller", I18N_NOOP("Option to prevent Gwenview from automatically loading the first image of a folder (v0.15.0)"), "apfaller@yahoo.com.au");
|
||||
aboutData.addCredit("Renchi Raju", I18N_NOOP("Fixed thumbnail generation to share the thumbnail folder of Konqueror v3 (v0.15.0)"), "renchi@green.tam.uiuc.edu");
|
||||
aboutData.addCredit("Michael Spanier", I18N_NOOP("Patch for mouse navigation (v0.7.0)"), "mail@michael-spanier.de");
|
||||
aboutData.addCredit("Christian A Strømmen", I18N_NOOP("Integration in Konqueror folder context menu"), "number1@realityx.net");
|
||||
|
||||
KCmdLineArgs::init( argc, argv, &aboutData );
|
||||
KCmdLineArgs::addCmdLineOptions( options );
|
||||
|
||||
KApplication kapplication;
|
||||
|
||||
if (kapplication.isRestored()) {
|
||||
RESTORE(MainWindow)
|
||||
} else {
|
||||
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
||||
|
||||
MainWindow *mainWindow = new MainWindow;
|
||||
applyFilterArgs(args, mainWindow->fileViewController());
|
||||
|
||||
bool fullscreen=args->isSet("f");
|
||||
if (fullscreen) mainWindow->setFullScreen(true);
|
||||
|
||||
KURL url;
|
||||
if (args->count()>0) {
|
||||
url=args->url(0);
|
||||
} else {
|
||||
if (MiscConfig::rememberURL() && MiscConfig::history().count() > 0) {
|
||||
url = KURL(MiscConfig::history()[0]);
|
||||
} else {
|
||||
url.setPath( QDir::currentDirPath() );
|
||||
}
|
||||
}
|
||||
mainWindow->openURL(url);
|
||||
|
||||
mainWindow->show();
|
||||
}
|
||||
|
||||
return kapplication.exec();
|
||||
}
|
||||
|
||||
} // namespace
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,138 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Copyright (c) 2003 Jos van den Oever
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
// Qt
|
||||
#include <qlabel.h>
|
||||
#include <qtextedit.h>
|
||||
#include <qfileinfo.h>
|
||||
|
||||
// KDE
|
||||
#include <kdeversion.h>
|
||||
#include <klocale.h>
|
||||
|
||||
// Local
|
||||
#include "gvcore/document.h"
|
||||
#include "metaedit.moc"
|
||||
namespace Gwenview {
|
||||
|
||||
// FIXME: Why doesn't MetaEdit inherits from QTextEdit rather than QVBox?
|
||||
MetaEdit::MetaEdit(QWidget *parent, Document *gvp, const char *name)
|
||||
: QVBox(parent, name)
|
||||
, mEmpty(true)
|
||||
, mDocument(gvp)
|
||||
{
|
||||
mCommentEdit=new QTextEdit(this);
|
||||
mCommentEdit->installEventFilter(this);
|
||||
connect(mCommentEdit, SIGNAL(modificationChanged(bool)),
|
||||
this, SLOT(setModified(bool)));
|
||||
connect(mDocument,SIGNAL(loaded(const KURL&)),
|
||||
this,SLOT(updateContent()) );
|
||||
connect(mCommentEdit, SIGNAL(textChanged()),
|
||||
this, SLOT(updateDoc()) );
|
||||
updateContent();
|
||||
mCommentEdit->setMinimumHeight(int (mCommentEdit->fontMetrics().height() * 1.5) );
|
||||
}
|
||||
|
||||
|
||||
MetaEdit::~MetaEdit() {
|
||||
}
|
||||
|
||||
|
||||
bool MetaEdit::eventFilter(QObject*, QEvent *event) {
|
||||
if (mEmpty
|
||||
&& (mDocument->commentState()==Document::WRITABLE)
|
||||
&& (event->type()==QEvent::FocusIn || event->type()==QEvent::FocusOut)
|
||||
) {
|
||||
setEmptyText();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void MetaEdit::setModified(bool m) {
|
||||
if (m && mEmpty) {
|
||||
mEmpty = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MetaEdit::updateContent() {
|
||||
if (mDocument->isNull()) {
|
||||
setMessage(i18n("No image selected."));
|
||||
return;
|
||||
}
|
||||
|
||||
if (mDocument->commentState() == Document::NONE) {
|
||||
setMessage(i18n("This image cannot be commented."));
|
||||
return;
|
||||
}
|
||||
|
||||
QString comment=mDocument->comment();
|
||||
mEmpty = comment.isEmpty();
|
||||
if (mEmpty) {
|
||||
setEmptyText();
|
||||
return;
|
||||
}
|
||||
setComment(comment);
|
||||
}
|
||||
|
||||
|
||||
void MetaEdit::updateDoc() {
|
||||
if ((mDocument->commentState()==Document::WRITABLE) && mCommentEdit->isModified()) {
|
||||
mDocument->setComment(mCommentEdit->text());
|
||||
mCommentEdit->setModified(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MetaEdit::setEmptyText() {
|
||||
Q_ASSERT(mDocument->commentState()!=Document::NONE);
|
||||
if (mDocument->commentState()==Document::WRITABLE) {
|
||||
if (mCommentEdit->hasFocus()) {
|
||||
setComment("");
|
||||
} else {
|
||||
setMessage(i18n("Type here to add a comment to this image."));
|
||||
}
|
||||
} else {
|
||||
setMessage(i18n("No comment available."));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Use mCommentEdit to show the comment and let the user edit it
|
||||
*/
|
||||
void MetaEdit::setComment(const QString& comment) {
|
||||
Q_ASSERT(mDocument->commentState()!=Document::NONE);
|
||||
mCommentEdit->setTextFormat(QTextEdit::PlainText);
|
||||
mCommentEdit->setReadOnly(mDocument->commentState()==Document::READ_ONLY);
|
||||
mCommentEdit->setText(comment);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Use mCommentEdit to display a read-only message
|
||||
*/
|
||||
void MetaEdit::setMessage(const QString& msg) {
|
||||
mCommentEdit->setTextFormat(QTextEdit::RichText);
|
||||
mCommentEdit->setReadOnly(true);
|
||||
mCommentEdit->setText(QString("<i>%1</i>").arg(msg));
|
||||
}
|
||||
|
||||
} // namespace
|
@ -0,0 +1,59 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab
|
||||
/*
|
||||
Copyright (c) 2003 Jos van den Oever
|
||||
|
||||
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 METAEDIT_H
|
||||
#define METAEDIT_H
|
||||
|
||||
// Qt
|
||||
#include <qvbox.h>
|
||||
|
||||
// KDE
|
||||
#include <kfilemetainfo.h>
|
||||
class QTextEdit;
|
||||
|
||||
namespace Gwenview {
|
||||
|
||||
class Document;
|
||||
|
||||
class MetaEdit : public QVBox {
|
||||
Q_OBJECT
|
||||
public:
|
||||
MetaEdit(QWidget *parent, Document*, const char *name="");
|
||||
~MetaEdit();
|
||||
protected:
|
||||
bool eventFilter(QObject *, QEvent *);
|
||||
private slots:
|
||||
void updateContent();
|
||||
void updateDoc();
|
||||
void setModified(bool);
|
||||
|
||||
private:
|
||||
bool mEmpty;
|
||||
Document* mDocument;
|
||||
QTextEdit* mCommentEdit;
|
||||
|
||||
void setComment(const QString&);
|
||||
void setMessage(const QString&);
|
||||
void setEmptyText();
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
#endif
|
||||
|
@ -0,0 +1,48 @@
|
||||
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
|
||||
// kate: indent-mode csands; indent-width 4; replace-tabs-save off; replace-tabs off; replace-trailing-space-save off; space-indent off; tabs-indents on; tab-width 4;
|
||||
/*
|
||||
Gwenview - A simple image viewer for KDE
|
||||
Copyright 2005 Aurelien Gateau
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
// Qt
|
||||
#include <qlabel.h>
|
||||
|
||||
// KDE
|
||||
#include <kapplication.h>
|
||||
#include <kaboutdata.h>
|
||||
#include <kcmdlineargs.h>
|
||||
#include <kiconloader.h>
|
||||
|
||||
// Local
|
||||
#include <vtabwidget.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
KAboutData aboutData("testvtabwidget", "testvtabwidget", "0");
|
||||
KCmdLineArgs::init( argc, argv, &aboutData );
|
||||
KApplication app;
|
||||
|
||||
Gwenview::VTabWidget tabWidget(0);
|
||||
QLabel* lbl=new QLabel("label 1", &tabWidget);
|
||||
tabWidget.addTab(lbl, SmallIcon("text"), "tab1");
|
||||
lbl=new QLabel("label 2", &tabWidget);
|
||||
tabWidget.addTab(lbl, SmallIcon("image"), "tab2");
|
||||
|
||||
app.setMainWidget(&tabWidget);
|
||||
tabWidget.show();
|
||||
app.exec();
|
||||
}
|