Import Upstream version 0.38.0
This commit is contained in:
commit
96f3f4e601
|
@ -0,0 +1,10 @@
|
|||
Authors: Ke Wang (ke.wang@sun.com)
|
||||
Li Yuan (lee.yuan@oracle.com)
|
||||
Magdalen Berns (m.berns@thismagpie.com)
|
||||
Samuel Thibault (samuel.thibault@ens-lyon.org)
|
||||
Giuseppe Capaldo (giuseppecapaldo93@gmail.com)
|
||||
|
||||
Contains inspiration and possibly a little code from java-access-bridge, written
|
||||
by:
|
||||
Bill Haneman (bill.haneman@sun.com)
|
||||
Louise Miller
|
|
@ -0,0 +1,504 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, 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.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library 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.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
|
@ -0,0 +1,458 @@
|
|||
2d362db Wrapper: emit object:visible-data-changed signals
|
||||
b7b0017 JNI Remove commented out code
|
||||
f50641c Build: fix unused param warning in Atk init functions
|
||||
493d3bc JNI: include AtkWrapper.h in AtkWrapper.c
|
||||
3a467ab Build: include--enable-compile-warning option
|
||||
6085986 JNI: Create AtkWrapper.h
|
||||
c0a1dc2 JNI: create prototype for access init and shutdown
|
||||
5ec8c43 JNI/Wrapper remove get_text before/after offset
|
||||
436034a Wrapper: Create java AtkTextGranularity interface
|
||||
3d5190f HACKING: remove get_index_at from AtkTable list
|
||||
626b62d JNI/Wrapper: remove jaw_table_get_index_at
|
||||
f9665d8 JNI: Create jaw_editable_text_set_run_attributes
|
||||
c667c6d Wrapper: Create setRunAttributes in AtkEditableText
|
||||
ead4304 UHACKING: remove AtkValue recommendations
|
||||
20c4f46 JNI: call AtkValue getIncrement java method
|
||||
194b59b Build: make with PLATFORM_CFLAGS
|
||||
03e77fa JNI: fix unused event listener warnings in jaw_util
|
||||
4cd782c Create jaw_action_get_localized_name & getLocalizedName
|
||||
f66c939 HACKING: remove set_current_value recommendation
|
||||
56d1017 JNI: replace jaw_set_current_value with jaw_value_set_value
|
||||
7e023e7 JNI: clean away deprecated implementors
|
||||
dddf8a4 Implement bounds-changed signal in AtkWrapper
|
||||
56a9829 JNI: create jaw_value_get_range
|
||||
8ae59cf JNI: minor formatting
|
||||
2f60526 HACKING: remove get_column_span from AtkTableCell list
|
||||
20b6f49 JNI Create jaw_table_cell_get_column_span
|
||||
6c6f8f4 Wrapper: Create getColumnSpan in AtkTableCell
|
||||
2daa369 HACKING: remove jaw_table_cell_get_row_span
|
||||
6e0ad07 JNI: Create jaw_table_cell_get_row_span
|
||||
35c961d Wrapper create getRowSpan in AtkTableCell
|
||||
55ab1c6 HACKING: remove get_row_column_span
|
||||
5e76875 JNI: Create jaw_table_cell_get_row_column_span
|
||||
7279fd1 Wrapper: Create getRowColumnSpan in AtkTableCell
|
||||
faa9f0a HACKING: remove get_position from AtkTableCell list
|
||||
02f847d JNI: Create jaw_table_cell_get_position
|
||||
a4e84b3 Wrapper: Create getPosition for AtkTableCell
|
||||
a398eb6 JNI: use correct descriptor for getTable methid
|
||||
d192274 Build: remove AC_PROG_RANLIB from configure.ac
|
||||
e3353d7 JNI: remove custom implementation of util listeners
|
||||
213288b Build: don't use hard path for HOME install
|
||||
38062ef Build: remove AC_ISC_POSIX from configure.ac
|
||||
f527e3a Release 0.33.2
|
||||
3272fde Build: set AC_CONFIG_FILES for AC_OUTPUT
|
||||
07d38bd Build: set JAVA_HOME before setting J path macros
|
||||
d43e0d9 Wrapper: add or remove ColumnSelection return false
|
||||
37ab55b HACKING: remove set_summary from table list
|
||||
582547a JNI: Create jaw_table_set_summary
|
||||
f04b199 Wrapper: Create setSummary in AtkTable
|
||||
410ae8c HACKING: remove set_caption from table list
|
||||
e6b3492 JNI: Create jaw_table_set_caption
|
||||
519074f Wrapper: Create setCaption in AtkTable
|
||||
f35407a Build: Address warning in autogen.sh
|
||||
dad0250 Update copyright for jawcomponent and AtkComponent
|
||||
11be3ba JNI: fix java descriptor for set_extents call
|
||||
7f0e70b JNI: minor formatting in jawtable.c
|
||||
20d0e86 HACKING: remove set_column_header
|
||||
f3e635a JNI: Create jaw_table_set_column_header
|
||||
c59ceb0 Wrapper: Create setColumnHeader in AtkTable
|
||||
99171b4 HACKING: remove set_row_header
|
||||
046bb83 JNI: Create jaw_table_set_row_header
|
||||
542cba0 Wrapper: Create setRowHeader in AtkTable
|
||||
d4d9dcc HACKING: remove set_column_description
|
||||
d958b3c HACKING: remove set_row_description
|
||||
4b88e3b Wrapper: Create setColumnDescription in AtkTable
|
||||
f369fb1 JNI: Create jaw_table_set_column_description
|
||||
0eeb57c Wrapper: Create setRowDescription in AtkTable
|
||||
8c91d01 JNI: Create jaw_table_set_row_description
|
||||
c907993 Add links to atk table pointers
|
||||
7b982b2 JNI: fix jawtable style and formatting
|
||||
9b30dd6 HACKING: remove public ATK methods from text listing
|
||||
cfaa744 HACKING: format link
|
||||
e901dd1 HACKING: add link to wiki page
|
||||
cf9af15 HACKING: remove pointless header
|
||||
addc08c HACKING: Add information on debugging
|
||||
932bbe8 HACKING: update list of implemented functions
|
||||
288ee82 Wrapper: Fix for window:destroy events
|
||||
095603b JNI: window events use g_signal_emit_by_name
|
||||
1a59e45 Build: remove gcc from AC_PROG_CXX
|
||||
cebb7bc Build: fix configure.ac warning
|
||||
4915bdd Build: fix AC_PROG_CXX missing macro
|
||||
0b4386d Build: fix missing AC_PATH_X warning
|
||||
18028d3 Build: add bug report info to AC_INIT
|
||||
61e0c85 revert to commit eda0e53
|
||||
b191b72 Build: fix JAVA_SRC wildcard compiler warning
|
||||
4078b8c Build: fix DEP_CLASSES wildcard compiler warning
|
||||
eda0e53 Git: Ignore netbeans project files
|
||||
a22f707 gitignore: remove comment
|
||||
7ee6025 Git: Ignore intellij project files
|
||||
60a1077 JAR: Add manifest
|
||||
b2fccac Wrapper: add check for WINDOW to get_layer
|
||||
a43cf94 Wrapper: create getDescription in AtkAction
|
||||
62fd94a JNI: Create jaw_action_set_description
|
||||
2167afc JNI: Create jaw_object_ref_child
|
||||
ef1d041 JNI: Minor formatting improvement
|
||||
fe3cbcf JNI: Create jaw_object_ref_relation_set
|
||||
510067e Wrapper: Use checked operations
|
||||
3c73d3a JNI: Create jaw_impl_get_object_hash_table
|
||||
b6ffbf7 JNI: Fix unused warning in jaw_object_set_role
|
||||
038384c JNI: fix unused variable warning in set_parent
|
||||
227ec21 JNI: Fix unused variable warning in jaw_object_get_parent
|
||||
2efa160 Release 0.33.1
|
||||
35caeed Build: Use PLATFORM_LDFLAGS
|
||||
4ed46b8 Build: tidy up root check
|
||||
462d16d Build: fix unrecognised warning
|
||||
75ffc2f Build: Remove unsused
|
||||
b0eba07 Build: do not repeat autoreconf check
|
||||
56fde82 Implement AtkTableCell interface wrapper class
|
||||
73b1a69 JNI: Create jaw_object_get_object_locale
|
||||
5f583c6 Build: Add darwin includes
|
||||
be87bd1 JNI check g_object is not null before ref
|
||||
6a9f8d6 Build: fix duplicate symbol error
|
||||
a522e2e JNI: create jaw_object_set_role
|
||||
014f829 JNI: create jaw_object_set_parent
|
||||
d6dc33c JNI: create jaw_object_set_description
|
||||
5e166eb JNI: Create jaw_object_set_name
|
||||
703b05d JNI: create jaw_object_get_parent for JawObject
|
||||
6ee2e71 JNI: Create jaw_object_initialize
|
||||
e745cae Maintainership: update bugzilla info
|
||||
d7468d5 Wrapper: Remove unnecessary java print statements
|
||||
15efe67 Build: include $JDK_SRC/include/$host_os
|
||||
fb1b616 Create JawTableCellIface and AtkTableCell
|
||||
81d962a JNI: create jaw_table_add_column_selection
|
||||
6764dbb Build: fix root build configuration
|
||||
573d850 Build: fix non-root install configuration
|
||||
f7746cb JNI: create jaw_table_add_row_selection
|
||||
da1612d JNI: Create jaw_window_add_signal function
|
||||
f15e0ad Revert to d53bd87
|
||||
8733331 JNI: Fix JRE error when running java apps
|
||||
b1b75e8 JNI: Create JAW_TYPE_WINDOW
|
||||
dc471c4 Wrapper: fix bug in AtkWindow
|
||||
85683e9 HACKING: update JawWindowIface signals info
|
||||
e234b6b Create jaw_table_cell_get_position
|
||||
08a8116 HACKING: update list of unimplemented functions
|
||||
75a675c Create JawTableCellIface and AtkTableCell
|
||||
833638c JNI: fix crash when turning orca off
|
||||
7a745c7 JNI: Do not set windows signals explicitly
|
||||
1583a0b Maintainership: update bugzilla info
|
||||
3133c34 JNI check g_object is not null before ref
|
||||
1436754 JNI: create jaw_table_add_column_selection
|
||||
7453f5b JNI: create jaw_table_add_row_selection
|
||||
d6345cb Wrapper: emit visible-data-changed signals
|
||||
82f32ce Build: fix root build configuration
|
||||
e2f3680 Wrapper: add check for WINDOW to get_layer
|
||||
cca0fff JNI: Remove jawwindow.h include from jawimpl
|
||||
383c469 JNI: remove need for jawwindow.h
|
||||
b4353ae JNI: remove jaw_object_state_change
|
||||
3cb0b94 JNI: Create jaw_object_get_object_locale
|
||||
e7faa8e JNI: Init windows iface via impl & util
|
||||
00ac829 JNI: remove atk-bridge include from jawobject.h
|
||||
3378dd4 JNI: create jaw_object_set_role
|
||||
c97520e JNI: create jaw_object_peek_parent
|
||||
68e1414 JNI: Remove unused from JawObject
|
||||
dbda22b JNI: create jaw_object_set_parent
|
||||
d24df6e JNI: create jaw_object_set_description
|
||||
54dcfc6 JNI: Create jaw_object_set_name
|
||||
eaed794 JNI: Create jaw_impl_get_atk_relation_type_from_java_key
|
||||
a3d1600 JNI: create jaw_object_ref_relation_set
|
||||
317befb JNI: create jaw_object_ref_child
|
||||
c3f1bd4 JNI: Create jaw_object_notify_state_change
|
||||
77d3997 JNI: create jaw_object_get_parent for JawObject
|
||||
7ec03a7 JNI: Create jaw_object_initialize
|
||||
75147c0 Build: fix non-root install configuration
|
||||
d7b1980 Build: fix duplicate symbol error
|
||||
0b5c3e9 Build: Add darwin includes
|
||||
e2d096f Build: Add JNI_INCLUDES after CHECK_JNI
|
||||
23c01fa Build: remove unused
|
||||
20668ec JNI: remove unneeded string.h include
|
||||
c15eee6 Build: include $JDK_SRC/include/$host_os
|
||||
cf4927a JNI: Create JawWindow for AtkWindow signals
|
||||
d53bd87 JNI: return with G_SOURCE_REMOVE
|
||||
9b54bfe JNI: Initialise variables before using
|
||||
4339b8b JNI: Use gdk_threads_add_idle() instead of g_idle_add()
|
||||
3b9ec7f JNI: Remove gtk thread functions
|
||||
b6fd368 Remove autogenerated files
|
||||
a14a35e GConf is not needed; remove it as a requirement
|
||||
59a10ad Release 0.33.0
|
||||
c26046a JNI: GINT_TO_POINTER cast for g_hash_table_lookup arg
|
||||
5f1dfcb JNI: create NewGlobalRef for gdk threads
|
||||
236b9dd JNI: fix crash on java applications
|
||||
5218010 JNI: fix jawimpl type error
|
||||
2a6dd6c JNI: only show warnings with JAW_DEBUG=1
|
||||
62edb07 JNI: remove data message
|
||||
0067a0e Call gtk threads only once
|
||||
3595f83 Release 0.32.92
|
||||
ebcf2ff JNI: return JNI_ERR if JNI is NULL
|
||||
f65ebb7 JNI: Format jawaction
|
||||
340d6a5 Wrapper: Don't set bounds in set_extents
|
||||
6fce7ec JNI: Add NULL check before referencing gobjects
|
||||
da3b29a JNI: Use guint type not gint
|
||||
36b3a4a JNI: Make use of dispatch constants
|
||||
86f5eb2 JNI: get_instance with component_removed_handler
|
||||
4061ce5 JNI: get instance in window_deactivate_handler
|
||||
fd00cca JNI find instance for object_state_change_handler
|
||||
01abf43 HACKING: Add some convention and style info
|
||||
74b7d96 JNI: organise some debug
|
||||
b4f4b5e JNI: Use consistent debug messages
|
||||
88ee903 JNI use IIII for method argument
|
||||
5f7d020 HACKING: remove unimplemented deprecated functions
|
||||
08c4311 JNI: implement DetachCurrentThread function
|
||||
399eb9b JNI-Wrapper: remove get_size and get_position
|
||||
0fc6221 Wrapper: remove state ARMED condition
|
||||
443947d Revert "Wrapper: remove state ARMED condition"
|
||||
82d3351 Wrapper: remove state ARMED condition
|
||||
795a04e Wrapper: minor formatting
|
||||
3b71e11 Wrapper: Minor formatting improvement
|
||||
d625c15 Build: Set 1.6 as minimum java version
|
||||
bca842b HACKING: describe state of object class
|
||||
f4db2a6 JNI: improve formatting of jawtext
|
||||
1cfd5ba JNI: format jawutil style
|
||||
2d20481 JNI: fix casting warning
|
||||
39a672b uncomment gtk_threads functions
|
||||
372a884 Wrapper: Add documentation and formatting
|
||||
50e2b59 Wrapper: Add isTopLevel static method
|
||||
cbdd3d2 Release 0.32.90
|
||||
e5c1782 JNI: get name before checking for COMBO BOX
|
||||
5ee3b8b update copyright
|
||||
67f7912 dispatch radio, push toggle button events
|
||||
b4016fa AUTHORS: Add Magdalen Berns
|
||||
abcd681 Release 0.32.3
|
||||
1937e99 Atwrapper add debugging to signals
|
||||
acfc165 AtkWrapper: warn if handler object is NULL
|
||||
69d1dba Return JNI_OK for jboolean function
|
||||
1702923 Add debug messages for global_ac == NULL
|
||||
02cac3d use global_ac not lock in get/find instance
|
||||
3bf09c9 Fix some debug inconsistencies
|
||||
78f59a8 set_extents Rectangle width and height
|
||||
c8e4b30 Update object roles to include missing roles
|
||||
1f3387b Check minimum version of atk and spi is installed
|
||||
c11a4dd use defined top level klass
|
||||
f06a2dd fix implicit function warning for g_sprintf
|
||||
14e24c0 Fix post initialization lock up
|
||||
48a3008 Fix debug message
|
||||
fbce3dd cache JVM onLoad so env attaches current thread
|
||||
079f7cc return JNI_VERSION_1_6
|
||||
15ed5a7 Use (GInstanceInitFunc) NULL
|
||||
93ce3ec jawutil: include string header for strcmp use
|
||||
5c7a112 Replace G_CONST_RETURN with const
|
||||
6e7a344 AtkWrapper print exception stack traces
|
||||
5bf850a FIX SIGEV fatal error
|
||||
15a15ac fix jfieldID in get_extents
|
||||
a3b5c20 Merge branch 'old' into amend
|
||||
5258611 set x y extents for both WINDOW and SCREEN
|
||||
ffed314 The set extents method only sets points x and y when AtkCoordType.SCREEN returns true. It is necessary to set them for AtkCoordType.WINDOW too.
|
||||
8e0952c AtkWrapper: Remove hard-coded handler values
|
||||
7da1a77 fixes for get and set extent methods
|
||||
1f77888 Directly initialise accessibility
|
||||
6a3f1b6 fix imcompatable pointer w in set_extents
|
||||
78d0c91 fatal error when executing java programs
|
||||
73d21e8 Check if g_module_supported
|
||||
2969474 Add AM_SILENT_RULES([yes])
|
||||
69c586f Add autoconf check to autogen.sh
|
||||
86a937b initialise using gnome_accessibility_module_init
|
||||
1e55ab4 Fix mutex and cond initialisation
|
||||
70ec322 remove return from jaw_component_get_extents
|
||||
71108e2 Add additional dependencies
|
||||
6bdf1ec AtkWrapper: implement g_cond_wait
|
||||
fa48f1b AtkWrapper: FIX hang on g_cond thread wait
|
||||
c5fadf7 Fix g_mutex and g_cond update syntax
|
||||
5235f35 Revert "Fix g_mutex and g_cond update syntax"
|
||||
e769736 Fix g_mutex and g_cond update syntax
|
||||
49d93f3 Init atk_bridge_adaptor in a standard way
|
||||
31c5fa3 remove workaround for non root installs
|
||||
781f1d2 Revert "remove workaround for non root installs"
|
||||
3e7ce33 remove workaround for non root installs
|
||||
f955ce6 LDFLAGS Use proper version info syntax
|
||||
c1cc147 check if AM_PROG_AR is defined
|
||||
1c7eab0 Add -rpath flag to LDFLAGS
|
||||
a3d7805 Add dependency on atk-bridge-2.0
|
||||
35e8780 Add AC_SUBST(JAW_LIBS)
|
||||
ce57131 Don't use $JAVACFLAGS when setting JDK_SRC
|
||||
8b48abf Add JDK_SRC to Build configuration
|
||||
e7e1fd6 put lt version info first in LDFLAGS
|
||||
96e32ab Release 0.32.2
|
||||
e80a1fc Revert "make: add top_srcdir and topsrcdir/wrapper to CFLAGS"
|
||||
44a7330 make: add top_srcdir and topsrcdir/wrapper to CFLAGS
|
||||
a964d9d Build: set propertiesdir & java_atk_wrapperdir
|
||||
347c21b jawimpl: initialise with compatible pointer type
|
||||
853eac9 jawutil: tidy up style
|
||||
35ae4b3 Fix symbol lookup error jaw_misc_type
|
||||
d6f8257 Release 0.32.1
|
||||
2a738f7 NEWS add contributors info
|
||||
8f76c73 AtkKeyEvent: remove reduntant cast to string
|
||||
f36a292 Component: remove return from get_extents
|
||||
95495dc Component: set_extents returns gboolean
|
||||
b4f4c5f Release 0.32.0
|
||||
045d08d HACKING: don't list get_minimum_increment
|
||||
485a055 jawvalue: use consistent style
|
||||
73c6573 Component: make use of instance methods
|
||||
c1e5271 AtkComponent: use consistent style
|
||||
d280772 HACKING: update Component interface info
|
||||
ec6e998 Component: Implement get and set extents
|
||||
6c16482 jawcomponent: Remove focus_handler inits
|
||||
ca0c383 jawcomponent: FIX Incompatible pointer type error
|
||||
922278a jawcomponent: fix formatting
|
||||
248d86e HACKING add list of deprecated functions
|
||||
10f6e7f HACKING: remove listed deprecated functions
|
||||
06b089f jawtoplevel: sort out formatting
|
||||
1e2d6e9 jawobject: sort out formatting
|
||||
d26fa5b HACKING: add detail about Windows interface
|
||||
d963473 HACKING: list unimplemented methods
|
||||
078b736 HACKING Update with info
|
||||
dd797f7 Remove TODO file
|
||||
c7b0b5c AtkWrapper: Use g_cond_init
|
||||
dd3e623 AtkWrapper: use g_mutex_init
|
||||
6654ea4 jawimpl.c: use g_mutex_init
|
||||
c8bd727 jawtext.c: improve formatting
|
||||
fb96ed7 jawtext: remove commented out code
|
||||
ff5fb2a jawtext: fix formatting
|
||||
3ef5c47 jaweditabletext: fix formatting
|
||||
53d40c0 FIX: assignment makes pointer from integer without a cast
|
||||
4c97514 jawimpl.c: fix formatting
|
||||
46e10e7 AtkObject for add_relationship third argument
|
||||
ebe7faf jaweditabletext: formating
|
||||
074ab3b use atexit from stdlib
|
||||
603f6bc AtkEditableText: fix formatting
|
||||
c9e4655 AtkWrapper: format spaces
|
||||
72d5cad Notify when object gets focus
|
||||
52d9505 update to jaw_value_get_increment
|
||||
e3dc525 Fix integer casting for AtkWrapper and jawimpl
|
||||
e00a9b5 unlock value from pointer
|
||||
e422818 remove references to atkmisc interface
|
||||
fc7c2b4 use atk_object_notify_state_change
|
||||
8e772e2 Use atk_value_get_value_and_text
|
||||
f72b893 use g_value_set_schar #2
|
||||
3ff3062 use g_value_set_schar
|
||||
a2e6a89 Warn for deprecated declarations
|
||||
ead5288 make atk-bridge available but do not use
|
||||
2eb4049 remove g_thread_init()
|
||||
c41bfb3 Remove repeated code logic
|
||||
471fcac remove g_type_init
|
||||
d5da1d0 make JNI Version check conditional
|
||||
7e42ab0 Style: tabs for spaces
|
||||
97df649 FIX incompatible implicit declaration warning
|
||||
cbbbb4e Release 0.31.0
|
||||
b35e4bb set wrapperdir and propertiesdir to prefix
|
||||
4a6a042 Set wrapperdir and propertiesdir correctly
|
||||
3f3802e configure.ac: use current directory
|
||||
d23876a configure.ac: print useful build config info
|
||||
c295dab configure.ac: Specify minimum versions for building
|
||||
11716b3 Remove fileSeperator object
|
||||
00ba127 Set JAW_CFLAGS includes
|
||||
e17ebb4 FIX 'install-libLTLIBRARIES' failed: error
|
||||
6ffafb0 Release 0.30.9
|
||||
0c9436f Set JAVA_HOME properly
|
||||
a367c71 fix invalid flag
|
||||
d617870 Revert "Specify JAVA_HOME"
|
||||
390cd63 Specify JAVA_HOME
|
||||
4953364 remove repeated code
|
||||
3400113 Allow writing of JavaInfo.class during distcheck
|
||||
8a6aacb Remove directory cd into cwd (pointless)
|
||||
6d3008f Style: replace tabs for spaces and format a bit
|
||||
2c0d5b5 configure.ac: remove quotation marks
|
||||
4e4c6e4 Change JRE_SRC back to JAVA_HOME
|
||||
e4e4c89 AtkWrapper: replace tabs for spaces
|
||||
0aba5b1 configure.ac: change tabs to spaces
|
||||
5bf3e3c configure: add check-news to AM_INIT_AUTOMAKE
|
||||
a288c8d ATKWrapper: fix b660968 mistake breaking build
|
||||
4c33d87 jawaction: style improvements
|
||||
a266328 Atktext: style improvements
|
||||
b660968 fix typo
|
||||
1f94187 Remove whitespace
|
||||
18605ee Release 0.30.8
|
||||
c8a2bdf atkwrapper: fix style and indentation
|
||||
bf9919f AtkKeyEvent: Use checked operations
|
||||
3273d5c AtkKeyEvent.java: fix indentation
|
||||
77fdaf8 Add $(srcdir)/*.java to EXTRA_DIST
|
||||
7cca5a9 autogen.sh: less is more, tidy up
|
||||
0601b23 autogen.sh: use unary operators
|
||||
23c8ddd autogen.sh: fix indentation
|
||||
63ec920 Update autogen.sh
|
||||
78aa7ac HACKING: Update maintainer contact details
|
||||
636f2d8 Release 0.30.7
|
||||
833088d Makefile: add ${ACLOCAL_FLAGS} to ACLOCAL_FLAGS
|
||||
3694129 Release 0.30.6
|
||||
463d156 Change JAVA_HOME to JRE_SRC
|
||||
85e8f03 Change JDK_HOME to JDK_SRC
|
||||
6526797 Fix "unary operator expected" error
|
||||
f5dddbf DOAP: Add Magdalen Berns as maintainer
|
||||
ce8cd55 Release 0.30.5
|
||||
3b22e56 Use -avoid-version only when target_os is cygwin
|
||||
dca347d doap: Remove Ke Wang from current maintainer list
|
||||
624cdcd Add JAVACFLAGS option for build
|
||||
ff0d85c Adding initial .gitignore file
|
||||
3645e6d Updated .doap file
|
||||
33ff588 Fix Compilation errors
|
||||
5b0b399 Fix bug616693: emit both the visible and showing events for combo box Signed-off-by: Leon Fan <leon.fan@oracle.com>
|
||||
f4fb386 Added Li Yuan as maintainer
|
||||
0d30f00 Use AT_SPI_IOR and AT_SPI_BUS instead of GConf key to check enablement of accessibility
|
||||
bbf30ec Portability fixes for libatk-wrapper
|
||||
209e429 Use GTK_PATH to locate libatk-bridge.so
|
||||
0d4bc3e Fix bug 611256 - atk_text_get_text is not working correctly with the specified end offset
|
||||
08912f6 Release 0.29.5
|
||||
5dcad0c Fix critical typo - should set NO_AT_BRIDGE to 0 instead of 1 in loadAtkBridge
|
||||
e7fc242 Fix tarball version
|
||||
0965c28 Release 0.29.4
|
||||
f78a65a Disable ATK Bridge before we load it to prevent it from being loaded by GTK laf first
|
||||
6394303 Fix regression - confilct with GTK look and feel
|
||||
919717d Release 0.29.3
|
||||
44021c6 Add non-alphanumeric key mapping
|
||||
11e2da7 Release 0.29.2
|
||||
1684769 Add JAW_DEBUG - Set environment JAW_DEBUG=1 to get debug messages
|
||||
e448592 Fixed bug 606402 - Attempting to run swing applications with the JAW installed frequently causes the JRE to report a fatal runtime error
|
||||
201572a Release 0.29.1
|
||||
d4961d7 Add D-Bus support
|
||||
7a490f1 Release 0.28.0
|
||||
242478a Fixed bug 595234 - The caret position will not be changed when input text with gok composer
|
||||
def8b17 Fixed bug 591792 - Java application tooltips are not accessible to orca screen reader
|
||||
81d7377 Release 0.27.8
|
||||
fd325d7 Fixed bug 593261 - Slider bar can not be controled by gok
|
||||
4ebe072 Fixed bug 592987 - Java Combobox is not accessible
|
||||
d21dd7e Replace jaw_impl_find_instance with jaw_impl_get_instance when handling active-descendant-changed signal
|
||||
a16cb15 Force Java app to quit before the invocation of exit func registered by ATK bridge
|
||||
dd9470a Comment out signal of visible-data-changed
|
||||
9adf3bb Update version number
|
||||
5e734e9 Release 0.27.7
|
||||
4b7a067 Fixed bug that window events are not emitted(bug 591665,591670)
|
||||
0d78630 Temporarily commentted window_state_change_handler
|
||||
4aecdea Fixed d.o.o bug 10506 - java webstart applications don't run
|
||||
4ab98ec Release 0.27.6
|
||||
06b4fc5 Add dependency on GDK 2.0
|
||||
f64c0da Solved conflict with the GTK Look And Feel
|
||||
6520ebc Add missed JavaInfo.java
|
||||
827fef2 Release 0.27.5
|
||||
4db73b0 Added JDK_HOME auto-detection
|
||||
ce7a420 Fixed GNOME bugzilla bug 588879
|
||||
2a8711c Release 0.27.4
|
||||
e1e0a0c Remove jni_AtkWrapper.h from Makefile.am
|
||||
c1e1ecd Make JAVA_HOME not mandatory
|
||||
9454375 Remove unused jni_AtkWrapper.h
|
||||
e28b69e Remove JavaInfo.java
|
||||
79fcf62 Remove functionality of JAVA_HOME auto-detection
|
||||
8b4fbfe Remove unused code
|
||||
cc4a4fb Fixed build problem of loop variables outside C99 mode
|
||||
c45e0fe Release 0.27.3
|
||||
393c280 Add AtkWrapper.java.in to EXTRA_DIST
|
||||
b879b41 Use xprop instead of gconftool-2 to check whether accessibility technology is on
|
||||
88222cc remove dependency on gtk+-2.0
|
||||
9994e26 add JavaInfo.java to EXTRA_DIST
|
||||
a501731 Revert "Revert "Add method to auto-detect JAVA_HOME""
|
||||
1ee8062 Revert "Add method to auto-detect JAVA_HOME"
|
||||
6cd94a8 Add method to auto-detect JAVA_HOME
|
||||
a791d03 Added code to determine whether to load 32 or 64-bit version of atk-bridge
|
||||
9c146a1 Fixed a dependency problem
|
||||
21c8275 Added code to get more accurate application name
|
||||
5e2905b Added code to check whether accessibility technology is switched on
|
||||
6a16496 Fixed conflict with GTK look and feel
|
||||
32fc338 Fixed build dependency problem
|
||||
b9f6ab8 Update version number
|
||||
57f226d Release 0.27.2
|
||||
290213a Changes for preparation of initial release
|
||||
2fb5d01 Minor changes to configure.in
|
||||
ac239b4 Minor changes for tarball distribution
|
||||
9dafdb4 Add version argument to AC_INIT
|
||||
0f14bcb Change license from LGPLv3 to LGPLv2.1
|
||||
3363fd8 trivial changes to configure.in
|
||||
13d1b78 Added .doap file
|
||||
9e2f1dd Remove the need of empty directory "build-aux".
|
||||
7590187 Initial commit.
|
|
@ -0,0 +1,368 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell command './configure && make && make install'
|
||||
should configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the 'README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
'INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
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, and a
|
||||
file 'config.log' containing compiler output (useful mainly for
|
||||
debugging 'configure').
|
||||
|
||||
It can also use an optional file (typically called 'config.cache' and
|
||||
enabled with '--cache-file=config.cache' or simply '-C') that saves the
|
||||
results of its tests to speed up reconfiguring. Caching is disabled by
|
||||
default to prevent problems with accidental use of stale cache files.
|
||||
|
||||
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 you are using the cache, and at
|
||||
some point 'config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file 'configure.ac' (or 'configure.in') is used to create
|
||||
'configure' by a program called 'autoconf'. You need 'configure.ac' 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.
|
||||
|
||||
Running 'configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type 'make' to compile the package.
|
||||
|
||||
3. Optionally, type 'make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type 'make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the 'make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type 'make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior 'make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing 'make clean'. To also remove the
|
||||
files that 'configure' created (so you can compile the package for
|
||||
a different kind of computer), type 'make distclean'. There is
|
||||
also a 'make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type 'make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide 'make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like 'make install' and 'make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the 'configure' script does not know about. Run './configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give 'configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here is
|
||||
an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
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 can use 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 '..'. This is known
|
||||
as a "VPATH" build.
|
||||
|
||||
With a non-GNU 'make', it is safer 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.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple '-arch' options to the
|
||||
compiler but only a single '-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the 'lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, 'make install' installs the package's commands under
|
||||
'/usr/local/bin', include files under '/usr/local/include', etc. You
|
||||
can specify an installation prefix other than '/usr/local' by giving
|
||||
'configure' the option '--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like '--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run 'configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the default
|
||||
for these options is expressed in terms of '${prefix}', so that
|
||||
specifying just '--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to 'configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
'make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, 'make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
'${prefix}'. Any directories that were specified during 'configure',
|
||||
but not in terms of '${prefix}', must each be overridden at install time
|
||||
for the entire installation to be relocated. The approach of makefile
|
||||
variable overrides for each directory variable is required by the GNU
|
||||
Coding Standards, and ideally causes no recompilation. However, some
|
||||
platforms have known limitations with the semantics of shared libraries
|
||||
that end up requiring recompilation when using this method, particularly
|
||||
noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the 'DESTDIR' variable. For
|
||||
example, 'make install DESTDIR=/alternate/directory' will prepend
|
||||
'/alternate/directory' before all installation names. The approach of
|
||||
'DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of '${prefix}'
|
||||
at 'configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
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'.
|
||||
|
||||
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.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of 'make' will be. For these packages, running './configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with 'make V=1'; while running './configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with 'make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
|
||||
is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
HP-UX 'make' updates targets which have the same time stamps as their
|
||||
prerequisites, which makes it generally unusable when shipped generated
|
||||
files such as 'configure' are involved. Use GNU 'make' instead.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
|
||||
workaround. If GNU CC is not installed, it is therefore recommended to
|
||||
try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
|
||||
in your 'PATH', put it _after_ '/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in '/boot/common',
|
||||
not '/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features 'configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, 'configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
'--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as 'sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
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 machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option '--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with '--host=TYPE'.
|
||||
|
||||
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.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to 'configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the 'configure' command line, using 'VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified 'gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
|
||||
Autoconf limitation. Until the limitation is lifted, you can use this
|
||||
workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
'configure' Invocation
|
||||
======================
|
||||
|
||||
'configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
'--help'
|
||||
'-h'
|
||||
Print a summary of all of the options to 'configure', and exit.
|
||||
|
||||
'--help=short'
|
||||
'--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
'configure', and exit. The 'short' variant lists options used only
|
||||
in the top level, while the 'recursive' variant lists options also
|
||||
present in any nested packages.
|
||||
|
||||
'--version'
|
||||
'-V'
|
||||
Print the version of Autoconf used to generate the 'configure'
|
||||
script, and exit.
|
||||
|
||||
'--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally 'config.cache'. FILE defaults to '/dev/null' to
|
||||
disable caching.
|
||||
|
||||
'--config-cache'
|
||||
'-C'
|
||||
Alias for '--cache-file=config.cache'.
|
||||
|
||||
'--quiet'
|
||||
'--silent'
|
||||
'-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to '/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
'--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
'configure' can determine that directory automatically.
|
||||
|
||||
'--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names:: for
|
||||
more details, including other options available for fine-tuning the
|
||||
installation locations.
|
||||
|
||||
'--no-create'
|
||||
'-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
'configure' also accepts some other, not widely useful, options. Run
|
||||
'configure --help' for more details.
|
|
@ -0,0 +1,15 @@
|
|||
public class JavaInfo {
|
||||
public JavaInfo() {
|
||||
String strHome = System.getProperty("java.home");
|
||||
if (strHome.endsWith( "/" + "jre" )) {
|
||||
strHome = strHome.substring(0, strHome.length()-4);
|
||||
}
|
||||
|
||||
System.out.println(strHome);
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
new JavaInfo();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
SUBDIRS=jni wrapper
|
||||
|
||||
EXTRA_DIST = JavaInfo.java
|
||||
|
||||
ACLOCAL_AMFLAGS=-I m4 ${ACLOCAL_FLAGS}
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
|
@ -0,0 +1,865 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir distdir-am dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/config/ar-lib $(top_srcdir)/config/compile \
|
||||
$(top_srcdir)/config/config.guess \
|
||||
$(top_srcdir)/config/config.sub \
|
||||
$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
|
||||
$(top_srcdir)/config/missing AUTHORS COPYING.LESSER ChangeLog \
|
||||
INSTALL NEWS README config/ar-lib config/compile \
|
||||
config/config.guess config/config.sub config/install-sh \
|
||||
config/ltmain.sh config/missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = jni wrapper
|
||||
EXTRA_DIST = JavaInfo.java
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@case `sed 15q $(srcdir)/NEWS` in \
|
||||
*"$(VERSION)"*) : ;; \
|
||||
*) \
|
||||
echo "NEWS not updated; not releasing" 1>&2; \
|
||||
exit 1;; \
|
||||
esac
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
clean-libtool clean-local cscope cscopelist-am ctags ctags-am \
|
||||
dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \
|
||||
dist-tarZ dist-xz dist-zip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,615 @@
|
|||
Changes in version 0.37.1 = 0.38.0
|
||||
=========================
|
||||
|
||||
Internal:
|
||||
Make debugging cope with current directory not being writable
|
||||
|
||||
|
||||
Changes in version 0.35.91 = 0.36.0
|
||||
==========================
|
||||
|
||||
Build:
|
||||
Fix 32bit build
|
||||
|
||||
Wrapper:
|
||||
Fix extents value for invalid extents
|
||||
Compact data-changed events queue
|
||||
|
||||
Internal:
|
||||
Improve debugging log
|
||||
|
||||
Changes in version 0.35.0
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Distribute manifest.txt
|
||||
783982: Fix build warnings
|
||||
789956: Build cleanups
|
||||
Allow building outside source tree
|
||||
Do not use GTK+
|
||||
Require java 7
|
||||
789959: Provide a java module
|
||||
Bump atk-bridge-2.0 dependency to 2.33.1
|
||||
760227: Filter out AtkWrapper.java from distributed files
|
||||
768824: Replace GNOME_COMPILE_WARNINGS with AX_COMPILER_FLAGS
|
||||
Fix all warnings
|
||||
Extend JAW_DEBUG
|
||||
|
||||
Wrapper:
|
||||
Provide javax.accessibility.AccessibilityProvider
|
||||
754688, 768347: Fix crashes on accessible context being NULL
|
||||
775609: Fix crashes on accessiblestateset being NULL
|
||||
793544: Fix crashes on ref_selection returning NULL
|
||||
760058: Deliver accessibility events in a separate context
|
||||
766772: Fix crash on unbound recursion
|
||||
770575: Gracefully abort initialization if at-spi fails
|
||||
793620: Fix iterating hash table in jaw_impl_finalize
|
||||
793823: Fix coordinates returned by atkcomponent
|
||||
791970: Fix removing component listener
|
||||
766774: Call jaw_impl_get_instance from the application thread
|
||||
793543: Make sure atk objects exist while processing signals
|
||||
793622: Fix missing reference addition on children_changed::add
|
||||
793821: Fix atk event parameters
|
||||
775947: Make jaw thread a daemon thread
|
||||
793819: Fix freeing objects
|
||||
669029: Fix netbeans crashes
|
||||
754748: Fix freemind crashes
|
||||
758242: Fix swing threading rules
|
||||
Fix SetName/Description/Role/AccessibleParent
|
||||
Fix GetLocale
|
||||
Fix Component extents
|
||||
Fix TableSetCaption/Summary
|
||||
Fix ActionSet/GetDescription
|
||||
Fix GetTextAtOffset
|
||||
Add GetTextBefore/AfterOffset
|
||||
Fix calling Accessible* methods in the EDT only
|
||||
Fix weak/global reference management, to make sure Accessible objects can
|
||||
easily be freed by the GC, but Atk* objects can't.
|
||||
Fix some null dereferences
|
||||
Fix text selection offsets
|
||||
Support alt graph modifier
|
||||
Fix key event hw_code reporting
|
||||
Support TableGetIndexAt
|
||||
Fix TableCell
|
||||
|
||||
Internal:
|
||||
Update HACKING
|
||||
Update bug tracker URL
|
||||
Update missing atk interface implementations
|
||||
Document the whole picture
|
||||
Make Samuel Thibault maintainer
|
||||
|
||||
Contributors:
|
||||
Giuseppe Capaldo
|
||||
Magdalen Berns
|
||||
Federico Mena Quintero
|
||||
Fridrich Štrba
|
||||
Andre Klapper
|
||||
|
||||
|
||||
Changes in version 0.33.3
|
||||
=========================
|
||||
|
||||
Build:
|
||||
752590: Include --enable-compile-warning option
|
||||
752350: Make with PLATFORM_CFLAGS
|
||||
752095: Remove AC_PROG_RANLIB and AC_ISC_POSIX from configure.ac
|
||||
750533: Don't use hard path for HOME install
|
||||
|
||||
JNI:
|
||||
752588: Create AtkWrapper.h and include in AtkWrapper.c
|
||||
751997: Create prototype for access init and shutdown
|
||||
740439: Create jaw_editable_text_set_run_attributes
|
||||
752334: remove jaw_table_get_index_at
|
||||
740542: Create jaw_action_get_localized_name
|
||||
752291: Replace jaw_set_current_value with jaw_value_set_value
|
||||
742499: Implement bounds-changed signal in AtkWrapper
|
||||
752236: Create jaw_value_get_range
|
||||
752190: Create jaw_table_cell_get_column_span
|
||||
752188: Create jaw_table_cell_get_row_span
|
||||
752187: Create jaw_table_cell_get_row_column_span
|
||||
752174: Create jaw_table_cell_get_position
|
||||
751267: BUGFIX: remove custom implementation of util listeners
|
||||
752346: Fix unused event listener warnings in jaw_util
|
||||
|
||||
Wrapper:
|
||||
750937: Emit object:visible-data-changed signals
|
||||
752319: Create java AtkTextGranularity interface
|
||||
740439: Create setRunAttributes in AtkEditableText
|
||||
740542: Create getLocalizedName in AtkAction
|
||||
752190: Create getColumnSpan in AtkTableCell
|
||||
752188: Create getRowSpan in AtkTableCell
|
||||
752187: Create getRowColumnSpan in AtkTableCell
|
||||
752174: Create getPosition for AtkTableCell
|
||||
|
||||
Maintainership:
|
||||
Update HACKING
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.33.2
|
||||
=========================
|
||||
|
||||
Build:
|
||||
752060: Set AC_CONFIG_FILES for AC_OUTPUT
|
||||
752038: Set JAVA_HOME before setting JA* path macros
|
||||
751958: Fix warning in autogen.sh
|
||||
751762: Fix AC_PROG_CXX missing macro warning
|
||||
751671: Add manifest to jar
|
||||
|
||||
JNI:
|
||||
751997: Create jaw_table_set_summary
|
||||
751995: Create jaw_table_set_caption
|
||||
751938: Create jaw_table_set_column_header
|
||||
751937: Create jaw_table_set_row_header
|
||||
751897: Create jaw_table_set_column_description
|
||||
751895: Create jaw_table_set_row_description
|
||||
740543: Create jaw_action_set_description
|
||||
750640: Create jaw_object_ref_child
|
||||
750641: Create jaw_object_ref_relation_set
|
||||
751441: Fix unused warnings
|
||||
751951: Fix java descriptor for set_extents call
|
||||
751183: window events use g_signal_emit_by_name
|
||||
Create jaw_impl_get_object_hash_table
|
||||
|
||||
Wrapper:
|
||||
751997: Create setSummary in AtkTable
|
||||
751995: Create setCaption in AtkTable
|
||||
751938: Create setColumnHeader in AtkTable
|
||||
751937: Create setRowHeader in AtkTable
|
||||
751897: Create setColumnDescription in AtkTable
|
||||
751895: Create setRowDescription in AtkTable
|
||||
740543: Create getDescription in AtkAction
|
||||
751837: Fix window:destroy events
|
||||
750934: add check for WINDOW to get_layer
|
||||
739503: Use checked operations
|
||||
|
||||
Maintainership:
|
||||
Update copyright for jawcomponent and AtkComponent
|
||||
751758: Add bug report info to AC_INIT
|
||||
751673: gitignore netbeans and intellij IDE project files
|
||||
740534: update HACKING
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.33.1
|
||||
=========================
|
||||
|
||||
Build:
|
||||
751396: Use PLATFORM_LDFLAGS
|
||||
751351: Fix unrecognised warning in AM_INIT_AUTOMAKE
|
||||
751325: GModule is not needed; remove it as a requirement
|
||||
751325: Donot repeat autoreconf check in autogen.sh
|
||||
750521 Fix duplicate symbol error
|
||||
750501: Add darwin includes for installations on OSX
|
||||
750533: Fix non-root install failure
|
||||
750501: Set JNI_INCLUDES for linux and add after CHECK_JNI
|
||||
Remove autogenerated files
|
||||
GConf is not needed; remove it as a requirement
|
||||
|
||||
JNI:
|
||||
750786: Create jaw_object_get_object_locale
|
||||
751009: Check g_object is not null before ref
|
||||
750716: Create jaw_object_set_role
|
||||
750649: Create jaw_object_set_description
|
||||
750655: Create jaw_object_set_parent
|
||||
750647: Create jaw_object_set_name
|
||||
750620: Create jaw_object_get_parent
|
||||
750589: Create jaw_object_initialize
|
||||
751008: Create jaw_table_add_column_selection
|
||||
750998: Create jaw_table_add_row_selection
|
||||
751281: Create jaw_window_add_signal
|
||||
751159: Fix JRE error when running java apps
|
||||
750461: Set signal handler returns to G_SOURCE_REMOVE
|
||||
750425: Initialise variables before using them
|
||||
750417: Use gdk_threads_add_idle() instead of g_idle_add()
|
||||
750417: Remove gtk thread functions
|
||||
|
||||
Wrapper:
|
||||
751111: Implement AtkTableCell interface wrapper class
|
||||
751286: Remove unnecessary print statements
|
||||
|
||||
Maintainership:
|
||||
Update bugzilla info
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
Federico Mena Quintero
|
||||
|
||||
Changes in version 0.33.0
|
||||
=========================
|
||||
|
||||
Miscellanous:
|
||||
750295 JNI: create NewGlobalRef for gdk threads
|
||||
698095 JNI: FIX crash on java applications
|
||||
JNI: GINT_TO_POINTER cast for g_hash_table_lookup arg
|
||||
745823 JNI: fix jawimpl type error
|
||||
749926 JNI: Remove data from debug message
|
||||
749392 JNI: Call gtk threads only once
|
||||
|
||||
Maintainership:
|
||||
749927 JNI: only show warnings with JAW_DEBUG=1
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.92
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Set 1.6 as minimum java version
|
||||
|
||||
Miscellanous:
|
||||
JNI: return JNI_ERR if JNI is NULL
|
||||
Wrapper: Don't set bounds in set_extents
|
||||
JNI: Add NULL check before referencing gobjects
|
||||
JNI: Use guint type not gint
|
||||
JNI: Make use of dispatch constants
|
||||
JNI: get_instance with component_removed_handler
|
||||
JNI: get instance in window_deactivate_handler
|
||||
JNI: find instance for object_state_change_handler
|
||||
JNI use IIII for method argument
|
||||
JNI-Wrapper: remove get_size and get_position
|
||||
Wrapper: remove state ARMED condition
|
||||
JNI: fix casting warning
|
||||
Wrapper: Add isTopLevel static method
|
||||
|
||||
Maintainership:
|
||||
uncomment gtk_threads functions
|
||||
Wrapper: Add documentation and formatting
|
||||
JNI: format jawutil and jawaction
|
||||
JNI: Use consistent debug messages
|
||||
HACKING: Add some object info and update
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.90
|
||||
=========================
|
||||
|
||||
Important Changes:
|
||||
JNI: get name before checking for COMBO BOX
|
||||
JNI: dispatch radio, push toggle button events
|
||||
|
||||
Maintainership:
|
||||
Update Authors
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.3
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Use JNI_VERSION_1_6
|
||||
LDFLAGS Use proper version info syntax
|
||||
check if AM_PROG_AR is defined
|
||||
Add -rpath flag to LDFLAGS
|
||||
Add dependency on atk-bridge-2.0
|
||||
Add AC_SUBST(JAW_LIBS)
|
||||
Don't use $JAVACFLAGS when setting JDK_SRC
|
||||
Add JDK_SRC to Build configuration
|
||||
put lt version info first in LDFLAGS
|
||||
Check minimum version of atk and spi is installed
|
||||
Add AM_SILENT_RULES([yes])
|
||||
|
||||
Miscellanous:
|
||||
Directly initialise accessibility rather than load via gtk module
|
||||
jawutil: include string header for strcmp use
|
||||
Replace G_CONST_RETURN with const
|
||||
Print exception stack traces
|
||||
FIX SIGEV fatal error
|
||||
fix jfieldID in get_extents
|
||||
Merge branch 'old' into amend
|
||||
set x y extents for both WINDOW and SCREEN
|
||||
Use defined top level klass
|
||||
AtkWrapper: Remove hard-coded handler values
|
||||
Rectangle width and height for set_extents
|
||||
Replace G_CONST_RETURN with const
|
||||
FIX incompatable pointer
|
||||
FIX g_cond lockup
|
||||
|
||||
Maintainership:
|
||||
Add various g_debug messages, warnings and erros for JAW_DEBUG=1
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.2
|
||||
=========================
|
||||
|
||||
Miscellanious:
|
||||
741127: set propertiesdir & java_atk_wrapperdir
|
||||
741073: initialise with compatible pointer type jawimpl
|
||||
741062: Fix symbol lookup error jaw_misc_type
|
||||
|
||||
Contributors:
|
||||
741068: Tidy up style Magdalen Berns in jawutil
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.1
|
||||
=========================
|
||||
|
||||
Miscellanious:
|
||||
740644 jawvalue.c has no style
|
||||
740649 Component: set_extents return gboolean
|
||||
740650 Component: get_extents should not return anything.
|
||||
740653 Remove Reundant cast to String
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.32.0
|
||||
=========================
|
||||
|
||||
Build:
|
||||
740286 FIX Warning in jaw_hypertext_get_link
|
||||
740428 FIX Assignment makes pointer from integer without a cast
|
||||
740589 Fix Incompatible pointer type error
|
||||
740269 Do not used deprecated 'g_atexit'
|
||||
740172 Do not use deprecated 'atk_focus_tracker_notify'
|
||||
740270 Do not use deprecated 'g_mutex_new'
|
||||
740271 Do not use deprecated 'g_cond_new'
|
||||
740278 Do not use deprecated 'atk_misc_get_type'
|
||||
740279 FIX cast to pointer from integer of different size
|
||||
740280 FIX passing incompatible pointer type
|
||||
740281 Do not use deprecated 'g_value_set_char'
|
||||
740459 do not use deprecated 'g_mutex_new' in jawimpl.c
|
||||
|
||||
Miscellanous:
|
||||
740644 jawvalue.c style
|
||||
740584 jawcomponent.c style
|
||||
740548 jawobject.c style
|
||||
740550 jawtoplevel.c style
|
||||
740602 AtkComponent.java is not making use of instance methods
|
||||
740590 remove deprecated and unimplemented focus handler methods
|
||||
740437 jaweditabletext.c style
|
||||
740445 jawtext.c style
|
||||
740449 jawtext.c removed commented out code
|
||||
740450 jawtext.c style further improved
|
||||
|
||||
Maintainership:
|
||||
740534 HACKING Update
|
||||
740535 Remove TODO file
|
||||
740539 HACKING Should list methods not yet fully implemented
|
||||
740580 HACKING lists some deprecated functions
|
||||
740581 HACKING should list deprecated functions which are implemented
|
||||
740598 HACKING do not list unimplemented deprecated functions
|
||||
740307 added java-atk-wrapper as a jhbuild module
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
Changes in version 0.31.0
|
||||
=========================
|
||||
|
||||
Build:
|
||||
|
||||
739912: Set JAVA_HOME
|
||||
739976: Fix 'install-libLTLIBRARIES' failed error
|
||||
740062: set wrapperdir and propertiesdir to prefix
|
||||
Set wrapperdir and propertiesdir correctly
|
||||
Set JAW_CFLAGS includes
|
||||
configure.ac: use current working directory
|
||||
Specify minimum versions for building
|
||||
|
||||
Miscellanous:
|
||||
Remove fileSeperator object
|
||||
print useful build config info
|
||||
Specify JAVA_HOME
|
||||
|
||||
Changes in version 0.30.9
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Bug 739909: Allow writing of JavaInfo.class during distcheck
|
||||
Bug 739912: Set JAVA_HOME properly
|
||||
Fix invalid flag
|
||||
Remove directory cd into cwd
|
||||
configure: add check-news to AM_INIT_AUTOMAKE
|
||||
configure.ac: remove quotation marks
|
||||
fix b660968 mistake breaking build
|
||||
|
||||
Miscellanous:
|
||||
Replace tabs for spaces and format a bit
|
||||
Change JRE_SRC back to JAVA_HOME
|
||||
change tabs to spaces
|
||||
jawaction: style improvements
|
||||
Atktext: style improvements
|
||||
fix typo
|
||||
Remove whitespace
|
||||
|
||||
Mantainership:
|
||||
Close 9 obsolete Bugs
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.30.8
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Bug 739427: USE_GNOME2_MACROS=1 seems redundant => update autogen.sh
|
||||
Bug 739503: AtkKeyEvent: Use checked operations
|
||||
Add $(srcdir)/*.java to EXTRA_DIST
|
||||
autogen.sh: use unary operators
|
||||
|
||||
Miscellanous:
|
||||
Atkwrapper: fix style and indentation
|
||||
AtkKeyEvent: fix indentation
|
||||
autogen.sh: less is more, tidy up
|
||||
|
||||
Mantainership:
|
||||
HACKING: Update maintainer contact details
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns, Alejandro Pi<50>eiro
|
||||
|
||||
Changes in version 0.30.7
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Bug 738776: Add ${ACLOCAL_FLAGS} to ACLOCAL_AMFLAGS
|
||||
|
||||
Mantainership:
|
||||
Added ChangeLog with full git commit history included
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.30.6
|
||||
=========================
|
||||
|
||||
Build:
|
||||
Bug 738721: Fix "unary operator expected" error
|
||||
|
||||
Mantainership:
|
||||
738709 Updated doap file (current active maintainers)
|
||||
|
||||
Miscellanous:
|
||||
738730 Change JDK_HOME to JDK_SRC
|
||||
738731 Change JAVA_HOME to JRE_SRC
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns
|
||||
|
||||
Changes in version 0.30.5
|
||||
=========================
|
||||
|
||||
Maintainer note: while doing this release, we detected that the
|
||||
version bump on each release was not included on the master branch. So
|
||||
most of the 0.30.X JAW versions available were not reflected on
|
||||
master, but only on the branch gnome-2-30. In that sense, the
|
||||
versioning of this module was more updated on a specific branch that
|
||||
on master.
|
||||
|
||||
This was against the usual GNOME policies, and in general, for any
|
||||
free software project using git as repository. So, from now on, the
|
||||
usual policy would be used, summarized as:
|
||||
|
||||
* master will include also the version bumping.
|
||||
* specific branches will be used for developing new features or to
|
||||
keep track of stable branches
|
||||
|
||||
Additionally, this NEWS entry will include all the changes since
|
||||
0.29.5., beind those:
|
||||
*
|
||||
* Atk wrapping:
|
||||
* Bug 616693: emit both the visible and showing events for combo box
|
||||
* Bug 611256 - atk_text_get_text is not working correctly with the
|
||||
specified end offset
|
||||
* Building:
|
||||
* Add JAVACFLAGS option for build
|
||||
* Bug 703358 - java-atk-wrapper can't be re-automake with automake 1.13
|
||||
* Use -avoid-version only when target_os is cygwin
|
||||
* Mantainership:
|
||||
* Updated doap file, both in format [1] and in content (current
|
||||
active maintainers)
|
||||
* Updated AUTHORS and MAINTAINERS files accordingly
|
||||
* Miscellanea
|
||||
* Use GTK_PATH to locate libatk-bridge.so
|
||||
* Use AT_SPI_IOR and AT_SPI_BUS instead of GConf key to check
|
||||
enablement of accessibility
|
||||
* Adding initial .gitignore file
|
||||
|
||||
[1] https://mail.gnome.org/archives/release-team/2014-July/msg00045.html
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns, Leon Fan, James Page, Alejandro Pi<50>eiro, Yaakov Selkowitz, Ke Wang,
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.29.5
|
||||
Important changes:
|
||||
* Fix critical typo - should set NO_AT_BRIDGE to 0 instead of 1 in loadAtkBridge
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.29.4
|
||||
Important changes:
|
||||
* Fix regression - conflict with GTK look and feel
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.29.3
|
||||
Important changes:
|
||||
* Add non-alphanumeric key mapping
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.29.2
|
||||
Important changes:
|
||||
* Fixed bug 606402 - Attempting to run swing applications with the JAW
|
||||
installed frequently causes the JRE to report a fatal runtime error
|
||||
* Add JAW_DEBUG - Set environment JAW_DEBUG=1 to get debug messages
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.29.1
|
||||
Important changes:
|
||||
* Added support for at-spi2(at-spi d-bus)
|
||||
|
||||
===============================
|
||||
Java ATK Wrapper version 0.28.0
|
||||
Important changes:
|
||||
* Fixed bug 591792 - Java application tooltips are not accessible to orca screen reader
|
||||
* Fixed bug 595234 - The caret position will not be changed when input text with gok composer
|
||||
|
||||
Java ATK Wrapper version 0.27.8
|
||||
===============================
|
||||
Important changes:
|
||||
* Fixed 592987 - Java Combobox is not accessible
|
||||
* Fixed 593130 - JTree is not accessible to at-tools
|
||||
* Fixed 593258 - Table cell accessing issue
|
||||
* Fixed 593131 - Java application hangs when exiting from exit menuitem with orca running
|
||||
* Fixed 593250 - Alt+F4 sometime leads to application hang
|
||||
* Fixed 593261 - Slider bar can not be controled by gok
|
||||
|
||||
Java ATK Wrapper version 0.27.7
|
||||
===============================
|
||||
Important changes:
|
||||
* Fixed d.o.o bug 10506 - java webstart applications don't run
|
||||
* Fixed bug that window events are not emitted(bug 591665,591670)
|
||||
|
||||
Java ATK Wrapper version 0.27.6
|
||||
===============================
|
||||
Important changes:
|
||||
* Changed the method to resolve conflict with GTK Look And Feel.
|
||||
Now JAW can work with GTK l&f enabled.
|
||||
|
||||
Java ATK Wrapper version 0.27.5
|
||||
===============================
|
||||
Important changes:
|
||||
* Fixed bug 588879 - JVM crash when selecting text demo of SwingSet
|
||||
* Added functionality of JDK_HOME auto-detection
|
||||
|
||||
Java ATK Wrapper version 0.27.4
|
||||
===============================
|
||||
Important changes:
|
||||
* Fixed bug that class files of internal classes are not packed into jar file
|
||||
* Fixed build problem of loop variables outside C99 mode
|
||||
* Removed functionality of JAVA_HOME auto-detection
|
||||
Java ATK Wrapper version 0.27.3
|
||||
===============================
|
||||
Important changes:
|
||||
* Fixed several problems in build system.
|
||||
* Resolved conflict with GTK look and feel.
|
||||
* Added code to check whether accessibility technology is switched on
|
||||
* Added code to get more accurate application name
|
||||
* Added code to determine whether to load 32 or 64-bit version of atk-bridge
|
||||
* Added functionality to auto-detect JAVA_HOME
|
||||
* Removed dependency on gtk+-2.0
|
||||
|
||||
Java ATK Wrapper version 0.27.2
|
||||
===============================
|
||||
Important changes:
|
||||
* Use g_object_notify instead of g_signal_emit when
|
||||
there is property changes, so as to fix the crash
|
||||
bug.
|
||||
|
||||
* Register gnome_accessibility_module_shutdown as a
|
||||
_atexit function after invocation of
|
||||
gnome_accessibility_module_init, so as to fix the
|
||||
bug that Java apps crash when exit.
|
||||
|
||||
Java ATK Wrapper version 0.27.1
|
||||
================================
|
||||
Initial release.
|
|
@ -0,0 +1,16 @@
|
|||
Java ATK Wrapper is a implementation of ATK by using JNI technic.
|
||||
It converts Java Swing events into ATK events, and sends these events to
|
||||
ATK-Bridge.
|
||||
|
||||
JAW is part of the Bonobo deprecation project. By talking to ATK-Bridge, it
|
||||
keeps itself from being affected by the change of underlying communication
|
||||
mechanism.
|
||||
|
||||
JAW consists of two major parts:
|
||||
|
||||
wrapper: the Java library that listens to Swing events, and adapting JAAPI
|
||||
to fit the interfaces of ATK
|
||||
|
||||
jni: the C library that converts Swing events into GSignals and talks
|
||||
to ATK-Bridge
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
AC_DEFUN([CHECK_JNI],[
|
||||
|
||||
dnl Check to see what platform and set jni include path
|
||||
AC_CANONICAL_HOST
|
||||
AC_MSG_CHECKING([platform to setup platform specific variables])
|
||||
platform_win32="no"
|
||||
case "$host" in
|
||||
*-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/win32"
|
||||
fi
|
||||
platform_win32="yes"
|
||||
PLATFORM_CFLAGS="-mms-bitfields"
|
||||
PLATFORM_LDFLAGS="-Wl,--kill-at"
|
||||
PLATFORM_CLASSPATH_SEPARATOR=";"
|
||||
SOPREFIX="lib"
|
||||
;;
|
||||
*-*-cygwin*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/win32"
|
||||
fi
|
||||
platform_win32="yes"
|
||||
PLATFORM_CFLAGS=
|
||||
PLATFORM_LDFLAGS=
|
||||
PLATFORM_CLASSPATH_SEPARATOR=":"
|
||||
SOPREFIX="cyg"
|
||||
;;
|
||||
*-*-linux*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/linux"
|
||||
fi
|
||||
PLATFORM_CFLAGS=
|
||||
PLATFORM_LDFLAGS="-rpath $libdir"
|
||||
PLATFORM_CLASSPATH_SEPARATOR=":"
|
||||
SOPREFIX=
|
||||
;;
|
||||
*-*-solaris*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/solaris"
|
||||
fi
|
||||
PLATFORM_CFLAGS=
|
||||
PLATFORM_LDFLAGS=
|
||||
PLATFORM_CLASSPATH_SEPARATOR=":"
|
||||
SOPREFIX=
|
||||
;;
|
||||
*-*-darwin*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/darwin"
|
||||
fi
|
||||
PLATFORM_CFLAGS=
|
||||
PLATFORM_LDFLAGS=
|
||||
PLATFORM_CLASSPATH_SEPARATOR=":"
|
||||
SOPREFIX=
|
||||
;;
|
||||
*)
|
||||
if test "$gcj_compile" = "yes"; then
|
||||
JNI_INCLUDES=
|
||||
else
|
||||
JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/$host_os"
|
||||
fi
|
||||
PLATFORM_CFLAGS=
|
||||
PLATFORM_LDFLAGS=
|
||||
PLATFORM_CLASSPATH_SEPARATOR=":"
|
||||
SOPREFIX=
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$host_os])
|
||||
AC_SUBST(JNI_INCLUDES)
|
||||
AC_SUBST(PLATFORM_CFLAGS)
|
||||
AC_SUBST(PLATFORM_LDFLAGS)
|
||||
AC_SUBST(PLATFORM_CLASSPATH_SEPARATOR)
|
||||
|
||||
])
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,64 @@
|
|||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* 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 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 the sub-directory where libtool stores uninstalled libraries. */
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* 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 home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if the X Window System is missing or not being used. */
|
||||
#undef X_DISPLAY_MISSING
|
|
@ -0,0 +1,270 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for Microsoft lib.exe
|
||||
|
||||
me=ar-lib
|
||||
scriptversion=2012-03-01.08; # UTC
|
||||
|
||||
# Copyright (C) 2010-2018 Free Software Foundation, Inc.
|
||||
# Written by Peter Rosin <peda@lysator.liu.se>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
|
||||
# func_error message
|
||||
func_error ()
|
||||
{
|
||||
echo "$me: $1" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv in
|
||||
mingw)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_at_file at_file operation archive
|
||||
# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
|
||||
# for each of them.
|
||||
# When interpreting the content of the @FILE, do NOT use func_file_conv,
|
||||
# since the user would need to supply preconverted file names to
|
||||
# binutils ar, at least for MinGW.
|
||||
func_at_file ()
|
||||
{
|
||||
operation=$2
|
||||
archive=$3
|
||||
at_file_contents=`cat "$1"`
|
||||
eval set x "$at_file_contents"
|
||||
shift
|
||||
|
||||
for member
|
||||
do
|
||||
$AR -NOLOGO $operation:"$member" "$archive" || exit $?
|
||||
done
|
||||
}
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
func_error "no command. Try '$0 --help' for more information."
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<EOF
|
||||
Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
|
||||
|
||||
Members may be specified in a file named with @FILE.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "$me, version $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test $# -lt 3; then
|
||||
func_error "you must specify a program, an action and an archive"
|
||||
fi
|
||||
|
||||
AR=$1
|
||||
shift
|
||||
while :
|
||||
do
|
||||
if test $# -lt 2; then
|
||||
func_error "you must specify a program, an action and an archive"
|
||||
fi
|
||||
case $1 in
|
||||
-lib | -LIB \
|
||||
| -ltcg | -LTCG \
|
||||
| -machine* | -MACHINE* \
|
||||
| -subsystem* | -SUBSYSTEM* \
|
||||
| -verbose | -VERBOSE \
|
||||
| -wx* | -WX* )
|
||||
AR="$AR $1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
action=$1
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
orig_archive=$1
|
||||
shift
|
||||
func_file_conv "$orig_archive"
|
||||
archive=$file
|
||||
|
||||
# strip leading dash in $action
|
||||
action=${action#-}
|
||||
|
||||
delete=
|
||||
extract=
|
||||
list=
|
||||
quick=
|
||||
replace=
|
||||
index=
|
||||
create=
|
||||
|
||||
while test -n "$action"
|
||||
do
|
||||
case $action in
|
||||
d*) delete=yes ;;
|
||||
x*) extract=yes ;;
|
||||
t*) list=yes ;;
|
||||
q*) quick=yes ;;
|
||||
r*) replace=yes ;;
|
||||
s*) index=yes ;;
|
||||
S*) ;; # the index is always updated implicitly
|
||||
c*) create=yes ;;
|
||||
u*) ;; # TODO: don't ignore the update modifier
|
||||
v*) ;; # TODO: don't ignore the verbose modifier
|
||||
*)
|
||||
func_error "unknown action specified"
|
||||
;;
|
||||
esac
|
||||
action=${action#?}
|
||||
done
|
||||
|
||||
case $delete$extract$list$quick$replace,$index in
|
||||
yes,* | ,yes)
|
||||
;;
|
||||
yesyes*)
|
||||
func_error "more than one action specified"
|
||||
;;
|
||||
*)
|
||||
func_error "no action specified"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -n "$delete"; then
|
||||
if test ! -f "$orig_archive"; then
|
||||
func_error "archive not found"
|
||||
fi
|
||||
for member
|
||||
do
|
||||
case $1 in
|
||||
@*)
|
||||
func_at_file "${1#@}" -REMOVE "$archive"
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$1"
|
||||
$AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
elif test -n "$extract"; then
|
||||
if test ! -f "$orig_archive"; then
|
||||
func_error "archive not found"
|
||||
fi
|
||||
if test $# -gt 0; then
|
||||
for member
|
||||
do
|
||||
case $1 in
|
||||
@*)
|
||||
func_at_file "${1#@}" -EXTRACT "$archive"
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$1"
|
||||
$AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
$AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
|
||||
do
|
||||
$AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
|
||||
done
|
||||
fi
|
||||
|
||||
elif test -n "$quick$replace"; then
|
||||
if test ! -f "$orig_archive"; then
|
||||
if test -z "$create"; then
|
||||
echo "$me: creating $orig_archive"
|
||||
fi
|
||||
orig_archive=
|
||||
else
|
||||
orig_archive=$archive
|
||||
fi
|
||||
|
||||
for member
|
||||
do
|
||||
case $1 in
|
||||
@*)
|
||||
func_file_conv "${1#@}"
|
||||
set x "$@" "@$file"
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$1"
|
||||
set x "$@" "$file"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
shift
|
||||
done
|
||||
|
||||
if test -n "$orig_archive"; then
|
||||
$AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
|
||||
else
|
||||
$AR -NOLOGO -OUT:"$archive" "$@" || exit $?
|
||||
fi
|
||||
|
||||
elif test -n "$list"; then
|
||||
if test ! -f "$orig_archive"; then
|
||||
func_error "archive not found"
|
||||
fi
|
||||
$AR -NOLOGO -LIST "$archive" || exit $?
|
||||
fi
|
|
@ -0,0 +1,348 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,791 @@
|
|||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by 'PROGRAMS ARGS'.
|
||||
object Object file output by 'PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Get the directory component of the given path, and save it in the
|
||||
# global variables '$dir'. Note that this directory component will
|
||||
# be either empty or ending with a '/' character. This is deliberate.
|
||||
set_dir_from ()
|
||||
{
|
||||
case $1 in
|
||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||
*) dir=;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the suffix-stripped basename of the given path, and save it the
|
||||
# global variable '$base'.
|
||||
set_base_from ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||
}
|
||||
|
||||
# If no dependency file was actually created by the compiler invocation,
|
||||
# we still have to create a dummy depfile, to avoid errors with the
|
||||
# Makefile "include basename.Plo" scheme.
|
||||
make_dummy_depfile ()
|
||||
{
|
||||
echo "#dummy" > "$depfile"
|
||||
}
|
||||
|
||||
# Factor out some common post-processing of the generated depfile.
|
||||
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||
aix_post_process_depfile ()
|
||||
{
|
||||
# If the compiler actually managed to produce a dependency file,
|
||||
# post-process it.
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form 'foo.o: dependency.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# $object: dependency.h
|
||||
# and one to simply output
|
||||
# dependency.h:
|
||||
# which is needed to avoid the deleted-header problem.
|
||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||
} > "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
}
|
||||
|
||||
# A tabulation character.
|
||||
tab=' '
|
||||
# A newline character.
|
||||
nl='
|
||||
'
|
||||
# Character ranges might be problematic outside the C locale.
|
||||
# These definitions help.
|
||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
lower=abcdefghijklmnopqrstuvwxyz
|
||||
digits=0123456789
|
||||
alpha=${upper}${lower}
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Avoid interferences from the environment.
|
||||
gccflag= dashmflag=
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
if test "$depmode" = xlc; then
|
||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||
gccflag=-qmakedep=gcc,-MF
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||
## (see the conditional assignment to $gccflag above).
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||
## supported by the other compilers which use the 'gcc' depmode.
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The second -e expression handles DOS-style file names with drive
|
||||
# letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the "deleted header file" problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
## Some versions of gcc put a space before the ':'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||
| tr "$nl" ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
xlc)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
tcc)
|
||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||
# FIXME: That version still under development at the moment of writing.
|
||||
# Make that this statement remains true also for stable, released
|
||||
# versions.
|
||||
# It will wrap lines (doesn't matter whether long or short) with a
|
||||
# trailing '\', as in:
|
||||
#
|
||||
# foo.o : \
|
||||
# foo.c \
|
||||
# foo.h \
|
||||
#
|
||||
# It will put a trailing '\' even on the last line, and will use leading
|
||||
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||
# "Emit spaces for -MD").
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||
# We have to change lines of the first kind to '$object: \'.
|
||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||
# dummy dependency, to avoid the deleted-header problem.
|
||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
## The order of this option in the case statement is important, since the
|
||||
## shell code in configure will try each of these formats in the order
|
||||
## listed in this file. A plain '-MD' option would be understood by many
|
||||
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||
pgcc)
|
||||
# Portland's C compiler understands '-MD'.
|
||||
# Will always output deps to 'file.d' where file is the root name of the
|
||||
# source file under compilation, even if file resides in a subdirectory.
|
||||
# The object file name does not affect the name of the '.d' file.
|
||||
# pgcc 10.2 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using '\' :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
set_dir_from "$object"
|
||||
# Use the source, not the object, to determine the base name, since
|
||||
# that's sadly what pgcc will do too.
|
||||
set_base_from "$source"
|
||||
tmpdepfile=$base.d
|
||||
|
||||
# For projects that build the same source file twice into different object
|
||||
# files, the pgcc approach of using the *source* file root name can cause
|
||||
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||
# the same $tmpdepfile.
|
||||
lockdir=$base.d-lock
|
||||
trap "
|
||||
echo '$0: caught signal, cleaning up...' >&2
|
||||
rmdir '$lockdir'
|
||||
exit 1
|
||||
" 1 2 13 15
|
||||
numtries=100
|
||||
i=$numtries
|
||||
while test $i -gt 0; do
|
||||
# mkdir is a portable test-and-set.
|
||||
if mkdir "$lockdir" 2>/dev/null; then
|
||||
# This process acquired the lock.
|
||||
"$@" -MD
|
||||
stat=$?
|
||||
# Release the lock.
|
||||
rmdir "$lockdir"
|
||||
break
|
||||
else
|
||||
# If the lock is being held by a different process, wait
|
||||
# until the winning process is done or we timeout.
|
||||
while test -d "$lockdir" && test $i -gt 0; do
|
||||
sleep 1
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
fi
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
trap - 1 2 13 15
|
||||
if test $i -le 0; then
|
||||
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||
echo "$0: check lockdir '$lockdir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add 'dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in 'foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
# Same post-processing that is required for AIX mode.
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/'"$tab"'\1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/'"$tab"'/
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for ':'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed '1,2d' "$tmpdepfile" \
|
||||
| tr ' ' "$nl" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E \
|
||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||
echo "$tab" >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -0,0 +1,518 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2018-03-11.20; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# 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 or substantial portions of the Software.
|
||||
#
|
||||
# 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
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# 'make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
tab=' '
|
||||
nl='
|
||||
'
|
||||
IFS=" $tab$nl"
|
||||
|
||||
# Set DOITPROG to "echo" to test this script.
|
||||
|
||||
doit=${DOITPROG-}
|
||||
doit_exec=${doit:-exec}
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
is_target_a_directory=possibly
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t)
|
||||
is_target_a_directory=always
|
||||
dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) is_target_a_directory=never;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# We allow the use of options -d and -T together, by making -d
|
||||
# take the precedence; this is for compatibility with GNU install.
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
if test -n "$dst_arg"; then
|
||||
echo "$0: target directory not allowed when installing a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call 'install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||
if test ! -d "$dst_arg"; then
|
||||
echo "$0: $dst_arg: Is not a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $src in
|
||||
-* | [=\(\)!]) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename.
|
||||
if test -d "$dst"; then
|
||||
if test "$is_target_a_directory" = never; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dstbase=`basename "$src"`
|
||||
case $dst in
|
||||
*/) dst=$dst$dstbase;;
|
||||
*) dst=$dst/$dstbase;;
|
||||
esac
|
||||
dstdir_status=0
|
||||
else
|
||||
dstdir=`dirname "$dst"`
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
case $dstdir in
|
||||
*/) dstdirslash=$dstdir;;
|
||||
*) dstdirslash=$dstdir/;;
|
||||
esac
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
||||
# here however when possible just to lower collision chance.
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
|
||||
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||
# directory is successfully created first before we actually test
|
||||
# 'mkdir -p' feature.
|
||||
if (umask $mkdir_umask &&
|
||||
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
test_tmpdir="$tmpdir/a"
|
||||
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=${dstdirslash}_inst.$$_
|
||||
rmtmp=${dstdirslash}_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
set +f &&
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,215 @@
|
|||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
|
||||
--is-lightweight)
|
||||
# Used by our autoconf macros to check whether the available missing
|
||||
# script is modern enough.
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--run)
|
||||
# Back-compat with the calling convention used by older automake.
|
||||
shift
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||
to PROGRAM being missing or too old.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal autoconf autoheader autom4te automake makeinfo
|
||||
bison yacc flex lex help2man
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||
'g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: unknown '$1' option"
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Run the given program, remember its exit status.
|
||||
"$@"; st=$?
|
||||
|
||||
# If it succeeded, we are done.
|
||||
test $st -eq 0 && exit 0
|
||||
|
||||
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||
# passed; such an option is passed most likely to detect whether the
|
||||
# program is present and works.
|
||||
case $2 in --version|--help) exit $st;; esac
|
||||
|
||||
# Exit code 63 means version mismatch. This often happens when the user
|
||||
# tries to use an ancient version of a tool on a file that requires a
|
||||
# minimum version.
|
||||
if test $st -eq 63; then
|
||||
msg="probably too old"
|
||||
elif test $st -eq 127; then
|
||||
# Program was missing.
|
||||
msg="missing on your system"
|
||||
else
|
||||
# Program was found and executed, but failed. Give up.
|
||||
exit $st
|
||||
fi
|
||||
|
||||
perl_URL=https://www.perl.org/
|
||||
flex_URL=https://github.com/westes/flex
|
||||
gnu_software_URL=https://www.gnu.org/software
|
||||
|
||||
program_details ()
|
||||
{
|
||||
case $1 in
|
||||
aclocal|automake)
|
||||
echo "The '$1' program is part of the GNU Automake package:"
|
||||
echo "<$gnu_software_URL/automake>"
|
||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/autoconf>"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
autoconf|autom4te|autoheader)
|
||||
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||
echo "<$gnu_software_URL/autoconf/>"
|
||||
echo "It also requires GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice ()
|
||||
{
|
||||
# Normalize program name to check for.
|
||||
normalized_program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
printf '%s\n' "'$1' is $msg."
|
||||
|
||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||
case $normalized_program in
|
||||
autoconf*)
|
||||
echo "You should only need it if you modified 'configure.ac',"
|
||||
echo "or m4 files included by it."
|
||||
program_details 'autoconf'
|
||||
;;
|
||||
autoheader*)
|
||||
echo "You should only need it if you modified 'acconfig.h' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'autoheader'
|
||||
;;
|
||||
automake*)
|
||||
echo "You should only need it if you modified 'Makefile.am' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'automake'
|
||||
;;
|
||||
aclocal*)
|
||||
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'aclocal'
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
echo "You should only need it if you modified a '.y' file."
|
||||
echo "You may want to install the GNU Bison package:"
|
||||
echo "<$gnu_software_URL/bison/>"
|
||||
;;
|
||||
lex*|flex*)
|
||||
echo "You should only need it if you modified a '.l' file."
|
||||
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||
echo "<$flex_URL>"
|
||||
;;
|
||||
help2man*)
|
||||
echo "You should only need it if you modified a dependency" \
|
||||
"of a man page."
|
||||
echo "You may want to install the GNU Help2man package:"
|
||||
echo "<$gnu_software_URL/help2man/>"
|
||||
;;
|
||||
makeinfo*)
|
||||
echo "You should only need it if you modified a '.texi' file, or"
|
||||
echo "any other file indirectly affecting the aspect of the manual."
|
||||
echo "You might want to install the Texinfo package:"
|
||||
echo "<$gnu_software_URL/texinfo/>"
|
||||
echo "The spurious makeinfo call might also be the consequence of"
|
||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||
echo "want to install GNU make:"
|
||||
echo "<$gnu_software_URL/make/>"
|
||||
;;
|
||||
*)
|
||||
echo "You might have modified some files without having the proper"
|
||||
echo "tools for further handling them. Check the 'README' file, it"
|
||||
echo "often tells you about the needed prerequisites for installing"
|
||||
echo "this package. You may also peek at any GNU archive site, in"
|
||||
echo "case some other package contains this missing '$1' program."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||
-e '2,$s/^/ /' >&2
|
||||
|
||||
# Propagate the correct exit status (expected to be 127 for a program
|
||||
# not found, 63 for a program that failed due to version mismatch).
|
||||
exit $st
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,228 @@
|
|||
AC_PREREQ(2.63)
|
||||
AC_INIT([java-atk-wrapper],[0.38.0],[https://gitlab.gnome.org/GNOME/java-atk-wrapper/issues/new])
|
||||
: ${CXXFLAGS=""}
|
||||
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
AM_INIT_AUTOMAKE([1.11 -Wall check-news])
|
||||
|
||||
AM_SILENT_RULES([yes])
|
||||
m4_pattern_allow([AM_PROG_AR])
|
||||
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
||||
|
||||
# jni
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
AC_PROG_CC(gcc)
|
||||
AC_PROG_CXX
|
||||
AC_PROG_INSTALL
|
||||
AC_PATH_XTRA
|
||||
|
||||
# Initialize libtool
|
||||
LT_PREREQ([2.2.6])
|
||||
LT_INIT([disable-static])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
m4_define([req_ver_atk], [1.18.0])
|
||||
|
||||
PKG_CHECK_MODULES(JAW, [
|
||||
atk >= 2.14.0
|
||||
atk-bridge-2.0 >= 2.33.1
|
||||
atspi-2 >= 2.14.0
|
||||
dbus-1
|
||||
glib-2.0 >= 2.32.0
|
||||
gthread-2.0
|
||||
gobject-2.0
|
||||
])
|
||||
|
||||
LIB_ATK_WRAPPER_LD_FLAGS="-avoid-version -no-undefined"
|
||||
AC_SUBST(LIB_ATK_WRAPPER_LD_FLAGS)
|
||||
|
||||
AC_ARG_ENABLE([modular-jar],
|
||||
[AS_HELP_STRING([--enable-modular-jar],
|
||||
[Build modular java-atk-wrapper jar])],
|
||||
[enable_modular_jar="$enableval"],
|
||||
[enable_modular_jar=no])
|
||||
AS_IF([test "x$enable_modular_jar" = "xyes"], [
|
||||
JAVA_REQUIRED=9.0.0
|
||||
], [
|
||||
JAVA_REQUIRED=1.7.0
|
||||
])
|
||||
JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build java-access-bridge"
|
||||
AM_CONDITIONAL([MODULAR_JAR], [test "x$enable_modular_jar" = "xyes"])
|
||||
|
||||
# java wrapper
|
||||
|
||||
AM_CONDITIONAL(USER, test `whoami` = "root")
|
||||
|
||||
AC_ARG_VAR([JAVA_HOME],[Java Runtime Environment location])
|
||||
AC_ARG_VAR([JDK_SRC],[JDK installation path])
|
||||
|
||||
CUR_DIR=`pwd`
|
||||
SRC_DIR=`dirname $0`
|
||||
|
||||
AC_ARG_WITH([jdk_auto_detect],
|
||||
[AS_HELP_STRING([--with-jdk-auto-detect],
|
||||
[Auto-detection of jdk location])],
|
||||
[],
|
||||
[with_jdk_auto_detect=yes])
|
||||
if test "x$with_jdk_auto_detect" = "xyes"; then
|
||||
`javac -nowarn $JAVACFLAGS ${srcdir}/JavaInfo.java -d .`
|
||||
JDK_SRC=`java JavaInfo`
|
||||
JAVA_HOME="${JDK_SRC}/jre"
|
||||
if test ! -d ${JAVA_HOME}; then
|
||||
JAVA_HOME="${JDK_SRC}"
|
||||
fi
|
||||
else
|
||||
if test -z "$JDK_SRC"; then
|
||||
AC_MSG_ERROR("You should specify JDK_SRC")
|
||||
else
|
||||
if test -z "$JAVA_HOME"; then
|
||||
JAVA_HOME="${JDK_SRC}/jre"
|
||||
if test ! -d ${JAVA_HOME}; then
|
||||
JAVA_HOME="${JDK_SRC}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(JDK_SRC)
|
||||
AC_SUBST(JAVA_HOME)
|
||||
|
||||
if test -z "$JAVA_HOME"; then
|
||||
JAVA_PATH=${PATH}
|
||||
else
|
||||
JAVA_PATH=${JDK_SRC}:${JDK_SRC}/bin:${PATH}
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(JAVA,java,,${JAVA_PATH})
|
||||
if test -z "$JAVA"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
fi
|
||||
AC_SUBST(JAVA)
|
||||
|
||||
AC_PATH_PROG(JAVAC,javac,,${JAVA_PATH})
|
||||
if test -z "$JAVAC"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
fi
|
||||
AC_SUBST(JAVAC)
|
||||
|
||||
AC_SUBST(JAVACFLAGS)
|
||||
|
||||
AC_PATH_PROG(JAR,jar,,${JAVA_PATH})
|
||||
if test -z "$JAR"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
fi
|
||||
AC_SUBST(JAR)
|
||||
|
||||
|
||||
if test "x$GCC" = xyes; then
|
||||
JAW_CFLAGS="$JAW_CFLAGS $CFLAGS"
|
||||
else
|
||||
AC_MSG_ERROR("You should compile with GCC")
|
||||
fi
|
||||
AC_SUBST(JAW_CFLAGS)
|
||||
|
||||
AX_COMPILER_FLAGS()
|
||||
case "$WARN_CFLAGS" in
|
||||
*-Werror*)
|
||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=strict-prototypes"
|
||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=declaration-after-statement"
|
||||
;;
|
||||
esac
|
||||
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS -Wno-declaration-after-statement"
|
||||
AC_SUBST(AM_CFLAGS)
|
||||
|
||||
CHECK_JNI
|
||||
|
||||
AC_MSG_CHECKING([JDK version])
|
||||
jversion=`$JAVA -version 2>&1 | head -n1 | cut -f2 -d'"' | cut -f1 -d_`
|
||||
AC_MSG_RESULT($jversion)
|
||||
j_major_version=0`echo $jversion | cut -f1 -d.`
|
||||
j_minor_version=0`echo $jversion | cut -f2 -d.`
|
||||
j_micro_version=0`echo $jversion | cut -f3 -d.`
|
||||
min_major_version=0`echo $JAVA_REQUIRED | cut -f1 -d.`
|
||||
min_minor_version=0`echo $JAVA_REQUIRED | cut -f2 -d.`
|
||||
min_micro_version=0`echo $JAVA_REQUIRED | cut -f3 -d.`
|
||||
if test "$j_major_version" -lt "$min_major_version"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
elif test "$j_major_version" = "$min_major_version"; then
|
||||
if test "$j_minor_version" -lt "$min_minor_version"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
elif test "$j_minor_version" = "$min_minor_version"; then
|
||||
if test "$j_micro_version" -lt "$min_micro_version"; then
|
||||
AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
XPROP_PATH=${PATH}:/usr/X11/bin
|
||||
AC_PATH_PROG(XPROP,xprop,,${XPROP_PATH})
|
||||
if test -z "$XPROP"; then
|
||||
AC_MSG_ERROR([No xprop found])
|
||||
fi
|
||||
AC_SUBST(XPROP)
|
||||
|
||||
AC_ARG_WITH(jardir, AS_HELP_STRING([--with-jardir=[dirname]],[Directory for installing the java-atk-wrapper.jar file]))
|
||||
if test -z "$with_jardir" ; then
|
||||
if test -d ${JAVA_HOME}/lib/ext ; then
|
||||
if test "x$(basename ${JAVA_HOME})" = xjre; then
|
||||
JARDIR=${libdir}/jvm/$(basename ${JDK_SRC})/jre/lib/ext
|
||||
else
|
||||
JARDIR=${libdir}/jvm/$(basename ${JAVA_HOME})/lib/ext
|
||||
fi
|
||||
else
|
||||
JARDIR=${libdir}/jvm/$(basename ${JAVA_HOME})/lib
|
||||
fi
|
||||
else
|
||||
JARDIR=$with_jardir
|
||||
fi
|
||||
AC_SUBST(JARDIR)
|
||||
|
||||
AC_ARG_WITH(propertiesdir, AS_HELP_STRING([--with-propertiesdir=[dirname]],[Directory for installing the accessibility.properties file]))
|
||||
if test -z "$with_propertiesdir" ; then
|
||||
if test -d ${JAVA_HOME}/conf ; then
|
||||
PROPERTIESDIR=${libdir}/jvm/$(basename ${JAVA_HOME})/conf
|
||||
else
|
||||
if test "x$(basename ${JAVA_HOME})" = xjre; then
|
||||
PROPERTIESDIR=${libdir}/jvm/$(basename ${JDK_SRC})/jre/lib
|
||||
else
|
||||
PROPERTIESDIR=${libdir}/jvm/$(basename ${JAVA_HOME})/lib
|
||||
fi
|
||||
fi
|
||||
else
|
||||
PROPERTIESDIR=$with_propertiesdir
|
||||
fi
|
||||
AC_SUBST(PROPERTIESDIR)
|
||||
|
||||
JAW_JAR_NAME=java-atk-wrapper.jar
|
||||
AC_SUBST(JAW_JAR_NAME)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
jni/Makefile
|
||||
jni/src/Makefile
|
||||
wrapper/Makefile
|
||||
wrapper/org/Makefile
|
||||
wrapper/org/GNOME/Makefile
|
||||
wrapper/org/GNOME/Accessibility/AtkWrapper.java
|
||||
wrapper/org/GNOME/Accessibility/Makefile
|
||||
wrapper/META-INF/Makefile
|
||||
wrapper/META-INF/services/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
echo "
|
||||
Build configuration:
|
||||
|
||||
Prefix: ${prefix}
|
||||
Source code location: ${srcdir}
|
||||
Modular jar: ${enable_modular_jar}
|
||||
Compiler: ${CC}
|
||||
JDK src: ${JDK_SRC}
|
||||
JAVA home: ${JAVA_HOME}
|
||||
Host OS: ${host_os}
|
||||
JNI includes: ${JNI_INCLUDES}
|
||||
Warn flags: ${WARN_CFLAGS}
|
||||
"
|
|
@ -0,0 +1 @@
|
|||
SUBDIRS=src
|
|
@ -0,0 +1,654 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = jni
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = src
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu jni/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu jni/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,162 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class org_GNOME_Accessibility_AtkWrapper */
|
||||
|
||||
#ifndef _Included_org_GNOME_Accessibility_AtkWrapper
|
||||
#define _Included_org_GNOME_Accessibility_AtkWrapper
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: initNativeLibrary
|
||||
* Signature: ()Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL Java_org_GNOME_Accessibility_AtkWrapper_initNativeLibrary(void);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: loadAtkBridge
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_loadAtkBridge(void);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: GC
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_GC(JNIEnv *);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: focusNotify
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_focusNotify
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowOpen
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;Z)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowOpen
|
||||
(JNIEnv *, jclass, jobject, jboolean);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowClose
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;Z)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowClose
|
||||
(JNIEnv *, jclass, jobject, jboolean);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowMinimize
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMinimize
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowMaximize
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMaximize
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowRestore
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowRestore
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowActivate
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowActivate
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowDeactivate
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowDeactivate
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: windowStateChange
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowStateChange
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: emitSignal
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;I[Ljava/lang/Object;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_emitSignal
|
||||
(JNIEnv *, jclass, jobject, jint, jobjectArray);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: objectStateChange
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;Ljava/lang/Object;Z)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_objectStateChange
|
||||
(JNIEnv *, jclass, jobject, jobject, jboolean);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: componentAdded
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentAdded
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: componentRemoved
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentRemoved
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: boundsChanged
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_boundsChanged
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: dispatchKeyEvent
|
||||
* Signature: (Lorg/GNOME/Accessibility/AtkKeyEvent;)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL Java_org_GNOME_Accessibility_AtkWrapper_dispatchKeyEvent
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
/*
|
||||
* Class: org_GNOME_Accessibility_AtkWrapper
|
||||
* Method: getInstance
|
||||
* Signature: (Ljavax/accessibility/AccessibleContext;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_GNOME_Accessibility_AtkWrapper_getInstance
|
||||
(JNIEnv *, jclass, jobject);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,42 @@
|
|||
lib_LTLIBRARIES = libatk-wrapper.la
|
||||
|
||||
libatk_wrapper_la_SOURCES = AtkWrapper.c \
|
||||
jawutil.c \
|
||||
jawtoplevel.c \
|
||||
jawobject.c \
|
||||
jawimpl.c \
|
||||
jawaction.c \
|
||||
jawcomponent.c \
|
||||
jawtext.c \
|
||||
jaweditabletext.c \
|
||||
jawhyperlink.c \
|
||||
jawhypertext.c \
|
||||
jawimage.c \
|
||||
jawselection.c \
|
||||
jawvalue.c \
|
||||
jawtable.c \
|
||||
jawtablecell.c
|
||||
|
||||
noinst_HEADERS = AtkWrapper.h \
|
||||
jawimpl.h \
|
||||
jawobject.h \
|
||||
jawhyperlink.h \
|
||||
jawtoplevel.h \
|
||||
jawutil.h
|
||||
|
||||
libatk_wrapper_la_CFLAGS = $(JNI_INCLUDES)\
|
||||
$(JAW_CFLAGS) \
|
||||
$(AM_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
libatk_wrapper_la_CPPFLAGS = $(JNI_INCLUDES)\
|
||||
$(JAW_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
libatk_wrapper_la_LDFLAGS = $(LIB_ATK_WRAPPER_LD_FLAGS) \
|
||||
$(LT_VERSION_INFO) \
|
||||
$(PLATFORM_LDFLAGS) \
|
||||
$(AM_LDFLAGS)
|
||||
|
||||
libatk_wrapper_la_LIBADD = $(JAW_LIBS)
|
||||
|
|
@ -0,0 +1,912 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = jni/src
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
am__DEPENDENCIES_1 =
|
||||
libatk_wrapper_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am_libatk_wrapper_la_OBJECTS = libatk_wrapper_la-AtkWrapper.lo \
|
||||
libatk_wrapper_la-jawutil.lo libatk_wrapper_la-jawtoplevel.lo \
|
||||
libatk_wrapper_la-jawobject.lo libatk_wrapper_la-jawimpl.lo \
|
||||
libatk_wrapper_la-jawaction.lo \
|
||||
libatk_wrapper_la-jawcomponent.lo libatk_wrapper_la-jawtext.lo \
|
||||
libatk_wrapper_la-jaweditabletext.lo \
|
||||
libatk_wrapper_la-jawhyperlink.lo \
|
||||
libatk_wrapper_la-jawhypertext.lo \
|
||||
libatk_wrapper_la-jawimage.lo \
|
||||
libatk_wrapper_la-jawselection.lo \
|
||||
libatk_wrapper_la-jawvalue.lo libatk_wrapper_la-jawtable.lo \
|
||||
libatk_wrapper_la-jawtablecell.lo
|
||||
libatk_wrapper_la_OBJECTS = $(am_libatk_wrapper_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
libatk_wrapper_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
||||
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
||||
$(libatk_wrapper_la_CFLAGS) $(CFLAGS) \
|
||||
$(libatk_wrapper_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/libatk_wrapper_la-AtkWrapper.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawaction.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawcomponent.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jaweditabletext.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawhyperlink.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawhypertext.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawimage.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawimpl.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawobject.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawselection.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawtable.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawtablecell.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawtext.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawtoplevel.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawutil.Plo \
|
||||
./$(DEPDIR)/libatk_wrapper_la-jawvalue.Plo
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(libatk_wrapper_la_SOURCES)
|
||||
DIST_SOURCES = $(libatk_wrapper_la_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
lib_LTLIBRARIES = libatk-wrapper.la
|
||||
libatk_wrapper_la_SOURCES = AtkWrapper.c \
|
||||
jawutil.c \
|
||||
jawtoplevel.c \
|
||||
jawobject.c \
|
||||
jawimpl.c \
|
||||
jawaction.c \
|
||||
jawcomponent.c \
|
||||
jawtext.c \
|
||||
jaweditabletext.c \
|
||||
jawhyperlink.c \
|
||||
jawhypertext.c \
|
||||
jawimage.c \
|
||||
jawselection.c \
|
||||
jawvalue.c \
|
||||
jawtable.c \
|
||||
jawtablecell.c
|
||||
|
||||
noinst_HEADERS = AtkWrapper.h \
|
||||
jawimpl.h \
|
||||
jawobject.h \
|
||||
jawhyperlink.h \
|
||||
jawtoplevel.h \
|
||||
jawutil.h
|
||||
|
||||
libatk_wrapper_la_CFLAGS = $(JNI_INCLUDES)\
|
||||
$(JAW_CFLAGS) \
|
||||
$(AM_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
libatk_wrapper_la_CPPFLAGS = $(JNI_INCLUDES)\
|
||||
$(JAW_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
libatk_wrapper_la_LDFLAGS = $(LIB_ATK_WRAPPER_LD_FLAGS) \
|
||||
$(LT_VERSION_INFO) \
|
||||
$(PLATFORM_LDFLAGS) \
|
||||
$(AM_LDFLAGS)
|
||||
|
||||
libatk_wrapper_la_LIBADD = $(JAW_LIBS)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu jni/src/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu jni/src/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
list2=; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
list2="$$list2 $$p"; \
|
||||
else :; fi; \
|
||||
done; \
|
||||
test -z "$$list2" || { \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
|
||||
}
|
||||
|
||||
uninstall-libLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
for p in $$list; do \
|
||||
$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-libLTLIBRARIES:
|
||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||
@list='$(lib_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
|
||||
libatk-wrapper.la: $(libatk_wrapper_la_OBJECTS) $(libatk_wrapper_la_DEPENDENCIES) $(EXTRA_libatk_wrapper_la_DEPENDENCIES)
|
||||
$(AM_V_CCLD)$(libatk_wrapper_la_LINK) -rpath $(libdir) $(libatk_wrapper_la_OBJECTS) $(libatk_wrapper_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-AtkWrapper.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawaction.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawcomponent.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jaweditabletext.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawhyperlink.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawhypertext.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawimage.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawimpl.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawobject.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawselection.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawtable.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawtablecell.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawtext.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawtoplevel.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawutil.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libatk_wrapper_la-jawvalue.Plo@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
libatk_wrapper_la-AtkWrapper.lo: AtkWrapper.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-AtkWrapper.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-AtkWrapper.Tpo -c -o libatk_wrapper_la-AtkWrapper.lo `test -f 'AtkWrapper.c' || echo '$(srcdir)/'`AtkWrapper.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-AtkWrapper.Tpo $(DEPDIR)/libatk_wrapper_la-AtkWrapper.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='AtkWrapper.c' object='libatk_wrapper_la-AtkWrapper.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-AtkWrapper.lo `test -f 'AtkWrapper.c' || echo '$(srcdir)/'`AtkWrapper.c
|
||||
|
||||
libatk_wrapper_la-jawutil.lo: jawutil.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawutil.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawutil.Tpo -c -o libatk_wrapper_la-jawutil.lo `test -f 'jawutil.c' || echo '$(srcdir)/'`jawutil.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawutil.Tpo $(DEPDIR)/libatk_wrapper_la-jawutil.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawutil.c' object='libatk_wrapper_la-jawutil.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawutil.lo `test -f 'jawutil.c' || echo '$(srcdir)/'`jawutil.c
|
||||
|
||||
libatk_wrapper_la-jawtoplevel.lo: jawtoplevel.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawtoplevel.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawtoplevel.Tpo -c -o libatk_wrapper_la-jawtoplevel.lo `test -f 'jawtoplevel.c' || echo '$(srcdir)/'`jawtoplevel.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawtoplevel.Tpo $(DEPDIR)/libatk_wrapper_la-jawtoplevel.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawtoplevel.c' object='libatk_wrapper_la-jawtoplevel.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawtoplevel.lo `test -f 'jawtoplevel.c' || echo '$(srcdir)/'`jawtoplevel.c
|
||||
|
||||
libatk_wrapper_la-jawobject.lo: jawobject.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawobject.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawobject.Tpo -c -o libatk_wrapper_la-jawobject.lo `test -f 'jawobject.c' || echo '$(srcdir)/'`jawobject.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawobject.Tpo $(DEPDIR)/libatk_wrapper_la-jawobject.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawobject.c' object='libatk_wrapper_la-jawobject.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawobject.lo `test -f 'jawobject.c' || echo '$(srcdir)/'`jawobject.c
|
||||
|
||||
libatk_wrapper_la-jawimpl.lo: jawimpl.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawimpl.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawimpl.Tpo -c -o libatk_wrapper_la-jawimpl.lo `test -f 'jawimpl.c' || echo '$(srcdir)/'`jawimpl.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawimpl.Tpo $(DEPDIR)/libatk_wrapper_la-jawimpl.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawimpl.c' object='libatk_wrapper_la-jawimpl.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawimpl.lo `test -f 'jawimpl.c' || echo '$(srcdir)/'`jawimpl.c
|
||||
|
||||
libatk_wrapper_la-jawaction.lo: jawaction.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawaction.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawaction.Tpo -c -o libatk_wrapper_la-jawaction.lo `test -f 'jawaction.c' || echo '$(srcdir)/'`jawaction.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawaction.Tpo $(DEPDIR)/libatk_wrapper_la-jawaction.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawaction.c' object='libatk_wrapper_la-jawaction.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawaction.lo `test -f 'jawaction.c' || echo '$(srcdir)/'`jawaction.c
|
||||
|
||||
libatk_wrapper_la-jawcomponent.lo: jawcomponent.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawcomponent.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawcomponent.Tpo -c -o libatk_wrapper_la-jawcomponent.lo `test -f 'jawcomponent.c' || echo '$(srcdir)/'`jawcomponent.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawcomponent.Tpo $(DEPDIR)/libatk_wrapper_la-jawcomponent.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawcomponent.c' object='libatk_wrapper_la-jawcomponent.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawcomponent.lo `test -f 'jawcomponent.c' || echo '$(srcdir)/'`jawcomponent.c
|
||||
|
||||
libatk_wrapper_la-jawtext.lo: jawtext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawtext.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawtext.Tpo -c -o libatk_wrapper_la-jawtext.lo `test -f 'jawtext.c' || echo '$(srcdir)/'`jawtext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawtext.Tpo $(DEPDIR)/libatk_wrapper_la-jawtext.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawtext.c' object='libatk_wrapper_la-jawtext.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawtext.lo `test -f 'jawtext.c' || echo '$(srcdir)/'`jawtext.c
|
||||
|
||||
libatk_wrapper_la-jaweditabletext.lo: jaweditabletext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jaweditabletext.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jaweditabletext.Tpo -c -o libatk_wrapper_la-jaweditabletext.lo `test -f 'jaweditabletext.c' || echo '$(srcdir)/'`jaweditabletext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jaweditabletext.Tpo $(DEPDIR)/libatk_wrapper_la-jaweditabletext.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jaweditabletext.c' object='libatk_wrapper_la-jaweditabletext.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jaweditabletext.lo `test -f 'jaweditabletext.c' || echo '$(srcdir)/'`jaweditabletext.c
|
||||
|
||||
libatk_wrapper_la-jawhyperlink.lo: jawhyperlink.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawhyperlink.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawhyperlink.Tpo -c -o libatk_wrapper_la-jawhyperlink.lo `test -f 'jawhyperlink.c' || echo '$(srcdir)/'`jawhyperlink.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawhyperlink.Tpo $(DEPDIR)/libatk_wrapper_la-jawhyperlink.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawhyperlink.c' object='libatk_wrapper_la-jawhyperlink.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawhyperlink.lo `test -f 'jawhyperlink.c' || echo '$(srcdir)/'`jawhyperlink.c
|
||||
|
||||
libatk_wrapper_la-jawhypertext.lo: jawhypertext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawhypertext.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawhypertext.Tpo -c -o libatk_wrapper_la-jawhypertext.lo `test -f 'jawhypertext.c' || echo '$(srcdir)/'`jawhypertext.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawhypertext.Tpo $(DEPDIR)/libatk_wrapper_la-jawhypertext.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawhypertext.c' object='libatk_wrapper_la-jawhypertext.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawhypertext.lo `test -f 'jawhypertext.c' || echo '$(srcdir)/'`jawhypertext.c
|
||||
|
||||
libatk_wrapper_la-jawimage.lo: jawimage.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawimage.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawimage.Tpo -c -o libatk_wrapper_la-jawimage.lo `test -f 'jawimage.c' || echo '$(srcdir)/'`jawimage.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawimage.Tpo $(DEPDIR)/libatk_wrapper_la-jawimage.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawimage.c' object='libatk_wrapper_la-jawimage.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawimage.lo `test -f 'jawimage.c' || echo '$(srcdir)/'`jawimage.c
|
||||
|
||||
libatk_wrapper_la-jawselection.lo: jawselection.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawselection.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawselection.Tpo -c -o libatk_wrapper_la-jawselection.lo `test -f 'jawselection.c' || echo '$(srcdir)/'`jawselection.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawselection.Tpo $(DEPDIR)/libatk_wrapper_la-jawselection.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawselection.c' object='libatk_wrapper_la-jawselection.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawselection.lo `test -f 'jawselection.c' || echo '$(srcdir)/'`jawselection.c
|
||||
|
||||
libatk_wrapper_la-jawvalue.lo: jawvalue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawvalue.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawvalue.Tpo -c -o libatk_wrapper_la-jawvalue.lo `test -f 'jawvalue.c' || echo '$(srcdir)/'`jawvalue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawvalue.Tpo $(DEPDIR)/libatk_wrapper_la-jawvalue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawvalue.c' object='libatk_wrapper_la-jawvalue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawvalue.lo `test -f 'jawvalue.c' || echo '$(srcdir)/'`jawvalue.c
|
||||
|
||||
libatk_wrapper_la-jawtable.lo: jawtable.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawtable.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawtable.Tpo -c -o libatk_wrapper_la-jawtable.lo `test -f 'jawtable.c' || echo '$(srcdir)/'`jawtable.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawtable.Tpo $(DEPDIR)/libatk_wrapper_la-jawtable.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawtable.c' object='libatk_wrapper_la-jawtable.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawtable.lo `test -f 'jawtable.c' || echo '$(srcdir)/'`jawtable.c
|
||||
|
||||
libatk_wrapper_la-jawtablecell.lo: jawtablecell.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -MT libatk_wrapper_la-jawtablecell.lo -MD -MP -MF $(DEPDIR)/libatk_wrapper_la-jawtablecell.Tpo -c -o libatk_wrapper_la-jawtablecell.lo `test -f 'jawtablecell.c' || echo '$(srcdir)/'`jawtablecell.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libatk_wrapper_la-jawtablecell.Tpo $(DEPDIR)/libatk_wrapper_la-jawtablecell.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jawtablecell.c' object='libatk_wrapper_la-jawtablecell.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatk_wrapper_la_CPPFLAGS) $(CPPFLAGS) $(libatk_wrapper_la_CFLAGS) $(CFLAGS) -c -o libatk_wrapper_la-jawtablecell.lo `test -f 'jawtablecell.c' || echo '$(srcdir)/'`jawtablecell.c
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-AtkWrapper.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawaction.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawcomponent.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jaweditabletext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawhyperlink.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawhypertext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawimage.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawimpl.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawobject.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawselection.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtable.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtablecell.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtoplevel.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawutil.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawvalue.Plo
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-libLTLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-AtkWrapper.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawaction.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawcomponent.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jaweditabletext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawhyperlink.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawhypertext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawimage.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawimpl.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawobject.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawselection.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtable.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtablecell.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtext.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawtoplevel.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawutil.Plo
|
||||
-rm -f ./$(DEPDIR)/libatk_wrapper_la-jawvalue.Plo
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-libLTLIBRARIES
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
||||
clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-libLTLIBRARIES install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,264 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static gboolean jaw_action_do_action(AtkAction *action, gint i);
|
||||
static gint jaw_action_get_n_actions(AtkAction *action);
|
||||
static const gchar* jaw_action_get_description(AtkAction *action, gint i);
|
||||
static const gchar* jaw_action_get_keybinding (AtkAction *action, gint i);
|
||||
static gboolean jaw_action_set_description (AtkAction *action, gint i, const gchar *description);
|
||||
static const gchar* jaw_action_get_localized_name(AtkAction *action, gint i);
|
||||
|
||||
typedef struct _ActionData {
|
||||
jobject atk_action;
|
||||
gchar* localized_name;
|
||||
jstring jstrLocalizedName;
|
||||
gchar* action_description;
|
||||
jstring jstrActionDescription;
|
||||
gchar* action_keybinding;
|
||||
jstring jstrActionKeybinding;
|
||||
} ActionData;
|
||||
|
||||
#define JAW_GET_ACTION(action, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(action, INTERFACE_ACTION, ActionData, atk_action, jniEnv, atk_action, def_ret)
|
||||
|
||||
void
|
||||
jaw_action_interface_init (AtkActionIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->do_action = jaw_action_do_action;
|
||||
iface->get_n_actions = jaw_action_get_n_actions;
|
||||
// FIXME: missing java support for distinguishing name and description
|
||||
iface->get_description = jaw_action_get_description;
|
||||
iface->get_name = jaw_action_get_description;
|
||||
iface->get_keybinding = jaw_action_get_keybinding;
|
||||
iface->set_description = jaw_action_set_description;
|
||||
iface->get_localized_name = jaw_action_get_localized_name;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_action_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
ActionData *data = g_new0(ActionData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classAction,
|
||||
"createAtkAction",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkAction;");
|
||||
jobject jatk_action = (*jniEnv)->CallStaticObjectMethod(jniEnv, classAction, jmid, ac);
|
||||
data->atk_action = (*jniEnv)->NewGlobalRef(jniEnv, jatk_action);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_action_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
ActionData *data = (ActionData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_action) {
|
||||
if (data->localized_name != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrLocalizedName, data->localized_name);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrLocalizedName);
|
||||
data->jstrLocalizedName = NULL;
|
||||
data->localized_name = NULL;
|
||||
}
|
||||
|
||||
if (data->action_description != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
||||
data->jstrActionDescription,
|
||||
data->action_description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionDescription);
|
||||
data->jstrActionDescription = NULL;
|
||||
data->action_description = NULL;
|
||||
}
|
||||
|
||||
if (data->action_keybinding != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
||||
data->jstrActionKeybinding,
|
||||
data->action_keybinding);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionKeybinding);
|
||||
data->jstrActionKeybinding = NULL;
|
||||
data->action_keybinding = NULL;
|
||||
}
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_action);
|
||||
data->atk_action = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_action_do_action (AtkAction *action, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", action, i);
|
||||
JAW_GET_ACTION(action, FALSE);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"do_action",
|
||||
"(I)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_action,
|
||||
jmid,
|
||||
(jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
return jresult;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_action_get_n_actions (AtkAction *action)
|
||||
{
|
||||
JAW_DEBUG_C("%p", action);
|
||||
JAW_GET_ACTION(action, 0);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"get_n_actions", "()I");
|
||||
|
||||
gint ret = (gint)(*jniEnv)->CallIntMethod(jniEnv, atk_action, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_action_get_description (AtkAction *action, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", action, i);
|
||||
JAW_GET_ACTION(action, NULL);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"get_description",
|
||||
"(I)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_action,
|
||||
jmid,
|
||||
(jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
|
||||
if (data->action_description != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
||||
data->jstrActionDescription,
|
||||
data->action_description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionDescription);
|
||||
data->jstrActionDescription = NULL;
|
||||
data->action_description = NULL;
|
||||
}
|
||||
|
||||
if (jstr) {
|
||||
data->jstrActionDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
data->action_description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
||||
data->jstrActionDescription,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return data->action_description;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_action_set_description (AtkAction *action, gint i, const gchar *description)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %s", action, i, description);
|
||||
JAW_GET_ACTION(action, FALSE);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"setDescription",
|
||||
"(ILjava/lang/String;)Z");
|
||||
jboolean jisset = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_action,
|
||||
jmid,
|
||||
(jint)i,
|
||||
(jstring)description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
return jisset;
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_action_get_localized_name (AtkAction *action, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", action, i);
|
||||
JAW_GET_ACTION(action, NULL);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"getLocalizedName",
|
||||
"(I)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, atk_action, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
if (data->localized_name != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrLocalizedName, data->localized_name);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrLocalizedName);
|
||||
}
|
||||
data->jstrLocalizedName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
data->localized_name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, data->jstrLocalizedName, NULL);
|
||||
return data->localized_name;
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_action_get_keybinding (AtkAction *action, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", action, i);
|
||||
JAW_GET_ACTION(action, NULL);
|
||||
|
||||
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkAction");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkAction,
|
||||
"get_keybinding",
|
||||
"(I)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, atk_action, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
|
||||
|
||||
if (data->action_keybinding != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
||||
data->jstrActionKeybinding,
|
||||
data->action_keybinding);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionKeybinding);
|
||||
}
|
||||
|
||||
data->jstrActionKeybinding = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
data->action_keybinding = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
||||
data->jstrActionKeybinding,
|
||||
NULL);
|
||||
return data->action_keybinding;
|
||||
}
|
|
@ -0,0 +1,272 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static gboolean jaw_component_contains(AtkComponent *component,
|
||||
gint x,
|
||||
gint y,
|
||||
AtkCoordType coord_type);
|
||||
|
||||
static AtkObject* jaw_component_ref_accessible_at_point(AtkComponent *component,
|
||||
gint x,
|
||||
gint y,
|
||||
AtkCoordType coord_type);
|
||||
|
||||
static void jaw_component_get_extents(AtkComponent *component,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gint *width,
|
||||
gint *height,
|
||||
AtkCoordType coord_type);
|
||||
|
||||
static gboolean jaw_component_set_extents(AtkComponent *component,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
AtkCoordType coord_type);
|
||||
|
||||
static gboolean jaw_component_grab_focus(AtkComponent *component);
|
||||
static AtkLayer jaw_component_get_layer(AtkComponent *component);
|
||||
/*static gin jaw_component_get_mdi_zorder(AtkComponent *component); */
|
||||
|
||||
typedef struct _ComponentData {
|
||||
jobject atk_component;
|
||||
} ComponentData;
|
||||
|
||||
#define JAW_GET_COMPONENT(component, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(component, INTERFACE_COMPONENT, ComponentData, atk_component, jniEnv, atk_component, def_ret)
|
||||
|
||||
void
|
||||
jaw_component_interface_init (AtkComponentIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p,%p", iface, data);
|
||||
// deprecated: iface->add_focus_handler
|
||||
iface->contains = jaw_component_contains;
|
||||
iface->ref_accessible_at_point = jaw_component_ref_accessible_at_point;
|
||||
iface->get_extents = jaw_component_get_extents;
|
||||
// done by atk: iface->get_position
|
||||
// done by atk: iface->get_size
|
||||
iface->grab_focus = jaw_component_grab_focus;
|
||||
// deprecated: iface->remove_focus_handler
|
||||
iface->set_extents = jaw_component_set_extents;
|
||||
// TODO: iface->set_position similar to set_extents
|
||||
// TODO: iface->set_size similar to set_extents
|
||||
iface->get_layer = jaw_component_get_layer;
|
||||
iface->get_mdi_zorder = NULL; /* TODO: jaw_component_get_mdi_zorder;*/
|
||||
// TODO: missing java support for iface->get_alpha
|
||||
// TODO: missing java support for iface->scroll_to
|
||||
// TODO: missing java support for iface->scroll_to_point
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_component_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
ComponentData *data = g_new0(ComponentData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classComponent,
|
||||
"createAtkComponent",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkComponent;");
|
||||
|
||||
jobject jatk_component = (*jniEnv)->CallStaticObjectMethod(jniEnv, classComponent, jmid, ac);
|
||||
data->atk_component = (*jniEnv)->NewGlobalRef(jniEnv, jatk_component);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_component_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
ComponentData *data = (ComponentData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_component)
|
||||
{
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_component);
|
||||
data->atk_component = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_component_contains (AtkComponent *component, gint x, gint y, AtkCoordType coord_type)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d", component, x, y, coord_type);
|
||||
JAW_GET_COMPONENT(component, FALSE);
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkComponent,
|
||||
"contains",
|
||||
"(III)Z");
|
||||
|
||||
jboolean jcontains = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_component,
|
||||
jmid,
|
||||
(jint)x,
|
||||
(jint)y,
|
||||
(jint)coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
|
||||
return jcontains;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_component_ref_accessible_at_point (AtkComponent *component, gint x, gint y, AtkCoordType coord_type)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d", component, x, y, coord_type);
|
||||
JAW_GET_COMPONENT(component, NULL);
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkComponent,
|
||||
"get_accessible_at_point",
|
||||
"(III)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject child_ac = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_component,
|
||||
jmid,
|
||||
(jint)x,
|
||||
(jint)y,
|
||||
(jint)coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( jniEnv, child_ac );
|
||||
|
||||
if (jaw_impl)
|
||||
g_object_ref( G_OBJECT(jaw_impl) );
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_component_get_extents (AtkComponent *component,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gint *width,
|
||||
gint *height,
|
||||
AtkCoordType coord_type)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p, %p, %p, %d", component, x, y, width, height, coord_type);
|
||||
if (x == NULL || y == NULL || width == NULL || height == NULL)
|
||||
return;
|
||||
|
||||
(*x) = -1;
|
||||
(*y) = -1;
|
||||
(*width) = -1;
|
||||
(*height) = -1;
|
||||
|
||||
if (component == NULL)
|
||||
return;
|
||||
|
||||
JAW_GET_COMPONENT(component, );
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkComponent,
|
||||
"get_extents",
|
||||
"(I)Ljava/awt/Rectangle;");
|
||||
|
||||
jobject jrectangle = (*jniEnv)->CallObjectMethod(jniEnv, atk_component, jmid, (jint) coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
|
||||
if (jrectangle == NULL)
|
||||
{
|
||||
JAW_DEBUG_I("jrectangle == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
jclass classRectangle = (*jniEnv)->FindClass(jniEnv, "java/awt/Rectangle");
|
||||
jfieldID jfidX = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "x", "I");
|
||||
jfieldID jfidY = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "y", "I");
|
||||
jfieldID jfidW = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "width", "I");
|
||||
jfieldID jfidH = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "height", "I");
|
||||
(*x) = (gint)(*jniEnv)->GetIntField(jniEnv, jrectangle, jfidX);
|
||||
(*y) = (gint)(*jniEnv)->GetIntField(jniEnv, jrectangle, jfidY);
|
||||
(*width) = (gint)(*jniEnv)->GetIntField(jniEnv, jrectangle, jfidW);
|
||||
(*height) = (gint)(*jniEnv)->GetIntField(jniEnv, jrectangle, jfidH);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_component_set_extents (AtkComponent *component,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
AtkCoordType coord_type)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d, %d, %d", component, x, y, width, height, coord_type);
|
||||
JAW_GET_COMPONENT(component, FALSE);
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkComponent, "set_extents", "(IIIII)Z");
|
||||
jboolean assigned = (*jniEnv)->CallBooleanMethod(jniEnv, atk_component, jmid, (jint)x, (jint)y, (jint)width, (jint)height, (jint)coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
return assigned;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_component_grab_focus (AtkComponent *component)
|
||||
{
|
||||
JAW_DEBUG_C("%p", component);
|
||||
JAW_GET_COMPONENT(component, FALSE);
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkComponent,
|
||||
"grab_focus",
|
||||
"()Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv, atk_component, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
return jresult;
|
||||
}
|
||||
|
||||
static AtkLayer
|
||||
jaw_component_get_layer (AtkComponent *component)
|
||||
{
|
||||
JAW_DEBUG_C("%p", component);
|
||||
JAW_GET_COMPONENT(component, 0);
|
||||
|
||||
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkComponent");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkComponent,
|
||||
"get_layer",
|
||||
"()I");
|
||||
|
||||
jint jlayer = (*jniEnv)->CallIntMethod(jniEnv, atk_component, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_component);
|
||||
|
||||
return (AtkLayer)jlayer;
|
||||
}
|
|
@ -0,0 +1,258 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
#include "jawobject.h"
|
||||
|
||||
static void jaw_editable_text_set_text_contents(AtkEditableText *text,
|
||||
const gchar *string);
|
||||
static void jaw_editable_text_insert_text(AtkEditableText *text,
|
||||
const gchar *string,
|
||||
gint length,
|
||||
gint *position);
|
||||
static void jaw_editable_text_copy_text(AtkEditableText *text,
|
||||
gint start_pos,
|
||||
gint end_pos);
|
||||
static void jaw_editable_text_cut_text(AtkEditableText *text,
|
||||
gint start_pos,
|
||||
gint end_pos);
|
||||
static void jaw_editable_text_delete_text(AtkEditableText *text,
|
||||
gint start_pos,
|
||||
gint end_pos);
|
||||
static void jaw_editable_text_paste_text(AtkEditableText *text,
|
||||
gint position);
|
||||
|
||||
static gboolean jaw_editable_text_set_run_attributes(AtkEditableText *text,
|
||||
AtkAttributeSet *attrib_set,
|
||||
gint start_offset,
|
||||
gint end_offset);
|
||||
|
||||
typedef struct _EditableTextData {
|
||||
jobject atk_editable_text;
|
||||
}EditableTextData;
|
||||
|
||||
#define JAW_GET_EDITABLETEXT(text, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(text, INTERFACE_EDITABLE_TEXT, EditableTextData, atk_editable_text, jniEnv, atk_editable_text, def_ret)
|
||||
|
||||
void
|
||||
jaw_editable_text_interface_init (AtkEditableTextIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p,%p", iface, data);
|
||||
iface->set_run_attributes = jaw_editable_text_set_run_attributes;
|
||||
iface->set_text_contents = jaw_editable_text_set_text_contents;
|
||||
iface->insert_text = jaw_editable_text_insert_text;
|
||||
iface->copy_text = jaw_editable_text_copy_text;
|
||||
iface->cut_text = jaw_editable_text_cut_text;
|
||||
iface->delete_text = jaw_editable_text_delete_text;
|
||||
iface->paste_text = jaw_editable_text_paste_text;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_editable_text_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
EditableTextData *data = g_new0(EditableTextData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classEditableText,
|
||||
"createAtkEditableText",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkEditableText;");
|
||||
jobject jatk_editable_text = (*jniEnv)->CallStaticObjectMethod(jniEnv,
|
||||
classEditableText,
|
||||
jmid,
|
||||
ac);
|
||||
data->atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv,
|
||||
jatk_editable_text);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
EditableTextData *data = (EditableTextData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_editable_text)
|
||||
{
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_editable_text);
|
||||
data->atk_editable_text = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_set_text_contents (AtkEditableText *text,
|
||||
const gchar *string)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %s", text, string);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"set_text_contents",
|
||||
"(Ljava/lang/String;)V");
|
||||
|
||||
jstring jstr = (*jniEnv)->NewStringUTF(jniEnv, string);
|
||||
(*jniEnv)->CallVoidMethod(jniEnv, atk_editable_text, jmid, jstr);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_insert_text (AtkEditableText *text,
|
||||
const gchar *string,
|
||||
gint length,
|
||||
gint *position)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %s, %d, %p", text, string, length, position);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"insert_text",
|
||||
"(Ljava/lang/String;I)V");
|
||||
|
||||
jstring jstr = (*jniEnv)->NewStringUTF(jniEnv, string);
|
||||
(*jniEnv)->CallVoidMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid, jstr,
|
||||
(jint)*position);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
*position = *position + length;
|
||||
atk_text_set_caret_offset(ATK_TEXT(jaw_obj), *position);
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_copy_text (AtkEditableText *text,
|
||||
gint start_pos,
|
||||
gint end_pos)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"copy_text",
|
||||
"(II)V");
|
||||
(*jniEnv)->CallVoidMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid,
|
||||
(jint)start_pos,
|
||||
(jint)end_pos);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_cut_text (AtkEditableText *text,
|
||||
gint start_pos, gint end_pos)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"cut_text",
|
||||
"(II)V");
|
||||
(*jniEnv)->CallVoidMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid,
|
||||
(jint)start_pos,
|
||||
(jint)end_pos);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_delete_text (AtkEditableText *text,
|
||||
gint start_pos,
|
||||
gint end_pos)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"delete_text",
|
||||
"(II)V");
|
||||
(*jniEnv)->CallVoidMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid,
|
||||
(jint)start_pos,
|
||||
(jint)end_pos);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
}
|
||||
|
||||
void
|
||||
jaw_editable_text_paste_text (AtkEditableText *text,
|
||||
gint position)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", text, position);
|
||||
JAW_GET_EDITABLETEXT(text, );
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"paste_text",
|
||||
"(I)V");
|
||||
(*jniEnv)->CallVoidMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid,
|
||||
(jint)position);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_editable_text_set_run_attributes(AtkEditableText *text,
|
||||
AtkAttributeSet *attrib_set,
|
||||
gint start_offset,
|
||||
gint end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %d, %d", text, attrib_set, start_offset, end_offset);
|
||||
JAW_GET_EDITABLETEXT(text, FALSE);
|
||||
|
||||
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkEditableText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkEditableText,
|
||||
"setRunAttributes",
|
||||
"(Ljavax/swing/text/AttributeSet;II)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_editable_text,
|
||||
jmid,
|
||||
(jobject)attrib_set,
|
||||
(jint)start_offset,
|
||||
(jint)end_offset);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
|
||||
return jresult;
|
||||
}
|
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include "jawhyperlink.h"
|
||||
#include "jawutil.h"
|
||||
#include "jawimpl.h"
|
||||
|
||||
static void jaw_hyperlink_dispose (GObject *gobject);
|
||||
static void jaw_hyperlink_finalize (GObject *gobject);
|
||||
|
||||
/* AtkObject */
|
||||
static gchar* jaw_hyperlink_get_uri (AtkHyperlink *atk_hyperlink,
|
||||
gint i);
|
||||
static AtkObject* jaw_hyperlink_get_object (AtkHyperlink *atk_hyperlink,
|
||||
gint i);
|
||||
static gint jaw_hyperlink_get_end_index (AtkHyperlink *atk_hyperlink);
|
||||
static gint jaw_hyperlink_get_start_index (AtkHyperlink *atk_hyperlink);
|
||||
static gboolean jaw_hyperlink_is_valid (AtkHyperlink *atk_hyperlink);
|
||||
static gint jaw_hyperlink_get_n_anchors (AtkHyperlink *atk_hyperlink);
|
||||
|
||||
G_DEFINE_TYPE (JawHyperlink, jaw_hyperlink, ATK_TYPE_HYPERLINK)
|
||||
|
||||
#define JAW_GET_HYPERLINK(atk_hyperlink, def_ret) \
|
||||
JAW_GET_OBJ(atk_hyperlink, JAW_HYPERLINK, JawHyperlink, jaw_hyperlink, jhyperlink, jniEnv, jhyperlink, def_ret)
|
||||
|
||||
JawHyperlink*
|
||||
jaw_hyperlink_new (jobject jhyperlink)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", jhyperlink);
|
||||
JawHyperlink* jaw_hyperlink = g_object_new(JAW_TYPE_HYPERLINK, NULL);
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jaw_hyperlink->jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
return jaw_hyperlink;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_hyperlink_class_init (JawHyperlinkClass *klass)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
gobject_class->dispose = jaw_hyperlink_dispose;
|
||||
gobject_class->finalize = jaw_hyperlink_finalize;
|
||||
|
||||
AtkHyperlinkClass *atk_hyperlink_class = ATK_HYPERLINK_CLASS(klass);
|
||||
atk_hyperlink_class->get_uri = jaw_hyperlink_get_uri;
|
||||
atk_hyperlink_class->get_object = jaw_hyperlink_get_object;
|
||||
atk_hyperlink_class->get_end_index = jaw_hyperlink_get_end_index;
|
||||
atk_hyperlink_class->get_start_index = jaw_hyperlink_get_start_index;
|
||||
atk_hyperlink_class->is_valid = jaw_hyperlink_is_valid;
|
||||
atk_hyperlink_class->get_n_anchors = jaw_hyperlink_get_n_anchors;
|
||||
// TODO: missing java support for atk_hyperlink_class->link_state
|
||||
// TODO: missing java support for atk_hyperlink_class->is_selected_link
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_hyperlink_init (JawHyperlink *link)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", link);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_hyperlink_dispose(GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", gobject);
|
||||
/* Chain up to parent's dispose */
|
||||
G_OBJECT_CLASS(jaw_hyperlink_parent_class)->dispose(gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_hyperlink_finalize(GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", gobject);
|
||||
JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(gobject);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
|
||||
jaw_hyperlink->jhyperlink = NULL;
|
||||
|
||||
/* Chain up to parent's finalize */
|
||||
G_OBJECT_CLASS(jaw_hyperlink_parent_class)->finalize(gobject);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_hyperlink_get_uri (AtkHyperlink *atk_hyperlink,
|
||||
gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", atk_hyperlink, i);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, NULL);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_uri", "(I)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, jhyperlink, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
if (jaw_hyperlink->uri != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_hyperlink->jstrUri, jaw_hyperlink->uri);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_hyperlink->jstrUri);
|
||||
}
|
||||
|
||||
jaw_hyperlink->jstrUri = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
jaw_hyperlink->uri = (gchar*)(*jniEnv)->GetStringUTFChars( jniEnv, jaw_hyperlink->jstrUri, NULL );
|
||||
|
||||
return jaw_hyperlink->uri;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_hyperlink_get_object (AtkHyperlink *atk_hyperlink,
|
||||
gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", atk_hyperlink, i);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, NULL);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_object", "(I)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject ac = (*jniEnv)->CallObjectMethod(jniEnv, jhyperlink, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
if (ac == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
AtkObject *obj = (AtkObject*) jaw_impl_get_instance_from_jaw( jniEnv, ac );
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_hyperlink_get_end_index (AtkHyperlink *atk_hyperlink)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_hyperlink);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, 0);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_end_index", "()I");
|
||||
jint jindex = (*jniEnv)->CallIntMethod(jniEnv, jhyperlink, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
return jindex;
|
||||
}
|
||||
|
||||
static gint jaw_hyperlink_get_start_index (AtkHyperlink *atk_hyperlink)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_hyperlink);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, 0);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_start_index", "()I");
|
||||
jint jindex = (*jniEnv)->CallIntMethod(jniEnv, jhyperlink, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
return jindex;
|
||||
}
|
||||
|
||||
static gboolean jaw_hyperlink_is_valid (AtkHyperlink *atk_hyperlink)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_hyperlink);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, FALSE);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "is_valid", "()Z");
|
||||
jboolean jvalid = (*jniEnv)->CallBooleanMethod(jniEnv, jhyperlink, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
return jvalid;
|
||||
}
|
||||
|
||||
static gint jaw_hyperlink_get_n_anchors (AtkHyperlink *atk_hyperlink)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_hyperlink);
|
||||
JAW_GET_HYPERLINK(atk_hyperlink, 0);
|
||||
|
||||
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_n_anchors", "()I");
|
||||
jint janchors = (*jniEnv)->CallIntMethod(jniEnv, jhyperlink, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jhyperlink);
|
||||
|
||||
return janchors;
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _JAW_HYPERLINK_H_
|
||||
#define _JAW_HYPERLINK_H_
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <jni.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define JAW_TYPE_HYPERLINK (jaw_hyperlink_get_type ())
|
||||
#define JAW_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_HYPERLINK, JawHyperlink))
|
||||
#define JAW_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JAW_TYPE_HYPERLINK, JawHyperlinkClass))
|
||||
#define JAW_IS_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JAW_TYPE_HYPERLINK))
|
||||
#define JAW_IS_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JAW_TYPE_HYPERLINK))
|
||||
#define JAW_HYPERLINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JAW_TYPE_HYPERLINK, JawHyperlinkClass))
|
||||
|
||||
typedef struct _JawHyperlink JawHyperlink;
|
||||
typedef struct _JawHyperlinkClass JawHyperlinkClass;
|
||||
|
||||
struct _JawHyperlink
|
||||
{
|
||||
AtkHyperlink parent;
|
||||
jobject jhyperlink;
|
||||
|
||||
jstring jstrUri;
|
||||
gchar* uri;
|
||||
};
|
||||
|
||||
GType jaw_hyperlink_get_type (void);
|
||||
|
||||
struct _JawHyperlinkClass
|
||||
{
|
||||
AtkHyperlinkClass parent_class;
|
||||
};
|
||||
|
||||
JawHyperlink* jaw_hyperlink_new (jobject jhyperlink);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
#include "jawhyperlink.h"
|
||||
|
||||
static AtkHyperlink* jaw_hypertext_get_link (AtkHypertext *hypertext,
|
||||
gint link_index);
|
||||
static gint jaw_hypertext_get_n_links (AtkHypertext *hypertext);
|
||||
static gint jaw_hypertext_get_link_index (AtkHypertext *hypertext,
|
||||
gint char_index);
|
||||
|
||||
typedef struct _HypertextData {
|
||||
jobject atk_hypertext;
|
||||
GHashTable *link_table;
|
||||
} HypertextData;
|
||||
|
||||
#define JAW_GET_HYPERTEXT(hypertext, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(hypertext, INTERFACE_HYPERTEXT, HypertextData, atk_hypertext, jniEnv, atk_hypertext, def_ret)
|
||||
|
||||
void
|
||||
jaw_hypertext_interface_init (AtkHypertextIface *iface, gpointer data)
|
||||
{
|
||||
iface->get_link = jaw_hypertext_get_link;
|
||||
iface->get_n_links = jaw_hypertext_get_n_links;
|
||||
iface->get_link_index = jaw_hypertext_get_link_index;
|
||||
}
|
||||
|
||||
static void
|
||||
link_destroy_notify (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_C("%p", p);
|
||||
JawHyperlink* jaw_hyperlink = (JawHyperlink*)p;
|
||||
if(G_OBJECT(jaw_hyperlink) != NULL)
|
||||
g_object_unref(G_OBJECT(jaw_hyperlink));
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_hypertext_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
HypertextData *data = g_new0(HypertextData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, classHypertext, "createAtkHypertext", "(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkHypertext;");
|
||||
jobject jatk_hypertext = (*jniEnv)->CallStaticObjectMethod(jniEnv, classHypertext, jmid, ac);
|
||||
data->atk_hypertext = (*jniEnv)->NewGlobalRef(jniEnv, jatk_hypertext);
|
||||
|
||||
data->link_table = g_hash_table_new_full(NULL, NULL, NULL, link_destroy_notify);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_hypertext_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
HypertextData *data = (HypertextData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_hypertext) {
|
||||
g_hash_table_remove_all(data->link_table);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_hypertext);
|
||||
data->atk_hypertext = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static AtkHyperlink*
|
||||
jaw_hypertext_get_link (AtkHypertext *hypertext, gint link_index)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", hypertext, link_index);
|
||||
JAW_GET_HYPERTEXT(hypertext, NULL);
|
||||
|
||||
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_link", "(I)Lorg/GNOME/Accessibility/AtkHyperlink;");
|
||||
jobject jhyperlink = (*jniEnv)->CallObjectMethod(jniEnv, atk_hypertext, jmid, (jint)link_index);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_hypertext);
|
||||
|
||||
if (!jhyperlink) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
JawHyperlink *jaw_hyperlink = jaw_hyperlink_new(jhyperlink);
|
||||
g_hash_table_insert(data->link_table, GINT_TO_POINTER(link_index), (gpointer)jaw_hyperlink);
|
||||
|
||||
return ATK_HYPERLINK(jaw_hyperlink);
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_hypertext_get_n_links (AtkHypertext *hypertext)
|
||||
{
|
||||
JAW_DEBUG_C("%p", hypertext);
|
||||
JAW_GET_HYPERTEXT(hypertext, 0);
|
||||
|
||||
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_n_links", "()I");
|
||||
|
||||
gint ret = (gint)(*jniEnv)->CallIntMethod(jniEnv, atk_hypertext, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_hypertext);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_hypertext_get_link_index (AtkHypertext *hypertext, gint char_index)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", hypertext, char_index);
|
||||
JAW_GET_HYPERTEXT(hypertext, 0);
|
||||
|
||||
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_link_index", "(I)I");
|
||||
|
||||
gint ret = (gint)(*jniEnv)->CallIntMethod(jniEnv, atk_hypertext, jmid, (jint)char_index);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_hypertext);
|
||||
return ret;
|
||||
}
|
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static void jaw_image_get_image_position (AtkImage *image,
|
||||
gint *x,
|
||||
gint *y,
|
||||
AtkCoordType coord_type);
|
||||
static const gchar* jaw_image_get_image_description(AtkImage *image);
|
||||
static void jaw_image_get_image_size (AtkImage *image,
|
||||
gint *width,
|
||||
gint *height);
|
||||
|
||||
typedef struct _ImageData {
|
||||
jobject atk_image;
|
||||
gchar* image_description;
|
||||
jstring jstrImageDescription;
|
||||
} ImageData;
|
||||
|
||||
#define JAW_GET_IMAGE(image, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(image, INTERFACE_IMAGE, ImageData, atk_image, jniEnv, atk_image, def_ret)
|
||||
|
||||
void
|
||||
jaw_image_interface_init (AtkImageIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->get_image_position = jaw_image_get_image_position;
|
||||
iface->get_image_description = jaw_image_get_image_description;
|
||||
iface->get_image_size = jaw_image_get_image_size;
|
||||
iface->set_image_description = NULL; /* TODO */
|
||||
// TODO: iface->get_image_locale from AccessibleContext.getLocale()
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_image_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p", ac);
|
||||
ImageData *data = g_new0(ImageData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, classImage, "createAtkImage", "(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkImage;");
|
||||
jobject jatk_image = (*jniEnv)->CallStaticObjectMethod(jniEnv, classImage, jmid, ac);
|
||||
data->atk_image = (*jniEnv)->NewGlobalRef(jniEnv, jatk_image);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_image_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
ImageData *data = (ImageData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_image) {
|
||||
if (data->image_description != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrImageDescription, data->image_description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrImageDescription);
|
||||
data->jstrImageDescription = NULL;
|
||||
data->image_description = NULL;
|
||||
}
|
||||
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_image);
|
||||
data->atk_image = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_image_get_image_position (AtkImage *image,
|
||||
gint *x, gint *y, AtkCoordType coord_type)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p, %d", image, x, y, coord_type);
|
||||
(*x) = -1;
|
||||
(*y) = -1;
|
||||
JAW_GET_IMAGE(image, );
|
||||
|
||||
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_position", "(I)Ljava/awt/Point;");
|
||||
jobject jpoint = (*jniEnv)->CallObjectMethod(jniEnv, atk_image, jmid, (jint)coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_image);
|
||||
|
||||
if (jpoint == NULL) {
|
||||
JAW_DEBUG_I("jpoint == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
jclass classPoint = (*jniEnv)->FindClass(jniEnv, "java/awt/Point");
|
||||
jfieldID jfidX = (*jniEnv)->GetFieldID(jniEnv, classPoint, "x", "I");
|
||||
jfieldID jfidY = (*jniEnv)->GetFieldID(jniEnv, classPoint, "y", "I");
|
||||
jint jx = (*jniEnv)->GetIntField(jniEnv, jpoint, jfidX);
|
||||
jint jy = (*jniEnv)->GetIntField(jniEnv, jpoint, jfidY);
|
||||
|
||||
(*x) = (gint)jx;
|
||||
(*y) = (gint)jy;
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_image_get_image_description (AtkImage *image)
|
||||
{
|
||||
JAW_DEBUG_C("%p", image);
|
||||
JAW_GET_IMAGE(image, NULL);
|
||||
|
||||
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_description", "()Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, atk_image, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_image);
|
||||
|
||||
if (data->image_description != NULL) {
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrImageDescription, data->image_description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrImageDescription);
|
||||
}
|
||||
|
||||
data->jstrImageDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
data->image_description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, data->jstrImageDescription, NULL);
|
||||
|
||||
return data->image_description;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_image_get_image_size (AtkImage *image, gint *width, gint *height)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", image, width, height);
|
||||
(*width) = -1;
|
||||
(*height) = -1;
|
||||
JAW_GET_IMAGE(image, );
|
||||
|
||||
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_size", "()Ljava/awt/Dimension;");
|
||||
jobject jdimension = (*jniEnv)->CallObjectMethod(jniEnv, atk_image, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_image);
|
||||
|
||||
if (jdimension == NULL) {
|
||||
JAW_DEBUG_I("jdimension == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
jclass classDimension = (*jniEnv)->FindClass(jniEnv, "java/awt/Dimension");
|
||||
jfieldID jfidWidth = (*jniEnv)->GetFieldID(jniEnv, classDimension, "width", "I");
|
||||
jfieldID jfidHeight = (*jniEnv)->GetFieldID(jniEnv, classDimension, "height", "I");
|
||||
jint jwidth = (*jniEnv)->GetIntField(jniEnv, jdimension, jfidWidth);
|
||||
jint jheight = (*jniEnv)->GetIntField(jniEnv, jdimension, jfidHeight);
|
||||
|
||||
(*width) = (gint)jwidth;
|
||||
(*height) = (gint)jheight;
|
||||
}
|
|
@ -0,0 +1,645 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
#include <glib/gprintf.h>
|
||||
#include "jawutil.h"
|
||||
#include "jawimpl.h"
|
||||
#include "jawtoplevel.h"
|
||||
#include "jawobject.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static void jaw_impl_class_init (JawImplClass *klass);
|
||||
//static void jaw_impl_init (JawImpl *impl);
|
||||
static void jaw_impl_dispose(GObject *gobject);
|
||||
static void jaw_impl_finalize(GObject *gobject);
|
||||
|
||||
static gpointer jaw_impl_get_interface_data(JawObject *jaw_obj, guint iface);
|
||||
|
||||
/* AtkObject */
|
||||
static void jaw_impl_initialize(AtkObject *atk_obj, gpointer data);
|
||||
|
||||
typedef struct _JawInterfaceInfo {
|
||||
void (*finalize) (gpointer);
|
||||
gpointer data;
|
||||
} JawInterfaceInfo;
|
||||
|
||||
static gpointer jaw_impl_parent_class = NULL;
|
||||
|
||||
static GMutex typeTableMutex;
|
||||
static GHashTable *typeTable = NULL;
|
||||
static GMutex objectTableMutex;
|
||||
static GHashTable *objectTable = NULL;
|
||||
|
||||
static void
|
||||
object_table_insert (JNIEnv *jniEnv, jobject ac, JawImpl* jaw_impl)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", jniEnv, ac, jaw_impl);
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv,"org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "hashCode", "(Ljavax/accessibility/AccessibleContext;)I");
|
||||
jaw_impl->hash_key = (gint)(*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, ac);
|
||||
g_mutex_lock(&objectTableMutex);
|
||||
g_hash_table_insert(objectTable, GINT_TO_POINTER(jaw_impl->hash_key), jaw_impl);
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
}
|
||||
|
||||
static JawImpl*
|
||||
object_table_lookup (JNIEnv *jniEnv, jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, ac);
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv,"org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "hashCode", "(Ljavax/accessibility/AccessibleContext;)I");
|
||||
gint hash_key = (gint)(*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, ac);
|
||||
gpointer value = NULL;
|
||||
g_mutex_lock(&objectTableMutex);
|
||||
if (objectTable==NULL)
|
||||
{
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
return NULL;
|
||||
}
|
||||
value = g_hash_table_lookup(objectTable, GINT_TO_POINTER(hash_key));
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
return (JawImpl*)value;
|
||||
}
|
||||
|
||||
static void
|
||||
object_table_remove(JNIEnv *jniEnv, JawImpl *jaw_impl)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, jaw_impl);
|
||||
g_mutex_lock(&objectTableMutex);
|
||||
g_hash_table_remove(objectTable, GINT_TO_POINTER(jaw_impl->hash_key));
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
}
|
||||
|
||||
/* Called on completion of Java GC, take the opportunity to look for stale jaw_impl */
|
||||
void
|
||||
object_table_gc(JNIEnv *jniEnv)
|
||||
{
|
||||
JAW_DEBUG_C("%p", jniEnv);
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
GSList *list = NULL, *cur, *next;
|
||||
|
||||
unsigned count[INTERFACE_MASK+1] = { 0, };
|
||||
|
||||
g_mutex_lock(&objectTableMutex);
|
||||
if (objectTable)
|
||||
{
|
||||
g_hash_table_iter_init(&iter, objectTable);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value))
|
||||
{
|
||||
JawImpl *jaw_impl = value;
|
||||
if ((*jniEnv)->IsSameObject(jniEnv, jaw_impl->parent.acc_context, NULL))
|
||||
{
|
||||
/* Got garbage-collected, mark for dropping */
|
||||
list = g_slist_prepend(list, jaw_impl);
|
||||
}
|
||||
else
|
||||
{
|
||||
count[jaw_impl->tflag]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
|
||||
unsigned i;
|
||||
for (i = 0; i < INTERFACE_MASK+1; i++) {
|
||||
if (count[i] != 0) {
|
||||
JAW_DEBUG_JNI("%x: %d", i, count[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (cur = list; cur != NULL; cur = next)
|
||||
{
|
||||
JawImpl *jaw_impl = cur->data;
|
||||
g_object_unref(G_OBJECT(jaw_impl));
|
||||
next = g_slist_next(cur);
|
||||
g_slist_free_1(cur);
|
||||
}
|
||||
}
|
||||
|
||||
GHashTable*
|
||||
jaw_impl_get_object_hash_table(void)
|
||||
{
|
||||
JAW_DEBUG_ALL("");
|
||||
return objectTable;
|
||||
}
|
||||
|
||||
GMutex*
|
||||
jaw_impl_get_object_hash_table_mutex(void)
|
||||
{
|
||||
JAW_DEBUG_ALL("");
|
||||
return &objectTableMutex;
|
||||
}
|
||||
|
||||
static void
|
||||
aggregate_interface(JNIEnv *jniEnv, JawObject *jaw_obj, guint tflag)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %u", jniEnv, jaw_obj, tflag);
|
||||
JawImpl *jaw_impl = JAW_IMPL(tflag, jaw_obj);
|
||||
jaw_impl->tflag = tflag;
|
||||
|
||||
jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
|
||||
jaw_impl->ifaceTable = g_hash_table_new(NULL, NULL);
|
||||
|
||||
if (tflag & INTERFACE_ACTION)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_action_data_init(ac);
|
||||
info->finalize = jaw_action_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_ACTION,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_COMPONENT)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_component_data_init(ac);
|
||||
info->finalize = jaw_component_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_COMPONENT,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_TEXT)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_text_data_init(ac);
|
||||
info->finalize = jaw_text_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_TEXT,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_EDITABLE_TEXT)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_editable_text_data_init(ac);
|
||||
info->finalize = jaw_editable_text_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_EDITABLE_TEXT,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_HYPERTEXT)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_hypertext_data_init(ac);
|
||||
info->finalize = jaw_hypertext_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_HYPERTEXT,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_IMAGE)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_image_data_init(ac);
|
||||
info->finalize = jaw_image_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_IMAGE,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_SELECTION)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_selection_data_init(ac);
|
||||
info->finalize = jaw_selection_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_SELECTION,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_VALUE)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_value_data_init(ac);
|
||||
info->finalize = jaw_value_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_VALUE,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_TABLE)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_table_data_init(ac);
|
||||
info->finalize = jaw_table_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_TABLE,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
if (tflag & INTERFACE_TABLE_CELL)
|
||||
{
|
||||
JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
|
||||
info->data = jaw_table_cell_data_init(ac);
|
||||
info->finalize = jaw_table_cell_data_finalize;
|
||||
g_hash_table_insert(jaw_impl->ifaceTable,
|
||||
(gpointer)INTERFACE_TABLE_CELL,
|
||||
(gpointer)info);
|
||||
}
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
}
|
||||
|
||||
JawImpl*
|
||||
jaw_impl_get_instance (JNIEnv *jniEnv, jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, ac);
|
||||
JawImpl *jaw_impl;
|
||||
jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (jniEnv == NULL)
|
||||
return NULL;
|
||||
|
||||
g_mutex_lock(&objectTableMutex);
|
||||
if (objectTable == NULL)
|
||||
objectTable = g_hash_table_new (NULL, NULL);
|
||||
g_mutex_unlock(&objectTableMutex);
|
||||
|
||||
jaw_impl = object_table_lookup(jniEnv, ac);
|
||||
|
||||
if (jaw_impl == NULL)
|
||||
{
|
||||
jobject temp_ref = (*jniEnv)->NewGlobalRef(jniEnv, ac);
|
||||
if (temp_ref != NULL)
|
||||
{
|
||||
guint tflag = jaw_util_get_tflag_from_jobj(jniEnv, temp_ref);
|
||||
jaw_impl = (JawImpl*)g_object_new(JAW_TYPE_IMPL(tflag), NULL);
|
||||
if (jaw_impl != NULL)
|
||||
{
|
||||
JawObject *jaw_obj = JAW_OBJECT(jaw_impl);
|
||||
|
||||
if (jaw_obj != NULL)
|
||||
{
|
||||
jobject weak_ref = (*jniEnv)->NewWeakGlobalRef(jniEnv, temp_ref);
|
||||
jaw_obj->acc_context = weak_ref;
|
||||
jaw_obj->storedData = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
aggregate_interface(jniEnv, jaw_obj, tflag);
|
||||
atk_object_initialize(ATK_OBJECT(jaw_impl), NULL);
|
||||
object_table_insert(jniEnv, weak_ref, jaw_impl);
|
||||
} else
|
||||
{
|
||||
JAW_DEBUG_I("jaw_obj == NULL");
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, temp_ref);
|
||||
return NULL;
|
||||
}
|
||||
} else
|
||||
{
|
||||
JAW_DEBUG_I("jaw_impl == NULL");
|
||||
}
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, temp_ref);
|
||||
} else
|
||||
{
|
||||
JAW_DEBUG_I("global_ac == NULL");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return jaw_impl;
|
||||
}
|
||||
|
||||
JawImpl*
|
||||
jaw_impl_get_instance_from_jaw (JNIEnv *jniEnv, jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, ac);
|
||||
jclass classWrapper = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkWrapper");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, classWrapper, "getInstanceFromSwing", "(Ljavax/accessibility/AccessibleContext;)J");
|
||||
jlong ptr = (*jniEnv)->CallStaticLongMethod(jniEnv, classWrapper, jmid, ac);
|
||||
return (JawImpl*) (uintptr_t) ptr;
|
||||
}
|
||||
|
||||
JawImpl*
|
||||
jaw_impl_find_instance (JNIEnv *jniEnv, jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, ac);
|
||||
JawImpl *jaw_impl;
|
||||
|
||||
jaw_impl = object_table_lookup(jniEnv, ac);
|
||||
if (jaw_impl == NULL)
|
||||
{
|
||||
JAW_DEBUG_I("jaw_impl == NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return jaw_impl;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_impl_class_intern_init (gpointer klass, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", klass, data);
|
||||
if (jaw_impl_parent_class == NULL)
|
||||
{
|
||||
jaw_impl_parent_class = g_type_class_peek_parent (klass);
|
||||
}
|
||||
|
||||
jaw_impl_class_init ((JawImplClass*) klass);
|
||||
}
|
||||
|
||||
GType
|
||||
jaw_impl_get_type (guint tflag)
|
||||
{
|
||||
JAW_DEBUG_C("%u", tflag);
|
||||
GType type;
|
||||
|
||||
static const GInterfaceInfo atk_action_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_action_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_component_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_component_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_text_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_text_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_editable_text_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_editable_text_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_hypertext_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_hypertext_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_image_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_image_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_selection_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_selection_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_value_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_value_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_table_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_table_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const GInterfaceInfo atk_table_cell_info =
|
||||
{
|
||||
(GInterfaceInitFunc) jaw_table_cell_interface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
g_mutex_lock(&typeTableMutex);
|
||||
if (typeTable == NULL) {
|
||||
typeTable = g_hash_table_new( NULL, NULL );
|
||||
}
|
||||
|
||||
type = GPOINTER_TO_GTYPE(g_hash_table_lookup(typeTable, GUINT_TO_POINTER(tflag)));
|
||||
g_mutex_unlock(&typeTableMutex);
|
||||
if (type == 0) {
|
||||
GTypeInfo tinfo = {
|
||||
sizeof(JawImplClass),
|
||||
(GBaseInitFunc) NULL, /* base init */
|
||||
(GBaseFinalizeFunc) NULL, /* base finalize */
|
||||
(GClassInitFunc) jaw_impl_class_intern_init, /*class init */
|
||||
(GClassFinalizeFunc) NULL, /* class finalize */
|
||||
NULL, /* class data */
|
||||
sizeof(JawImpl), /* instance size */
|
||||
0, /* nb preallocs */
|
||||
(GInstanceInitFunc) NULL, /* instance init */
|
||||
NULL /* value table */
|
||||
};
|
||||
|
||||
gchar className[20];
|
||||
g_sprintf(className, "JawImpl_%d", tflag);
|
||||
|
||||
type = g_type_register_static(JAW_TYPE_OBJECT, className, &tinfo, 0);
|
||||
|
||||
if (tflag & INTERFACE_ACTION)
|
||||
g_type_add_interface_static (type, ATK_TYPE_ACTION, &atk_action_info);
|
||||
|
||||
if (tflag & INTERFACE_COMPONENT)
|
||||
g_type_add_interface_static (type, ATK_TYPE_COMPONENT,&atk_component_info);
|
||||
|
||||
if (tflag & INTERFACE_TEXT)
|
||||
g_type_add_interface_static (type, ATK_TYPE_TEXT,&atk_text_info);
|
||||
|
||||
if (tflag & INTERFACE_EDITABLE_TEXT)
|
||||
g_type_add_interface_static (type, ATK_TYPE_EDITABLE_TEXT, &atk_editable_text_info);
|
||||
|
||||
if (tflag & INTERFACE_HYPERTEXT)
|
||||
g_type_add_interface_static (type, ATK_TYPE_HYPERTEXT,&atk_hypertext_info);
|
||||
|
||||
if (tflag & INTERFACE_IMAGE)
|
||||
g_type_add_interface_static (type, ATK_TYPE_IMAGE, &atk_image_info);
|
||||
|
||||
if (tflag & INTERFACE_SELECTION)
|
||||
g_type_add_interface_static (type, ATK_TYPE_SELECTION, &atk_selection_info);
|
||||
|
||||
if (tflag & INTERFACE_VALUE)
|
||||
g_type_add_interface_static (type, ATK_TYPE_VALUE, &atk_value_info);
|
||||
|
||||
if (tflag & INTERFACE_TABLE)
|
||||
g_type_add_interface_static (type, ATK_TYPE_TABLE, &atk_table_info);
|
||||
|
||||
if (tflag & INTERFACE_TABLE_CELL)
|
||||
g_type_add_interface_static (type, ATK_TYPE_TABLE_CELL, &atk_table_cell_info);
|
||||
|
||||
g_mutex_lock(&typeTableMutex);
|
||||
g_hash_table_insert(typeTable, GINT_TO_POINTER(tflag), GTYPE_TO_POINTER(type));
|
||||
g_mutex_unlock(&typeTableMutex);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_impl_class_init(JawImplClass *klass)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
gobject_class->dispose = jaw_impl_dispose;
|
||||
gobject_class->finalize = jaw_impl_finalize;
|
||||
|
||||
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
||||
atk_class->initialize = jaw_impl_initialize;
|
||||
|
||||
JawObjectClass *jaw_class = JAW_OBJECT_CLASS (klass);
|
||||
jaw_class->get_interface_data = jaw_impl_get_interface_data;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_impl_dispose(GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", gobject);
|
||||
/* Chain up to parent's dispose */
|
||||
G_OBJECT_CLASS(jaw_impl_parent_class)->dispose(gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_impl_finalize(GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", gobject);
|
||||
JawObject *jaw_obj = JAW_OBJECT(gobject);
|
||||
JawImpl *jaw_impl = (JawImpl*)jaw_obj;
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
object_table_remove( jniEnv, jaw_impl );
|
||||
|
||||
(*jniEnv)->DeleteWeakGlobalRef(jniEnv, jaw_obj->acc_context);
|
||||
jaw_obj->acc_context = NULL;
|
||||
|
||||
/* Interface finalize */
|
||||
GHashTableIter iter;
|
||||
gpointer value;
|
||||
|
||||
g_hash_table_iter_init(&iter, jaw_impl->ifaceTable);
|
||||
while (g_hash_table_iter_next(&iter, NULL, &value))
|
||||
{
|
||||
JawInterfaceInfo *info = (JawInterfaceInfo*)value;
|
||||
info->finalize(info->data);
|
||||
|
||||
g_free(info);
|
||||
|
||||
g_hash_table_iter_remove(&iter);
|
||||
}
|
||||
if (jaw_impl->ifaceTable != NULL)
|
||||
{
|
||||
g_hash_table_unref(jaw_impl->ifaceTable);
|
||||
g_hash_table_destroy(jaw_obj->storedData);
|
||||
}
|
||||
/* Chain up to parent's finalize */
|
||||
G_OBJECT_CLASS(jaw_impl_parent_class)->finalize(gobject);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
jaw_impl_get_interface_data (JawObject *jaw_obj, guint iface)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %u", jaw_obj, iface);
|
||||
JawImpl *jaw_impl = (JawImpl*)jaw_obj;
|
||||
|
||||
if (jaw_impl->ifaceTable == NULL || jaw_impl == NULL)
|
||||
return NULL;
|
||||
|
||||
JawInterfaceInfo *info = g_hash_table_lookup(jaw_impl->ifaceTable,GUINT_TO_POINTER(iface));
|
||||
|
||||
if (info != NULL)
|
||||
return info->data;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_impl_initialize (AtkObject *atk_obj, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", atk_obj, data);
|
||||
ATK_OBJECT_CLASS(jaw_impl_parent_class)->initialize(atk_obj, data);
|
||||
|
||||
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
|
||||
|
||||
jclass classAtkWrapper = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkWrapper");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classAtkWrapper,
|
||||
"registerPropertyChangeListener",
|
||||
"(Ljavax/accessibility/AccessibleContext;)V");
|
||||
(*jniEnv)->CallStaticVoidMethod(jniEnv, classAtkWrapper, jmid, ac);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_java_relation_key (JNIEnv *jniEnv, jstring jKey, const gchar* strKey)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %s", jniEnv, jKey, strKey);
|
||||
jclass classAccessibleRelation = (*jniEnv)->FindClass(jniEnv, "javax/accessibility/AccessibleRelation");
|
||||
jfieldID jfid = (*jniEnv)->GetStaticFieldID(jniEnv, classAccessibleRelation, strKey, "Ljava/lang/String;");
|
||||
jstring jConstKey = (*jniEnv)->GetStaticObjectField(jniEnv, classAccessibleRelation, jfid);
|
||||
return (*jniEnv)->IsSameObject(jniEnv, jKey, jConstKey);
|
||||
}
|
||||
|
||||
AtkRelationType
|
||||
jaw_impl_get_atk_relation_type(JNIEnv *jniEnv, jstring jrel_key)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, jrel_key);
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "CHILD_NODE_OF") )
|
||||
return ATK_RELATION_NODE_CHILD_OF;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "CONTROLLED_BY") )
|
||||
return ATK_RELATION_CONTROLLED_BY;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "CONTROLLER_FOR") )
|
||||
return ATK_RELATION_CONTROLLER_FOR;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "EMBEDDED_BY") )
|
||||
return ATK_RELATION_EMBEDDED_BY;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "EMBEDS") )
|
||||
return ATK_RELATION_EMBEDS;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "FLOWS_FROM") )
|
||||
return ATK_RELATION_FLOWS_FROM;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "FLOWS_TO") )
|
||||
return ATK_RELATION_FLOWS_TO;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "LABEL_FOR") )
|
||||
return ATK_RELATION_LABEL_FOR;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "LABELED_BY") )
|
||||
return ATK_RELATION_LABELLED_BY;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "MEMBER_OF") )
|
||||
return ATK_RELATION_MEMBER_OF;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "PARENT_WINDOW_OF") )
|
||||
return ATK_RELATION_PARENT_WINDOW_OF;
|
||||
if ( is_java_relation_key(jniEnv, jrel_key, "SUBWINDOW_OF") )
|
||||
return ATK_RELATION_SUBWINDOW_OF;
|
||||
return ATK_RELATION_NULL;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _JAW_IMPL_H_
|
||||
#define _JAW_IMPL_H_
|
||||
|
||||
#include <glib.h>
|
||||
#include "jawobject.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define JAW_TYPE_IMPL(tf) (jaw_impl_get_type (tf))
|
||||
#define JAW_IMPL(tf, obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_IMPL(tf), JawImpl))
|
||||
#define JAW_IMPL_CLASS(tf, klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JAW_TYPE_IMPL(tf), JawImplClass))
|
||||
#define JAW_IS_IMPL(tf, obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JAW_TYPE_IMPL(tf)))
|
||||
#define JAW_IS_IMPL_CLASS(tf, klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JAW_TYPE_IMPL(tf)))
|
||||
#define JAW_IMPL_GET_CLASS(tf, obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JAW_TYPE_IMPL(tf), JawImplClass))
|
||||
|
||||
#ifdef GPOINTER_TO_SIZE
|
||||
#define GPOINTER_TO_GTYPE(gpointer) (GPOINTER_TO_SIZE (gpointer))
|
||||
#endif
|
||||
#ifdef GSIZE_TO_POINTER
|
||||
#define GTYPE_TO_POINTER(gtype) (GSIZE_TO_POINTER(gtype))
|
||||
#endif
|
||||
|
||||
typedef struct _JawImpl JawImpl;
|
||||
typedef struct _JawImplClass JawImplClass;
|
||||
|
||||
struct _JawImpl
|
||||
{
|
||||
JawObject parent;
|
||||
|
||||
GHashTable *ifaceTable;
|
||||
gint hash_key;
|
||||
unsigned tflag;
|
||||
};
|
||||
|
||||
JawImpl* jaw_impl_get_instance(JNIEnv*, jobject);
|
||||
JawImpl* jaw_impl_get_instance_from_jaw(JNIEnv*, jobject);
|
||||
JawImpl* jaw_impl_find_instance(JNIEnv*, jobject);
|
||||
GHashTable* jaw_impl_get_object_hash_table(void);
|
||||
GMutex* jaw_impl_get_object_hash_table_mutex(void);
|
||||
void object_table_gc(JNIEnv *jniEnv);
|
||||
|
||||
GType jaw_impl_get_type (guint);
|
||||
AtkRelationType jaw_impl_get_atk_relation_type(JNIEnv *jniEnv, jstring jrel_key);
|
||||
|
||||
struct _JawImplClass
|
||||
{
|
||||
JawObjectClass parent_class;
|
||||
};
|
||||
|
||||
extern void jaw_action_interface_init(AtkActionIface*, gpointer);
|
||||
extern gpointer jaw_action_data_init(jobject);
|
||||
extern void jaw_action_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_component_interface_init(AtkComponentIface*, gpointer);
|
||||
extern gpointer jaw_component_data_init(jobject);
|
||||
extern void jaw_component_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_editable_text_interface_init(AtkEditableTextIface*, gpointer);
|
||||
extern gpointer jaw_editable_text_data_init(jobject);
|
||||
extern void jaw_editable_text_data_finalize (gpointer);
|
||||
|
||||
extern void jaw_hypertext_interface_init(AtkHypertextIface*, gpointer);
|
||||
extern gpointer jaw_hypertext_data_init(jobject);
|
||||
extern void jaw_hypertext_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_image_interface_init(AtkImageIface*, gpointer);
|
||||
extern gpointer jaw_image_data_init(jobject);
|
||||
extern void jaw_image_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_selection_interface_init(AtkSelectionIface*, gpointer);
|
||||
extern gpointer jaw_selection_data_init(jobject);
|
||||
extern void jaw_selection_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_table_interface_init (AtkTableIface*, gpointer);
|
||||
extern gpointer jaw_table_data_init (jobject);
|
||||
extern void jaw_table_data_finalize (gpointer);
|
||||
|
||||
extern void jaw_table_cell_interface_init (AtkTableCellIface*, gpointer);
|
||||
extern gpointer jaw_table_cell_data_init (jobject ac);
|
||||
extern void jaw_table_cell_data_finalize (gpointer);
|
||||
|
||||
extern void jaw_text_interface_init(AtkTextIface*, gpointer);
|
||||
extern gpointer jaw_text_data_init(jobject);
|
||||
extern void jaw_text_data_finalize(gpointer);
|
||||
|
||||
extern void jaw_value_interface_init (AtkValueIface*, gpointer);
|
||||
extern gpointer jaw_value_data_init (jobject);
|
||||
extern void jaw_value_data_finalize (gpointer);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,598 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawobject.h"
|
||||
#include "jawutil.h"
|
||||
#include "jawimpl.h"
|
||||
#include "jawtoplevel.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static void jaw_object_initialize(AtkObject *jaw_obj, gpointer data);
|
||||
static void jaw_object_dispose(GObject *gobject);
|
||||
static void jaw_object_finalize(GObject *gobject);
|
||||
|
||||
/* AtkObject */
|
||||
static const gchar* jaw_object_get_name(AtkObject *atk_obj);
|
||||
static const gchar* jaw_object_get_description(AtkObject *atk_obj);
|
||||
|
||||
static gint jaw_object_get_n_children(AtkObject *atk_obj);
|
||||
|
||||
static gint jaw_object_get_index_in_parent(AtkObject *atk_obj);
|
||||
|
||||
static AtkRole jaw_object_get_role(AtkObject *atk_obj);
|
||||
static AtkStateSet* jaw_object_ref_state_set(AtkObject *atk_obj);
|
||||
static AtkObject* jaw_object_get_parent(AtkObject *obj);
|
||||
|
||||
static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name);
|
||||
static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description);
|
||||
static void jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent);
|
||||
static void jaw_object_set_role (AtkObject *atk_obj, AtkRole role);
|
||||
static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj);
|
||||
static AtkRelationSet *jaw_object_ref_relation_set (AtkObject *atk_obj);
|
||||
static AtkObject *jaw_object_ref_child(AtkObject *atk_obj, gint i);
|
||||
|
||||
static gpointer parent_class = NULL;
|
||||
static JawObject* jaw_object_table_lookup (JNIEnv *jniEnv, jobject ac);
|
||||
|
||||
enum {
|
||||
ACTIVATE,
|
||||
CREATE,
|
||||
DEACTIVATE,
|
||||
DESTROY,
|
||||
MAXIMIZE,
|
||||
MINIMIZE,
|
||||
MOVE,
|
||||
RESIZE,
|
||||
RESTORE,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
static guint jaw_window_signals[LAST_SIGNAL] = { 0, };
|
||||
|
||||
G_DEFINE_TYPE (JawObject, jaw_object, ATK_TYPE_OBJECT);
|
||||
|
||||
#define JAW_GET_OBJECT(atk_obj, def_ret) \
|
||||
JAW_GET_OBJ(atk_obj, JAW_OBJECT, JawObject, jaw_obj, acc_context, jniEnv, ac, def_ret)
|
||||
|
||||
static guint
|
||||
jaw_window_add_signal (const gchar *name, JawObjectClass *klass)
|
||||
{
|
||||
JAW_DEBUG_C("%s, %p", name, klass);
|
||||
return g_signal_new (name,
|
||||
G_TYPE_FROM_CLASS(klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0,
|
||||
(GSignalAccumulator) NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE,
|
||||
0);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_class_init (JawObjectClass *klass)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
|
||||
gobject_class->dispose = jaw_object_dispose;
|
||||
gobject_class->finalize = jaw_object_finalize;
|
||||
|
||||
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
atk_class->get_name = jaw_object_get_name;
|
||||
atk_class->get_description = jaw_object_get_description;
|
||||
atk_class->get_parent = jaw_object_get_parent;
|
||||
atk_class->get_n_children = jaw_object_get_n_children;
|
||||
atk_class->ref_child = jaw_object_ref_child;
|
||||
atk_class->get_index_in_parent = jaw_object_get_index_in_parent;
|
||||
atk_class->ref_relation_set = jaw_object_ref_relation_set;
|
||||
atk_class->get_role = jaw_object_get_role;
|
||||
// Done by atk: atk_class->get_layer
|
||||
// TODO: missing java support for atk_class->get_mdi_zorder
|
||||
atk_class->ref_state_set = jaw_object_ref_state_set;
|
||||
atk_class->set_name = jaw_object_set_name;
|
||||
atk_class->set_description = jaw_object_set_description;
|
||||
atk_class->set_parent = jaw_object_set_parent;
|
||||
atk_class->set_role = jaw_object_set_role;
|
||||
atk_class->initialize = jaw_object_initialize;
|
||||
// TODO: atk_class->get_attributes
|
||||
atk_class->get_object_locale = jaw_object_get_object_locale;
|
||||
|
||||
jaw_window_signals[ACTIVATE] = jaw_window_add_signal ("activate", klass);
|
||||
jaw_window_signals[CREATE] = jaw_window_add_signal ("create", klass);
|
||||
jaw_window_signals[DEACTIVATE] = jaw_window_add_signal ("deactivate", klass);
|
||||
jaw_window_signals[DESTROY] = jaw_window_add_signal ("destroy", klass);
|
||||
jaw_window_signals[MAXIMIZE] = jaw_window_add_signal ("maximize", klass);
|
||||
jaw_window_signals[MINIMIZE] = jaw_window_add_signal ("minimize", klass);
|
||||
jaw_window_signals[MOVE] = jaw_window_add_signal ("move", klass);
|
||||
jaw_window_signals[RESIZE] = jaw_window_add_signal ("resize", klass);
|
||||
jaw_window_signals[RESTORE] = jaw_window_add_signal ("restore", klass);
|
||||
|
||||
klass->get_interface_data = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_initialize(AtkObject *atk_obj, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", atk_obj, data);
|
||||
ATK_OBJECT_CLASS (jaw_object_parent_class)->initialize(atk_obj, data);
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_object_get_interface_data (JawObject *jaw_obj, guint iface)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %u", jaw_obj, iface);
|
||||
JawObjectClass *klass = JAW_OBJECT_GET_CLASS(jaw_obj);
|
||||
if (klass->get_interface_data)
|
||||
return klass->get_interface_data(jaw_obj, iface);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_init (JawObject *object)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", object);
|
||||
AtkObject *atk_obj = ATK_OBJECT(object);
|
||||
atk_obj->description = NULL;
|
||||
|
||||
object->state_set = atk_state_set_new();
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_dispose (GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_C("%p", gobject);
|
||||
/* Customized dispose code */
|
||||
|
||||
/* Chain up to parent's dispose method */
|
||||
G_OBJECT_CLASS(jaw_object_parent_class)->dispose(gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_finalize (GObject *gobject)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", gobject);
|
||||
/* Customized finalize code */
|
||||
JawObject *jaw_obj = JAW_OBJECT(gobject);
|
||||
AtkObject *atk_obj = ATK_OBJECT(gobject);
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (atk_obj->name != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
|
||||
jaw_obj->jstrName = NULL;
|
||||
atk_obj->name = NULL;
|
||||
}
|
||||
|
||||
if (atk_obj->description != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
||||
jaw_obj->jstrDescription,
|
||||
atk_obj->description);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
|
||||
jaw_obj->jstrDescription = NULL;
|
||||
atk_obj->description = NULL;
|
||||
}
|
||||
|
||||
if (jaw_obj->locale != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrLocale, jaw_obj->locale);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrLocale);
|
||||
jaw_obj->jstrLocale = NULL;
|
||||
jaw_obj->locale = NULL;
|
||||
}
|
||||
|
||||
if (G_OBJECT(jaw_obj->state_set) != NULL)
|
||||
{
|
||||
g_object_unref(G_OBJECT(jaw_obj->state_set));
|
||||
/* Chain up to parent's finalize method */
|
||||
G_OBJECT_CLASS(jaw_object_parent_class)->finalize(gobject);
|
||||
}
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_object_get_parent(AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1)
|
||||
return ATK_OBJECT(atk_get_root());
|
||||
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv,"org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleParent", "(Ljavax/accessibility/AccessibleContext;)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jparent = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
(*jniEnv)->DeleteGlobalRef (jniEnv, ac);
|
||||
|
||||
if (jparent != NULL)
|
||||
{
|
||||
AtkObject *parent_obj = (AtkObject*) jaw_object_table_lookup (jniEnv, jparent);
|
||||
|
||||
if (parent_obj != NULL )
|
||||
return parent_obj;
|
||||
}
|
||||
|
||||
g_warning("didn't find parent, returning null");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", atk_obj, parent);
|
||||
JAW_GET_OBJECT(atk_obj, );
|
||||
|
||||
JawObject *jaw_par = JAW_OBJECT(parent);
|
||||
jobject pa = (*jniEnv)->NewGlobalRef(jniEnv, jaw_par->acc_context);
|
||||
if (!pa) {
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
return;
|
||||
}
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "setAccessibleParent", "(Ljavax/accessibility/AccessibleContext;Ljavax/accessibility/AccessibleContext;)V");
|
||||
(*jniEnv)->CallStaticVoidMethod (jniEnv, atkObject, jmid, ac, pa);
|
||||
//FIXME do we need to emit the signal 'children-changed::add'?
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, pa);
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_object_get_name (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
|
||||
atk_obj->name = (gchar *)ATK_OBJECT_CLASS (parent_class)->get_name (atk_obj);
|
||||
|
||||
if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX &&
|
||||
atk_object_get_n_accessible_children(atk_obj) == 1)
|
||||
{
|
||||
AtkSelection *selection = ATK_SELECTION(atk_obj);
|
||||
if (selection != NULL)
|
||||
{
|
||||
AtkObject *child = atk_selection_ref_selection(selection, 0);
|
||||
if (child != NULL)
|
||||
{
|
||||
const gchar* name = atk_object_get_name(child);
|
||||
g_object_unref(child);
|
||||
if (name)
|
||||
JAW_DEBUG_C("-> %s", name);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleName", "(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
if (atk_obj->name != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
|
||||
jaw_obj->jstrName = NULL;
|
||||
atk_obj->name = NULL;
|
||||
}
|
||||
|
||||
if (jstr != NULL)
|
||||
{
|
||||
jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
||||
jaw_obj->jstrName,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (atk_obj->name)
|
||||
JAW_DEBUG_C("-> %s", atk_obj->name);
|
||||
return atk_obj->name;
|
||||
}
|
||||
|
||||
static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %s", atk_obj, name);
|
||||
JAW_GET_OBJECT(atk_obj, );
|
||||
|
||||
jstring jstr = NULL;
|
||||
if (name) {
|
||||
jstr = (*jniEnv)->NewStringUTF(jniEnv, name);
|
||||
}
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "setAccessibleName", "(Ljavax/accessibility/AccessibleContext;Ljava/lang/String;)V");
|
||||
(*jniEnv)->CallStaticVoidMethod (jniEnv, atkObject, jmid, ac, jstr);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_object_get_description (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass ( jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleDescription", "(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
|
||||
jstring jstr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
if (atk_obj->description != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrDescription, atk_obj->description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
|
||||
jaw_obj->jstrDescription = NULL;
|
||||
atk_obj->description = NULL;
|
||||
}
|
||||
|
||||
if (jstr != NULL)
|
||||
{
|
||||
jaw_obj->jstrDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
atk_obj->description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
||||
jaw_obj->jstrDescription,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return atk_obj->description;
|
||||
}
|
||||
|
||||
static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %s", atk_obj, description);
|
||||
JAW_GET_OBJECT(atk_obj, );
|
||||
|
||||
jstring jstr = NULL;
|
||||
if (description) {
|
||||
jstr = (*jniEnv)->NewStringUTF(jniEnv, description);
|
||||
}
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "setAccessibleDescription", "(Ljavax/accessibility/AccessibleContext;Ljava/lang/String;)");
|
||||
(*jniEnv)->CallStaticVoidMethod (jniEnv, atkObject, jmid, ac, jstr);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
}
|
||||
|
||||
|
||||
static gint
|
||||
jaw_object_get_n_children (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
JAW_GET_OBJECT(atk_obj, 0);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleChildrenCount", "(Ljavax/accessibility/AccessibleContext;)I");
|
||||
jint count = (*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
return (gint)count;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_object_get_index_in_parent (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1)
|
||||
{
|
||||
return jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj);
|
||||
}
|
||||
|
||||
JAW_GET_OBJECT(atk_obj, 0);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleIndexInParent", "(Ljavax/accessibility/AccessibleContext;)I");
|
||||
jint index = (*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
return (gint)index;
|
||||
}
|
||||
|
||||
static AtkRole
|
||||
jaw_object_get_role (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
if (atk_obj->role != ATK_ROLE_INVALID
|
||||
&& atk_obj->role != ATK_ROLE_UNKNOWN) {
|
||||
JAW_DEBUG_C("-> %d", atk_obj->role);
|
||||
return atk_obj->role;
|
||||
}
|
||||
|
||||
JAW_GET_OBJECT(atk_obj, ATK_ROLE_INVALID);
|
||||
|
||||
AtkRole role = jaw_util_get_atk_role_from_AccessibleContext(ac);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
JAW_DEBUG_C("-> %d", role);
|
||||
return role;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_object_set_role (AtkObject *atk_obj, AtkRole role)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", atk_obj, role);
|
||||
atk_obj->role = role;
|
||||
}
|
||||
|
||||
static AtkStateSet*
|
||||
jaw_object_ref_state_set (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
AtkStateSet* state_set = jaw_obj->state_set;
|
||||
atk_state_set_clear_states( state_set );
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getArrayAccessibleState", "(Ljavax/accessibility/AccessibleContext;)[Ljavax/accessibility/AccessibleState;");
|
||||
jobject jstate_arr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
if (jstate_arr == NULL)
|
||||
return NULL;
|
||||
|
||||
jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jstate_arr);
|
||||
jsize i;
|
||||
for (i = 0; i < jarr_size; i++)
|
||||
{
|
||||
jobject jstate = (*jniEnv)->GetObjectArrayElement( jniEnv, jstate_arr, i );
|
||||
AtkStateType state_type = jaw_util_get_atk_state_type_from_java_state( jniEnv, jstate );
|
||||
atk_state_set_add_state( state_set, state_type );
|
||||
if (state_type == ATK_STATE_ENABLED)
|
||||
{
|
||||
atk_state_set_add_state( state_set, ATK_STATE_SENSITIVE );
|
||||
}
|
||||
}
|
||||
|
||||
g_object_ref(G_OBJECT(state_set));
|
||||
|
||||
return state_set;
|
||||
}
|
||||
|
||||
static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", atk_obj);
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getLocale", "(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
|
||||
jobject jstr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
if (jaw_obj->locale != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrLocale, jaw_obj->locale);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrLocale);
|
||||
jaw_obj->jstrLocale = NULL;
|
||||
jaw_obj->locale = NULL;
|
||||
}
|
||||
|
||||
if (jstr != NULL)
|
||||
{
|
||||
jaw_obj->jstrLocale = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
||||
jaw_obj->locale = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
||||
jaw_obj->jstrLocale,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return jaw_obj->locale;
|
||||
}
|
||||
|
||||
static AtkRelationSet*
|
||||
jaw_object_ref_relation_set (AtkObject *atk_obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p)", atk_obj);
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
if (atk_obj->relation_set)
|
||||
g_object_unref(G_OBJECT(atk_obj->relation_set));
|
||||
atk_obj->relation_set = atk_relation_set_new();
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getArrayAccessibleRelation", "(Ljavax/accessibility/AccessibleContext;)[Lorg/GNOME/Accessibility/AtkObject$WrapKeyAndTarget;");
|
||||
jobject jwrap_key_target_arr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jwrap_key_target_arr);
|
||||
jclass wrapKeyTarget = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject$WrapKeyAndTarget");
|
||||
jfieldID fIdRelations = (*jniEnv)->GetFieldID (jniEnv, wrapKeyTarget, "relations", "[Ljavax/accessibility/AccessibleContext;");
|
||||
jfieldID fIdKey = (*jniEnv)->GetFieldID (jniEnv, wrapKeyTarget, "key", "Ljava/lang/String;");
|
||||
|
||||
jsize i;
|
||||
for (i = 0; i < jarr_size; i++)
|
||||
{
|
||||
jobject jwrap_key_target = (*jniEnv)->GetObjectArrayElement (jniEnv, jwrap_key_target_arr, i);
|
||||
jstring jrel_key = (*jniEnv)->GetObjectField (jniEnv, jwrap_key_target, fIdKey);
|
||||
AtkRelationType rel_type = jaw_impl_get_atk_relation_type (jniEnv, jrel_key);
|
||||
jobjectArray jtarget_arr = (*jniEnv)->GetObjectField (jniEnv, jwrap_key_target, fIdRelations);
|
||||
jsize jtarget_size = (*jniEnv)->GetArrayLength (jniEnv, jtarget_arr);
|
||||
|
||||
jsize j;
|
||||
for (j = 0; j < jtarget_size; j++)
|
||||
{
|
||||
jobject jtarget = (*jniEnv)->GetObjectArrayElement(jniEnv, jtarget_arr, j);
|
||||
JawImpl *target_obj = jaw_impl_get_instance_from_jaw(jniEnv, jtarget);
|
||||
if(target_obj == NULL)
|
||||
g_warning("jaw_object_ref_relation_set: target_obj == NULL occurs\n");
|
||||
else
|
||||
atk_object_add_relationship(atk_obj, rel_type, ATK_OBJECT(target_obj));
|
||||
}
|
||||
}
|
||||
|
||||
if(atk_obj->relation_set == NULL)
|
||||
return NULL;
|
||||
if (G_OBJECT(atk_obj->relation_set) != NULL)
|
||||
g_object_ref (atk_obj->relation_set);
|
||||
|
||||
return atk_obj->relation_set;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_object_ref_child(AtkObject *atk_obj, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", atk_obj, i);
|
||||
JAW_GET_OBJECT(atk_obj, NULL);
|
||||
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleChild", "(Ljavax/accessibility/AccessibleContext;I)Ljavax/accessibility/AccessibleContext;" );
|
||||
jobject child_ac = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac, i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
|
||||
|
||||
AtkObject *obj = (AtkObject*) jaw_impl_get_instance_from_jaw( jniEnv, child_ac );
|
||||
if (G_OBJECT(obj) != NULL)
|
||||
g_object_ref(G_OBJECT(obj));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static JawObject*
|
||||
jaw_object_table_lookup (JNIEnv *jniEnv, jobject ac)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, ac);
|
||||
GHashTable *object_table = jaw_impl_get_object_hash_table();
|
||||
GMutex *object_table_mutex = jaw_impl_get_object_hash_table_mutex();
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "hashCode", "(Ljavax/accessibility/AccessibleContext;)I");
|
||||
gint hash_key = (gint)(*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, ac);
|
||||
gpointer value = NULL;
|
||||
if (object_table == NULL)
|
||||
return NULL;
|
||||
|
||||
g_mutex_lock(object_table_mutex);
|
||||
value = g_hash_table_lookup(object_table, GINT_TO_POINTER(hash_key));
|
||||
g_mutex_unlock(object_table_mutex);
|
||||
return (JawObject*)value;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _JAW_OBJECT_H_
|
||||
#define _JAW_OBJECT_H_
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <jni.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define JAW_TYPE_OBJECT (jaw_object_get_type ())
|
||||
#define JAW_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_OBJECT, JawObject))
|
||||
#define JAW_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JAW_TYPE_OBJECT, JawObjectClass))
|
||||
#define JAW_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JAW_TYPE_OBJECT))
|
||||
#define JAW_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JAW_TYPE_OBJECT))
|
||||
#define JAW_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JAW_TYPE_OBJECT, JawObjectClass))
|
||||
|
||||
typedef struct _JawObject JawObject;
|
||||
typedef struct _JawObjectClass JawObjectClass;
|
||||
|
||||
struct _JawObject
|
||||
{
|
||||
AtkObject parent;
|
||||
|
||||
jobject acc_context;
|
||||
jstring jstrName;
|
||||
jstring jstrDescription;
|
||||
jstring jstrLocale;
|
||||
gchar *locale;
|
||||
AtkStateSet *state_set;
|
||||
|
||||
GHashTable *storedData;
|
||||
};
|
||||
|
||||
GType jaw_object_get_type (void);
|
||||
|
||||
struct _JawObjectClass
|
||||
{
|
||||
AtkObjectClass parent_class;
|
||||
|
||||
gpointer (*get_interface_data) (JawObject*, guint);
|
||||
};
|
||||
|
||||
gpointer jaw_object_get_interface_data (JawObject*, guint);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static gboolean jaw_selection_add_selection (AtkSelection *selection,
|
||||
gint i);
|
||||
static gboolean jaw_selection_clear_selection (AtkSelection *selection);
|
||||
static AtkObject* jaw_selection_ref_selection (AtkSelection *selection,
|
||||
gint i);
|
||||
static gint jaw_selection_get_selection_count (AtkSelection *selection);
|
||||
static gboolean jaw_selection_is_child_selected (AtkSelection *selection,
|
||||
gint i);
|
||||
static gboolean jaw_selection_remove_selection (AtkSelection *selection,
|
||||
gint i);
|
||||
static gboolean jaw_selection_select_all_selection (AtkSelection *selection);
|
||||
|
||||
typedef struct _SelectionData {
|
||||
jobject atk_selection;
|
||||
} SelectionData;
|
||||
|
||||
#define JAW_GET_SELECTION(selection, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(selection, INTERFACE_SELECTION, SelectionData, atk_selection, jniEnv, atk_selection, def_ret)
|
||||
|
||||
void
|
||||
jaw_selection_interface_init (AtkSelectionIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->add_selection = jaw_selection_add_selection;
|
||||
iface->clear_selection = jaw_selection_clear_selection;
|
||||
iface->ref_selection = jaw_selection_ref_selection;
|
||||
iface->get_selection_count = jaw_selection_get_selection_count;
|
||||
iface->is_child_selected = jaw_selection_is_child_selected;
|
||||
iface->remove_selection = jaw_selection_remove_selection;
|
||||
iface->select_all_selection = jaw_selection_select_all_selection;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_selection_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
SelectionData *data = g_new0(SelectionData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, classSelection, "createAtkSelection", "(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkSelection;");
|
||||
jobject jatk_selection = (*jniEnv)->CallStaticObjectMethod(jniEnv, classSelection, jmid, ac);
|
||||
data->atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, jatk_selection);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_selection_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
SelectionData *data = (SelectionData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_selection) {
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_selection);
|
||||
data->atk_selection = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_selection_add_selection (AtkSelection *selection, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", selection, i);
|
||||
JAW_GET_SELECTION(selection, FALSE);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "add_selection", "(I)Z");
|
||||
jboolean jbool = (*jniEnv)->CallBooleanMethod(jniEnv, atk_selection, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return jbool;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_selection_clear_selection (AtkSelection *selection)
|
||||
{
|
||||
JAW_DEBUG_C("%p", selection);
|
||||
JAW_GET_SELECTION(selection, FALSE);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "clear_selection", "()Z");
|
||||
jboolean jbool = (*jniEnv)->CallBooleanMethod(jniEnv, atk_selection, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return jbool;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_selection_ref_selection (AtkSelection *selection, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", selection, i);
|
||||
JAW_GET_SELECTION(selection, NULL);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "ref_selection", "(I)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject child_ac = (*jniEnv)->CallObjectMethod(jniEnv, atk_selection, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
if (!child_ac) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
AtkObject *obj = (AtkObject*) jaw_impl_get_instance_from_jaw( jniEnv, child_ac );
|
||||
if (obj)
|
||||
g_object_ref (G_OBJECT(obj));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_selection_get_selection_count (AtkSelection *selection)
|
||||
{
|
||||
JAW_DEBUG_C("%p", selection);
|
||||
JAW_GET_SELECTION(selection, 0);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "get_selection_count", "()I");
|
||||
jint jcount = (*jniEnv)->CallIntMethod(jniEnv, atk_selection, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return (gint)jcount;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_selection_is_child_selected (AtkSelection *selection, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", selection, i);
|
||||
JAW_GET_SELECTION(selection, FALSE);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "is_child_selected", "(I)Z");
|
||||
jboolean jbool = (*jniEnv)->CallBooleanMethod(jniEnv, atk_selection, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return jbool;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_selection_remove_selection (AtkSelection *selection, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", selection, i);
|
||||
JAW_GET_SELECTION(selection, FALSE);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "remove_selection", "(I)Z");
|
||||
jboolean jbool = (*jniEnv)->CallBooleanMethod(jniEnv, atk_selection, jmid, (jint)i);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return jbool;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_selection_select_all_selection (AtkSelection *selection)
|
||||
{
|
||||
JAW_DEBUG_C("%p", selection);
|
||||
JAW_GET_SELECTION(selection, FALSE);
|
||||
|
||||
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "select_all_selection", "()Z");
|
||||
jboolean jbool = (*jniEnv)->CallBooleanMethod(jniEnv, atk_selection, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_selection);
|
||||
|
||||
return jbool;
|
||||
}
|
|
@ -0,0 +1,635 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static AtkObject* jaw_table_ref_at(AtkTable *table, gint row, gint column);
|
||||
static gint jaw_table_get_index_at(AtkTable *table, gint row, gint column);
|
||||
static gint jaw_table_get_column_at_index(AtkTable *table, gint index);
|
||||
static gint jaw_table_get_row_at_index(AtkTable *table, gint index);
|
||||
static gint jaw_table_get_n_columns(AtkTable *table);
|
||||
static gint jaw_table_get_n_rows(AtkTable *table);
|
||||
static gint jaw_table_get_column_extent_at(AtkTable *table, gint row, gint column);
|
||||
static gint jaw_table_get_row_extent_at(AtkTable *table, gint row, gint column);
|
||||
static AtkObject* jaw_table_get_caption(AtkTable *table);
|
||||
static const gchar* jaw_table_get_column_description(AtkTable *table, gint column);
|
||||
static const gchar* jaw_table_get_row_description(AtkTable *table, gint row);
|
||||
static AtkObject* jaw_table_get_column_header(AtkTable *table, gint column);
|
||||
static AtkObject* jaw_table_get_row_header(AtkTable *table, gint row);
|
||||
static AtkObject* jaw_table_get_summary(AtkTable *table);
|
||||
static gint jaw_table_get_selected_columns(AtkTable *table, gint **selected);
|
||||
static gint jaw_table_get_selected_rows(AtkTable *table, gint **selected);
|
||||
static gboolean jaw_table_is_column_selected(AtkTable *table, gint column);
|
||||
static gboolean jaw_table_is_row_selected(AtkTable *table, gint row);
|
||||
static gboolean jaw_table_is_selected(AtkTable *table,gint row, gint column);
|
||||
static gboolean jaw_table_add_row_selection(AtkTable *table, gint row);
|
||||
static gboolean jaw_table_remove_row_selection (AtkTable *table, gint row);
|
||||
static gboolean jaw_table_add_column_selection(AtkTable *table, gint column);
|
||||
static gboolean jaw_table_remove_column_selection (AtkTable *table, gint column);
|
||||
static void jaw_table_set_row_description(AtkTable *table,
|
||||
gint row,
|
||||
const gchar *description);
|
||||
static void jaw_table_set_column_description(AtkTable *table,
|
||||
gint column,
|
||||
const gchar *description);
|
||||
static void jaw_table_set_row_header(AtkTable *table, gint row, AtkObject *header);
|
||||
static void jaw_table_set_column_header(AtkTable *table, gint column, AtkObject *header);
|
||||
static void jaw_table_set_caption(AtkTable *table, AtkObject *caption);
|
||||
static void jaw_table_set_summary(AtkTable *table, AtkObject *summary);
|
||||
|
||||
typedef struct _TableData {
|
||||
jobject atk_table;
|
||||
gchar* description;
|
||||
jstring jstrDescription;
|
||||
} TableData;
|
||||
|
||||
#define JAW_GET_TABLE(table, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(table, INTERFACE_TABLE, TableData, atk_table, env, atk_table, def_ret)
|
||||
|
||||
void
|
||||
jaw_table_interface_init (AtkTableIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->ref_at = jaw_table_ref_at;
|
||||
iface->get_index_at = jaw_table_get_index_at;
|
||||
iface->get_column_at_index = jaw_table_get_column_at_index;
|
||||
iface->get_row_at_index = jaw_table_get_row_at_index;
|
||||
iface->get_n_columns = jaw_table_get_n_columns;
|
||||
iface->get_n_rows = jaw_table_get_n_rows;
|
||||
iface->get_column_extent_at = jaw_table_get_column_extent_at;
|
||||
iface->get_row_extent_at = jaw_table_get_row_extent_at;
|
||||
iface->get_caption = jaw_table_get_caption;
|
||||
iface->get_column_description = jaw_table_get_column_description;
|
||||
iface->get_column_header = jaw_table_get_column_header;
|
||||
iface->get_row_description = jaw_table_get_row_description;
|
||||
iface->get_row_header = jaw_table_get_row_header;
|
||||
iface->get_summary = jaw_table_get_summary;
|
||||
iface->set_caption = jaw_table_set_caption;
|
||||
iface->set_column_description = jaw_table_set_column_description;
|
||||
iface->set_column_header = jaw_table_set_column_header;
|
||||
iface->set_row_description = jaw_table_set_row_description;
|
||||
iface->set_row_header = jaw_table_set_row_header;
|
||||
iface->set_summary = jaw_table_set_summary;
|
||||
iface->get_selected_columns = jaw_table_get_selected_columns;
|
||||
iface->get_selected_rows = jaw_table_get_selected_rows;
|
||||
iface->is_column_selected = jaw_table_is_column_selected;
|
||||
iface->is_row_selected = jaw_table_is_row_selected;
|
||||
iface->is_selected = jaw_table_is_selected;
|
||||
iface->add_row_selection = jaw_table_add_row_selection;
|
||||
iface->remove_row_selection = jaw_table_remove_row_selection;
|
||||
iface->add_column_selection = jaw_table_add_column_selection;
|
||||
iface->remove_column_selection = jaw_table_remove_column_selection;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_table_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
TableData *data = g_new0(TableData, 1);
|
||||
|
||||
JNIEnv *env = jaw_util_get_jni_env();
|
||||
jclass classTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetStaticMethodID(env,
|
||||
classTable,
|
||||
"createAtkTable",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkTable;");
|
||||
|
||||
jobject jatk_table = (*env)->CallStaticObjectMethod(env, classTable, jmid, ac);
|
||||
data->atk_table = (*env)->NewGlobalRef(env, jatk_table);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_table_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
TableData *data = (TableData*)p;
|
||||
JNIEnv *env = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_table)
|
||||
{
|
||||
if (data->description != NULL)
|
||||
{
|
||||
(*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
|
||||
(*env)->DeleteGlobalRef(env, data->jstrDescription);
|
||||
data->jstrDescription = NULL;
|
||||
data->description = NULL;
|
||||
}
|
||||
|
||||
(*env)->DeleteGlobalRef(env, data->atk_table);
|
||||
data->atk_table = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_ref_at (AtkTable *table, gint row, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", table, row, column);
|
||||
JawObject *jaw_obj = JAW_OBJECT(table);
|
||||
if (!jaw_obj) {
|
||||
JAW_DEBUG_I("jaw_obj == NULL");
|
||||
return NULL;
|
||||
}
|
||||
TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
|
||||
JNIEnv *env = jaw_util_get_jni_env();
|
||||
jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
|
||||
if (!atk_table) {
|
||||
JAW_DEBUG_I("atk_table == NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkTable,
|
||||
"ref_at",
|
||||
"(II)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( env, jac );
|
||||
|
||||
if (G_OBJECT(jaw_impl) != NULL)
|
||||
g_object_ref(G_OBJECT(jaw_impl));
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_index_at (AtkTable *table, gint row, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", table, row, column);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_index_at", "(II)I");
|
||||
jint jindex = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jindex;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_column_at_index (AtkTable *table, gint index)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, index);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_at_index", "(I)I");
|
||||
jint jcolumn = (*env)->CallIntMethod(env, atk_table, jmid, (jint)index);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jcolumn;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_row_at_index (AtkTable *table, gint index)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, index);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_at_index", "(I)I");
|
||||
jint jrow = (*env)->CallIntMethod(env, atk_table, jmid, (jint)index);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jrow;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_n_columns (AtkTable *table)
|
||||
{
|
||||
JAW_DEBUG_C("%p", table);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_columns", "()I");
|
||||
jint jcolumns = (*env)->CallIntMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jcolumns;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_n_rows (AtkTable *table)
|
||||
{
|
||||
JAW_DEBUG_C("%p", table);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_rows", "()I");
|
||||
jint jrows = (*env)->CallIntMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jrows;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_column_extent_at (AtkTable *table, gint row, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", table, row, column);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_extent_at", "(II)I");
|
||||
jint jextent = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jextent;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_row_extent_at (AtkTable *table, gint row, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", table, row, column);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_extent_at", "(II)I");
|
||||
jint jextent = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return (gint)jextent;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_get_caption (AtkTable *table)
|
||||
{
|
||||
JAW_DEBUG_C("%p", table);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkTable,
|
||||
"get_caption",
|
||||
"()Ljavax/accessibility/AccessibleContext;");
|
||||
|
||||
jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( env, jac );
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_table_get_column_description (AtkTable *table, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, column);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_description", "(I)Ljava/lang/String;");
|
||||
jstring jstr = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (data->description != NULL)
|
||||
{
|
||||
(*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
|
||||
(*env)->DeleteGlobalRef(env, data->jstrDescription);
|
||||
}
|
||||
|
||||
data->jstrDescription = (*env)->NewGlobalRef(env, jstr);
|
||||
data->description = (gchar*)(*env)->GetStringUTFChars(env, data->jstrDescription, NULL);
|
||||
|
||||
return data->description;
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_table_get_row_description (AtkTable *table, gint row)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, row);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_description", "(I)Ljava/lang/String;");
|
||||
jstring jstr = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (data->description != NULL)
|
||||
{
|
||||
(*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
|
||||
(*env)->DeleteGlobalRef(env, data->jstrDescription);
|
||||
}
|
||||
|
||||
data->jstrDescription = (*env)->NewGlobalRef(env, jstr);
|
||||
data->description = (gchar*)(*env)->GetStringUTFChars(env, data->jstrDescription, NULL);
|
||||
|
||||
return data->description;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_get_column_header (AtkTable *table, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, column);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_header", "(I)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( env, jac );
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_get_row_header (AtkTable *table, gint row)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, row);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_header", "(I)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( env, jac );
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_get_summary (AtkTable *table)
|
||||
{
|
||||
JAW_DEBUG_C("%p", table);
|
||||
JAW_GET_TABLE(table, NULL);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_summary", "()Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw( env, jac );
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_selected_columns (AtkTable *table, gint **selected)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", table, selected);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_columns", "()[I");
|
||||
jintArray jcolumnArray = (*env)->CallObjectMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jcolumnArray)
|
||||
return 0;
|
||||
|
||||
jsize length = (*env)->GetArrayLength(env, jcolumnArray);
|
||||
jint *jcolumns = (*env)->GetIntArrayElements(env, jcolumnArray, NULL);
|
||||
gint *columns = g_new(gint, length);
|
||||
|
||||
gint i;
|
||||
for (i = 0; i < length; i++) {
|
||||
columns[i] = (gint)jcolumns[i];
|
||||
}
|
||||
|
||||
(*env)->ReleaseIntArrayElements(env, jcolumnArray, jcolumns, JNI_ABORT);
|
||||
|
||||
return (gint)length;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_get_selected_rows (AtkTable *table, gint **selected)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", table, selected);
|
||||
JAW_GET_TABLE(table, 0);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_rows", "()[I");
|
||||
jintArray jrowArray = (*env)->CallObjectMethod(env, atk_table, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
if (!jrowArray)
|
||||
return 0;
|
||||
|
||||
jsize length = (*env)->GetArrayLength(env, jrowArray);
|
||||
jint *jrows = (*env)->GetIntArrayElements(env, jrowArray, NULL);
|
||||
gint *rows = g_new(gint, length);
|
||||
|
||||
gint i;
|
||||
for (i = 0; i < length; i++) {
|
||||
rows[i] = (gint)jrows[i];
|
||||
}
|
||||
|
||||
(*env)->ReleaseIntArrayElements(env, jrowArray, jrows, JNI_ABORT);
|
||||
|
||||
return (gint)length;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_is_column_selected (AtkTable *table, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, column);
|
||||
JAW_GET_TABLE(table, FALSE);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_column_selected", "(I)Z");
|
||||
jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return jselected;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_is_row_selected (AtkTable *table, gint row)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", table, row);
|
||||
JAW_GET_TABLE(table, FALSE);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_row_selected", "(I)Z");
|
||||
jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)row);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return jselected;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_is_selected (AtkTable *table, gint row, gint column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", table, row, column);
|
||||
JAW_GET_TABLE(table, FALSE);
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_selected", "(II)Z");
|
||||
jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)row, (jint)column);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
|
||||
return jselected;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_add_row_selection(AtkTable *table, gint row)
|
||||
{
|
||||
g_warning("It is impossible to add row selection on AccessibleTable Java Object");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_remove_row_selection (AtkTable *table, gint row)
|
||||
{
|
||||
g_warning("It is impossible to remove row selection on AccessibleTable Java Object");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_add_column_selection(AtkTable *table, gint column)
|
||||
{
|
||||
g_warning("It is impossible to add column selection on AccessibleTable Java Object");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_remove_column_selection (AtkTable *table, gint column)
|
||||
{
|
||||
g_warning("It is impossible to remove column selection on AccessibleTable Java Object");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_row_description(AtkTable *table, gint row, const gchar *description)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %s", table, row, description);
|
||||
JAW_GET_TABLE(table, );
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkTable,
|
||||
"setRowDescription",
|
||||
"(ILjava/lang/String;)V");
|
||||
jstring jstr = (*env)->NewStringUTF(env, description);
|
||||
(*env)->CallVoidMethod(env, atk_table, jmid, (jint)row, jstr);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_column_description(AtkTable *table, gint column, const gchar *description)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %s", table, column, description);
|
||||
JAW_GET_TABLE(table, );
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkTable,
|
||||
"setColumnDescription",
|
||||
"(ILjava/lang/String;)V");
|
||||
jstring jstr = (*env)->NewStringUTF(env, description);
|
||||
(*env)->CallVoidMethod(env, atk_table, jmid, (jint)column, jstr);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_row_header(AtkTable *table, gint row, AtkObject *header)
|
||||
{
|
||||
g_warning("It is impossible to set a single row header on AccessibleTable Java Object");
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_column_header(AtkTable *table, gint column, AtkObject *header)
|
||||
{
|
||||
g_warning("It is impossible to set a single column header on AccessibleTable Java Object");
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_caption(AtkTable *table, AtkObject *caption)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", table, caption);
|
||||
JAW_GET_TABLE(table, );
|
||||
|
||||
JawObject *jcaption = JAW_OBJECT(caption);
|
||||
if (!jcaption) {
|
||||
JAW_DEBUG_I("jcaption == NULL");
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
jclass accessible = (*env)->FindClass (env, "javax/accessibility/Accessible");
|
||||
if ( !((*env)->IsInstanceOf(env, jcaption->acc_context, accessible)) )
|
||||
{
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
jobject obj = (*env)->NewGlobalRef(env, jcaption->acc_context);
|
||||
if (!obj)
|
||||
{
|
||||
JAW_DEBUG_I("jcaption obj == NULL");
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "setCaption", "(Ljavax/accessibility/Accessible;)V");
|
||||
(*env)->CallVoidMethod(env, atk_table, jmid, obj);
|
||||
(*env)->DeleteGlobalRef(env, obj);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_table_set_summary(AtkTable *table, AtkObject *summary)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", table, summary);
|
||||
JAW_GET_TABLE(table, );
|
||||
|
||||
JawObject *jsummary = JAW_OBJECT(summary);
|
||||
if (!jsummary) {
|
||||
JAW_DEBUG_I("jsummary == NULL");
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
jclass accessible = (*env)->FindClass (env, "javax/accessibility/Accessible");
|
||||
if ( !((*env)->IsInstanceOf(env, jsummary->acc_context, accessible)) )
|
||||
{
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
jobject obj = (*env)->NewGlobalRef(env, jsummary->acc_context);
|
||||
if (!obj) {
|
||||
JAW_DEBUG_I("jsummary obj == NULL");
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
return;
|
||||
}
|
||||
|
||||
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "setSummary", "(Ljavax/accessibility/Accessible;)V");
|
||||
(*env)->CallVoidMethod(env, atk_table, jmid, obj);
|
||||
(*env)->DeleteGlobalRef(env, obj);
|
||||
(*env)->DeleteGlobalRef(env, atk_table);
|
||||
}
|
|
@ -0,0 +1,242 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 021101301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static AtkObject *jaw_table_cell_get_table (AtkTableCell *cell);
|
||||
static GPtrArray *jaw_table_cell_get_column_header_cells (AtkTableCell *cell);
|
||||
static gboolean jaw_table_cell_get_position(AtkTableCell *cell, gint *row, gint *column);
|
||||
static gboolean jaw_table_cell_get_row_column_span(AtkTableCell *cell,
|
||||
gint *row,
|
||||
gint *column,
|
||||
gint *row_span,
|
||||
gint *column_span);
|
||||
static gint jaw_table_cell_get_row_span(AtkTableCell *cell);
|
||||
static GPtrArray *jaw_table_cell_get_row_header_cells (AtkTableCell *cell);
|
||||
static gint jaw_table_cell_get_column_span(AtkTableCell *cell);
|
||||
|
||||
typedef struct _TableCellData {
|
||||
jobject atk_table_cell;
|
||||
gchar* description;
|
||||
jstring jstrDescription;
|
||||
} TableCellData;
|
||||
|
||||
#define JAW_GET_TABLECELL(cell, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(cell, INTERFACE_TABLE_CELL, TableCellData, atk_table_cell, jniEnv, jatk_table_cell, def_ret)
|
||||
|
||||
void
|
||||
jaw_table_cell_interface_init (AtkTableCellIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->get_column_span = jaw_table_cell_get_column_span;
|
||||
iface->get_column_header_cells = jaw_table_cell_get_column_header_cells;
|
||||
iface->get_position = jaw_table_cell_get_position;
|
||||
iface->get_row_span = jaw_table_cell_get_row_span;
|
||||
iface->get_row_header_cells = jaw_table_cell_get_row_header_cells;
|
||||
iface->get_row_column_span = jaw_table_cell_get_row_column_span;
|
||||
iface->get_table = jaw_table_cell_get_table;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_table_cell_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
TableCellData *data = g_new0(TableCellData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, classTableCell, "createAtkTableCell", "(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkTableCell;");
|
||||
jobject jatk_table_cell = (*jniEnv)->CallStaticObjectMethod(jniEnv, classTableCell, jmid, ac);
|
||||
data->atk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, jatk_table_cell);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_table_cell_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
TableCellData *data = (TableCellData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_table_cell)
|
||||
{
|
||||
if (data->description != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrDescription, data->description);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrDescription);
|
||||
data->jstrDescription = NULL;
|
||||
data->description = NULL;
|
||||
}
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_table_cell);
|
||||
data->atk_table_cell = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_table_cell_get_table(AtkTableCell *cell)
|
||||
{
|
||||
JAW_DEBUG_C("%p", cell);
|
||||
JAW_GET_TABLECELL(cell, NULL);
|
||||
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkTableCell");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkTableCell,
|
||||
"getTable",
|
||||
"()Ljavax/accessibility/AccessibleTable;");
|
||||
jobject jac = (*jniEnv)->CallObjectMethod(jniEnv, jatk_table_cell, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
|
||||
if (!jac)
|
||||
return NULL;
|
||||
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw(jniEnv, jac);
|
||||
|
||||
return ATK_OBJECT(jaw_impl);
|
||||
}
|
||||
|
||||
static void
|
||||
getPosition (JNIEnv *jniEnv, jobject jatk_table_cell, jclass classAtkTableCell, gint *row, gint *column)
|
||||
{
|
||||
jfieldID id_row = (*jniEnv)->GetFieldID(jniEnv, classAtkTableCell,"row","I");
|
||||
jfieldID id_column = (*jniEnv)->GetFieldID(jniEnv, classAtkTableCell,"column","I");
|
||||
jint jrow = (*jniEnv)->GetIntField(jniEnv, jatk_table_cell, id_row);
|
||||
jint jcolumn =(*jniEnv)->GetIntField(jniEnv, jatk_table_cell, id_column);
|
||||
(*row) = (gint) jrow;
|
||||
(*column) = (gint) jcolumn;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_cell_get_position (AtkTableCell *cell, gint *row, gint *column)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", cell, row, column);
|
||||
JAW_GET_TABLECELL(cell, FALSE);
|
||||
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
getPosition (jniEnv, jatk_table_cell, classAtkTableCell, row, column);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
getRowSpan (JNIEnv *jniEnv, jobject jatk_table_cell, jclass classAtkTableCell, gint *row_span)
|
||||
{
|
||||
jfieldID id_row_span = (*jniEnv)->GetFieldID(jniEnv, classAtkTableCell,"rowSpan","I");
|
||||
jint jrow_span = (*jniEnv)->GetIntField(jniEnv, jatk_table_cell, id_row_span);
|
||||
(*row_span) = (gint) jrow_span;
|
||||
}
|
||||
|
||||
static void
|
||||
getColumnSpan (JNIEnv *jniEnv, jobject jatk_table_cell, jclass classAtkTableCell, gint *column_span)
|
||||
{
|
||||
jfieldID id_column_span = (*jniEnv)->GetFieldID(jniEnv, classAtkTableCell,"columnSpan","I");
|
||||
jint jcolumn_span =(*jniEnv)->GetIntField(jniEnv, jatk_table_cell, id_column_span);
|
||||
(*column_span) = (gint) jcolumn_span;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_table_cell_get_row_column_span(AtkTableCell *cell, gint *row, gint *column, gint *row_span, gint *column_span)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p, %p, %p", cell, row, column, row_span, column_span);
|
||||
JAW_GET_TABLECELL(cell, FALSE);
|
||||
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
getPosition (jniEnv, jatk_table_cell, classAtkTableCell, row, column);
|
||||
getRowSpan (jniEnv, jatk_table_cell, classAtkTableCell, row_span);
|
||||
getColumnSpan (jniEnv, jatk_table_cell, classAtkTableCell, column_span);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_cell_get_row_span(AtkTableCell *cell)
|
||||
{
|
||||
JAW_DEBUG_C("%p", cell);
|
||||
JAW_GET_TABLECELL(cell, 0);
|
||||
|
||||
gint row_span = -1;
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
getRowSpan (jniEnv, jatk_table_cell, classAtkTableCell, &row_span);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
return row_span;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_table_cell_get_column_span(AtkTableCell *cell)
|
||||
{
|
||||
JAW_DEBUG_C("%p", cell);
|
||||
JAW_GET_TABLECELL(cell, 0);
|
||||
|
||||
gint column_span = -1;
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
getColumnSpan (jniEnv, jatk_table_cell, classAtkTableCell, &column_span);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
return column_span;
|
||||
}
|
||||
|
||||
static GPtrArray*
|
||||
jaw_table_cell_get_column_header_cells(AtkTableCell *cell)
|
||||
{
|
||||
JAW_DEBUG_C("%p", cell);
|
||||
JAW_GET_TABLECELL(cell, NULL);
|
||||
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTableCell, "getAccessibleColumnHeader", "()[Ljavax/accessibility/AccessibleContext;");
|
||||
jobjectArray ja_ac = (jobjectArray) (*jniEnv)->CallObjectMethod(jniEnv, jatk_table_cell, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
if (!ja_ac)
|
||||
return NULL;
|
||||
jsize length = (*jniEnv)->GetArrayLength(jniEnv, ja_ac) ;
|
||||
GPtrArray *result = g_ptr_array_sized_new ((guint) length);
|
||||
for ( int i = 0; i < length; i++)
|
||||
{
|
||||
jobject jac = (*jniEnv)->GetObjectArrayElement(jniEnv,ja_ac, i);
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw(jniEnv, jac);
|
||||
g_ptr_array_add(result, jaw_impl);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static GPtrArray*
|
||||
jaw_table_cell_get_row_header_cells(AtkTableCell *cell)
|
||||
{
|
||||
JAW_DEBUG_C("%p", cell);
|
||||
JAW_GET_TABLECELL(cell, NULL);
|
||||
|
||||
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTableCell, "getAccessibleRowHeader", "()[Ljavax/accessibility/AccessibleContext;");
|
||||
jobjectArray ja_ac = (jobjectArray) (*jniEnv)->CallObjectMethod(jniEnv, jatk_table_cell, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
|
||||
if (!ja_ac)
|
||||
return NULL;
|
||||
jsize length = (*jniEnv)->GetArrayLength(jniEnv, ja_ac) ;
|
||||
GPtrArray *result = g_ptr_array_sized_new ((guint) length);
|
||||
for ( int i = 0; i < length; i++)
|
||||
{
|
||||
jobject jac = (*jniEnv)->GetObjectArrayElement(jniEnv,ja_ac, i);
|
||||
JawImpl* jaw_impl = jaw_impl_get_instance_from_jaw(jniEnv, jac);
|
||||
g_ptr_array_add(result, jaw_impl);
|
||||
}
|
||||
return result;
|
||||
}
|
|
@ -0,0 +1,624 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static gchar* jaw_text_get_text(AtkText *text,
|
||||
gint start_offset,
|
||||
gint end_offset);
|
||||
|
||||
static gunichar jaw_text_get_character_at_offset(AtkText *text, gint offset);
|
||||
|
||||
static gchar* jaw_text_get_text_at_offset(AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset,
|
||||
gint *end_offset);
|
||||
|
||||
static gchar* jaw_text_get_text_before_offset(AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset,
|
||||
gint *end_offset);
|
||||
|
||||
static gchar* jaw_text_get_text_after_offset(AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset,
|
||||
gint *end_offset);
|
||||
|
||||
static gint jaw_text_get_caret_offset(AtkText *text);
|
||||
|
||||
static void jaw_text_get_character_extents(AtkText *text,
|
||||
gint offset,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gint *width,
|
||||
gint *height,
|
||||
AtkCoordType coords);
|
||||
|
||||
static gint jaw_text_get_character_count(AtkText *text);
|
||||
|
||||
static gint jaw_text_get_offset_at_point(AtkText *text,
|
||||
gint x,
|
||||
gint y,
|
||||
AtkCoordType coords);
|
||||
static void jaw_text_get_range_extents(AtkText *text,
|
||||
gint start_offset,
|
||||
gint end_offset,
|
||||
AtkCoordType coord_type,
|
||||
AtkTextRectangle *rect);
|
||||
|
||||
static gint jaw_text_get_n_selections(AtkText *text);
|
||||
|
||||
static gchar* jaw_text_get_selection(AtkText *text,
|
||||
gint selection_num,
|
||||
gint *start_offset,
|
||||
gint *end_offset);
|
||||
|
||||
static gboolean jaw_text_add_selection(AtkText *text,
|
||||
gint start_offset,
|
||||
gint end_offset);
|
||||
|
||||
static gboolean jaw_text_remove_selection(AtkText *text, gint selection_num);
|
||||
|
||||
static gboolean jaw_text_set_selection(AtkText *text,
|
||||
gint selection_num,
|
||||
gint start_offset,
|
||||
gint end_offset);
|
||||
|
||||
static gboolean jaw_text_set_caret_offset(AtkText *text, gint offset);
|
||||
|
||||
typedef struct _TextData {
|
||||
jobject atk_text;
|
||||
gchar* text;
|
||||
jstring jstrText;
|
||||
}TextData;
|
||||
|
||||
#define JAW_GET_TEXT(text, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(text, INTERFACE_TEXT, TextData, atk_text, jniEnv, atk_text, def_ret)
|
||||
|
||||
void
|
||||
jaw_text_interface_init (AtkTextIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->get_text = jaw_text_get_text;
|
||||
iface->get_text_after_offset = jaw_text_get_text_after_offset;
|
||||
iface->get_text_at_offset = jaw_text_get_text_at_offset;
|
||||
iface->get_character_at_offset = jaw_text_get_character_at_offset;
|
||||
iface->get_text_before_offset = jaw_text_get_text_before_offset;
|
||||
iface->get_caret_offset = jaw_text_get_caret_offset;
|
||||
// TODO: iface->get_run_attributes by iterating getCharacterAttribute or using getTextSequenceAt with ATTRIBUTE_RUN
|
||||
// TODO: iface->get_default_attributes
|
||||
iface->get_character_extents = jaw_text_get_character_extents;
|
||||
iface->get_character_count = jaw_text_get_character_count;
|
||||
iface->get_offset_at_point = jaw_text_get_offset_at_point;
|
||||
iface->get_n_selections = jaw_text_get_n_selections;
|
||||
iface->get_selection = jaw_text_get_selection;
|
||||
iface->add_selection = jaw_text_add_selection;
|
||||
iface->remove_selection = jaw_text_remove_selection;
|
||||
iface->set_selection = jaw_text_set_selection;
|
||||
iface->set_caret_offset = jaw_text_set_caret_offset;
|
||||
|
||||
iface->get_range_extents = jaw_text_get_range_extents;
|
||||
// TODO: iface->get_bounded_ranges from getTextBounds
|
||||
// TODO: iface->get_string_at_offset
|
||||
|
||||
// TODO: missing java support for:
|
||||
// iface->scroll_substring_to
|
||||
// iface->scroll_substring_to_point
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_text_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
TextData *data = g_new0(TextData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classText,
|
||||
"createAtkText",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkText;");
|
||||
jobject jatk_text = (*jniEnv)->CallStaticObjectMethod(jniEnv, classText, jmid, ac);
|
||||
data->atk_text = (*jniEnv)->NewGlobalRef(jniEnv, jatk_text);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_text_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
TextData *data = (TextData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_text)
|
||||
{
|
||||
if (data->text != NULL)
|
||||
{
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrText, data->text);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrText);
|
||||
data->jstrText = NULL;
|
||||
data->text = NULL;
|
||||
}
|
||||
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_text);
|
||||
data->atk_text = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_gtext_from_jstr (JNIEnv *jniEnv, jstring jstr)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, jstr);
|
||||
if (jstr == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gchar* tmp_text = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jstr, NULL);
|
||||
gchar* text = g_strdup(tmp_text);
|
||||
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jstr, tmp_text);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_text (AtkText *text, gint start_offset, gint end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", text, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, NULL);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_text",
|
||||
"(II)Ljava/lang/String;");
|
||||
|
||||
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)start_offset,
|
||||
(jint)end_offset );
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return jaw_text_get_gtext_from_jstr(jniEnv, jstr);
|
||||
}
|
||||
|
||||
static gunichar
|
||||
jaw_text_get_character_at_offset (AtkText *text, gint offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", text, offset);
|
||||
JAW_GET_TEXT(text, 0);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_character_at_offset", "(I)C");
|
||||
jchar jcharacter = (*jniEnv)->CallCharMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset );
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return (gunichar)jcharacter;
|
||||
}
|
||||
|
||||
static gchar *jaw_text_get_gtext_from_string_seq(JNIEnv *jniEnv,
|
||||
jobject jStrSeq,
|
||||
gint *start_offset,
|
||||
gint *end_offset)
|
||||
{
|
||||
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText$StringSequence");
|
||||
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"str",
|
||||
"Ljava/lang/String;");
|
||||
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"start_offset",
|
||||
"I");
|
||||
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"end_offset",
|
||||
"I");
|
||||
|
||||
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
||||
jint jStart = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
||||
jint jEnd = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
||||
|
||||
(*start_offset) = (gint)jStart;
|
||||
(*end_offset) = (gint)jEnd;
|
||||
|
||||
return jaw_text_get_gtext_from_jstr(jniEnv, jStr);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_text_at_offset (AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset, gint *end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, NULL);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_text_at_offset",
|
||||
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
||||
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset,
|
||||
(jint)boundary_type );
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (jStrSeq == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return jaw_text_get_gtext_from_string_seq(jniEnv, jStrSeq, start_offset, end_offset);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_text_before_offset (AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset, gint *end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, NULL);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_text_before_offset",
|
||||
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
||||
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset,
|
||||
(jint)boundary_type );
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (jStrSeq == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return jaw_text_get_gtext_from_string_seq(jniEnv, jStrSeq, start_offset, end_offset);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_text_after_offset (AtkText *text,
|
||||
gint offset,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint *start_offset, gint *end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, NULL);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_text_after_offset",
|
||||
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
||||
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset,
|
||||
(jint)boundary_type );
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (jStrSeq == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return jaw_text_get_gtext_from_string_seq(jniEnv, jStrSeq, start_offset, end_offset);
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_text_get_caret_offset (AtkText *text)
|
||||
{
|
||||
JAW_DEBUG_C("%p", text);
|
||||
JAW_GET_TEXT(text, 0);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_caret_offset",
|
||||
"()I");
|
||||
jint joffset = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return (gint)joffset;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_text_get_character_extents (AtkText *text,
|
||||
gint offset, gint *x, gint *y,
|
||||
gint *width, gint *height,
|
||||
AtkCoordType coords)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %p, %p, %p, %p, %d", text, offset, x, y, width, height, coords);
|
||||
*x = -1;
|
||||
*y = -1;
|
||||
*width = -1;
|
||||
*height = -1;
|
||||
JAW_GET_TEXT(text, );
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_character_extents",
|
||||
"(II)Ljava/awt/Rectangle;");
|
||||
jobject jrect = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset,
|
||||
(jint)coords);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (jrect == NULL)
|
||||
{
|
||||
JAW_DEBUG_I("jrect == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
jaw_util_get_rect_info(jniEnv, jrect, x, y, width, height);
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_text_get_character_count (AtkText *text)
|
||||
{
|
||||
JAW_DEBUG_C("%p", text);
|
||||
JAW_GET_TEXT(text, 0);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_character_count",
|
||||
"()I");
|
||||
jint jcount = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return (gint)jcount;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_text_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d", text, x, y, coords);
|
||||
JAW_GET_TEXT(text, 0);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_offset_at_point",
|
||||
"(III)I");
|
||||
jint joffset = (*jniEnv)->CallIntMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)x,
|
||||
(jint)y,
|
||||
(jint)coords);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return (gint)joffset;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_text_get_range_extents (AtkText *text,
|
||||
gint start_offset,
|
||||
gint end_offset,
|
||||
AtkCoordType coord_type,
|
||||
AtkTextRectangle *rect)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d, %p", text, start_offset, end_offset, coord_type, rect);
|
||||
if (rect == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
rect->x = -1;
|
||||
rect->y = -1;
|
||||
rect->width = -1;
|
||||
rect->height = -1;
|
||||
|
||||
JAW_GET_TEXT(text, );
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_range_extents",
|
||||
"(III)Ljava/awt/Rectangle;");
|
||||
jobject jrect = (*jniEnv)->CallObjectMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)start_offset,
|
||||
(jint)end_offset,
|
||||
(jint)coord_type);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (!jrect)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
jaw_util_get_rect_info(jniEnv, jrect, &(rect->x), &(rect->y), &(rect->width), &(rect->height));
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_text_get_n_selections (AtkText *text)
|
||||
{
|
||||
JAW_DEBUG_C("%p", text);
|
||||
JAW_GET_TEXT(text, 0);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_n_selections",
|
||||
"()I");
|
||||
jint jselections = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return (gint)jselections;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
jaw_text_get_selection (AtkText *text, gint selection_num, gint *start_offset, gint *end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %p, %p", text, selection_num, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, NULL);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"get_selection",
|
||||
"()Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
||||
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv, atk_text, jmid);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
if (jStrSeq == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText$StringSequence");
|
||||
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"str",
|
||||
"Ljava/lang/String;");
|
||||
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"start_offset",
|
||||
"I");
|
||||
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
||||
classStringSeq,
|
||||
"end_offset",
|
||||
"I");
|
||||
|
||||
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
||||
*start_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
||||
*end_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
||||
|
||||
return jaw_text_get_gtext_from_jstr(jniEnv, jStr);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_text_add_selection (AtkText *text, gint start_offset, gint end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d", text, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, FALSE);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"add_selection",
|
||||
"(II)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)start_offset,
|
||||
(jint)end_offset);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return jresult;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_text_remove_selection (AtkText *text, gint selection_num)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", text, selection_num);
|
||||
JAW_GET_TEXT(text, FALSE);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"remove_selection",
|
||||
"(I)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)selection_num);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return jresult;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_text_set_selection (AtkText *text, gint selection_num, gint start_offset, gint end_offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d, %d, %d", text, selection_num, start_offset, end_offset);
|
||||
JAW_GET_TEXT(text, FALSE);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "set_selection", "(III)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)selection_num,
|
||||
(jint)start_offset,
|
||||
(jint)end_offset);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return jresult;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_text_set_caret_offset (AtkText *text, gint offset)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", text, offset);
|
||||
JAW_GET_TEXT(text, FALSE);
|
||||
|
||||
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkText");
|
||||
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
||||
classAtkText,
|
||||
"set_caret_offset",
|
||||
"(I)Z");
|
||||
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
||||
atk_text,
|
||||
jmid,
|
||||
(jint)offset);
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, atk_text);
|
||||
|
||||
return jresult;
|
||||
}
|
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include "jawtoplevel.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
static void jaw_toplevel_initialize(AtkObject *accessible, gpointer data);
|
||||
static void jaw_toplevel_object_finalize(GObject *obj);
|
||||
|
||||
/* override AtkObject function */
|
||||
static const gchar* jaw_toplevel_get_name(AtkObject *obj);
|
||||
static const gchar* jaw_toplevel_get_description(AtkObject *obj);
|
||||
static gint jaw_toplevel_get_n_children(AtkObject *obj);
|
||||
static gint jaw_toplevel_get_index_in_parent(AtkObject *obj);
|
||||
static AtkRole jaw_toplevel_get_role(AtkObject *obj);
|
||||
static AtkObject* jaw_toplevel_ref_child(AtkObject *obj, gint i);
|
||||
static AtkObject* jaw_toplevel_get_parent(AtkObject *obj);
|
||||
|
||||
G_DEFINE_TYPE (JawToplevel, jaw_toplevel, ATK_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
jaw_toplevel_class_init (JawToplevelClass *klass)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", klass);
|
||||
AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS(klass);
|
||||
GObjectClass *g_object_class = G_OBJECT_CLASS(klass);
|
||||
|
||||
atk_object_class->initialize = jaw_toplevel_initialize;
|
||||
atk_object_class->get_name = jaw_toplevel_get_name;
|
||||
atk_object_class->get_description = jaw_toplevel_get_description;
|
||||
atk_object_class->get_n_children = jaw_toplevel_get_n_children;
|
||||
atk_object_class->get_index_in_parent = jaw_toplevel_get_index_in_parent;
|
||||
atk_object_class->get_role = jaw_toplevel_get_role;
|
||||
atk_object_class->ref_child = jaw_toplevel_ref_child;
|
||||
atk_object_class->get_parent = jaw_toplevel_get_parent;
|
||||
|
||||
g_object_class->finalize = jaw_toplevel_object_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_toplevel_init (JawToplevel *toplevel)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", toplevel);
|
||||
toplevel->windows = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_toplevel_initialize(AtkObject *accessible, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", accessible, data);
|
||||
ATK_OBJECT_CLASS (jaw_toplevel_parent_class)->initialize(accessible, data);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_toplevel_object_finalize (GObject *obj)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", obj);
|
||||
JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
|
||||
g_list_free(jaw_toplevel->windows);
|
||||
|
||||
JawToplevelClass *klass = JAW_TOPLEVEL_GET_CLASS(obj);
|
||||
G_OBJECT_CLASS(klass)->finalize(obj);
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_toplevel_get_name (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
gint i;
|
||||
for(i = 0; i < atk_object_get_n_accessible_children(obj); i++)
|
||||
{
|
||||
AtkObject* child = atk_object_ref_accessible_child(obj, i);
|
||||
const gchar* name = atk_object_get_name(child);
|
||||
if (name && strlen(name) > 0)
|
||||
{
|
||||
g_object_unref(G_OBJECT(child));
|
||||
return name;
|
||||
}
|
||||
g_object_unref(G_OBJECT(child));
|
||||
}
|
||||
|
||||
return "Java Application";
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_toplevel_get_description (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
return "Accessible Java application";
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_toplevel_get_n_children (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
JawToplevel* jaw_toplevel = JAW_TOPLEVEL(obj);
|
||||
gint n = g_list_length(jaw_toplevel->windows);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
static gint
|
||||
jaw_toplevel_get_index_in_parent (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
|
||||
gint i = g_list_index(jaw_toplevel->windows, obj);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static AtkRole
|
||||
jaw_toplevel_get_role (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
return ATK_ROLE_APPLICATION;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_toplevel_ref_child (AtkObject *obj, gint i)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %d", obj, i);
|
||||
JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
|
||||
AtkObject* child = (AtkObject*)g_list_nth_data(jaw_toplevel->windows, i);
|
||||
|
||||
if (G_OBJECT(child) != NULL)
|
||||
g_object_ref(G_OBJECT(child));
|
||||
|
||||
return child;
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_toplevel_get_parent (AtkObject *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gint
|
||||
jaw_toplevel_add_window (JawToplevel *toplevel, AtkObject *child)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", toplevel, child);
|
||||
if (toplevel == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (g_list_index(toplevel->windows, child) != -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
toplevel->windows = g_list_append(toplevel->windows, child);
|
||||
|
||||
return g_list_index(toplevel->windows, child);
|
||||
}
|
||||
|
||||
gint jaw_toplevel_remove_window(JawToplevel *toplevel, AtkObject *child)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", toplevel, child);
|
||||
gint index = -1;
|
||||
|
||||
if (toplevel == NULL)
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
if ((index = g_list_index(toplevel->windows, child)) == -1)
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
toplevel->windows = g_list_remove(toplevel->windows, child);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
gint jaw_toplevel_get_child_index(JawToplevel *toplevel, AtkObject *child)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", toplevel, child);
|
||||
gint i = g_list_index(toplevel->windows, child);
|
||||
return i;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _JAW_TOPLEVEL_H_
|
||||
#define _JAW_TOPLEVEL_H_
|
||||
|
||||
#include <atk/atk.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define JAW_TYPE_TOPLEVEL (jaw_toplevel_get_type ())
|
||||
#define JAW_TOPLEVEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_TOPLEVEL, JawToplevel))
|
||||
#define JAW_TOPLEVEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JAW_TYPE_TOPLEVEL, JawToplevelClass))
|
||||
#define JAW_IS_TOPLEVEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JAW_TYPE_TOPLEVEL))
|
||||
#define JAW_IS_TOPLEVEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JAW_TYPE_TOPLEVEL))
|
||||
#define JAW_TOPLEVEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JAW_TYPE_TOPLEVEL, JawToplevelClass))
|
||||
|
||||
typedef struct _JawToplevel JawToplevel;
|
||||
typedef struct _JawToplevelClass JawToplevelClass;
|
||||
|
||||
struct _JawToplevel
|
||||
{
|
||||
AtkObject parent;
|
||||
|
||||
GList *windows;
|
||||
};
|
||||
|
||||
GType jaw_toplevel_get_type (void);
|
||||
|
||||
struct _JawToplevelClass
|
||||
{
|
||||
AtkObjectClass parent_class;
|
||||
};
|
||||
|
||||
gint jaw_toplevel_add_window(JawToplevel*, AtkObject*);
|
||||
gint jaw_toplevel_remove_window(JawToplevel*, AtkObject*);
|
||||
gint jaw_toplevel_get_child_index(JawToplevel*, AtkObject*);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,692 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include <glib/gprintf.h>
|
||||
#include "jawutil.h"
|
||||
#include "jawtoplevel.h"
|
||||
#include "jawobject.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* AtkUtil */
|
||||
static void jaw_util_class_init(JawUtilClass *klass, void *klass_data);
|
||||
|
||||
static guint jaw_util_add_key_event_listener(AtkKeySnoopFunc listener,
|
||||
gpointer data);
|
||||
static void jaw_util_remove_key_event_listener(guint remove_listener);
|
||||
static AtkObject* jaw_util_get_root(void);
|
||||
static const gchar* jaw_util_get_toolkit_name(void);
|
||||
static const gchar* jaw_util_get_toolkit_version(void);
|
||||
|
||||
static GHashTable *key_listener_list = NULL;
|
||||
|
||||
JavaVM *cachedJVM;
|
||||
|
||||
GType
|
||||
jaw_util_get_type(void)
|
||||
{
|
||||
JAW_DEBUG_ALL("");
|
||||
static GType type = 0;
|
||||
|
||||
if (!type) {
|
||||
static const GTypeInfo tinfo = {
|
||||
sizeof(JawUtilClass),
|
||||
(GBaseInitFunc) NULL, /*base init*/
|
||||
(GBaseFinalizeFunc) NULL, /*base finalize */
|
||||
(GClassInitFunc) jaw_util_class_init, /* class init */
|
||||
(GClassFinalizeFunc) NULL, /*class finalize */
|
||||
NULL, /* class data */
|
||||
sizeof(JawUtil), /* instance size */
|
||||
0, /* nb preallocs */
|
||||
(GInstanceInitFunc) NULL, /* instance init */
|
||||
NULL /* value table */
|
||||
};
|
||||
|
||||
type = g_type_register_static(ATK_TYPE_UTIL, "JawUtil", &tinfo, 0);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_util_class_init(JawUtilClass *kclass, void *klass_data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", kclass, klass_data);
|
||||
AtkUtilClass *atk_class;
|
||||
gpointer data;
|
||||
|
||||
data = g_type_class_peek (ATK_TYPE_UTIL);
|
||||
atk_class = ATK_UTIL_CLASS (data);
|
||||
|
||||
atk_class->add_key_event_listener = jaw_util_add_key_event_listener;
|
||||
atk_class->remove_key_event_listener = jaw_util_remove_key_event_listener;
|
||||
atk_class->get_root = jaw_util_get_root;
|
||||
atk_class->get_toolkit_name = jaw_util_get_toolkit_name;
|
||||
atk_class->get_toolkit_version = jaw_util_get_toolkit_version;
|
||||
}
|
||||
|
||||
typedef struct _JawKeyListenerInfo{
|
||||
AtkKeySnoopFunc listener;
|
||||
gpointer data;
|
||||
}JawKeyListenerInfo;
|
||||
|
||||
static gboolean
|
||||
notify_hf (gpointer key, gpointer value, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", key, value, data);
|
||||
JawKeyListenerInfo *info = (JawKeyListenerInfo*)value;
|
||||
AtkKeyEventStruct *key_event = (AtkKeyEventStruct*)data;
|
||||
|
||||
AtkKeySnoopFunc func = info->listener;
|
||||
gpointer func_data = info->data;
|
||||
|
||||
JAW_DEBUG_C("key event %d %x %x %d '%s' %u %u",
|
||||
key_event->type,
|
||||
key_event->state,
|
||||
key_event->keyval,
|
||||
key_event->length,
|
||||
key_event->string,
|
||||
(unsigned) key_event->keycode,
|
||||
(unsigned) key_event->timestamp);
|
||||
|
||||
return (*func)(key_event, func_data) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
insert_hf (gpointer key, gpointer value, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", key, value, data);
|
||||
GHashTable *new_table = (GHashTable *) data;
|
||||
g_hash_table_insert (new_table, key, value);
|
||||
}
|
||||
|
||||
gboolean
|
||||
jaw_util_dispatch_key_event (AtkKeyEventStruct *event)
|
||||
{
|
||||
JAW_DEBUG_C("%p", event);
|
||||
gint consumed = 0;
|
||||
if (key_listener_list) {
|
||||
GHashTable *new_hash = g_hash_table_new(NULL, NULL);
|
||||
g_hash_table_foreach(key_listener_list, insert_hf, new_hash);
|
||||
consumed = g_hash_table_foreach_steal(new_hash, notify_hf, event);
|
||||
g_hash_table_destroy(new_hash);
|
||||
}
|
||||
JAW_DEBUG_C("consumed: %d", consumed);
|
||||
|
||||
return (consumed > 0) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static guint
|
||||
jaw_util_add_key_event_listener (AtkKeySnoopFunc listener, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", listener, data);
|
||||
static guint key = 0;
|
||||
|
||||
if (!listener) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!key_listener_list) {
|
||||
key_listener_list = g_hash_table_new(NULL, NULL);
|
||||
}
|
||||
|
||||
JawKeyListenerInfo *info = g_new0(JawKeyListenerInfo, 1);
|
||||
info->listener = listener;
|
||||
info->data = data;
|
||||
|
||||
key++;
|
||||
g_hash_table_insert(key_listener_list, GUINT_TO_POINTER(key), info);
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_util_remove_key_event_listener (guint remove_listener)
|
||||
{
|
||||
JAW_DEBUG_C("%u", remove_listener);
|
||||
gpointer *value = g_hash_table_lookup(key_listener_list,
|
||||
GUINT_TO_POINTER(remove_listener));
|
||||
if (value)
|
||||
g_free(value);
|
||||
|
||||
g_hash_table_remove(key_listener_list, GUINT_TO_POINTER(remove_listener));
|
||||
}
|
||||
|
||||
static AtkObject*
|
||||
jaw_util_get_root (void)
|
||||
{
|
||||
JAW_DEBUG_C("");
|
||||
static JawToplevel *root = NULL;
|
||||
|
||||
if (!root) {
|
||||
root = g_object_new(JAW_TYPE_TOPLEVEL, NULL);
|
||||
atk_object_initialize(ATK_OBJECT(root), NULL);
|
||||
}
|
||||
|
||||
return ATK_OBJECT(root);
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_util_get_toolkit_name (void)
|
||||
{
|
||||
JAW_DEBUG_C("");
|
||||
return "J2SE-access-bridge";
|
||||
}
|
||||
|
||||
static const gchar*
|
||||
jaw_util_get_toolkit_version (void)
|
||||
{
|
||||
JAW_DEBUG_C("");
|
||||
return "1.0";
|
||||
}
|
||||
|
||||
/* static functions */
|
||||
guint
|
||||
jaw_util_get_tflag_from_jobj(JNIEnv *jniEnv, jobject jObj)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", jniEnv, jObj);
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv, atkObject, "getTFlagFromObj", "(Ljava/lang/Object;)I");
|
||||
return (guint) (*jniEnv)->CallStaticIntMethod (jniEnv, atkObject, jmid, jObj);
|
||||
}
|
||||
|
||||
gboolean
|
||||
jaw_util_is_same_jobject(gconstpointer a, gconstpointer b)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", a, b);
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
if ( (*jniEnv)->IsSameObject(jniEnv, (jobject)a, (jobject)b) ) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserve)
|
||||
{
|
||||
JAW_DEBUG_JNI("%p, %p", jvm, reserve);
|
||||
if (jvm == NULL)
|
||||
{
|
||||
JAW_DEBUG_I("JavaVM pointer was NULL when initializing library");
|
||||
g_error("JavaVM pointer was NULL when initializing library");
|
||||
return JNI_ERR;
|
||||
}
|
||||
cachedJVM = jvm;
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserve)
|
||||
{
|
||||
JAW_DEBUG_JNI("%p, %p", jvm, reserve);
|
||||
g_warning("JNI_OnUnload() called but this is not supported yet\n");
|
||||
}
|
||||
|
||||
JNIEnv*
|
||||
jaw_util_get_jni_env(void)
|
||||
{
|
||||
JNIEnv *env;
|
||||
env = NULL;
|
||||
static int i;
|
||||
|
||||
i = 0;
|
||||
void* ptr;
|
||||
ptr = NULL;
|
||||
JavaVMAttachArgs args = { 0, };
|
||||
jint res;
|
||||
|
||||
#ifdef JNI_VERSION_1_6
|
||||
res = (*cachedJVM)->GetEnv(cachedJVM, &ptr, JNI_VERSION_1_6);
|
||||
#endif
|
||||
env = (JNIEnv*) ptr;
|
||||
|
||||
if (env != NULL)
|
||||
return env;
|
||||
|
||||
switch (res)
|
||||
{
|
||||
case JNI_EDETACHED:
|
||||
args.version = JNI_VERSION_1_6;
|
||||
args.name = g_strdup_printf("NativeThread %d", i++);
|
||||
res = (*cachedJVM)->AttachCurrentThreadAsDaemon(cachedJVM, &ptr, NULL);
|
||||
env = (JNIEnv*) ptr;
|
||||
if ((res == JNI_OK) && (env != NULL))
|
||||
{
|
||||
g_free(args.name);
|
||||
return env;
|
||||
}
|
||||
g_printerr("\n *** Attach failed. *** JNIEnv thread is detached.\n");
|
||||
break;
|
||||
case JNI_EVERSION:
|
||||
g_printerr(" *** Version error *** \n");
|
||||
break;
|
||||
default:
|
||||
g_printerr(" *** Unknown result %d *** \n", res);
|
||||
break;
|
||||
}
|
||||
|
||||
fflush(stderr);
|
||||
exit(2);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Currently unused: our thread lives forever until application termination. */
|
||||
void
|
||||
jaw_util_detach(void)
|
||||
{
|
||||
JAW_DEBUG_C("");
|
||||
JavaVM* jvm;
|
||||
jvm = cachedJVM;
|
||||
(*jvm)->DetachCurrentThread(jvm);
|
||||
}
|
||||
|
||||
static jobject
|
||||
jaw_util_get_java_acc_role (JNIEnv *jniEnv, const gchar* roleName)
|
||||
{
|
||||
jclass classAccessibleRole = (*jniEnv)->FindClass(jniEnv,
|
||||
"javax/accessibility/AccessibleRole");
|
||||
jfieldID jfid = (*jniEnv)->GetStaticFieldID(jniEnv,
|
||||
classAccessibleRole,
|
||||
roleName,
|
||||
"Ljavax/accessibility/AccessibleRole;");
|
||||
jobject jrole = (*jniEnv)->GetStaticObjectField(jniEnv, classAccessibleRole, jfid);
|
||||
|
||||
return jrole;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
jaw_util_is_java_acc_role (JNIEnv *jniEnv, jobject acc_role, const gchar* roleName)
|
||||
{
|
||||
jobject jrole = jaw_util_get_java_acc_role (jniEnv, roleName);
|
||||
|
||||
if ((*jniEnv)->IsSameObject(jniEnv, acc_role, jrole))
|
||||
{
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
AtkRole
|
||||
jaw_util_get_atk_role_from_AccessibleContext (jobject jAccessibleContext)
|
||||
{
|
||||
JAW_DEBUG_C("%p", jAccessibleContext);
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
|
||||
jmethodID jmidgar = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleRole", "(Ljavax/accessibility/AccessibleContext;)Ljavax/accessibility/AccessibleRole;");
|
||||
jobject ac_role = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmidgar, jAccessibleContext);
|
||||
jclass classAccessibleRole = (*jniEnv)->FindClass(jniEnv,"javax/accessibility/AccessibleRole");
|
||||
|
||||
if( !(*jniEnv)->IsInstanceOf (jniEnv, ac_role, classAccessibleRole) )
|
||||
return ATK_ROLE_INVALID;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "ALERT"))
|
||||
return ATK_ROLE_ALERT;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "AWT_COMPONENT"))
|
||||
return ATK_ROLE_UNKNOWN;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "CANVAS"))
|
||||
return ATK_ROLE_CANVAS;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "CHECK_BOX"))
|
||||
return ATK_ROLE_CHECK_BOX;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "COLOR_CHOOSER"))
|
||||
return ATK_ROLE_COLOR_CHOOSER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "COLUMN_HEADER"))
|
||||
return ATK_ROLE_COLUMN_HEADER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "COMBO_BOX"))
|
||||
return ATK_ROLE_COMBO_BOX;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "DATE_EDITOR"))
|
||||
return ATK_ROLE_DATE_EDITOR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "DESKTOP_ICON"))
|
||||
return ATK_ROLE_DESKTOP_ICON;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "DESKTOP_PANE"))
|
||||
return ATK_ROLE_DESKTOP_FRAME;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "DIALOG"))
|
||||
return ATK_ROLE_DIALOG;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "DIRECTORY_PANE"))
|
||||
return ATK_ROLE_DIRECTORY_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "EDITBAR"))
|
||||
return ATK_ROLE_EDITBAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "FILE_CHOOSER"))
|
||||
return ATK_ROLE_FILE_CHOOSER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "FILLER"))
|
||||
return ATK_ROLE_FILLER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "FONT_CHOOSER"))
|
||||
return ATK_ROLE_FONT_CHOOSER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "FOOTER"))
|
||||
return ATK_ROLE_FOOTER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "FRAME"))
|
||||
return ATK_ROLE_FRAME;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "GLASS_PANE"))
|
||||
return ATK_ROLE_GLASS_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "GROUP_BOX"))
|
||||
return ATK_ROLE_PANEL;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "HEADER"))
|
||||
return ATK_ROLE_HEADER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "HTML_CONTAINER"))
|
||||
return ATK_ROLE_HTML_CONTAINER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "HYPERLINK"))
|
||||
return ATK_ROLE_UNKNOWN;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "ICON"))
|
||||
return ATK_ROLE_ICON;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "INTERNAL_FRAME"))
|
||||
return ATK_ROLE_INTERNAL_FRAME;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "LABEL"))
|
||||
return ATK_ROLE_LABEL;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "LAYERED_PANE"))
|
||||
return ATK_ROLE_LAYERED_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "LIST"))
|
||||
return ATK_ROLE_LIST;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "LIST_ITEM"))
|
||||
return ATK_ROLE_LIST_ITEM;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "MENU"))
|
||||
return ATK_ROLE_MENU;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "MENU_BAR"))
|
||||
return ATK_ROLE_MENU_BAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "MENU_ITEM"))
|
||||
return ATK_ROLE_MENU_ITEM;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "OPTION_PANE"))
|
||||
return ATK_ROLE_OPTION_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PAGE_TAB"))
|
||||
return ATK_ROLE_PAGE_TAB;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PAGE_TAB_LIST"))
|
||||
return ATK_ROLE_PAGE_TAB_LIST;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PANEL"))
|
||||
return ATK_ROLE_PANEL;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PARAGRAPH"))
|
||||
return ATK_ROLE_PARAGRAPH;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PASSWORD_TEXT"))
|
||||
return ATK_ROLE_PASSWORD_TEXT;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "POPUP_MENU"))
|
||||
return ATK_ROLE_POPUP_MENU;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PROGRESS_BAR"))
|
||||
return ATK_ROLE_PROGRESS_BAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "PUSH_BUTTON"))
|
||||
return ATK_ROLE_PUSH_BUTTON;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "RADIO_BUTTON"))
|
||||
{
|
||||
jmethodID jmidgap = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleParent", "(Ljavax/accessibility/AccessibleContext;)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jparent = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmidgap, jAccessibleContext);
|
||||
if (!jparent)
|
||||
return ATK_ROLE_RADIO_BUTTON;
|
||||
jobject parent_role = (*jniEnv)->CallStaticObjectMethod(jniEnv, atkObject, jmidgar, jparent);
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, parent_role, "MENU"))
|
||||
return ATK_ROLE_RADIO_MENU_ITEM;
|
||||
|
||||
return ATK_ROLE_RADIO_BUTTON;
|
||||
}
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "ROOT_PANE"))
|
||||
return ATK_ROLE_ROOT_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "ROW_HEADER"))
|
||||
return ATK_ROLE_ROW_HEADER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "RULER"))
|
||||
return ATK_ROLE_RULER;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "SCROLL_BAR"))
|
||||
return ATK_ROLE_SCROLL_BAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "SCROLL_PANE"))
|
||||
return ATK_ROLE_SCROLL_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "SEPARATOR"))
|
||||
return ATK_ROLE_SEPARATOR;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "SLIDER"))
|
||||
return ATK_ROLE_SLIDER;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "SPIN_BOX"))
|
||||
return ATK_ROLE_SPIN_BUTTON;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "SPLIT_PANE"))
|
||||
return ATK_ROLE_SPLIT_PANE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "STATUS_BAR"))
|
||||
return ATK_ROLE_STATUSBAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "SWING_COMPONENT"))
|
||||
return ATK_ROLE_UNKNOWN;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "TABLE"))
|
||||
return ATK_ROLE_TABLE;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "TEXT"))
|
||||
return ATK_ROLE_TEXT;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "TOGGLE_BUTTON"))
|
||||
return ATK_ROLE_TOGGLE_BUTTON;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "TOOL_BAR"))
|
||||
return ATK_ROLE_TOOL_BAR;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "TOOL_TIP"))
|
||||
return ATK_ROLE_TOOL_TIP;
|
||||
|
||||
if (jaw_util_is_java_acc_role(jniEnv, ac_role, "TREE"))
|
||||
return ATK_ROLE_TREE;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "UNKNOWN"))
|
||||
{
|
||||
jmethodID jmidgap = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleParent", "(Ljavax/accessibility/AccessibleContext;)Ljavax/accessibility/AccessibleContext;");
|
||||
jobject jparent = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmidgap, jAccessibleContext);
|
||||
|
||||
if (jparent == NULL)
|
||||
return ATK_ROLE_APPLICATION;
|
||||
|
||||
return ATK_ROLE_UNKNOWN;
|
||||
}
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "VIEWPORT"))
|
||||
return ATK_ROLE_VIEWPORT;
|
||||
|
||||
if ( jaw_util_is_java_acc_role(jniEnv, ac_role, "WINDOW"))
|
||||
return ATK_ROLE_WINDOW;
|
||||
|
||||
jmethodID jmideic = (*jniEnv)->GetMethodID(jniEnv, atkObject, "equalsIgnoreCaseLocaleWithRole", "(Ljavax/accessibility/AccessibleRole;)Z");
|
||||
if ( (*jniEnv)->CallStaticBooleanMethod(jniEnv, atkObject, jmideic, ac_role) )
|
||||
return ATK_ROLE_PARAGRAPH;
|
||||
|
||||
return ATK_ROLE_UNKNOWN; /* ROLE_EXTENDED */
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_same_java_state (JNIEnv *jniEnv, jobject jobj, const gchar* strState)
|
||||
{
|
||||
jclass classAccessibleState = (*jniEnv)->FindClass(jniEnv,
|
||||
"javax/accessibility/AccessibleState");
|
||||
jfieldID jfid = (*jniEnv)->GetStaticFieldID(jniEnv,
|
||||
classAccessibleState,
|
||||
strState,
|
||||
"Ljavax/accessibility/AccessibleState;");
|
||||
jobject jstate = (*jniEnv)->GetStaticObjectField(jniEnv, classAccessibleState, jfid);
|
||||
|
||||
if ((*jniEnv)->IsSameObject( jniEnv, jobj, jstate )) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
AtkStateType
|
||||
jaw_util_get_atk_state_type_from_java_state (JNIEnv *jniEnv, jobject jobj)
|
||||
{
|
||||
if (is_same_java_state( jniEnv, jobj, "ACTIVE" ))
|
||||
return ATK_STATE_ACTIVE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "ARMED" ))
|
||||
return ATK_STATE_ARMED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "BUSY" ))
|
||||
return ATK_STATE_BUSY;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "CHECKED" ))
|
||||
return ATK_STATE_CHECKED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "COLLAPSED" ))
|
||||
return ATK_STATE_INVALID;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "EDITABLE" ))
|
||||
return ATK_STATE_EDITABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "ENABLED" ))
|
||||
return ATK_STATE_ENABLED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "EXPANDABLE" ))
|
||||
return ATK_STATE_EXPANDABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "EXPANDED" ))
|
||||
return ATK_STATE_EXPANDED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "FOCUSABLE" ))
|
||||
return ATK_STATE_FOCUSABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "FOCUSED" ))
|
||||
return ATK_STATE_FOCUSED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "HORIZONTAL" ))
|
||||
return ATK_STATE_HORIZONTAL;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "ICONIFIED" ))
|
||||
return ATK_STATE_ICONIFIED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "INDETERMINATE" ))
|
||||
return ATK_STATE_INDETERMINATE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "MANAGES_DESCENDANTS" ))
|
||||
return ATK_STATE_MANAGES_DESCENDANTS;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "MODAL" ))
|
||||
return ATK_STATE_MODAL;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "MULTI_LINE" ))
|
||||
return ATK_STATE_MULTI_LINE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "MULTISELECTABLE" ))
|
||||
return ATK_STATE_MULTISELECTABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "OPAQUE" ))
|
||||
return ATK_STATE_OPAQUE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "PRESSED" ))
|
||||
return ATK_STATE_PRESSED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "RESIZABLE" ))
|
||||
return ATK_STATE_RESIZABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "SELECTABLE" ))
|
||||
return ATK_STATE_SELECTABLE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "SELECTED" ))
|
||||
return ATK_STATE_SELECTED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "SHOWING" ))
|
||||
return ATK_STATE_SHOWING;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "SINGLE_LINE" ))
|
||||
return ATK_STATE_SINGLE_LINE;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "TRANSIENT" ))
|
||||
return ATK_STATE_TRANSIENT;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "TRUNCATED" ))
|
||||
return ATK_STATE_TRUNCATED;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "VERTICAL" ))
|
||||
return ATK_STATE_VERTICAL;
|
||||
|
||||
if (is_same_java_state( jniEnv, jobj, "VISIBLE" ))
|
||||
return ATK_STATE_VISIBLE;
|
||||
|
||||
return ATK_STATE_INVALID;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_util_get_rect_info (JNIEnv *jniEnv,
|
||||
jobject jrect,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p, %p, %p, %p", jniEnv, jrect, x, y, width, height);
|
||||
jclass classRectangle = (*jniEnv)->FindClass(jniEnv, "java/awt/Rectangle");
|
||||
jfieldID jfidX = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "x", "I");
|
||||
jfieldID jfidY = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "y", "I");
|
||||
jfieldID jfidWidth = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "width", "I");
|
||||
jfieldID jfidHeight = (*jniEnv)->GetFieldID(jniEnv, classRectangle, "height", "I");
|
||||
|
||||
(*x) = (gint)(*jniEnv)->GetIntField(jniEnv, jrect, jfidX);
|
||||
(*y) = (gint)(*jniEnv)->GetIntField(jniEnv, jrect, jfidY);
|
||||
(*width) = (gint)(*jniEnv)->GetIntField(jniEnv, jrect, jfidWidth);
|
||||
(*height) = (gint)(*jniEnv)->GetIntField(jniEnv, jrect, jfidHeight);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _JAW_UTIL_H_
|
||||
#define _JAW_UTIL_H_
|
||||
|
||||
#include <jni.h>
|
||||
#include <atk/atk.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
extern int jaw_debug;
|
||||
extern FILE *jaw_log_file;
|
||||
extern time_t jaw_start_time;
|
||||
|
||||
#define PRINT_AND_FLUSH(fmt, ...) do { \
|
||||
fprintf(jaw_log_file, "[%lu] %s" fmt "\n", (unsigned long) (time(NULL) - jaw_start_time), __func__, ##__VA_ARGS__); \
|
||||
fflush(jaw_log_file); \
|
||||
} while (0)
|
||||
|
||||
#define JAW_DEBUG_I(fmt, ...) do { \
|
||||
if (jaw_debug) { \
|
||||
if (1 <= jaw_debug) \
|
||||
PRINT_AND_FLUSH(": "fmt, ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define JAW_DEBUG_JNI(fmt, ...) do { \
|
||||
if (jaw_debug) { \
|
||||
if (2 <= jaw_debug) \
|
||||
PRINT_AND_FLUSH("("fmt")", ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define JAW_DEBUG_C(fmt, ...) do { \
|
||||
if (jaw_debug) { \
|
||||
if (3 <= jaw_debug) \
|
||||
PRINT_AND_FLUSH("("fmt")", ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define JAW_DEBUG_ALL(fmt, ...) do { \
|
||||
if (jaw_debug) { \
|
||||
if (4 <= jaw_debug) \
|
||||
PRINT_AND_FLUSH("("fmt")", ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define INTERFACE_ACTION 0x00000001
|
||||
#define INTERFACE_COMPONENT 0x00000002
|
||||
#define INTERFACE_DOCUMENT 0x00000004
|
||||
#define INTERFACE_EDITABLE_TEXT 0x00000008
|
||||
#define INTERFACE_HYPERLINK 0x00000010
|
||||
#define INTERFACE_HYPERTEXT 0x00000020
|
||||
#define INTERFACE_IMAGE 0x00000040
|
||||
#define INTERFACE_SELECTION 0x00000080
|
||||
#define INTERFACE_STREAMABLE_CONTENT 0x00000100
|
||||
#define INTERFACE_TABLE 0x00000200
|
||||
#define INTERFACE_TABLE_CELL 0x00000400
|
||||
#define INTERFACE_TEXT 0x00000800
|
||||
#define INTERFACE_VALUE 0x00001000
|
||||
#define INTERFACE_MASK 0x00001fff
|
||||
|
||||
#define JAW_TYPE_UTIL (jaw_util_get_type())
|
||||
#define JAW_UTIL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_UTIL, JawUtil))
|
||||
#define JAW_UTIL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JAW_TYPE_UTIL, JawUtilClass))
|
||||
#define JAW_IS_UTIL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JAW_TYPE_UTIL))
|
||||
#define JAW_IS_UTIL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JAW_TYPE_UTIL))
|
||||
#define JAW_UTIL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JAW_TYPE_UTIL, JawUtilClass))
|
||||
|
||||
typedef struct _JawUtil JawUtil;
|
||||
typedef struct _JawUtilClass JawUtilClass;
|
||||
|
||||
struct _JawUtil
|
||||
{
|
||||
AtkUtil parent;
|
||||
};
|
||||
|
||||
GType jaw_util_get_type(void);
|
||||
|
||||
struct _JawUtilClass
|
||||
{
|
||||
AtkUtilClass parent_class;
|
||||
};
|
||||
|
||||
guint jaw_util_get_tflag_from_jobj(JNIEnv *jniEnv, jobject jObj);
|
||||
gboolean jaw_util_is_same_jobject(gconstpointer a, gconstpointer b);
|
||||
JNIEnv* jaw_util_get_jni_env(void);
|
||||
AtkRole jaw_util_get_atk_role_from_AccessibleContext(jobject jobj);
|
||||
AtkStateType jaw_util_get_atk_state_type_from_java_state(JNIEnv *jniEnv, jobject jobj);
|
||||
void jaw_util_get_rect_info(JNIEnv *jniEnv,
|
||||
jobject jrect,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gint *width,
|
||||
gint *height);
|
||||
gboolean jaw_util_dispatch_key_event (AtkKeyEventStruct *event);
|
||||
|
||||
void jaw_util_detach(void);
|
||||
|
||||
#define JAW_GET_OBJ_IFACE(o, iface, Data, field, env, name, def_ret) \
|
||||
JawObject *jaw_obj = JAW_OBJECT(o); \
|
||||
if (!jaw_obj) { \
|
||||
JAW_DEBUG_I("jaw_obj == NULL"); \
|
||||
return def_ret; \
|
||||
} \
|
||||
Data *data = jaw_object_get_interface_data(jaw_obj, iface); \
|
||||
JNIEnv *env = jaw_util_get_jni_env(); \
|
||||
jobject name = (*env)->NewGlobalRef(env, data->field); \
|
||||
if (!name) { \
|
||||
JAW_DEBUG_I(#name " == NULL"); \
|
||||
return def_ret; \
|
||||
}
|
||||
|
||||
#define JAW_GET_OBJ(o, CAST, JawObject, object_name, field, env, name, def_ret) \
|
||||
JawObject *object_name = CAST(o); \
|
||||
if (!object_name) { \
|
||||
JAW_DEBUG_I(#object_name " == NULL"); \
|
||||
return def_ret; \
|
||||
} \
|
||||
JNIEnv *env = jaw_util_get_jni_env(); \
|
||||
jobject name = (*env)->NewGlobalRef(env, object_name->field); \
|
||||
if (!name) { \
|
||||
JAW_DEBUG_I(#name " == NULL"); \
|
||||
return def_ret; \
|
||||
}
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
|
@ -0,0 +1,230 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include <glib.h>
|
||||
#include "jawimpl.h"
|
||||
#include "jawutil.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static void jaw_value_get_current_value(AtkValue *obj, GValue *value);
|
||||
static void jaw_value_set_value(AtkValue *obj, const gdouble value);
|
||||
static gdouble jaw_value_get_increment (AtkValue *obj);
|
||||
static AtkRange* jaw_value_get_range(AtkValue *obj);
|
||||
|
||||
typedef struct _ValueData {
|
||||
jobject atk_value;
|
||||
} ValueData;
|
||||
|
||||
#define JAW_GET_VALUE(obj, def_ret) \
|
||||
JAW_GET_OBJ_IFACE(obj, INTERFACE_VALUE, ValueData, atk_value, env, atk_value, def_ret)
|
||||
|
||||
void
|
||||
jaw_value_interface_init (AtkValueIface *iface, gpointer data)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p, %p", iface, data);
|
||||
iface->get_current_value = jaw_value_get_current_value;
|
||||
// deprecated: iface->get_maximum_value
|
||||
// deprecated: iface->get_minimum_value
|
||||
// deprecated: iface->set_current_value
|
||||
// deprecated: iface->get_minimum_increment
|
||||
// TODO: get_value_and_text
|
||||
iface->get_range = jaw_value_get_range;
|
||||
iface->get_increment = jaw_value_get_increment;
|
||||
// TODO: missing java support for iface->get_sub_ranges
|
||||
iface->set_value = jaw_value_set_value;
|
||||
}
|
||||
|
||||
gpointer
|
||||
jaw_value_data_init (jobject ac)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", ac);
|
||||
ValueData *data = g_new0(ValueData, 1);
|
||||
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
jclass classValue = (*jniEnv)->FindClass(jniEnv,
|
||||
"org/GNOME/Accessibility/AtkValue");
|
||||
jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
|
||||
classValue,
|
||||
"createAtkValue",
|
||||
"(Ljavax/accessibility/AccessibleContext;)Lorg/GNOME/Accessibility/AtkValue;");
|
||||
jobject jatk_value = (*jniEnv)->CallStaticObjectMethod(jniEnv, classValue, jmid, ac);
|
||||
data->atk_value = (*jniEnv)->NewGlobalRef(jniEnv, jatk_value);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void
|
||||
jaw_value_data_finalize (gpointer p)
|
||||
{
|
||||
JAW_DEBUG_ALL("%p", p);
|
||||
ValueData *data = (ValueData*)p;
|
||||
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
||||
|
||||
if (data && data->atk_value)
|
||||
{
|
||||
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_value);
|
||||
data->atk_value = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
get_g_value_from_java_number (JNIEnv *jniEnv, jobject jnumber, GValue *value)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p, %p", jniEnv, jnumber, value);
|
||||
jclass classByte = (*jniEnv)->FindClass(jniEnv, "java/lang/Byte");
|
||||
jclass classDouble = (*jniEnv)->FindClass(jniEnv, "java/lang/Double");
|
||||
jclass classFloat = (*jniEnv)->FindClass(jniEnv, "java/lang/Float");
|
||||
jclass classInteger = (*jniEnv)->FindClass(jniEnv, "java/lang/Integer");
|
||||
jclass classLong = (*jniEnv)->FindClass(jniEnv, "java/lang/Long");
|
||||
jclass classShort = (*jniEnv)->FindClass(jniEnv, "java/lang/Short");
|
||||
|
||||
jmethodID jmid;
|
||||
|
||||
if ((*jniEnv)->IsInstanceOf(jniEnv, jnumber, classByte))
|
||||
{
|
||||
jmid = (*jniEnv)->GetMethodID(jniEnv, classByte, "byteValue", "()B");
|
||||
g_value_init(value, G_TYPE_CHAR);
|
||||
g_value_set_schar(value,
|
||||
(gchar)(*jniEnv)->CallByteMethod(jniEnv, jnumber, jmid));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ((*jniEnv)->IsInstanceOf(jniEnv, jnumber, classDouble))
|
||||
{
|
||||
jmid = (*jniEnv)->GetMethodID(jniEnv, classDouble, "doubleValue", "()D");
|
||||
g_value_init(value, G_TYPE_DOUBLE);
|
||||
g_value_set_double(value,
|
||||
(gdouble)(*jniEnv)->CallDoubleMethod(jniEnv, jnumber, jmid));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ((*jniEnv)->IsInstanceOf(jniEnv, jnumber, classFloat))
|
||||
{
|
||||
jmid = (*jniEnv)->GetMethodID(jniEnv, classFloat, "floatValue", "()F");
|
||||
g_value_init(value, G_TYPE_FLOAT);
|
||||
g_value_set_float(value,
|
||||
(gfloat)(*jniEnv)->CallFloatMethod(jniEnv, jnumber, jmid));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ((*jniEnv)->IsInstanceOf(jniEnv, jnumber, classInteger)
|
||||
|| (*jniEnv)->IsInstanceOf(jniEnv, jnumber, classShort))
|
||||
{
|
||||
jmid = (*jniEnv)->GetMethodID(jniEnv, classInteger, "intValue", "()I");
|
||||
g_value_init(value, G_TYPE_INT);
|
||||
g_value_set_int(value,
|
||||
(gint)(*jniEnv)->CallIntMethod(jniEnv, jnumber, jmid));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ((*jniEnv)->IsInstanceOf(jniEnv, jnumber, classLong)) {
|
||||
jmid = (*jniEnv)->GetMethodID(jniEnv, classLong, "longValue", "()J");
|
||||
g_value_init(value, G_TYPE_INT64);
|
||||
g_value_set_int64(value,
|
||||
(gint64)(*jniEnv)->CallLongMethod(jniEnv, jnumber, jmid));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_value_get_current_value (AtkValue *obj, GValue *value)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %p", obj, value);
|
||||
if (!value)
|
||||
return;
|
||||
g_value_unset(value);
|
||||
JAW_GET_VALUE(obj, );
|
||||
|
||||
jclass classAtkValue = (*env)->FindClass(env,
|
||||
"org/GNOME/Accessibility/AtkValue");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkValue,
|
||||
"get_current_value",
|
||||
"()Ljava/lang/Number;");
|
||||
jobject jnumber = (*env)->CallObjectMethod(env,
|
||||
atk_value,
|
||||
jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_value);
|
||||
|
||||
if (!jnumber)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
get_g_value_from_java_number(env, jnumber, value);
|
||||
}
|
||||
|
||||
static void
|
||||
jaw_value_set_value(AtkValue *obj, const gdouble value)
|
||||
{
|
||||
JAW_DEBUG_C("%p, %lf", obj, value);
|
||||
|
||||
JAW_GET_VALUE(obj, );
|
||||
|
||||
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
|
||||
jmethodID jmid = (*env)->GetMethodID(env,
|
||||
classAtkValue,
|
||||
"setValue",
|
||||
"(Ljava/lang/Number;)V");
|
||||
(*env)->CallVoidMethod(env, atk_value, jmid,(jdouble)value);
|
||||
(*env)->DeleteGlobalRef(env, atk_value);
|
||||
}
|
||||
|
||||
static AtkRange*
|
||||
jaw_value_get_range(AtkValue *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
JAW_GET_VALUE(obj, NULL);
|
||||
|
||||
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
|
||||
jmethodID jmidMin = (*env)->GetMethodID(env, classAtkValue, "getMinimumValue", "()D");
|
||||
jmethodID jmidMax = (*env)->GetMethodID(env, classAtkValue, "getMaximumValue", "()D");
|
||||
AtkRange *ret = atk_range_new((gdouble)(*env)->CallDoubleMethod(env, atk_value, jmidMin),
|
||||
(gdouble)(*env)->CallDoubleMethod(env, atk_value, jmidMax),
|
||||
NULL); // NULL description
|
||||
(*env)->DeleteGlobalRef(env, atk_value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static gdouble
|
||||
jaw_value_get_increment (AtkValue *obj)
|
||||
{
|
||||
JAW_DEBUG_C("%p", obj);
|
||||
JAW_GET_VALUE(obj, 0.);
|
||||
|
||||
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
|
||||
jmethodID jmid = (*env)->GetMethodID(env, classAtkValue, "getIncrement", "()D");
|
||||
gdouble ret = (*env)->CallDoubleMethod(env, atk_value, jmid);
|
||||
(*env)->DeleteGlobalRef(env, atk_value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,437 @@
|
|||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# 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 ltoptions.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||
|
||||
|
||||
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ------------------------------------------
|
||||
m4_define([_LT_MANGLE_OPTION],
|
||||
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ---------------------------------------
|
||||
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
||||
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
||||
# saved as a flag.
|
||||
m4_define([_LT_SET_OPTION],
|
||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
[m4_warning([Unknown $1 option '$2'])])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
||||
# ------------------------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
m4_define([_LT_IF_OPTION],
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
||||
|
||||
|
||||
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
||||
# -------------------------------------------------------
|
||||
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
||||
# are set.
|
||||
m4_define([_LT_UNLESS_OPTIONS],
|
||||
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
||||
[m4_define([$0_found])])])[]dnl
|
||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
||||
])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
||||
# ----------------------------------------
|
||||
# OPTION-LIST is a space-separated list of Libtool options associated
|
||||
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
||||
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
||||
# the unknown option and exit.
|
||||
m4_defun([_LT_SET_OPTIONS],
|
||||
[# Set options
|
||||
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[_LT_SET_OPTION([$1], _LT_Option)])
|
||||
|
||||
m4_if([$1],[LT_INIT],[
|
||||
dnl
|
||||
dnl Simply set some default values (i.e off) if boolean options were not
|
||||
dnl specified:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
||||
])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
||||
])
|
||||
dnl
|
||||
dnl If no reference was made to various pairs of opposing options, then
|
||||
dnl we run the default mode handler for the pair. For example, if neither
|
||||
dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
|
||||
dnl archives by default:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||
[_LT_ENABLE_FAST_INSTALL])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
|
||||
[_LT_WITH_AIX_SONAME([aix])])
|
||||
])
|
||||
])# _LT_SET_OPTIONS
|
||||
|
||||
|
||||
## --------------------------------- ##
|
||||
## Macros to handle LT_INIT options. ##
|
||||
## --------------------------------- ##
|
||||
|
||||
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
||||
# -----------------------------------------
|
||||
m4_define([_LT_MANGLE_DEFUN],
|
||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
||||
# -----------------------------------------------
|
||||
m4_define([LT_OPTION_DEFINE],
|
||||
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
||||
])# LT_OPTION_DEFINE
|
||||
|
||||
|
||||
# dlopen
|
||||
# ------
|
||||
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'dlopen' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
||||
|
||||
|
||||
# win32-dll
|
||||
# ---------
|
||||
# Declare package support for building win32 dll's.
|
||||
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
||||
[enable_win32_dll=yes
|
||||
|
||||
case $host in
|
||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$AS" && AS=as
|
||||
_LT_DECL([], [AS], [1], [Assembler program])dnl
|
||||
|
||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
||||
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
|
||||
|
||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
|
||||
])# win32-dll
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'win32-dll' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||
|
||||
|
||||
# _LT_ENABLE_SHARED([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-shared flag, and supports the 'shared' and
|
||||
# 'disable-shared' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_SHARED],
|
||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([shared],
|
||||
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_shared=yes ;;
|
||||
no) enable_shared=no ;;
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_shared=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||
|
||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
||||
[Whether or not to build shared libraries])
|
||||
])# _LT_ENABLE_SHARED
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
||||
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_STATIC([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-static flag, and support the 'static' and
|
||||
# 'disable-static' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_STATIC],
|
||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([static],
|
||||
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_static=yes ;;
|
||||
no) enable_static=no ;;
|
||||
*)
|
||||
enable_static=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_static=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||
|
||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
||||
[Whether or not to build static libraries])
|
||||
])# _LT_ENABLE_STATIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
||||
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --enable-fast-install flag, and support the 'fast-install'
|
||||
# and 'disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([fast-install],
|
||||
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_fast_install=yes ;;
|
||||
no) enable_fast_install=no ;;
|
||||
*)
|
||||
enable_fast_install=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_fast_install=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||
|
||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
||||
[Whether or not to optimize for fast installation])dnl
|
||||
])# _LT_ENABLE_FAST_INSTALL
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
||||
|
||||
# Old names:
|
||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the 'fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the 'disable-fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||
|
||||
|
||||
# _LT_WITH_AIX_SONAME([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --with-aix-soname flag, and support the `aix-soname=aix'
|
||||
# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
|
||||
# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
|
||||
m4_define([_LT_WITH_AIX_SONAME],
|
||||
[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
|
||||
shared_archive_member_spec=
|
||||
case $host,$enable_shared in
|
||||
power*-*-aix[[5-9]]*,yes)
|
||||
AC_MSG_CHECKING([which variant of shared library versioning to provide])
|
||||
AC_ARG_WITH([aix-soname],
|
||||
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
|
||||
[shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
|
||||
[case $withval in
|
||||
aix|svr4|both)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unknown argument to --with-aix-soname])
|
||||
;;
|
||||
esac
|
||||
lt_cv_with_aix_soname=$with_aix_soname],
|
||||
[AC_CACHE_VAL([lt_cv_with_aix_soname],
|
||||
[lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
|
||||
with_aix_soname=$lt_cv_with_aix_soname])
|
||||
AC_MSG_RESULT([$with_aix_soname])
|
||||
if test aix != "$with_aix_soname"; then
|
||||
# For the AIX way of multilib, we name the shared archive member
|
||||
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
|
||||
# and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
|
||||
# Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
|
||||
# the AIX toolchain works better with OBJECT_MODE set (default 32).
|
||||
if test 64 = "${OBJECT_MODE-32}"; then
|
||||
shared_archive_member_spec=shr_64
|
||||
else
|
||||
shared_archive_member_spec=shr
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
with_aix_soname=aix
|
||||
;;
|
||||
esac
|
||||
|
||||
_LT_DECL([], [shared_archive_member_spec], [0],
|
||||
[Shared archive member basename, for filename based shared library versioning on AIX])dnl
|
||||
])# _LT_WITH_AIX_SONAME
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
|
||||
|
||||
|
||||
# _LT_WITH_PIC([MODE])
|
||||
# --------------------
|
||||
# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
|
||||
# LT_INIT options.
|
||||
# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
|
||||
m4_define([_LT_WITH_PIC],
|
||||
[AC_ARG_WITH([pic],
|
||||
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||
[lt_p=${PACKAGE-default}
|
||||
case $withval in
|
||||
yes|no) pic_mode=$withval ;;
|
||||
*)
|
||||
pic_mode=default
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for lt_pkg in $withval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$lt_pkg" = "X$lt_p"; then
|
||||
pic_mode=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[pic_mode=m4_default([$1], [default])])
|
||||
|
||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||
])# _LT_WITH_PIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||
|
||||
# Old name:
|
||||
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'pic-only' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||
|
||||
## ----------------- ##
|
||||
## LTDL_INIT Options ##
|
||||
## ----------------- ##
|
||||
|
||||
m4_define([_LTDL_MODE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||
[m4_define([_LTDL_MODE], [recursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||
[m4_define([_LTDL_MODE], [subproject])])
|
||||
|
||||
m4_define([_LTDL_TYPE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||
[m4_define([_LTDL_TYPE], [installable])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||
[m4_define([_LTDL_TYPE], [convenience])])
|
|
@ -0,0 +1,124 @@
|
|||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# 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 6 ltsugar.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||
|
||||
|
||||
# lt_join(SEP, ARG1, [ARG2...])
|
||||
# -----------------------------
|
||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||
# associated separator.
|
||||
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||
# versions in m4sugar had bugs.
|
||||
m4_define([lt_join],
|
||||
[m4_if([$#], [1], [],
|
||||
[$#], [2], [[$2]],
|
||||
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
m4_define([_lt_join],
|
||||
[m4_if([$#$2], [2], [],
|
||||
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
|
||||
|
||||
# lt_car(LIST)
|
||||
# lt_cdr(LIST)
|
||||
# ------------
|
||||
# Manipulate m4 lists.
|
||||
# These macros are necessary as long as will still need to support
|
||||
# Autoconf-2.59, which quotes differently.
|
||||
m4_define([lt_car], [[$1]])
|
||||
m4_define([lt_cdr],
|
||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||
[$#], 1, [],
|
||||
[m4_dquote(m4_shift($@))])])
|
||||
m4_define([lt_unquote], $1)
|
||||
|
||||
|
||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||
# ------------------------------------------
|
||||
# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
|
||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||
# than defined and empty).
|
||||
#
|
||||
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||
m4_define([lt_append],
|
||||
[m4_define([$1],
|
||||
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||
|
||||
|
||||
|
||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||
# ----------------------------------------------------------
|
||||
# Produce a SEP delimited list of all paired combinations of elements of
|
||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||
# has the form PREFIXmINFIXSUFFIXn.
|
||||
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||
m4_define([lt_combine],
|
||||
[m4_if(m4_eval([$# > 3]), [1],
|
||||
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||
[[m4_foreach([_Lt_prefix], [$2],
|
||||
[m4_foreach([_Lt_suffix],
|
||||
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||
|
||||
|
||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||
# -----------------------------------------------------------------------
|
||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||
m4_define([lt_if_append_uniq],
|
||||
[m4_ifdef([$1],
|
||||
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||
[lt_append([$1], [$2], [$3])$4],
|
||||
[$5])],
|
||||
[lt_append([$1], [$2], [$3])$4])])
|
||||
|
||||
|
||||
# lt_dict_add(DICT, KEY, VALUE)
|
||||
# -----------------------------
|
||||
m4_define([lt_dict_add],
|
||||
[m4_define([$1($2)], [$3])])
|
||||
|
||||
|
||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||
# --------------------------------------------
|
||||
m4_define([lt_dict_add_subkey],
|
||||
[m4_define([$1($2:$3)], [$4])])
|
||||
|
||||
|
||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||
# ----------------------------------
|
||||
m4_define([lt_dict_fetch],
|
||||
[m4_ifval([$3],
|
||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||
|
||||
|
||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||
# -----------------------------------------------------------------
|
||||
m4_define([lt_if_dict_fetch],
|
||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||
[$5],
|
||||
[$6])])
|
||||
|
||||
|
||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||
# --------------------------------------------------------------
|
||||
m4_define([lt_dict_filter],
|
||||
[m4_if([$5], [], [],
|
||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||
])
|
|
@ -0,0 +1,23 @@
|
|||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004
|
||||
#
|
||||
# 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.
|
||||
|
||||
# @configure_input@
|
||||
|
||||
# serial 4179 ltversion.m4
|
||||
# This file is part of GNU Libtool
|
||||
|
||||
m4_define([LT_PACKAGE_VERSION], [2.4.6])
|
||||
m4_define([LT_PACKAGE_REVISION], [2.4.6])
|
||||
|
||||
AC_DEFUN([LTVERSION_VERSION],
|
||||
[macro_version='2.4.6'
|
||||
macro_revision='2.4.6'
|
||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||
_LT_DECL(, macro_revision, 0)
|
||||
])
|
|
@ -0,0 +1,99 @@
|
|||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# 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 5 lt~obsolete.m4
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
|
||||
# which have later been changed to m4_define as they aren't part of the
|
||||
# exported API, or moved to Autoconf or Automake where they belong.
|
||||
#
|
||||
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||
# and doesn't know about Autoconf macros at all.)
|
||||
#
|
||||
# So we provide this file, which has a silly filename so it's always
|
||||
# included after everything else. This provides aclocal with the
|
||||
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||
# because those macros already exist, or will be overwritten later.
|
||||
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||
#
|
||||
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||
# Yes, that means every name once taken will need to remain here until
|
||||
# we give up compatibility with versions before 1.7, at which point
|
||||
# we need to keep only those names which we still refer to.
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||
|
||||
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
|
@ -0,0 +1 @@
|
|||
SUBDIRS=services
|
|
@ -0,0 +1,654 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = wrapper/META-INF
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = services
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/META-INF/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/META-INF/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1 @@
|
|||
EXTRA_DIST = javax.accessibility.AccessibilityProvider
|
|
@ -0,0 +1,474 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = wrapper/META-INF/services
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = javax.accessibility.AccessibilityProvider
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/META-INF/services/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/META-INF/services/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1 @@
|
|||
org.GNOME.Accessibility.AtkProvider
|
|
@ -0,0 +1,43 @@
|
|||
SUBDIRS=org
|
||||
|
||||
if MODULAR_JAR
|
||||
SUBDIRS += META-INF
|
||||
endif
|
||||
|
||||
JARFILES=@JAW_JAR_NAME@
|
||||
ALL_CLASSES=org/GNOME/Accessibility/*.class
|
||||
DEP_CLASSES=$(wildcard $(ALL_CLASSES))
|
||||
|
||||
java_atk_wrapperdir = $(JARDIR)
|
||||
propertiesdir = $(PROPERTIESDIR)
|
||||
|
||||
java_atk_wrapper_DATA = $(JARFILES)
|
||||
properties_DATA = accessibility.properties
|
||||
EXTRA_DIST = $(properties_DATA) \
|
||||
manifest.txt module-info.java
|
||||
|
||||
if MODULAR_JAR
|
||||
|
||||
module-info.class : $(srcdir)/module-info.java
|
||||
$(JAVAC) -cp $(top_builddir)/wrapper -sourcepath $(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d $(top_builddir)/wrapper $<
|
||||
|
||||
$(JARFILES) : $(DEP_CLASSES) module-info.class
|
||||
$(JAR) cfm $(JARFILES) $(srcdir)/manifest.txt org/GNOME/Accessibility/*.class module-info.class -C $(srcdir) META-INF/services/javax.accessibility.AccessibilityProvider
|
||||
|
||||
else
|
||||
|
||||
$(JARFILES) : $(DEP_CLASSES)
|
||||
$(JAR) cfm $(JARFILES) $(srcdir)/manifest.txt org/GNOME/Accessibility/*.class
|
||||
|
||||
endif
|
||||
|
||||
install-data-local : all-local
|
||||
$(mkinstalldirs) $(DESTDIR)$(propertiesdir) $(DESTDIR)$(java_atk_wrapperdir)
|
||||
$(INSTALL_DATA) $(srcdir)/$(properties_DATA) $(DESTDIR)$(propertiesdir)/
|
||||
$(INSTALL_DATA) $(java_atk_wrapper_DATA) $(DESTDIR)$(java_atk_wrapperdir)/
|
||||
|
||||
all-local : $(DATA) $(JARFILES)
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
||||
rm -f $(JARFILES)
|
|
@ -0,0 +1,765 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@MODULAR_JAR_TRUE@am__append_1 = META-INF
|
||||
subdir = wrapper
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(java_atk_wrapperdir)" \
|
||||
"$(DESTDIR)$(propertiesdir)"
|
||||
DATA = $(java_atk_wrapper_DATA) $(properties_DATA)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = org META-INF
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = org $(am__append_1)
|
||||
JARFILES = @JAW_JAR_NAME@
|
||||
ALL_CLASSES = org/GNOME/Accessibility/*.class
|
||||
DEP_CLASSES = $(wildcard $(ALL_CLASSES))
|
||||
java_atk_wrapperdir = $(JARDIR)
|
||||
propertiesdir = $(PROPERTIESDIR)
|
||||
java_atk_wrapper_DATA = $(JARFILES)
|
||||
properties_DATA = accessibility.properties
|
||||
EXTRA_DIST = $(properties_DATA) \
|
||||
manifest.txt module-info.java
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-java_atk_wrapperDATA: $(java_atk_wrapper_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(java_atk_wrapper_DATA)'; test -n "$(java_atk_wrapperdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(java_atk_wrapperdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(java_atk_wrapperdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(java_atk_wrapperdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(java_atk_wrapperdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-java_atk_wrapperDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(java_atk_wrapper_DATA)'; test -n "$(java_atk_wrapperdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(java_atk_wrapperdir)'; $(am__uninstall_files_from_dir)
|
||||
install-propertiesDATA: $(properties_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(properties_DATA)'; test -n "$(propertiesdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(propertiesdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(propertiesdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(propertiesdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(propertiesdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-propertiesDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(properties_DATA)'; test -n "$(propertiesdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(propertiesdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(DATA) all-local
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(java_atk_wrapperdir)" "$(DESTDIR)$(propertiesdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local install-java_atk_wrapperDATA \
|
||||
install-propertiesDATA
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-java_atk_wrapperDATA uninstall-propertiesDATA
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
|
||||
check check-am clean clean-generic clean-libtool clean-local \
|
||||
cscopelist-am ctags ctags-am distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-java_atk_wrapperDATA \
|
||||
install-man install-pdf install-pdf-am install-propertiesDATA \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am uninstall-java_atk_wrapperDATA \
|
||||
uninstall-propertiesDATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@MODULAR_JAR_TRUE@module-info.class : $(srcdir)/module-info.java
|
||||
@MODULAR_JAR_TRUE@ $(JAVAC) -cp $(top_builddir)/wrapper -sourcepath $(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d $(top_builddir)/wrapper $<
|
||||
|
||||
@MODULAR_JAR_TRUE@$(JARFILES) : $(DEP_CLASSES) module-info.class
|
||||
@MODULAR_JAR_TRUE@ $(JAR) cfm $(JARFILES) $(srcdir)/manifest.txt org/GNOME/Accessibility/*.class module-info.class -C $(srcdir) META-INF/services/javax.accessibility.AccessibilityProvider
|
||||
|
||||
@MODULAR_JAR_FALSE@$(JARFILES) : $(DEP_CLASSES)
|
||||
@MODULAR_JAR_FALSE@ $(JAR) cfm $(JARFILES) $(srcdir)/manifest.txt org/GNOME/Accessibility/*.class
|
||||
|
||||
install-data-local : all-local
|
||||
$(mkinstalldirs) $(DESTDIR)$(propertiesdir) $(DESTDIR)$(java_atk_wrapperdir)
|
||||
$(INSTALL_DATA) $(srcdir)/$(properties_DATA) $(DESTDIR)$(propertiesdir)/
|
||||
$(INSTALL_DATA) $(java_atk_wrapper_DATA) $(DESTDIR)$(java_atk_wrapperdir)/
|
||||
|
||||
all-local : $(DATA) $(JARFILES)
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
||||
rm -f $(JARFILES)
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# The following line specifies the assistive technology classes
|
||||
# that should be loaded into the Java VM when the AWT is initailized.
|
||||
# Specify multiple classes by separating them with commas.
|
||||
# Note: the line below cannot end the file (there must be at
|
||||
# a minimum a blank line following it).
|
||||
#
|
||||
assistive_technologies=org.GNOME.Accessibility.AtkWrapper
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Main-Class: org.GNOME.Accessibility.AtkWrapper
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
module atk.wrapper {
|
||||
exports org.GNOME.Accessibility;
|
||||
requires transitive java.desktop;
|
||||
requires java.management;
|
||||
provides javax.accessibility.AccessibilityProvider
|
||||
with org.GNOME.Accessibility.AtkProvider;
|
||||
}
|
|
@ -0,0 +1,230 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import javax.swing.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
public class AtkAction {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleAction> _acc_action;
|
||||
WeakReference<AccessibleExtendedComponent> _acc_ext_component;
|
||||
String[] descriptions;
|
||||
int nactions;
|
||||
|
||||
public AtkAction (AccessibleContext ac) {
|
||||
super();
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
AccessibleAction acc_action = ac.getAccessibleAction();
|
||||
this._acc_action = new WeakReference<AccessibleAction>(acc_action);
|
||||
this.nactions = acc_action.getAccessibleActionCount();
|
||||
this.descriptions = new String[nactions];
|
||||
AccessibleComponent acc_component = ac.getAccessibleComponent();
|
||||
if (acc_component instanceof AccessibleExtendedComponent) {
|
||||
this._acc_ext_component = new WeakReference<AccessibleExtendedComponent>((AccessibleExtendedComponent)acc_component);
|
||||
}
|
||||
}
|
||||
|
||||
public static AtkAction createAtkAction(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkAction(ac); }, null);
|
||||
}
|
||||
|
||||
public boolean do_action (int i) {
|
||||
AccessibleAction acc_action = _acc_action.get();
|
||||
if (acc_action == null)
|
||||
return false;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_action.doAccessibleAction(i); });
|
||||
return true;
|
||||
}
|
||||
|
||||
public int get_n_actions () { return this.nactions; }
|
||||
|
||||
public String get_description (int i) {
|
||||
AccessibleAction acc_action = _acc_action.get();
|
||||
if (acc_action == null)
|
||||
return null;
|
||||
|
||||
if (i >= nactions){
|
||||
return null;
|
||||
}
|
||||
if(descriptions[i] != null){
|
||||
return descriptions[i];
|
||||
}
|
||||
descriptions[i] = AtkUtil.invokeInSwing( () -> { return acc_action.getAccessibleActionDescription(i); }, "");
|
||||
return descriptions[i];
|
||||
}
|
||||
|
||||
public boolean setDescription(int i, String description) {
|
||||
if (i >= nactions){
|
||||
return false;
|
||||
}
|
||||
descriptions[i] = description;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param i an integer holding the index of the name of
|
||||
* the accessible.
|
||||
* @return the localized name of the object or otherwise,
|
||||
* null if the "action" object does not have a
|
||||
* name (really, java's AccessibleAction class
|
||||
* does not provide
|
||||
* a getter for an AccessibleAction
|
||||
* name so a getter from the AcccessibleContext
|
||||
* class is one way to work around that)
|
||||
*/
|
||||
public String getLocalizedName (int i) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
AccessibleAction acc_action = _acc_action.get();
|
||||
if (acc_action == null)
|
||||
return null;
|
||||
|
||||
if (i >= nactions){
|
||||
return null;
|
||||
}
|
||||
if (descriptions[i] != null){
|
||||
return descriptions[i];
|
||||
}
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
descriptions[i] = acc_action.getAccessibleActionDescription(i);
|
||||
if (descriptions[i] != null)
|
||||
return descriptions[i];
|
||||
String name = ac.getAccessibleName();
|
||||
if (name != null)
|
||||
return name;
|
||||
descriptions[i] = "";
|
||||
return descriptions[i];
|
||||
}, null);
|
||||
}
|
||||
|
||||
private String convertModString (String mods) {
|
||||
if (mods == null || mods.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
String modStrs[] = mods.split("\\+");
|
||||
String newModString = "";
|
||||
for (int i = 0; i < modStrs.length; i++) {
|
||||
newModString += "<" + modStrs[i] + ">";
|
||||
}
|
||||
|
||||
return newModString;
|
||||
}
|
||||
|
||||
public String get_keybinding (int index) {
|
||||
AccessibleExtendedComponent acc_ext_component = _acc_ext_component.get();
|
||||
if (_acc_ext_component == null)
|
||||
return "";
|
||||
|
||||
// TODO: improve/fix conversion to strings, concatenate,
|
||||
// and follow our formatting convention for the role of
|
||||
// various keybindings (i.e. global, transient, etc.)
|
||||
|
||||
//
|
||||
// Presently, JAA doesn't define a relationship between the index used
|
||||
// and the action associated. As such, all keybindings are only
|
||||
// associated with the default (index 0 in GNOME) action.
|
||||
//
|
||||
if (index > 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if(acc_ext_component != null) {
|
||||
AccessibleKeyBinding akb = acc_ext_component.getAccessibleKeyBinding();
|
||||
|
||||
if (akb != null && akb.getAccessibleKeyBindingCount() > 0) {
|
||||
String rVal = "";
|
||||
int i;
|
||||
|
||||
// Privately Agreed interface with StarOffice to workaround
|
||||
// deficiency in JAA.
|
||||
//
|
||||
// The aim is to use an array of keystrokes, if there is more
|
||||
// than one keypress involved meaning that we would have:
|
||||
//
|
||||
// KeyBinding(0) -> nmeumonic KeyStroke
|
||||
// KeyBinding(1) -> full key path KeyStroke[]
|
||||
// KeyBinding(2) -> accelerator KeyStroke
|
||||
//
|
||||
// GNOME Expects a string in the format:
|
||||
//
|
||||
// <nmemonic>;<full-path>;<accelerator>
|
||||
//
|
||||
// The keybindings in <full-path> should be separated by ":"
|
||||
//
|
||||
// Since only the first three are relevant, ignore others
|
||||
for (i = 0;( i < akb.getAccessibleKeyBindingCount() && i < 3); i++) {
|
||||
Object o = akb.getAccessibleKeyBinding(i);
|
||||
|
||||
if ( i > 0 ) {
|
||||
rVal += ";";
|
||||
}
|
||||
|
||||
if (o instanceof KeyStroke) {
|
||||
KeyStroke keyStroke = (KeyStroke)o;
|
||||
String modString = InputEvent.getModifiersExText(keyStroke.getModifiers());
|
||||
String keyString = KeyEvent.getKeyText(keyStroke.getKeyCode());
|
||||
|
||||
if ( keyString != null ) {
|
||||
if ( modString != null && modString.length() > 0 ) {
|
||||
rVal += convertModString(modString) + keyString;
|
||||
} else {
|
||||
rVal += keyString;
|
||||
}
|
||||
}
|
||||
} else if (o instanceof KeyStroke[]) {
|
||||
KeyStroke[] keyStroke = (KeyStroke[])o;
|
||||
for ( int j = 0; j < keyStroke.length; j++ ) {
|
||||
String modString = InputEvent.getModifiersExText(keyStroke[j].getModifiers());
|
||||
String keyString = KeyEvent.getKeyText(keyStroke[j].getKeyCode());
|
||||
|
||||
if (j > 0) {
|
||||
rVal += ":";
|
||||
}
|
||||
|
||||
if ( keyString != null ) {
|
||||
if (modString != null && modString.length() > 0) {
|
||||
rVal += convertModString(modString) + keyString;
|
||||
} else {
|
||||
rVal += keyString;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( i < 2 ) rVal += ";";
|
||||
if ( i < 3 ) rVal += ";";
|
||||
|
||||
return rVal;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,249 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkComponent {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleComponent> _acc_component;
|
||||
|
||||
public AtkComponent (AccessibleContext ac) {
|
||||
super();
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
this._acc_component = new WeakReference<AccessibleComponent>(ac.getAccessibleComponent());
|
||||
}
|
||||
|
||||
public static AtkComponent createAtkComponent(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkComponent(ac); }, null);
|
||||
}
|
||||
|
||||
static public Point getWindowLocation(AccessibleContext ac) {
|
||||
while (ac != null) {
|
||||
AccessibleRole role = ac.getAccessibleRole();
|
||||
if (role == AccessibleRole.DIALOG ||
|
||||
role == AccessibleRole.FRAME ||
|
||||
role == AccessibleRole.WINDOW) {
|
||||
AccessibleComponent acc_comp = ac.getAccessibleComponent();
|
||||
if (acc_comp == null)
|
||||
return null;
|
||||
return acc_comp.getLocationOnScreen();
|
||||
}
|
||||
Accessible parent = ac.getAccessibleParent();
|
||||
if (parent == null)
|
||||
return null;
|
||||
ac = parent.getAccessibleContext();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Return the position of the object relative to the coordinate type
|
||||
public static Point getComponentOrigin(AccessibleContext ac, AccessibleComponent acc_component, int coord_type) {
|
||||
if (coord_type == AtkCoordType.SCREEN)
|
||||
return acc_component.getLocationOnScreen();
|
||||
|
||||
if (coord_type == AtkCoordType.WINDOW)
|
||||
{
|
||||
Point win_p = getWindowLocation(ac);
|
||||
if (win_p == null)
|
||||
return null;
|
||||
Point p = acc_component.getLocationOnScreen();
|
||||
if (p == null)
|
||||
return null;
|
||||
p.translate(-win_p.x, -win_p.y);
|
||||
return p;
|
||||
}
|
||||
|
||||
if (coord_type == AtkCoordType.PARENT)
|
||||
return acc_component.getLocation();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// Return the position of the parent relative to the coordinate type
|
||||
public static Point getParentOrigin(AccessibleContext ac, AccessibleComponent acc_component, int coord_type) {
|
||||
if (coord_type == AtkCoordType.PARENT)
|
||||
return new Point(0, 0);
|
||||
|
||||
Accessible parent = ac.getAccessibleParent();
|
||||
if (parent == null)
|
||||
return null;
|
||||
AccessibleContext parent_ac = parent.getAccessibleContext();
|
||||
if (parent_ac == null)
|
||||
return null;
|
||||
AccessibleComponent parent_component = parent_ac.getAccessibleComponent();
|
||||
if (parent_component == null)
|
||||
return null;
|
||||
|
||||
if (coord_type == AtkCoordType.SCREEN) {
|
||||
return parent_component.getLocationOnScreen();
|
||||
}
|
||||
|
||||
if (coord_type == AtkCoordType.WINDOW) {
|
||||
Point window_origin = getWindowLocation(ac);
|
||||
if (window_origin == null)
|
||||
return null;
|
||||
Point parent_origin = parent_component.getLocationOnScreen();
|
||||
if (parent_origin == null)
|
||||
return null;
|
||||
parent_origin.translate(-window_origin.x, -window_origin.y);
|
||||
return parent_origin;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean contains (int x, int y, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return false;
|
||||
AccessibleComponent acc_component = _acc_component.get();
|
||||
if (acc_component == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if(acc_component.isVisible()){
|
||||
Point p = getComponentOrigin(ac, acc_component, coord_type);
|
||||
if (p == null)
|
||||
return false;
|
||||
|
||||
return acc_component.contains(new Point(x - p.x, y - p.y));
|
||||
}
|
||||
return false;
|
||||
}, false);
|
||||
}
|
||||
|
||||
public AccessibleContext get_accessible_at_point (int x, int y, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
AccessibleComponent acc_component = _acc_component.get();
|
||||
if (acc_component == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if(acc_component.isVisible()){
|
||||
Point p = getComponentOrigin(ac, acc_component, coord_type);
|
||||
if (p == null)
|
||||
return null;
|
||||
|
||||
Accessible accessible = acc_component.getAccessibleAt(new Point(x - p.x, y - p.y));
|
||||
if (accessible == null)
|
||||
return null;
|
||||
return accessible.getAccessibleContext();
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public boolean grab_focus () {
|
||||
AccessibleComponent acc_component = _acc_component.get();
|
||||
if (acc_component == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (!acc_component.isFocusTraversable())
|
||||
return false;
|
||||
acc_component.requestFocus();
|
||||
return true;
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean set_extents(int x, int y, int width, int height, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return false;
|
||||
AccessibleComponent acc_component = _acc_component.get();
|
||||
if (acc_component == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
if(acc_component.isVisible()){
|
||||
Point p = getParentOrigin(ac, acc_component, coord_type);
|
||||
if (p == null)
|
||||
return false;
|
||||
|
||||
acc_component.setBounds(new Rectangle(x - p.x, y - p.y, width, height));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, false);
|
||||
}
|
||||
|
||||
public Rectangle get_extents(int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
AccessibleComponent acc_component = _acc_component.get();
|
||||
if (acc_component == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if(acc_component.isVisible()){
|
||||
Rectangle rect = acc_component.getBounds();
|
||||
if (rect == null)
|
||||
return null;
|
||||
Point p = getParentOrigin(ac, acc_component, coord_type);
|
||||
if (p == null)
|
||||
return null;
|
||||
|
||||
rect.x += p.x;
|
||||
rect.y += p.y;
|
||||
return rect;
|
||||
}
|
||||
return null;
|
||||
},null);
|
||||
}
|
||||
|
||||
public int get_layer () {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return AtkLayer.INVALID;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleRole role = ac.getAccessibleRole();
|
||||
if (role == AccessibleRole.MENU ||
|
||||
role == AccessibleRole.MENU_ITEM ||
|
||||
role == AccessibleRole.POPUP_MENU ) {
|
||||
return AtkLayer.POPUP;
|
||||
}
|
||||
if (role == AccessibleRole.INTERNAL_FRAME) {
|
||||
return AtkLayer.MDI;
|
||||
}
|
||||
if (role == AccessibleRole.GLASS_PANE) {
|
||||
return AtkLayer.OVERLAY;
|
||||
}
|
||||
if (role == AccessibleRole.CANVAS ||
|
||||
role == AccessibleRole.ROOT_PANE ||
|
||||
role == AccessibleRole.LAYERED_PANE ) {
|
||||
return AtkLayer.CANVAS;
|
||||
}
|
||||
if (role == AccessibleRole.WINDOW) {
|
||||
return AtkLayer.WINDOW;
|
||||
}
|
||||
return AtkLayer.WIDGET;
|
||||
}, AtkLayer.INVALID);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
public interface AtkCoordType {
|
||||
public int SCREEN = 0;
|
||||
public int WINDOW = 1;
|
||||
public int PARENT = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import javax.swing.text.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkEditableText extends AtkText {
|
||||
|
||||
WeakReference<AccessibleEditableText> _acc_edt_text;
|
||||
|
||||
public AtkEditableText (AccessibleContext ac) {
|
||||
super(ac);
|
||||
_acc_edt_text = new WeakReference<AccessibleEditableText>(ac.getAccessibleEditableText());
|
||||
}
|
||||
|
||||
public static AtkEditableText createAtkEditableText(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkEditableText(ac); }, null);
|
||||
}
|
||||
|
||||
public void set_text_contents (String s) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> {
|
||||
acc_edt_text.setTextContents(s);
|
||||
});
|
||||
}
|
||||
|
||||
public void insert_text (String s, int position) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
if (position < 0)
|
||||
position = 0;
|
||||
final int rightPosition = position;
|
||||
AtkUtil.invokeInSwing( () -> { acc_edt_text.insertTextAtIndex(rightPosition, s); });
|
||||
}
|
||||
|
||||
public void copy_text (int start, int end) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
int n = acc_edt_text.getCharCount();
|
||||
if (start < 0) {
|
||||
start = 0;
|
||||
}
|
||||
if (end > n || end == -1) {
|
||||
end = n;
|
||||
} else if (end < -1) {
|
||||
end = 0;
|
||||
}
|
||||
final int rightStart = start;
|
||||
final int rightEnd = end;
|
||||
AtkUtil.invokeInSwing ( () -> {
|
||||
String s = acc_edt_text.getTextRange(rightStart, rightEnd);
|
||||
if (s != null) {
|
||||
StringSelection stringSel = new StringSelection(s);
|
||||
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSel, stringSel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void cut_text (int start, int end) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_edt_text.cut(start, end); });
|
||||
}
|
||||
|
||||
public void delete_text (int start, int end) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_edt_text.delete(start, end); });
|
||||
}
|
||||
|
||||
public void paste_text (int position) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_edt_text.paste(position); });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets run attributes for the text between two indices.
|
||||
*
|
||||
* @param as the AttributeSet for the text
|
||||
* @param start the start index of the text as an int
|
||||
* @param end the end index for the text as an int
|
||||
* @return whether setRunAttributes was called
|
||||
* TODO return is a bit presumptious. This should ideally include a check for whether
|
||||
* attributes were set.
|
||||
*/
|
||||
public boolean setRunAttributes(AttributeSet as, int start, int end) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
acc_edt_text.setAttributes(start, end, as);
|
||||
return true;
|
||||
}, false);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkHyperlink {
|
||||
|
||||
WeakReference<AccessibleHyperlink> _acc_hyperlink;
|
||||
|
||||
public AtkHyperlink (AccessibleHyperlink hl) {
|
||||
super();
|
||||
_acc_hyperlink = new WeakReference<AccessibleHyperlink>(hl);
|
||||
}
|
||||
|
||||
public static AtkHyperlink createAtkHyperlink(AccessibleHyperlink hl){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkHyperlink(hl); }, null);
|
||||
}
|
||||
|
||||
public String get_uri (int i) {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return "";
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Object o = acc_hyperlink.getAccessibleActionObject(i);
|
||||
if (o != null)
|
||||
return o.toString();
|
||||
return "";
|
||||
}, "");
|
||||
}
|
||||
|
||||
public AccessibleContext get_object (int i) {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Object anchor = acc_hyperlink.getAccessibleActionAnchor(i);
|
||||
if (anchor instanceof Accessible)
|
||||
return ((Accessible)anchor).getAccessibleContext();
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_end_index () {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_hyperlink.getEndIndex(); }, 0);
|
||||
}
|
||||
|
||||
public int get_start_index () {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_hyperlink.getStartIndex(); }, 0);
|
||||
}
|
||||
|
||||
public boolean is_valid () {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_hyperlink.isValid(); }, false);
|
||||
}
|
||||
|
||||
public int get_n_anchors () {
|
||||
AccessibleHyperlink acc_hyperlink = _acc_hyperlink.get();
|
||||
if (acc_hyperlink == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_hyperlink.getAccessibleActionCount(); }, 0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkHypertext extends AtkText {
|
||||
|
||||
WeakReference<AccessibleHypertext> _acc_hyper_text;
|
||||
|
||||
public AtkHypertext (AccessibleContext ac) {
|
||||
super(ac);
|
||||
|
||||
AccessibleText ac_text = ac.getAccessibleText();
|
||||
if (ac_text instanceof AccessibleHypertext) {
|
||||
_acc_hyper_text = new WeakReference<AccessibleHypertext>((AccessibleHypertext)ac_text);
|
||||
} else {
|
||||
_acc_hyper_text = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static AtkHypertext createAtkHypertext(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkHypertext(ac); }, null);
|
||||
}
|
||||
|
||||
public AtkHyperlink get_link (int link_index) {
|
||||
if (_acc_hyper_text == null)
|
||||
return null;
|
||||
AccessibleHypertext acc_hyper_text = _acc_hyper_text.get();
|
||||
if (acc_hyper_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleHyperlink link = acc_hyper_text.getLink(link_index);
|
||||
if (link != null)
|
||||
return new AtkHyperlink(link);
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_n_links () {
|
||||
if (_acc_hyper_text == null)
|
||||
return 0;
|
||||
AccessibleHypertext acc_hyper_text = _acc_hyper_text.get();
|
||||
if (acc_hyper_text == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
return acc_hyper_text.getLinkCount();
|
||||
}, 0);
|
||||
}
|
||||
|
||||
public int get_link_index (int char_index) {
|
||||
if (_acc_hyper_text == null)
|
||||
return 0;
|
||||
AccessibleHypertext acc_hyper_text = _acc_hyper_text.get();
|
||||
if (acc_hyper_text == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
return acc_hyper_text.getLinkIndex(char_index);
|
||||
}, 0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.awt.Point;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Rectangle;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkImage {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleIcon[]> _acc_icons;
|
||||
|
||||
public AtkImage (AccessibleContext ac) {
|
||||
super();
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
this._acc_icons = new WeakReference<AccessibleIcon[]>(ac.getAccessibleIcon());
|
||||
}
|
||||
|
||||
public static AtkImage createAtkImage(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkImage(ac); }, null);
|
||||
}
|
||||
|
||||
public Point get_image_position (int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleComponent acc_component = ac.getAccessibleComponent();
|
||||
if (acc_component == null)
|
||||
return null;
|
||||
return AtkComponent.getComponentOrigin(ac, acc_component, coord_type);
|
||||
}, null);
|
||||
}
|
||||
|
||||
public String get_image_description () {
|
||||
AccessibleIcon[] acc_icons = _acc_icons.get();
|
||||
if (acc_icons == null)
|
||||
return "";
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
String desc = "";
|
||||
if (acc_icons != null && acc_icons.length > 0) {
|
||||
desc = acc_icons[0].getAccessibleIconDescription();
|
||||
if (desc == null)
|
||||
desc = "";
|
||||
}
|
||||
return desc;
|
||||
}, "");
|
||||
}
|
||||
|
||||
public Dimension get_image_size () {
|
||||
Dimension d = new Dimension(0, 0);
|
||||
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return d;
|
||||
|
||||
AccessibleIcon[] acc_icons = _acc_icons.get();
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_icons != null && acc_icons.length > 0) {
|
||||
d.height = acc_icons[0].getAccessibleIconHeight();
|
||||
d.width = acc_icons[0].getAccessibleIconWidth();
|
||||
} else {
|
||||
AccessibleComponent acc_component = ac.getAccessibleComponent();
|
||||
if (acc_component != null) {
|
||||
Rectangle rect = acc_component.getBounds();
|
||||
if (rect != null) {
|
||||
d.height = rect.height;
|
||||
d.width = rect.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
return d;
|
||||
},d);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,332 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import java.awt.event.*;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class AtkKeyEvent {
|
||||
|
||||
private static HashMap<String,String>nonAlphaNumericMap = null;
|
||||
|
||||
public static final int ATK_KEY_EVENT_PRESSED = 0;
|
||||
public static final int ATK_KEY_EVENT_RELEASED = 1;
|
||||
|
||||
public int type;
|
||||
public boolean isShiftKeyDown = false;
|
||||
public boolean isCtrlKeyDown = false;
|
||||
public boolean isAltKeyDown = false;
|
||||
public boolean isMetaKeyDown = false;
|
||||
public boolean isAltGrKeyDown = false;
|
||||
public int keyval = 0;
|
||||
public String string;
|
||||
public int keycode;
|
||||
public int timestamp;
|
||||
|
||||
static {
|
||||
// Non-alphanumeric symbols that need to be mapped to X11 keysym names
|
||||
nonAlphaNumericMap = new HashMap<>( 40 );
|
||||
nonAlphaNumericMap.put("!", "exclam");
|
||||
nonAlphaNumericMap.put("@", "at");
|
||||
nonAlphaNumericMap.put("#", "numbersign");
|
||||
nonAlphaNumericMap.put("$", "dollar");
|
||||
nonAlphaNumericMap.put("%", "percent");
|
||||
nonAlphaNumericMap.put("^", "asciicircum");
|
||||
nonAlphaNumericMap.put("&", "ampersand");
|
||||
nonAlphaNumericMap.put("*", "asterisk");
|
||||
nonAlphaNumericMap.put("(", "parenleft");
|
||||
nonAlphaNumericMap.put(")", "parenright");
|
||||
nonAlphaNumericMap.put("-", "minus");
|
||||
nonAlphaNumericMap.put("_", "underscore");
|
||||
nonAlphaNumericMap.put("=", "equal");
|
||||
nonAlphaNumericMap.put("+", "plus");
|
||||
nonAlphaNumericMap.put("\\", "backslash");
|
||||
nonAlphaNumericMap.put("|", "bar");
|
||||
nonAlphaNumericMap.put("`", "grave");
|
||||
nonAlphaNumericMap.put("~", "asciitilde");
|
||||
nonAlphaNumericMap.put("[", "bracketleft");
|
||||
nonAlphaNumericMap.put("{", "braceleft");
|
||||
nonAlphaNumericMap.put("]", "bracketright");
|
||||
nonAlphaNumericMap.put("}", "braceright");
|
||||
nonAlphaNumericMap.put(";", "semicolon");
|
||||
nonAlphaNumericMap.put(":", "colon");
|
||||
nonAlphaNumericMap.put("'", "apostrophe");
|
||||
nonAlphaNumericMap.put("\"", "quotedbl");
|
||||
nonAlphaNumericMap.put(",", "comma");
|
||||
nonAlphaNumericMap.put("<", "less");
|
||||
nonAlphaNumericMap.put(".", "period");
|
||||
nonAlphaNumericMap.put(">", "greater");
|
||||
nonAlphaNumericMap.put("/", "slash");
|
||||
nonAlphaNumericMap.put("?", "question");
|
||||
}
|
||||
|
||||
public AtkKeyEvent (KeyEvent e) {
|
||||
//type
|
||||
switch (e.getID()) {
|
||||
case KeyEvent.KEY_PRESSED:
|
||||
case KeyEvent.KEY_TYPED:
|
||||
type = ATK_KEY_EVENT_PRESSED;
|
||||
break;
|
||||
case KeyEvent.KEY_RELEASED:
|
||||
type = ATK_KEY_EVENT_RELEASED;
|
||||
break;
|
||||
default:
|
||||
type = ATK_KEY_EVENT_PRESSED;
|
||||
}
|
||||
|
||||
//modifiers
|
||||
int modifierMask = e.getModifiersEx();
|
||||
if ((modifierMask & InputEvent.SHIFT_DOWN_MASK) != 0) {
|
||||
isShiftKeyDown = true;
|
||||
}
|
||||
if ((modifierMask & InputEvent.CTRL_DOWN_MASK) != 0) {
|
||||
isCtrlKeyDown = true;
|
||||
}
|
||||
if ((modifierMask & InputEvent.ALT_DOWN_MASK) != 0) {
|
||||
isAltKeyDown = true;
|
||||
}
|
||||
if ((modifierMask & InputEvent.META_DOWN_MASK) != 0) {
|
||||
isMetaKeyDown = true;
|
||||
}
|
||||
if ((modifierMask & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
|
||||
isAltGrKeyDown = true;
|
||||
}
|
||||
|
||||
GNOMEKeyMapping.GNOMEKeyInfo keyInfo = GNOMEKeyMapping.getKey(e);
|
||||
switch (e.getKeyChar()) {
|
||||
case KeyEvent.CHAR_UNDEFINED:
|
||||
{
|
||||
if (keyInfo != null) {
|
||||
keyval = keyInfo.getGdkKeyCode();
|
||||
string = keyInfo.getGdkKeyString();
|
||||
} else {
|
||||
string = KeyEvent.getKeyText(e.getKeyCode());
|
||||
if (string == null) string = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
char[] chars = new char[1];
|
||||
if (keyInfo == null) {
|
||||
keyval = e.getKeyChar();
|
||||
chars[0] = (char)keyval;
|
||||
string = new String(chars);
|
||||
} else {
|
||||
keyval = keyInfo.getGdkKeyCode();
|
||||
string = keyInfo.getGdkKeyString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Yes, this is crude, but Java does not provide another way.
|
||||
String s = e.paramString();
|
||||
int begin = s.lastIndexOf("rawCode=") + 8;
|
||||
int end = s.indexOf(',', begin);
|
||||
String rawcode_s = s.substring(begin, end);
|
||||
|
||||
keycode = Integer.valueOf(rawcode_s);
|
||||
timestamp = (int)e.getWhen();
|
||||
|
||||
String nonAlphaNumericString = (String) nonAlphaNumericMap.get(string);
|
||||
if (nonAlphaNumericString != null)
|
||||
string = nonAlphaNumericString;
|
||||
}
|
||||
}
|
||||
|
||||
class GNOMEKeyMapping {
|
||||
|
||||
private static HashMap<Integer,Object>keyMap = null;
|
||||
|
||||
public static final class GNOMEKeyInfo {
|
||||
private int gdkKeyCode;
|
||||
private String gdkKeyString;
|
||||
|
||||
public GNOMEKeyInfo ( int code, String string ) {
|
||||
gdkKeyCode = code;
|
||||
gdkKeyString = string;
|
||||
}
|
||||
|
||||
public int getGdkKeyCode() { return gdkKeyCode; }
|
||||
public String getGdkKeyString() { return gdkKeyString; }
|
||||
}
|
||||
|
||||
// Used to offset VK for NUMPAD keys that don't have a VK_KP_* equivalent.
|
||||
// // At present max VK_* value is 0x0000FFFF
|
||||
// // Also need to support Left/Right variations
|
||||
private final static int NUMPAD_OFFSET = 0xFEFE0000;
|
||||
private final static int LEFT_OFFSET = 0xFEFD0000;
|
||||
private final static int RIGHT_OFFSET = 0xFEFC0000;
|
||||
|
||||
static {
|
||||
initializeMap();
|
||||
}
|
||||
|
||||
public static GNOMEKeyInfo getKey( KeyEvent e ) {
|
||||
GNOMEKeyInfo gdkKeyInfo;
|
||||
int javaKeyCode = e.getKeyCode();
|
||||
int javaKeyLocation = e.getKeyLocation();
|
||||
|
||||
if (javaKeyLocation == KeyEvent.KEY_LOCATION_NUMPAD)
|
||||
javaKeyCode += NUMPAD_OFFSET;
|
||||
else if (javaKeyLocation == KeyEvent.KEY_LOCATION_LEFT)
|
||||
javaKeyCode += LEFT_OFFSET;
|
||||
else if (javaKeyLocation == KeyEvent.KEY_LOCATION_RIGHT)
|
||||
javaKeyCode += RIGHT_OFFSET;
|
||||
|
||||
if ( (gdkKeyInfo = (GNOMEKeyInfo)keyMap.get ( Integer.valueOf(javaKeyCode) )) != null ) {
|
||||
return ( gdkKeyInfo );
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private GNOMEKeyMapping() {
|
||||
}
|
||||
|
||||
private static void initializeMap() {
|
||||
keyMap = new HashMap<>( 146 ); // Currently only 110, so allocate 110 / 0.75
|
||||
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_COLON), new GNOMEKeyInfo( 0x20a1, "ColonSign" ) ); // GDK_ColonSign
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_EURO_SIGN), new GNOMEKeyInfo( 0x20ac, "EuroSign" ) ); // GDK_EuroSign
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_BACK_SPACE), new GNOMEKeyInfo( 0xFF08, "BackSpace" ) ); // GDK_BackSpace
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_TAB), new GNOMEKeyInfo( 0xFF09, "Tab" ) ); // GDK_Tab
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_CLEAR), new GNOMEKeyInfo( 0xFF0B, "Clear" ) ); // GDK_Clear
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_ENTER), new GNOMEKeyInfo( 0xFF0D, "Return" ) ); // GDK_Return
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_PAUSE), new GNOMEKeyInfo( 0xFF13, "Pause" ) ); // GDK_Pause
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_SCROLL_LOCK), new GNOMEKeyInfo( 0xFF14, "Scroll_Lock" ) ); // GDK_Scroll_Lock
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_ESCAPE), new GNOMEKeyInfo( 0xFF1B, "Escape" ) ); // GDK_Escape
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KANJI), new GNOMEKeyInfo( 0xFF21, "Kanji" ) ); // GDK_Kanji
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_HIRAGANA), new GNOMEKeyInfo( 0xFF25, "Hiragana" ) ); // GDK_Hiragana
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KATAKANA), new GNOMEKeyInfo( 0xFF26, "Katakana" ) ); // GDK_Katakana
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KANA_LOCK), new GNOMEKeyInfo( 0xFF2D, "Kana_Lock" ) ); // GDK_Kana_Lock
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KANA), new GNOMEKeyInfo( 0xFF2E, "Kana_Shift" ) ); // GDK_Kana_Shift
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KANJI), new GNOMEKeyInfo( 0xFF37, "Kanji_Bangou" ) ); // GDK_Kanji_Bangou
|
||||
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_HOME), new GNOMEKeyInfo( 0xFF50, "Home" ) ); // GDK_Home
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_LEFT), new GNOMEKeyInfo( 0xFF51, "Left" ) ); // GDK_Left
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_UP), new GNOMEKeyInfo( 0xFF52, "Up" ) ); // GDK_Up
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_RIGHT), new GNOMEKeyInfo( 0xFF53, "Right" ) ); // GDK_Right
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_DOWN), new GNOMEKeyInfo( 0xFF54, "Down" ) ); // GDK_Down
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_PAGE_UP), new GNOMEKeyInfo( 0xFF55, "Page_Up" ) ); // GDK_Page_Up
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_PAGE_DOWN), new GNOMEKeyInfo( 0xFF56, "Page_Down" ) ); // GDK_Page_Down
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_END), new GNOMEKeyInfo( 0xFF57, "End" ) ); // GDK_End
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_PRINTSCREEN), new GNOMEKeyInfo( 0xFF61, "Print" ) ); // GDK_Print
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_INSERT), new GNOMEKeyInfo( 0xFF63, "Insert" ) ); // GDK_Insert
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_UNDO), new GNOMEKeyInfo( 0xFF65, "Undo" ) ); // GDK_Undo
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_AGAIN), new GNOMEKeyInfo( 0xFF66, "Redo" ) ); // GDK_Redo
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_FIND), new GNOMEKeyInfo( 0xFF68, "Find" ) ); // GDK_Find
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_CANCEL), new GNOMEKeyInfo( 0xFF69, "Cancel" ) ); // GDK_Cancel
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_HELP), new GNOMEKeyInfo( 0xFF6A, "Help" ) ); // GDK_Help
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_ALT_GRAPH), new GNOMEKeyInfo( 0xFF7E, "Mode_Switch" ) ); // GDK_Mode_Switch
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUM_LOCK), new GNOMEKeyInfo( 0xFF7F, "Num_Lock" ) ); // GDK_Num_Lock
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KP_LEFT), new GNOMEKeyInfo( 0xFF96, "KP_Left" ) ); // GDK_KP_Left
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KP_UP), new GNOMEKeyInfo( 0xFF97, "KP_Up" ) ); // GDK_KP_Up
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KP_RIGHT), new GNOMEKeyInfo( 0xFF98, "KP_Right" ) ); // GDK_KP_Right
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_KP_DOWN), new GNOMEKeyInfo( 0xFF99, "KP_Down" ) ); // GDK_KP_Down
|
||||
|
||||
// For Key's that are NUMPAD, but no VK_KP_* equivalent exists
|
||||
// NOTE: Some syms do have VK_KP equivalents, but may or may not have
|
||||
// KeyLocation() set to NUMPAD - so these are in twice with and
|
||||
// without the offset..
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUM_LOCK), new GNOMEKeyInfo( 0xFF7F, "Num_Lock" ) ); // GDK_Num_Lock
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_ENTER), new GNOMEKeyInfo( 0xFF8D, "KP_Enter" ) ); // GDK_KP_Enter
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_HOME), new GNOMEKeyInfo( 0xFF95, "KP_Home" ) ); // GDK_KP_Home
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_KP_LEFT), new GNOMEKeyInfo( 0xFF96, "KP_Left" ) ); // GDK_KP_Left
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_KP_UP), new GNOMEKeyInfo( 0xFF97, "KP_Up" ) ); // GDK_KP_Up
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_KP_RIGHT), new GNOMEKeyInfo( 0xFF98, "KP_Right" ) ); // GDK_KP_Right
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_KP_DOWN), new GNOMEKeyInfo( 0xFF99, "KP_Down" ) ); // GDK_KP_Down
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_PAGE_UP), new GNOMEKeyInfo( 0xFF9A, "KP_Page_Up" ) ); // GDK_KP_Page_Up
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_PAGE_DOWN), new GNOMEKeyInfo( 0xFF9B, "KP_Page_Down" ) ); // GDK_KP_Page_Down
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_END), new GNOMEKeyInfo( 0xFF9C, "KP_End" ) ); // GDK_KP_End
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_BEGIN), new GNOMEKeyInfo( 0xFF9D, "KP_Begin" ) ); // GDK_KP_Begin
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_INSERT), new GNOMEKeyInfo( 0xFF9E, "KP_Insert" ) ); // GDK_KP_Insert
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_DELETE), new GNOMEKeyInfo( 0xFF9F, "KP_Delete" ) ); // GDK_KP_Delete
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_MULTIPLY), new GNOMEKeyInfo( 0xFFAA, "KP_Multiply" ) ); // GDK_KP_Multiply
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_ADD), new GNOMEKeyInfo( 0xFFAB, "KP_Add" ) ); // GDK_KP_Add
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_SEPARATOR), new GNOMEKeyInfo( 0xFFAC, "KP_Separator" ) ); // GDK_KP_Separator
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_SUBTRACT), new GNOMEKeyInfo( 0xFFAD, "KP_Subtract" ) ); // GDK_KP_Subtract
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_DECIMAL), new GNOMEKeyInfo( 0xFFAE, "KP_Decimal" ) ); // GDK_KP_Decimal
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_DIVIDE), new GNOMEKeyInfo( 0xFFAF, "KP_Divide" ) ); // GDK_KP_Divide
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD0), new GNOMEKeyInfo( 0xFFB0, "KP_0" ) ); // GDK_KP_0
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD1), new GNOMEKeyInfo( 0xFFB1, "KP_1" ) ); // GDK_KP_1
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD2), new GNOMEKeyInfo( 0xFFB2, "KP_2" ) ); // GDK_KP_2
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD3), new GNOMEKeyInfo( 0xFFB3, "KP_3" ) ); // GDK_KP_3
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD4), new GNOMEKeyInfo( 0xFFB4, "KP_4" ) ); // GDK_KP_4
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD5), new GNOMEKeyInfo( 0xFFB5, "KP_5" ) ); // GDK_KP_5
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD6), new GNOMEKeyInfo( 0xFFB6, "KP_6" ) ); // GDK_KP_6
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD7), new GNOMEKeyInfo( 0xFFB7, "KP_7" ) ); // GDK_KP_7
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD8), new GNOMEKeyInfo( 0xFFB8, "KP_8" ) ); // GDK_KP_8
|
||||
keyMap.put( Integer.valueOf(NUMPAD_OFFSET + KeyEvent.VK_NUMPAD9), new GNOMEKeyInfo( 0xFFB9, "KP_9" ) ); // GDK_KP_9
|
||||
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD0), new GNOMEKeyInfo( 0xFFB0, "KP_0" ) ); // GDK_KP_0
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD1), new GNOMEKeyInfo( 0xFFB1, "KP_1" ) ); // GDK_KP_1
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD2), new GNOMEKeyInfo( 0xFFB2, "KP_2" ) ); // GDK_KP_2
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD3), new GNOMEKeyInfo( 0xFFB3, "KP_3" ) ); // GDK_KP_3
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD4), new GNOMEKeyInfo( 0xFFB4, "KP_4" ) ); // GDK_KP_4
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD5), new GNOMEKeyInfo( 0xFFB5, "KP_5" ) ); // GDK_KP_5
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD6), new GNOMEKeyInfo( 0xFFB6, "KP_6" ) ); // GDK_KP_6
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD7), new GNOMEKeyInfo( 0xFFB7, "KP_7" ) ); // GDK_KP_7
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD8), new GNOMEKeyInfo( 0xFFB8, "KP_8" ) ); // GDK_KP_8
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_NUMPAD9), new GNOMEKeyInfo( 0xFFB9, "KP_9" ) ); // GDK_KP_9
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F1), new GNOMEKeyInfo( 0xFFBE, "F1" ) ); // GDK_F1
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F2), new GNOMEKeyInfo( 0xFFBF, "F2" ) ); // GDK_F2
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F3), new GNOMEKeyInfo( 0xFFC0, "F3" ) ); // GDK_F3
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F4), new GNOMEKeyInfo( 0xFFC1, "F4" ) ); // GDK_F4
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F5), new GNOMEKeyInfo( 0xFFC2, "F5" ) ); // GDK_F5
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F6), new GNOMEKeyInfo( 0xFFC3, "F6" ) ); // GDK_F6
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F7), new GNOMEKeyInfo( 0xFFC4, "F7" ) ); // GDK_F7
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F8), new GNOMEKeyInfo( 0xFFC5, "F8" ) ); // GDK_F8
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F9), new GNOMEKeyInfo( 0xFFC6, "F9" ) ); // GDK_F9
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F10), new GNOMEKeyInfo( 0xFFC7, "F10" ) ); // GDK_F10
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F11), new GNOMEKeyInfo( 0xFFC8, "F11" ) ); // GDK_F11
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F12), new GNOMEKeyInfo( 0xFFC9, "F12" ) ); // GDK_F12
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F13), new GNOMEKeyInfo( 0xFFCA, "F13" ) ); // GDK_F13
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F14), new GNOMEKeyInfo( 0xFFCB, "F14" ) ); // GDK_F14
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F15), new GNOMEKeyInfo( 0xFFCC, "F15" ) ); // GDK_F15
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F16), new GNOMEKeyInfo( 0xFFCD, "F16" ) ); // GDK_F16
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F17), new GNOMEKeyInfo( 0xFFCE, "F17" ) ); // GDK_F17
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F18), new GNOMEKeyInfo( 0xFFCF, "F18" ) ); // GDK_F18
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F19), new GNOMEKeyInfo( 0xFFD0, "F19" ) ); // GDK_F19
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F20), new GNOMEKeyInfo( 0xFFD1, "F20" ) ); // GDK_F20
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F21), new GNOMEKeyInfo( 0xFFD2, "F21" ) ); // GDK_F21
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F22), new GNOMEKeyInfo( 0xFFD3, "F22" ) ); // GDK_F22
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F23), new GNOMEKeyInfo( 0xFFD4, "F23" ) ); // GDK_F23
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_F24), new GNOMEKeyInfo( 0xFFD5, "F24" ) ); // GDK_F24
|
||||
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_SHIFT), new GNOMEKeyInfo( 0xFFE2, "Shift_R" ) ); // GDK_Shift_R
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_CONTROL), new GNOMEKeyInfo( 0xFFE4, "Control_R" ) ); // GDK_Control_R
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_CAPS_LOCK), new GNOMEKeyInfo( 0xFFE5, "Caps_Lock" ) ); // GDK_Caps_Lock
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_META), new GNOMEKeyInfo( 0xFFE8, "Meta_R" ) ); // GDK_Meta_R
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_ALT), new GNOMEKeyInfo( 0xFFEA, "Alt_R" ) ); // GDK_Alt_R
|
||||
keyMap.put( Integer.valueOf(KeyEvent.VK_DELETE), new GNOMEKeyInfo( 0xFFFF, "Delete" ) ); // GDK_Delete
|
||||
|
||||
// Left & Right Variations, default (set above) will be right...
|
||||
keyMap.put( Integer.valueOf(LEFT_OFFSET + KeyEvent.VK_SHIFT), new GNOMEKeyInfo( 0xFFE1, "Shift_L" ) ); // GDK_Shift_L
|
||||
keyMap.put( Integer.valueOf(RIGHT_OFFSET + KeyEvent.VK_SHIFT), new GNOMEKeyInfo( 0xFFE2, "Shift_R" ) ); // GDK_Shift_R
|
||||
keyMap.put( Integer.valueOf(LEFT_OFFSET + KeyEvent.VK_CONTROL),new GNOMEKeyInfo( 0xFFE3, "Control_L" ) ); // GDK_Control_L
|
||||
keyMap.put( Integer.valueOf(RIGHT_OFFSET + KeyEvent.VK_CONTROL),new GNOMEKeyInfo( 0xFFE4, "Control_R" ) ); // GDK_Control_R
|
||||
keyMap.put( Integer.valueOf(LEFT_OFFSET + KeyEvent.VK_META), new GNOMEKeyInfo( 0xFFE7, "Meta_L" ) ); // GDK_Meta_L
|
||||
keyMap.put( Integer.valueOf(RIGHT_OFFSET + KeyEvent.VK_META), new GNOMEKeyInfo( 0xFFE8, "Meta_R" ) ); // GDK_Meta_R
|
||||
keyMap.put( Integer.valueOf(LEFT_OFFSET + KeyEvent.VK_ALT), new GNOMEKeyInfo( 0xFFE9, "Alt_L" ) ); // GDK_Alt_L
|
||||
keyMap.put( Integer.valueOf(RIGHT_OFFSET + KeyEvent.VK_ALT), new GNOMEKeyInfo( 0xFFEA, "Alt_R" ) ); // GDK_Alt_R
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
public interface AtkLayer {
|
||||
public int INVALID = 0;
|
||||
public int BACKGROUND = 1;
|
||||
public int CANVAS = 2;
|
||||
public int WIDGET = 3;
|
||||
public int MDI = 4;
|
||||
public int POPUP = 5;
|
||||
public int OVERLAY = 6;
|
||||
public int WINDOW = 7;
|
||||
}
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Red Hat, Inc.
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* AtkObject:
|
||||
* That class is used to wrap AccessibleContext Java object
|
||||
* to avoid the concurrency of AWT objects.
|
||||
* @autor Giuseppe Capaldo
|
||||
*/
|
||||
public class AtkObject{
|
||||
|
||||
public static final int INTERFACE_ACTION = 0x00000001;
|
||||
public static final int INTERFACE_COMPONENT = 0x00000002;
|
||||
public static final int INTERFACE_DOCUMENT = 0x00000004;
|
||||
public static final int INTERFACE_EDITABLE_TEXT = 0x00000008;
|
||||
public static final int INTERFACE_HYPERLINK = 0x00000010;
|
||||
public static final int INTERFACE_HYPERTEXT = 0x00000020;
|
||||
public static final int INTERFACE_IMAGE = 0x00000040;
|
||||
public static final int INTERFACE_SELECTION = 0x00000080;
|
||||
public static final int INTERFACE_STREAMABLE_CONTENT = 0x00000100;
|
||||
public static final int INTERFACE_TABLE = 0x00000200;
|
||||
public static final int INTERFACE_TABLE_CELL = 0x00000400;
|
||||
public static final int INTERFACE_TEXT = 0x00000800;
|
||||
public static final int INTERFACE_VALUE = 0x00001000;
|
||||
|
||||
public static int getTFlagFromObj(Object o){
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
int flags = 0;
|
||||
AccessibleContext ac;
|
||||
|
||||
if (o instanceof AccessibleContext)
|
||||
ac = (AccessibleContext) o;
|
||||
else if (o instanceof Accessible)
|
||||
ac = ( (Accessible) o).getAccessibleContext();
|
||||
else
|
||||
return flags;
|
||||
|
||||
if (ac.getAccessibleAction() != null)
|
||||
flags |= AtkObject.INTERFACE_ACTION;
|
||||
if (ac.getAccessibleComponent() != null)
|
||||
flags |= AtkObject.INTERFACE_COMPONENT;
|
||||
AccessibleText text = ac.getAccessibleText();
|
||||
if (text != null){
|
||||
flags |= AtkObject.INTERFACE_TEXT;
|
||||
if (text instanceof AccessibleHypertext)
|
||||
flags |= AtkObject.INTERFACE_HYPERTEXT;
|
||||
if (ac.getAccessibleEditableText() != null)
|
||||
flags |= AtkObject.INTERFACE_EDITABLE_TEXT;
|
||||
}
|
||||
if (ac.getAccessibleIcon() != null)
|
||||
flags |= AtkObject.INTERFACE_IMAGE;
|
||||
if (ac.getAccessibleSelection() != null)
|
||||
flags |= AtkObject.INTERFACE_SELECTION;
|
||||
AccessibleTable table = ac.getAccessibleTable();
|
||||
if (table != null){
|
||||
flags |= AtkObject.INTERFACE_TABLE;
|
||||
}
|
||||
Accessible parent = ac.getAccessibleParent();
|
||||
if (parent != null){
|
||||
AccessibleContext pc = parent.getAccessibleContext();
|
||||
if (pc != null){
|
||||
table = pc.getAccessibleTable();
|
||||
// Unfortunately without the AccessibleExtendedTable interface
|
||||
// we can't determine the column/row of this accessible in the
|
||||
// table
|
||||
if (table != null && table instanceof AccessibleExtendedTable){
|
||||
flags |= AtkObject.INTERFACE_TABLE_CELL;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ac.getAccessibleValue() != null)
|
||||
flags |= AtkObject.INTERFACE_VALUE;
|
||||
return flags;
|
||||
}, 0);
|
||||
}
|
||||
|
||||
public static AccessibleContext getAccessibleParent(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
Accessible father = ac.getAccessibleParent();
|
||||
if (father != null)
|
||||
return father.getAccessibleContext();
|
||||
else
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public static void setAccessibleParent(AccessibleContext ac, AccessibleContext pa){
|
||||
AtkUtil.invokeInSwing( () -> {
|
||||
if (pa instanceof Accessible){
|
||||
Accessible father = (Accessible) pa;
|
||||
ac.setAccessibleParent(father);
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
public static String getAccessibleName(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.getAccessibleName(); }, "");
|
||||
}
|
||||
|
||||
public static void setAccessibleName(AccessibleContext ac, String name){
|
||||
AtkUtil.invokeInSwing( () -> { ac.setAccessibleName(name); } );
|
||||
}
|
||||
|
||||
public static String getAccessibleDescription(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.getAccessibleDescription(); }, "");
|
||||
}
|
||||
|
||||
public static void setAccessibleDescription(AccessibleContext ac, String description){
|
||||
AtkUtil.invokeInSwing( () -> { ac.setAccessibleDescription(description); } );
|
||||
}
|
||||
|
||||
public static int getAccessibleChildrenCount(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.getAccessibleChildrenCount(); }, 0);
|
||||
}
|
||||
|
||||
public static int getAccessibleIndexInParent(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.getAccessibleIndexInParent(); }, -1);
|
||||
}
|
||||
|
||||
public static AccessibleRole getAccessibleRole(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.getAccessibleRole(); }, AccessibleRole.UNKNOWN);
|
||||
}
|
||||
|
||||
public static boolean equalsIgnoreCaseLocaleWithRole(AccessibleRole role){
|
||||
String displayString = role.toDisplayString(Locale.US);
|
||||
return displayString.equalsIgnoreCase("paragraph");
|
||||
}
|
||||
|
||||
public static AccessibleState[] getArrayAccessibleState(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
AccessibleStateSet stateSet = ac.getAccessibleStateSet();
|
||||
if (stateSet == null)
|
||||
return null;
|
||||
else
|
||||
return stateSet.toArray();
|
||||
}, null);
|
||||
}
|
||||
|
||||
public static String getLocale(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
Locale l = ac.getLocale();
|
||||
String locale = l.getLanguage();
|
||||
String country = l.getCountry();
|
||||
String script = l.getScript();
|
||||
String variant = l.getVariant();
|
||||
if (country.length() != 0) {
|
||||
locale += "_" + country;
|
||||
}
|
||||
if (script.length() != 0) {
|
||||
locale += "@" + script;
|
||||
}
|
||||
if (variant.length() != 0) {
|
||||
locale += "@" + variant;
|
||||
}
|
||||
return locale;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public static class WrapKeyAndTarget{
|
||||
public String key;
|
||||
public AccessibleContext[] relations;
|
||||
|
||||
public WrapKeyAndTarget(String key, AccessibleContext[] relations){
|
||||
this.key = key;
|
||||
this.relations = relations;
|
||||
}
|
||||
}
|
||||
|
||||
public static WrapKeyAndTarget[] getArrayAccessibleRelation(AccessibleContext ac){
|
||||
WrapKeyAndTarget[] d = new WrapKeyAndTarget[0];
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
AccessibleRelationSet relationSet = ac.getAccessibleRelationSet();
|
||||
if (relationSet == null)
|
||||
return d;
|
||||
else {
|
||||
AccessibleRelation[] array = relationSet.toArray();
|
||||
WrapKeyAndTarget[] result = new WrapKeyAndTarget[array.length];
|
||||
for(int i = 0; i < array.length; i++) {
|
||||
String key = array[i].getKey();
|
||||
Object[] objs = array[i].getTarget();
|
||||
AccessibleContext[] contexts = new AccessibleContext[objs.length];
|
||||
for(int j = 0; j < objs.length; j++) {
|
||||
if (objs[i] instanceof Accessible)
|
||||
contexts[i] = ( (Accessible) objs[i]).getAccessibleContext();
|
||||
else
|
||||
contexts[i] = null;
|
||||
}
|
||||
result[i] = new WrapKeyAndTarget(key, contexts);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, d);
|
||||
}
|
||||
|
||||
public static AccessibleContext getAccessibleChild(AccessibleContext ac, int i){
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
Accessible child = ac.getAccessibleChild(i);
|
||||
if (child == null)
|
||||
return null;
|
||||
else
|
||||
return child.getAccessibleContext();
|
||||
}, null);
|
||||
}
|
||||
|
||||
public static int hashCode(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing( () -> { return ac.hashCode(); }, 0);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2017 Oracle and/or its affiliates.
|
||||
* Copyright (C) 2017 Fridrich Strba <fridrich.strba@bluewin.ch>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.AccessibilityProvider;
|
||||
|
||||
public final class AtkProvider extends AccessibilityProvider {
|
||||
private final String name = "org.GNOME.Accessibility.AtkWrapper";
|
||||
|
||||
public AtkProvider() {}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void activate() {
|
||||
new AtkWrapper();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkSelection {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleSelection> _acc_selection;
|
||||
|
||||
public AtkSelection (AccessibleContext ac) {
|
||||
super();
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
this._acc_selection = new WeakReference<AccessibleSelection>(ac.getAccessibleSelection());
|
||||
}
|
||||
|
||||
public static AtkSelection createAtkSelection(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkSelection(ac); }, null);
|
||||
}
|
||||
|
||||
public boolean add_selection (int i) {
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
acc_selection.addAccessibleSelection(i);
|
||||
return is_child_selected(i);
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean clear_selection () {
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return false;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_selection.clearAccessibleSelection(); });
|
||||
return true;
|
||||
}
|
||||
|
||||
public AccessibleContext ref_selection (int i) {
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible sel = acc_selection.getAccessibleSelection(i);
|
||||
if (sel == null)
|
||||
return null;
|
||||
return sel.getAccessibleContext();
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_selection_count () {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return 0;
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
int count = 0;
|
||||
for(int i = 0; i < ac.getAccessibleChildrenCount(); i++) {
|
||||
if (acc_selection.isAccessibleChildSelected(i))
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}, 0);
|
||||
//A bug in AccessibleJMenu??
|
||||
//return acc_selection.getAccessibleSelectionCount();
|
||||
}
|
||||
|
||||
public boolean is_child_selected (int i) {
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_selection.isAccessibleChildSelected(i); }, false);
|
||||
}
|
||||
|
||||
public boolean remove_selection (int i) {
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
acc_selection.removeAccessibleSelection(i);
|
||||
return !is_child_selected(i);
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean select_all_selection () {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return false;
|
||||
AccessibleSelection acc_selection = _acc_selection.get();
|
||||
if (acc_selection == null)
|
||||
return false;
|
||||
|
||||
AccessibleStateSet stateSet = ac.getAccessibleStateSet();
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (stateSet.contains(AccessibleState.MULTISELECTABLE)) {
|
||||
acc_selection.selectAllAccessibleSelection();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, false);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
public interface AtkSignal {
|
||||
public int TEXT_CARET_MOVED = 0;
|
||||
public int TEXT_PROPERTY_CHANGED_INSERT = 1;
|
||||
public int TEXT_PROPERTY_CHANGED_DELETE = 2;
|
||||
public int TEXT_PROPERTY_CHANGED_REPLACE = 3;
|
||||
public int OBJECT_CHILDREN_CHANGED_ADD = 4;
|
||||
public int OBJECT_CHILDREN_CHANGED_REMOVE = 5;
|
||||
public int OBJECT_ACTIVE_DESCENDANT_CHANGED = 6;
|
||||
public int OBJECT_SELECTION_CHANGED = 7;
|
||||
public int OBJECT_VISIBLE_DATA_CHANGED = 8;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_ACTIONS = 9;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_VALUE = 10;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_DESCRIPTION = 11;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_NAME = 12;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_HYPERTEXT_OFFSET = 13;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_CAPTION = 14;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_SUMMARY = 15;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_COLUMN_HEADER = 16;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_COLUMN_DESCRIPTION = 17;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_ROW_HEADER = 18;
|
||||
public int OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_ROW_DESCRIPTION = 19;
|
||||
public int TABLE_MODEL_CHANGED = 20;
|
||||
public int TEXT_PROPERTY_CHANGED = 21;
|
||||
}
|
||||
|
|
@ -0,0 +1,320 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkTable {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleTable> _acc_table;
|
||||
|
||||
public AtkTable (AccessibleContext ac) {
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
this._acc_table = new WeakReference<AccessibleTable>(ac.getAccessibleTable());
|
||||
}
|
||||
|
||||
public static AtkTable createAtkTable(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkTable(ac); }, null);
|
||||
}
|
||||
|
||||
public AccessibleContext ref_at (int row, int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleAt(row, column);
|
||||
if (accessible != null)
|
||||
return accessible.getAccessibleContext();
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_index_at (int row, int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return -1;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_table instanceof AccessibleExtendedTable)
|
||||
return ( (AccessibleExtendedTable) acc_table).getAccessibleIndex(row, column);
|
||||
Accessible child = acc_table.getAccessibleAt(row, column);
|
||||
if (child == null)
|
||||
return -1;
|
||||
AccessibleContext child_ac = child.getAccessibleContext();
|
||||
if (child_ac == null)
|
||||
return -1;
|
||||
return child_ac.getAccessibleIndexInParent();
|
||||
}, -1);
|
||||
}
|
||||
|
||||
public int get_column_at_index (int index) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return -1;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
int column = -1;
|
||||
if (acc_table instanceof AccessibleExtendedTable)
|
||||
column = ( (AccessibleExtendedTable) acc_table).getAccessibleColumn(index);
|
||||
return column;
|
||||
}, -1);
|
||||
}
|
||||
|
||||
public int get_row_at_index (int index) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return -1;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
int row = -1;
|
||||
if (acc_table instanceof AccessibleExtendedTable)
|
||||
row = ( (AccessibleExtendedTable) acc_table).getAccessibleRow(index);
|
||||
return row;
|
||||
}, -1);
|
||||
}
|
||||
|
||||
public int get_n_columns () {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getAccessibleColumnCount(); }, 0);
|
||||
}
|
||||
|
||||
public int get_n_rows () {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getAccessibleRowCount(); }, 0);
|
||||
}
|
||||
|
||||
public int get_column_extent_at (int row, int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getAccessibleColumnExtentAt(row, column); }, 0);
|
||||
}
|
||||
|
||||
public int get_row_extent_at (int row, int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getAccessibleRowExtentAt(row, column); }, 0);
|
||||
}
|
||||
|
||||
public AccessibleContext get_caption () {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleCaption();
|
||||
if (accessible != null)
|
||||
return accessible.getAccessibleContext();
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param a an Accessible object
|
||||
*/
|
||||
public void setCaption(Accessible a) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_table.setAccessibleCaption(a); });
|
||||
}
|
||||
|
||||
public String get_column_description (int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return "";
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleColumnDescription(column);
|
||||
if (accessible != null) {
|
||||
AccessibleContext ac = accessible.getAccessibleContext();
|
||||
if (ac != null)
|
||||
return ac.getAccessibleDescription();
|
||||
}
|
||||
return "";
|
||||
}, "");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param column an int representing a column in table
|
||||
* @param description a String object representing the description text to set for the
|
||||
* specified column of the table
|
||||
*/
|
||||
public void setColumnDescription(int column, String description) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleColumnDescription(column);
|
||||
if (description.equals(accessible.toString()) && accessible != null)
|
||||
acc_table.setAccessibleColumnDescription(column, accessible);
|
||||
});
|
||||
}
|
||||
|
||||
public String get_row_description (int row) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return "";
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleRowDescription(row);
|
||||
if (accessible != null) {
|
||||
AccessibleContext ac = accessible.getAccessibleContext();
|
||||
if (ac != null)
|
||||
return ac.getAccessibleDescription();
|
||||
}
|
||||
return "";
|
||||
}, "");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param row an int representing a row in table
|
||||
* @param description a String object representing the description text to set for the
|
||||
* specified row of the table
|
||||
*/
|
||||
public void setRowDescription(int row, String description) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleRowDescription(row);
|
||||
if (description.equals(accessible.toString()) && accessible != null)
|
||||
acc_table.setAccessibleRowDescription(row, accessible);
|
||||
});
|
||||
}
|
||||
|
||||
public AccessibleContext get_column_header (int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleTable accessibleTable = acc_table.getAccessibleColumnHeader();
|
||||
if (accessibleTable != null) {
|
||||
Accessible accessible = accessibleTable.getAccessibleAt(0, column);
|
||||
if (accessible != null)
|
||||
return accessible.getAccessibleContext();
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public AccessibleContext get_row_header (int row) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleTable accessibleTable = acc_table.getAccessibleRowHeader();
|
||||
if (accessibleTable != null) {
|
||||
Accessible accessible = accessibleTable.getAccessibleAt(row, 0);
|
||||
if (accessible != null)
|
||||
return accessible.getAccessibleContext();
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public AccessibleContext get_summary () {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Accessible accessible = acc_table.getAccessibleSummary();
|
||||
if (accessible != null)
|
||||
return accessible.getAccessibleContext();
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param a the Accessible object to set summary for
|
||||
*/
|
||||
public void setSummary(Accessible a) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_table.setAccessibleSummary(a); });
|
||||
}
|
||||
|
||||
public int[] get_selected_columns () {
|
||||
int[] d = new int[0];
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return d;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getSelectedAccessibleColumns(); }, d);
|
||||
}
|
||||
|
||||
public int[] get_selected_rows () {
|
||||
int[] d = new int[0];
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return d;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.getSelectedAccessibleRows(); }, d);
|
||||
}
|
||||
|
||||
public boolean is_column_selected (int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.isAccessibleColumnSelected(column); }, false);
|
||||
}
|
||||
|
||||
public boolean is_row_selected (int row) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.isAccessibleRowSelected(row); }, false);
|
||||
}
|
||||
|
||||
public boolean is_selected (int row, int column) {
|
||||
AccessibleTable acc_table = _acc_table.get();
|
||||
if (acc_table == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_table.isAccessibleSelected(row, column); } ,false);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkTableCell {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleTable> _acc_pt;
|
||||
public int row, rowSpan, column, columnSpan;
|
||||
|
||||
public AtkTableCell (AccessibleContext ac) {
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
Accessible parent = ac.getAccessibleParent();
|
||||
_acc_pt = null;
|
||||
row = -1;
|
||||
rowSpan = -1;
|
||||
column = -1;
|
||||
columnSpan = -1;
|
||||
if (parent == null){
|
||||
return;
|
||||
}
|
||||
AccessibleContext pc = parent.getAccessibleContext();
|
||||
if(pc == null){
|
||||
return;
|
||||
}
|
||||
AccessibleTable pt = pc.getAccessibleTable();
|
||||
if(pt == null){
|
||||
return;
|
||||
}
|
||||
_acc_pt = new WeakReference<AccessibleTable>(pt);
|
||||
int index = ac.getAccessibleIndexInParent();
|
||||
if (!(pt instanceof AccessibleExtendedTable)){
|
||||
return;
|
||||
}
|
||||
AccessibleExtendedTable aet = (AccessibleExtendedTable) pt;
|
||||
row = aet.getAccessibleRow(index);
|
||||
column = aet.getAccessibleColumn(index);
|
||||
rowSpan = pt.getAccessibleRowExtentAt(row,column);
|
||||
columnSpan = pt.getAccessibleColumnExtentAt(row,column);
|
||||
}
|
||||
|
||||
public static AtkTableCell createAtkTableCell(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkTableCell(ac); }, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* getTable
|
||||
* @return: Reference to the accessible of the containing table as an
|
||||
* AccessibleTable instance.
|
||||
*/
|
||||
public AccessibleTable getTable() {
|
||||
if (_acc_pt == null)
|
||||
return null;
|
||||
return _acc_pt.get();
|
||||
}
|
||||
|
||||
public AccessibleContext[] getAccessibleColumnHeader(){
|
||||
if (_acc_pt == null)
|
||||
return null;
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
AccessibleTable iteration = _acc_pt.get().getAccessibleColumnHeader();
|
||||
if (iteration != null){
|
||||
int length = iteration.getAccessibleColumnCount();
|
||||
AccessibleContext[] result = new AccessibleContext[length];
|
||||
for (int i = 0; i < length; i++){
|
||||
result[i] = iteration.getAccessibleAt(0,i).getAccessibleContext();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public AccessibleContext[] getAccessibleRowHeader(){
|
||||
if (_acc_pt == null)
|
||||
return null;
|
||||
return AtkUtil.invokeInSwing( () -> {
|
||||
AccessibleTable iteration = _acc_pt.get().getAccessibleRowHeader();
|
||||
if (iteration != null){
|
||||
int length = iteration.getAccessibleRowCount();
|
||||
AccessibleContext[] result = new AccessibleContext[length];
|
||||
for (int i = 0; i < length; i++){
|
||||
result[i] = iteration.getAccessibleAt(i,0).getAccessibleContext();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,672 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.text.*;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Point;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkText {
|
||||
|
||||
WeakReference<AccessibleContext> _ac;
|
||||
WeakReference<AccessibleText> _acc_text;
|
||||
WeakReference<AccessibleEditableText> _acc_edt_text;
|
||||
|
||||
public class StringSequence {
|
||||
|
||||
public String str;
|
||||
public int start_offset, end_offset;
|
||||
|
||||
public StringSequence (String str, int start_offset, int end_offset) {
|
||||
this.str = str;
|
||||
this.start_offset = start_offset;
|
||||
this.end_offset = end_offset;
|
||||
}
|
||||
}
|
||||
|
||||
public AtkText (AccessibleContext ac) {
|
||||
super();
|
||||
this._ac = new WeakReference<AccessibleContext>(ac);
|
||||
this._acc_text = new WeakReference<AccessibleText>(ac.getAccessibleText());
|
||||
this._acc_edt_text = new WeakReference<AccessibleEditableText>(ac.getAccessibleEditableText());
|
||||
}
|
||||
|
||||
public static AtkText createAtkText(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkText(ac); }, null);
|
||||
}
|
||||
|
||||
public static int getRightStart(int start) {
|
||||
if (start < 0)
|
||||
return 0;
|
||||
return start;
|
||||
}
|
||||
|
||||
public static int getRightEnd(int start, int end, int count) {
|
||||
if (end < -1)
|
||||
return start;
|
||||
else
|
||||
if (end > count || end == -1)
|
||||
return count;
|
||||
else
|
||||
return end;
|
||||
}
|
||||
|
||||
/* Return string from start, up to, but not including end */
|
||||
public String get_text (int start, int end) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
final int rightStart = getRightStart(start);;
|
||||
final int rightEnd = getRightEnd(start, end, acc_text.getCharCount());
|
||||
|
||||
if (acc_text instanceof AccessibleExtendedText) {
|
||||
AccessibleExtendedText acc_ext_text = (AccessibleExtendedText)acc_text;
|
||||
return acc_ext_text.getTextRange(rightStart, rightEnd);
|
||||
}
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = rightStart; i <= rightEnd-1; i++) {
|
||||
String str = acc_text.getAtIndex(AccessibleText.CHARACTER, i);
|
||||
buf.append(str);
|
||||
}
|
||||
return buf.toString();
|
||||
}, null);
|
||||
}
|
||||
|
||||
public char get_character_at_offset (int offset) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return ' ';
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
String str = acc_text.getAtIndex(AccessibleText.CHARACTER, offset);
|
||||
if (str == null || str.length() == 0)
|
||||
return ' ';
|
||||
return str.charAt(0);
|
||||
}, ' ');
|
||||
}
|
||||
|
||||
public StringSequence get_text_at_offset (int offset,int boundary_type) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (false && acc_text instanceof AccessibleExtendedText) {
|
||||
// FIXME: this is not using start/end boundaries
|
||||
AccessibleExtendedText acc_ext_text = (AccessibleExtendedText)acc_text;
|
||||
int part = getPartTypeFromBoundary(boundary_type);
|
||||
if (part == -1)
|
||||
return null;
|
||||
AccessibleTextSequence seq = acc_ext_text.getTextSequenceAt(part, offset);
|
||||
if (seq == null)
|
||||
return null;
|
||||
return new StringSequence(seq.text, seq.startIndex, seq.endIndex+1);
|
||||
} else {
|
||||
return private_get_text_at_offset(offset, boundary_type);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
public StringSequence get_text_before_offset (int offset,int boundary_type) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (false && acc_text instanceof AccessibleExtendedText) {
|
||||
// FIXME: this is not using start/end boundaries
|
||||
AccessibleExtendedText acc_ext_text = (AccessibleExtendedText)acc_text;
|
||||
int part = getPartTypeFromBoundary(boundary_type);
|
||||
if (part == -1)
|
||||
return null;
|
||||
AccessibleTextSequence seq = acc_ext_text.getTextSequenceBefore(part, offset);
|
||||
if (seq == null)
|
||||
return null;
|
||||
return new StringSequence(seq.text, seq.startIndex, seq.endIndex+1);
|
||||
} else {
|
||||
StringSequence seq = private_get_text_at_offset(offset, boundary_type);
|
||||
if (seq == null)
|
||||
return null;
|
||||
return private_get_text_at_offset(seq.start_offset-1, boundary_type);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
public StringSequence get_text_after_offset (int offset,int boundary_type) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (false && acc_text instanceof AccessibleExtendedText) {
|
||||
// FIXME: this is not using start/end boundaries
|
||||
AccessibleExtendedText acc_ext_text = (AccessibleExtendedText)acc_text;
|
||||
int part = getPartTypeFromBoundary(boundary_type);
|
||||
if (part == -1)
|
||||
return null;
|
||||
AccessibleTextSequence seq = acc_ext_text.getTextSequenceAfter(part, offset);
|
||||
if (seq == null)
|
||||
return null;
|
||||
return new StringSequence(seq.text, seq.startIndex, seq.endIndex+1);
|
||||
} else {
|
||||
StringSequence seq = private_get_text_at_offset(offset, boundary_type);
|
||||
if (seq == null)
|
||||
return null;
|
||||
return private_get_text_at_offset(seq.end_offset, boundary_type);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_caret_offset () {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_text.getCaretPosition(); }, 0);
|
||||
}
|
||||
|
||||
public Rectangle get_character_extents (int offset, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
Rectangle rect = acc_text.getCharacterBounds(offset);
|
||||
if (rect == null)
|
||||
return null;
|
||||
AccessibleComponent component = ac.getAccessibleComponent();
|
||||
if (component == null)
|
||||
return null;
|
||||
Point p = AtkComponent.getComponentOrigin(ac, component, coord_type);
|
||||
rect.x += p.x;
|
||||
rect.y += p.y;
|
||||
return rect;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_character_count () {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_text.getCharCount(); }, 0);
|
||||
}
|
||||
|
||||
public int get_offset_at_point (int x, int y, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return -1;
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return -1;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
AccessibleComponent component = ac.getAccessibleComponent();
|
||||
if (component == null)
|
||||
return -1;
|
||||
Point p = AtkComponent.getComponentOrigin(ac, component, coord_type);
|
||||
return acc_text.getIndexAtPoint(new Point(x-p.x, y-p.y));
|
||||
}, -1);
|
||||
}
|
||||
|
||||
public Rectangle get_range_extents (int start, int end, int coord_type) {
|
||||
AccessibleContext ac = _ac.get();
|
||||
if (ac == null)
|
||||
return null;
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_text instanceof AccessibleExtendedText) {
|
||||
final int rightStart = getRightStart(start);;
|
||||
final int rightEnd = getRightEnd(start, end, acc_text.getCharCount());
|
||||
|
||||
AccessibleExtendedText acc_ext_text = (AccessibleExtendedText)acc_text;
|
||||
Rectangle rect = acc_ext_text.getTextBounds(rightStart, rightEnd);
|
||||
if (rect == null)
|
||||
return null;
|
||||
AccessibleComponent component = ac.getAccessibleComponent();
|
||||
if (component == null)
|
||||
return null;
|
||||
Point p = AtkComponent.getComponentOrigin(ac, component, coord_type);
|
||||
rect.x += p.x;
|
||||
rect.y += p.y;
|
||||
return rect;
|
||||
}
|
||||
return null;
|
||||
}, null);
|
||||
}
|
||||
|
||||
public int get_n_selections () {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return 0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
String str = acc_text.getSelectedText();
|
||||
if (str != null && str.length() > 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}, 0);
|
||||
}
|
||||
|
||||
public StringSequence get_selection () {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return null;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
int start = acc_text.getSelectionStart();
|
||||
int end = acc_text.getSelectionEnd();
|
||||
String text = acc_text.getSelectedText();
|
||||
if (text == null)
|
||||
return null;
|
||||
return new StringSequence(text, start, end);
|
||||
}, null);
|
||||
}
|
||||
|
||||
public boolean add_selection (int start, int end) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return false;
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_edt_text == null || get_n_selections() > 0)
|
||||
return false;
|
||||
|
||||
final int rightStart = getRightStart(start);;
|
||||
final int rightEnd = getRightEnd(start, end, acc_text.getCharCount());
|
||||
|
||||
return set_selection(0, rightStart, rightEnd);
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean remove_selection(int selection_num) {
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_edt_text == null || selection_num > 0)
|
||||
return false;
|
||||
acc_edt_text.selectText(0, 0);
|
||||
return true;
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean set_selection (int selection_num, int start, int end) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return false;
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_edt_text == null || selection_num > 0)
|
||||
return false;
|
||||
|
||||
final int rightStart = getRightStart(start);;
|
||||
final int rightEnd = getRightEnd(start, end, acc_text.getCharCount());
|
||||
|
||||
acc_edt_text.selectText(rightStart, rightEnd);
|
||||
return true;
|
||||
}, false);
|
||||
}
|
||||
|
||||
public boolean set_caret_offset (int offset) {
|
||||
AccessibleText acc_text = _acc_text.get();
|
||||
if (acc_text == null)
|
||||
return false;
|
||||
AccessibleEditableText acc_edt_text = _acc_edt_text.get();
|
||||
if (acc_edt_text == null)
|
||||
return false;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> {
|
||||
if (acc_edt_text != null) {
|
||||
final int rightOffset = getRightEnd(0, offset, acc_text.getCharCount());
|
||||
acc_edt_text.selectText(offset, offset);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, false);
|
||||
}
|
||||
|
||||
private int getPartTypeFromBoundary (int boundary_type) {
|
||||
switch (boundary_type) {
|
||||
case AtkTextBoundary.CHAR :
|
||||
return AccessibleText.CHARACTER;
|
||||
case AtkTextBoundary.WORD_START :
|
||||
case AtkTextBoundary.WORD_END :
|
||||
return AccessibleText.WORD;
|
||||
case AtkTextBoundary.SENTENCE_START :
|
||||
case AtkTextBoundary.SENTENCE_END :
|
||||
return AccessibleText.SENTENCE;
|
||||
case AtkTextBoundary.LINE_START :
|
||||
case AtkTextBoundary.LINE_END :
|
||||
return AccessibleExtendedText.LINE;
|
||||
default :
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private int getNextWordStart (int offset, String str) {
|
||||
BreakIterator words = BreakIterator.getWordInstance();
|
||||
words.setText(str);
|
||||
int start = words.following(offset);
|
||||
int end = words.next();
|
||||
|
||||
while (end != BreakIterator.DONE) {
|
||||
for (int i = start; i < end; i++) {
|
||||
if (Character.isLetter(str.codePointAt(i))) {
|
||||
return start;
|
||||
}
|
||||
}
|
||||
|
||||
start = end;
|
||||
end = words.next();
|
||||
}
|
||||
|
||||
return BreakIterator.DONE;
|
||||
}
|
||||
|
||||
private int getNextWordEnd (int offset, String str) {
|
||||
int start = getNextWordStart(offset, str);
|
||||
|
||||
BreakIterator words = BreakIterator.getWordInstance();
|
||||
words.setText(str);
|
||||
int next = words.following(offset);
|
||||
|
||||
if (start == next) {
|
||||
return words.following(start);
|
||||
} else {
|
||||
return next;
|
||||
}
|
||||
}
|
||||
|
||||
private int getPreviousWordStart (int offset, String str) {
|
||||
BreakIterator words = BreakIterator.getWordInstance();
|
||||
words.setText(str);
|
||||
int start = words.preceding(offset);
|
||||
int end = words.next();
|
||||
|
||||
while (start != BreakIterator.DONE) {
|
||||
for (int i = start; i < end; i++) {
|
||||
if (Character.isLetter(str.codePointAt(i))) {
|
||||
return start;
|
||||
}
|
||||
}
|
||||
|
||||
end = start;
|
||||
start = words.preceding(end);
|
||||
}
|
||||
|
||||
return BreakIterator.DONE;
|
||||
}
|
||||
|
||||
private int getPreviousWordEnd (int offset, String str) {
|
||||
int start = getPreviousWordStart(offset, str);
|
||||
|
||||
BreakIterator words = BreakIterator.getWordInstance();
|
||||
words.setText(str);
|
||||
int pre = words.preceding(offset);
|
||||
|
||||
if (start == pre) {
|
||||
return words.preceding(start);
|
||||
} else {
|
||||
return pre;
|
||||
}
|
||||
}
|
||||
|
||||
private int getNextSentenceStart (int offset, String str) {
|
||||
BreakIterator sentences = BreakIterator.getSentenceInstance();
|
||||
sentences.setText(str);
|
||||
int start = sentences.following(offset);
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
private int getNextSentenceEnd (int offset, String str) {
|
||||
int start = getNextSentenceStart(offset, str);
|
||||
if (start == BreakIterator.DONE) {
|
||||
return str.length();
|
||||
}
|
||||
|
||||
int index = start;
|
||||
do {
|
||||
index --;
|
||||
} while (index >= 0 && Character.isWhitespace(str.charAt(index)));
|
||||
|
||||
index ++;
|
||||
if (index < offset) {
|
||||
start = getNextSentenceStart(start, str);
|
||||
if (start == BreakIterator.DONE) {
|
||||
return str.length();
|
||||
}
|
||||
|
||||
index = start;
|
||||
do {
|
||||
index --;
|
||||
} while (index >= 0 && Character.isWhitespace(str.charAt(index)));
|
||||
|
||||
index ++;
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
private int getPreviousSentenceStart (int offset, String str) {
|
||||
BreakIterator sentences = BreakIterator.getSentenceInstance();
|
||||
sentences.setText(str);
|
||||
int start = sentences.preceding(offset);
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
private int getPreviousSentenceEnd (int offset, String str) {
|
||||
int start = getPreviousSentenceStart(offset, str);
|
||||
if (start == BreakIterator.DONE) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int end = getNextSentenceEnd(start, str);
|
||||
if (offset < end) {
|
||||
start = getPreviousSentenceStart(start, str);
|
||||
if (start == BreakIterator.DONE) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
end = getNextSentenceEnd(start, str);
|
||||
}
|
||||
|
||||
return end;
|
||||
}
|
||||
|
||||
private int getNextLineStart (int offset, String str) {
|
||||
int max = str.length();
|
||||
while (offset < max) {
|
||||
if (str.charAt(offset) == '\n')
|
||||
return offset+1;
|
||||
offset += 1;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
private int getPreviousLineStart (int offset, String str) {
|
||||
offset -= 2;
|
||||
while (offset >= 0) {
|
||||
if (str.charAt(offset) == '\n')
|
||||
return offset+1;
|
||||
offset -= 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int getNextLineEnd (int offset, String str) {
|
||||
int max = str.length();
|
||||
offset += 1;
|
||||
while (offset < max) {
|
||||
if (str.charAt(offset) == '\n')
|
||||
return offset;
|
||||
offset += 1;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
private int getPreviousLineEnd (int offset, String str) {
|
||||
offset -= 1;
|
||||
while (offset >= 0) {
|
||||
if (str.charAt(offset) == '\n')
|
||||
return offset;
|
||||
offset -= 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private StringSequence private_get_text_at_offset (int offset,
|
||||
int boundary_type) {
|
||||
int char_count = get_character_count();
|
||||
if (offset < 0 || offset > char_count) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (boundary_type) {
|
||||
case AtkTextBoundary.CHAR :
|
||||
{
|
||||
if (offset == char_count)
|
||||
return null;
|
||||
String str = get_text(offset, offset+1);
|
||||
return new StringSequence(str, offset, offset+1);
|
||||
}
|
||||
case AtkTextBoundary.WORD_START :
|
||||
{
|
||||
if (offset == char_count)
|
||||
return new StringSequence("", char_count, char_count);
|
||||
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousWordStart(offset+1, s);
|
||||
if (start == BreakIterator.DONE) {
|
||||
start = 0;
|
||||
}
|
||||
|
||||
int end = getNextWordStart(offset, s);
|
||||
if (end == BreakIterator.DONE) {
|
||||
end = s.length();
|
||||
}
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
case AtkTextBoundary.WORD_END :
|
||||
{
|
||||
if (offset == 0)
|
||||
return new StringSequence("", 0, 0);
|
||||
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousWordEnd(offset, s);
|
||||
if (start == BreakIterator.DONE) {
|
||||
start = 0;
|
||||
}
|
||||
|
||||
int end = getNextWordEnd(offset-1, s);
|
||||
if (end == BreakIterator.DONE) {
|
||||
end = s.length();
|
||||
}
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
case AtkTextBoundary.SENTENCE_START :
|
||||
{
|
||||
if (offset == char_count)
|
||||
return new StringSequence("", char_count, char_count);
|
||||
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousSentenceStart(offset+1, s);
|
||||
if (start == BreakIterator.DONE) {
|
||||
start = 0;
|
||||
}
|
||||
|
||||
int end = getNextSentenceStart(offset, s);
|
||||
if (end == BreakIterator.DONE) {
|
||||
end = s.length();
|
||||
}
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
case AtkTextBoundary.SENTENCE_END :
|
||||
{
|
||||
if (offset == 0)
|
||||
return new StringSequence("", 0, 0);
|
||||
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousSentenceEnd(offset, s);
|
||||
if (start == BreakIterator.DONE) {
|
||||
start = 0;
|
||||
}
|
||||
|
||||
int end = getNextSentenceEnd(offset-1, s);
|
||||
if (end == BreakIterator.DONE) {
|
||||
end = s.length();
|
||||
}
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
case AtkTextBoundary.LINE_START :
|
||||
{
|
||||
if (offset == char_count)
|
||||
return new StringSequence("", char_count, char_count);
|
||||
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousLineStart(offset+1, s);
|
||||
int end = getNextLineStart(offset, s);
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
case AtkTextBoundary.LINE_END :
|
||||
{
|
||||
String s = get_text(0, char_count);
|
||||
int start = getPreviousLineEnd(offset, s);
|
||||
int end = getNextLineEnd(offset-1, s);
|
||||
|
||||
String str = get_text(start, end);
|
||||
return new StringSequence(str, start, end);
|
||||
}
|
||||
default :
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
public interface AtkTextBoundary {
|
||||
public int CHAR = 0;
|
||||
public int WORD_START = 1;
|
||||
public int WORD_END = 2;
|
||||
public int SENTENCE_START = 3;
|
||||
public int SENTENCE_END = 4;
|
||||
public int LINE_START = 5;
|
||||
public int LINE_END = 6;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
public interface AtkTextGranularity {
|
||||
public int CHAR = 0;
|
||||
public int WORD = 1;
|
||||
public int SENTENCE = 2;
|
||||
public int LINE = 3; /* The LINE constant field value is in AccessibleExtendedText */
|
||||
public int PARAGRAPH = 4; /* FThere is no constant field value, PARAGRAPH in AccessibleText */
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Red Hat, Inc.
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
import javax.swing.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
/**
|
||||
* AtkUtil:
|
||||
* That class is used to wrap the callback on Java object
|
||||
* to avoid the concurrency of AWT objects.
|
||||
* @autor Giuseppe Capaldo
|
||||
*/
|
||||
public class AtkUtil{
|
||||
|
||||
/**
|
||||
* invokeInSwing:
|
||||
* Invoked when we need to make an asynchronous callback on
|
||||
* a Java object and this callback has a return value.
|
||||
* this method doesn't launch any exception because in case
|
||||
* of problems it prints a warning and returns the default
|
||||
* value that is passed to it
|
||||
*
|
||||
* @param function A Callable object that return T value
|
||||
* @param d A T object tha is returned if an exception occurs
|
||||
* @return The return value of the original function or the
|
||||
* default value. Obviously if the value is a primitive type
|
||||
* this will automatically wrapped from java in the
|
||||
* corresponding object
|
||||
*/
|
||||
public static <T> T invokeInSwing (Callable <T> function, T d){
|
||||
if (SwingUtilities.isEventDispatchThread()) {
|
||||
// We are already running in the EDT, we can call it directly
|
||||
try {
|
||||
return function.call();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace(); // we can do better than this
|
||||
return d;
|
||||
}
|
||||
}
|
||||
|
||||
RunnableFuture<T> wf = new FutureTask<>(function);
|
||||
SwingUtilities.invokeLater(wf);
|
||||
try {
|
||||
return wf.get();
|
||||
} catch (InterruptedException|ExecutionException ex) {
|
||||
ex.printStackTrace(); // we can do better than this
|
||||
return d;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* invokeInSwing:
|
||||
* Invoked when we need to make an asynchronous callback on
|
||||
* some Java object and this callback hasn't a return value.
|
||||
*
|
||||
* @param function A Runnable object that doesn't return some value
|
||||
*/
|
||||
public static void invokeInSwing (Runnable function){
|
||||
if (SwingUtilities.isEventDispatchThread()) {
|
||||
// We are already running in the EDT, we can call it directly
|
||||
function.run();
|
||||
return;
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(function);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import javax.accessibility.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class AtkValue {
|
||||
|
||||
WeakReference<AccessibleValue> _acc_value;
|
||||
|
||||
public AtkValue (AccessibleContext ac) {
|
||||
super();
|
||||
this._acc_value = new WeakReference<AccessibleValue>(ac.getAccessibleValue());
|
||||
}
|
||||
|
||||
public static AtkValue createAtkValue(AccessibleContext ac){
|
||||
return AtkUtil.invokeInSwing ( () -> { return new AtkValue(ac); }, null);
|
||||
}
|
||||
|
||||
public Number get_current_value () {
|
||||
AccessibleValue acc_value = _acc_value.get();
|
||||
if (acc_value == null)
|
||||
return 0.0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_value.getCurrentAccessibleValue(); }, 0.0);
|
||||
}
|
||||
|
||||
public double getMaximumValue () {
|
||||
AccessibleValue acc_value = _acc_value.get();
|
||||
if (acc_value == null)
|
||||
return 0.0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_value.getMaximumAccessibleValue().doubleValue(); }, 0.0);
|
||||
}
|
||||
|
||||
public double getMinimumValue () {
|
||||
AccessibleValue acc_value = _acc_value.get();
|
||||
if (acc_value == null)
|
||||
return 0.0;
|
||||
|
||||
return AtkUtil.invokeInSwing ( () -> { return acc_value.getMinimumAccessibleValue().doubleValue(); }, 0.0);
|
||||
}
|
||||
|
||||
public void setValue (Number n) {
|
||||
AccessibleValue acc_value = _acc_value.get();
|
||||
if (acc_value == null)
|
||||
return;
|
||||
|
||||
AtkUtil.invokeInSwing( () -> { acc_value.setCurrentAccessibleValue(n); });
|
||||
}
|
||||
|
||||
public double getIncrement() {
|
||||
return Double.MIN_VALUE;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,717 @@
|
|||
/*
|
||||
* Java ATK Wrapper for GNOME
|
||||
* Copyright (C) 2009 Sun Microsystems Inc.
|
||||
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package org.GNOME.Accessibility;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.beans.*;
|
||||
import java.io.*;
|
||||
import javax.accessibility.*;
|
||||
import java.awt.Toolkit;
|
||||
import javax.management.*;
|
||||
import javax.swing.JComboBox;
|
||||
import java.lang.management.*;
|
||||
|
||||
public class AtkWrapper {
|
||||
static boolean accessibilityEnabled = false;
|
||||
static {
|
||||
try {
|
||||
Process p = Runtime.getRuntime().exec("@XPROP@ -root");
|
||||
BufferedReader b = new BufferedReader(new InputStreamReader (p.getInputStream ()));
|
||||
String result;
|
||||
while ((result = b.readLine()) != null) {
|
||||
if (result.indexOf("AT_SPI_IOR") >= 0 || result.indexOf("AT_SPI_BUS") >= 0) {
|
||||
System.loadLibrary("atk-wrapper");
|
||||
if (AtkWrapper.initNativeLibrary())
|
||||
accessibilityEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
java.util.List<GarbageCollectorMXBean> gcbeans = ManagementFactory.getGarbageCollectorMXBeans();
|
||||
for (GarbageCollectorMXBean gcbean : gcbeans) {
|
||||
NotificationEmitter emitter = (NotificationEmitter) gcbean;
|
||||
NotificationListener listener = new NotificationListener() {
|
||||
public void handleNotification(Notification notif, Object handback) {
|
||||
AtkWrapper.GC();
|
||||
}
|
||||
};
|
||||
emitter.addNotificationListener(listener, null, null);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
e.getCause();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* winAdapter
|
||||
*
|
||||
* <http://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowAdapter.html>
|
||||
* <http://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html>
|
||||
*/
|
||||
final WindowAdapter winAdapter = new WindowAdapter() {
|
||||
|
||||
/**
|
||||
* windowActivated:
|
||||
* Invoked when a Window becomes the active Window.
|
||||
* Only a Frame or a Dialog can be the active Window. The
|
||||
* native windowing system may denote the active Window
|
||||
* or its children with special decorations, such as a
|
||||
* highlighted title bar. The active Window is always either
|
||||
* the focused Window, or the first Frame or Dialog that is
|
||||
* an owner of the focused Window.
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowActivated(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if ( o instanceof Accessible ) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowActivate(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowDeactivated:
|
||||
* Invoked when a Window is no longer the active Window.
|
||||
* Only a Frame or a Dialog can be the active Window. The
|
||||
* native windowing system may denote the active Window
|
||||
* or its children with special decorations, such as a
|
||||
* highlighted title bar. The active Window is always either
|
||||
* the focused Window, or the first Frame or Dialog that is
|
||||
* an owner of the focused Window.
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowDeactivated(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowDeactivate(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowStateChanged:
|
||||
* Invoked when a window state is changed.
|
||||
*
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowStateChanged(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowStateChange(ac);
|
||||
|
||||
if( (e.getNewState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH ) {
|
||||
AtkWrapper.windowMaximize(ac);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowDeiconified:
|
||||
* Invoked when a window is deiconified.
|
||||
* @param e A WindowEvent instance
|
||||
*/
|
||||
public void windowDeiconified(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowRestore(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowIconified:
|
||||
* Invoked when a window is iconified.
|
||||
* @param e A WindowEvent instance
|
||||
*/
|
||||
public void windowIconified(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowMinimize(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowOpened
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowOpened(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if ( o instanceof Accessible ) {
|
||||
boolean isToplevel = isToplevel(o);
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowOpen(ac, isToplevel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowClosed:
|
||||
* Invoked when a window has been closed.
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowClosed(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
boolean isToplevel = isToplevel(o);
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowClose(ac, isToplevel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowClosing:
|
||||
* Invoked when a window is in the process of being closed.
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowClosing(WindowEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
boolean isToplevel = isToplevel(o);
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.windowClose(ac, isToplevel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* windowGainedFocus:
|
||||
* Invoked when the Window is set to be the focused Window,
|
||||
* which means that the Window, or one of its subcomponents,
|
||||
* will receive keyboard events.
|
||||
* @param e A WindowEvent object
|
||||
*/
|
||||
public void windowGainedFocus(WindowEvent e) {
|
||||
}
|
||||
|
||||
public void windowLostFocus(WindowEvent e) {
|
||||
}
|
||||
}; // Close WindowAdapter brace
|
||||
|
||||
|
||||
final ComponentAdapter componentAdapter = new ComponentAdapter() {
|
||||
|
||||
/**
|
||||
* componentResized
|
||||
* * Invoked when the component's size changes and emits
|
||||
* a "bounds-changed" signal.
|
||||
* @param e a ComponentEvent object
|
||||
*/
|
||||
public void componentResized(ComponentEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.boundsChanged(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* componentMoved:
|
||||
* Invoked when the component's position changes and emits
|
||||
* a "bounds-changed" signal.
|
||||
*
|
||||
* @param e a ComponentEvent object
|
||||
*/
|
||||
public void componentMoved(ComponentEvent e){
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.boundsChanged(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* componentShown
|
||||
* @param e A ComponentEvent object
|
||||
*/
|
||||
public void componentShown(ComponentEvent e) {
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.componentAdded(ac);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* componentHidden:
|
||||
* Invoked when the component has been made invisible.
|
||||
* @param e A ComponentEvent object
|
||||
*/
|
||||
public void componentHidden(ComponentEvent e){
|
||||
Object o = e.getSource();
|
||||
if (o instanceof Accessible) {
|
||||
AccessibleContext ac = ((Accessible)o).getAccessibleContext();
|
||||
AtkWrapper.componentRemoved(ac);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* isToplevel
|
||||
* @param o an instance
|
||||
* @return true if instance is of a window, frame or dialogue object
|
||||
* false otherwise.
|
||||
*/
|
||||
public static boolean isToplevel(Object o) {
|
||||
boolean isToplevel = false;
|
||||
if (o instanceof java.awt.Window ||
|
||||
o instanceof java.awt.Frame ||
|
||||
o instanceof java.awt.Dialog) {
|
||||
isToplevel = true;
|
||||
}
|
||||
return isToplevel;
|
||||
}
|
||||
|
||||
final AWTEventListener globalListener = new AWTEventListener() {
|
||||
private boolean firstEvent = true;
|
||||
|
||||
public void eventDispatched(AWTEvent e) {
|
||||
if (firstEvent && accessibilityEnabled) {
|
||||
firstEvent = false;
|
||||
try {
|
||||
AtkWrapper.loadAtkBridge();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if(e instanceof WindowEvent) {
|
||||
switch( e.getID() ) {
|
||||
case WindowEvent.WINDOW_OPENED:
|
||||
Window win = ((WindowEvent)e).getWindow();
|
||||
win.addWindowListener(winAdapter);
|
||||
win.addWindowStateListener(winAdapter);
|
||||
win.addWindowFocusListener(winAdapter);
|
||||
break;
|
||||
case WindowEvent.WINDOW_LOST_FOCUS:
|
||||
AtkWrapper.dispatchFocusEvent(null);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if(e instanceof ContainerEvent ) {
|
||||
switch( e.getID() ) {
|
||||
case ContainerEvent.COMPONENT_ADDED:
|
||||
{
|
||||
Component c = ((ContainerEvent)e).getChild();
|
||||
c.addComponentListener(componentAdapter);
|
||||
break;
|
||||
}
|
||||
case ContainerEvent.COMPONENT_REMOVED:
|
||||
{
|
||||
Component c = ((ContainerEvent)e).getChild();
|
||||
c.removeComponentListener(componentAdapter);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if(e instanceof FocusEvent) {
|
||||
switch(e.getID()) {
|
||||
case FocusEvent.FOCUS_GAINED:
|
||||
AtkWrapper.dispatchFocusEvent(e.getSource());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static AccessibleContext oldSourceContext = null;
|
||||
static AccessibleContext savedSourceContext= null;
|
||||
static AccessibleContext oldPaneContext = null;
|
||||
|
||||
/**
|
||||
* dispatchFocusEvent
|
||||
* @param eventSource An instance of the event source object.
|
||||
*/
|
||||
static void dispatchFocusEvent(Object eventSource) {
|
||||
if (eventSource == null) {
|
||||
oldSourceContext = null;
|
||||
return;
|
||||
}
|
||||
|
||||
AccessibleContext ctx;
|
||||
|
||||
try {
|
||||
if (eventSource instanceof AccessibleContext) {
|
||||
ctx = (AccessibleContext)eventSource;
|
||||
} else if (eventSource instanceof Accessible) {
|
||||
ctx = ((Accessible)eventSource).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx == oldSourceContext) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (oldSourceContext != null) {
|
||||
AccessibleRole role = oldSourceContext.getAccessibleRole();
|
||||
if (role == AccessibleRole.MENU || role == AccessibleRole.MENU_ITEM) {
|
||||
String jrootpane = "javax.swing.JRootPane$AccessibleJRootPane";
|
||||
String name = ctx.getClass().getName();
|
||||
|
||||
if (jrootpane.compareTo(name) == 0) {
|
||||
oldPaneContext = ctx;
|
||||
return;
|
||||
}
|
||||
}
|
||||
savedSourceContext = ctx;
|
||||
} else if (oldPaneContext == ctx) {
|
||||
ctx = savedSourceContext;
|
||||
} else {
|
||||
savedSourceContext = ctx;
|
||||
}
|
||||
|
||||
oldSourceContext = ctx;
|
||||
AccessibleRole role = ctx.getAccessibleRole();
|
||||
if (role == AccessibleRole.PAGE_TAB_LIST) {
|
||||
AccessibleSelection accSelection = ctx.getAccessibleSelection();
|
||||
|
||||
if (accSelection != null && accSelection.getAccessibleSelectionCount() > 0) {
|
||||
Object child = accSelection.getAccessibleSelection(0);
|
||||
if (child instanceof AccessibleContext) {
|
||||
ctx = (AccessibleContext)child;
|
||||
} else if (child instanceof Accessible) {
|
||||
ctx = ((Accessible)child).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
focusNotify(ctx);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
final Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
|
||||
static PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
|
||||
|
||||
/**
|
||||
* propertyChange:
|
||||
* @param e An instance of the PropertyChangeEvent object.
|
||||
*/
|
||||
public void propertyChange(PropertyChangeEvent e) {
|
||||
Object o = e.getSource();
|
||||
AccessibleContext ac;
|
||||
if (o instanceof AccessibleContext) {
|
||||
ac = (AccessibleContext)o;
|
||||
} else if (o instanceof Accessible) {
|
||||
ac = ((Accessible)o).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
Object oldValue = e.getOldValue();
|
||||
Object newValue = e.getNewValue();
|
||||
String propertyName = e.getPropertyName();
|
||||
if( propertyName.equals(AccessibleContext.ACCESSIBLE_CARET_PROPERTY) ) {
|
||||
Object[] args = new Object[1];
|
||||
args[0] = newValue;
|
||||
|
||||
emitSignal(ac, AtkSignal.TEXT_CARET_MOVED, args);
|
||||
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_TEXT_PROPERTY) ) {
|
||||
if (newValue == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (newValue instanceof Integer) {
|
||||
Object[] args = new Object[1];
|
||||
args[0] = newValue;
|
||||
|
||||
emitSignal(ac, AtkSignal.TEXT_PROPERTY_CHANGED, args);
|
||||
|
||||
}
|
||||
/*
|
||||
if (oldValue == null && newValue != null) { //insertion event
|
||||
if (!(newValue instanceof AccessibleTextSequence)) {
|
||||
return;
|
||||
}
|
||||
|
||||
AccessibleTextSequence newSeq = (AccessibleTextSequence)newValue;
|
||||
Object[] args = new Object[2];
|
||||
args[0] = new Integer(newSeq.startIndex);
|
||||
args[1] = new Integer(newSeq.endIndex - newSeq.startIndex);
|
||||
|
||||
emitSignal(ac, AtkSignal.TEXT_PROPERTY_CHANGED_INSERT, args);
|
||||
|
||||
} else if (oldValue != null && newValue == null) { //deletion event
|
||||
if (!(oldValue instanceof AccessibleTextSequence)) {
|
||||
return;
|
||||
}
|
||||
|
||||
AccessibleTextSequence oldSeq = (AccessibleTextSequence)oldValue;
|
||||
Object[] args = new Object[2];
|
||||
args[0] = new Integer(oldSeq.startIndex);
|
||||
args[1] = new Integer(oldSeq.endIndex - oldSeq.startIndex);
|
||||
|
||||
emitSignal(ac, AtkSignal.TEXT_PROPERTY_CHANGED_DELETE, args);
|
||||
|
||||
} else if (oldValue != null && newValue != null) { //replacement event
|
||||
//It seems ATK does not support "replace" currently
|
||||
return;
|
||||
}*/
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_CHILD_PROPERTY) ) {
|
||||
if (oldValue == null && newValue != null) { //child added
|
||||
AccessibleContext child_ac;
|
||||
if (newValue instanceof Accessible) {
|
||||
child_ac = ((Accessible)newValue).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
Object[] args = new Object[2];
|
||||
args[0] = Integer.valueOf(child_ac.getAccessibleIndexInParent());
|
||||
args[1] = child_ac;
|
||||
|
||||
emitSignal(ac, AtkSignal.OBJECT_CHILDREN_CHANGED_ADD, args);
|
||||
|
||||
} else if (oldValue != null && newValue == null) { //child removed
|
||||
AccessibleContext child_ac;
|
||||
if (oldValue instanceof Accessible) {
|
||||
child_ac = ((Accessible)oldValue).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
Object[] args = new Object[2];
|
||||
args[0] = Integer.valueOf(child_ac.getAccessibleIndexInParent());
|
||||
args[1] = child_ac;
|
||||
|
||||
emitSignal(ac, AtkSignal.OBJECT_CHILDREN_CHANGED_REMOVE, args);
|
||||
|
||||
}
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY) ) {
|
||||
AccessibleContext child_ac;
|
||||
if (newValue instanceof Accessible) {
|
||||
child_ac = ((Accessible)newValue).getAccessibleContext();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
Object[] args = new Object[1];
|
||||
args[0] = child_ac;
|
||||
|
||||
emitSignal(ac, AtkSignal.OBJECT_ACTIVE_DESCENDANT_CHANGED, args);
|
||||
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY) ) {
|
||||
boolean isTextEvent = false;
|
||||
AccessibleRole role = ac.getAccessibleRole();
|
||||
if ((role == AccessibleRole.TEXT) ||
|
||||
role.toDisplayString(java.util.Locale.US).equalsIgnoreCase("paragraph")) {
|
||||
isTextEvent = true;
|
||||
} else if (role == AccessibleRole.MENU_BAR) {
|
||||
dispatchFocusEvent(o);
|
||||
} else if (role == AccessibleRole.PAGE_TAB_LIST) {
|
||||
AccessibleSelection selection = ac.getAccessibleSelection();
|
||||
if (selection != null &&
|
||||
selection.getAccessibleSelectionCount() > 0) {
|
||||
java.lang.Object child = selection.getAccessibleSelection(0);
|
||||
dispatchFocusEvent(child);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isTextEvent) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_SELECTION_CHANGED, null);
|
||||
}
|
||||
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY) ) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_VISIBLE_DATA_CHANGED, null);
|
||||
|
||||
}else if( propertyName.equals(AccessibleContext.ACCESSIBLE_ACTION_PROPERTY) ) {
|
||||
Object[] args = new Object[2];
|
||||
args[0] = oldValue;
|
||||
args[1] = newValue;
|
||||
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_ACTIONS, args);
|
||||
|
||||
}else if( propertyName.equals(AccessibleContext.ACCESSIBLE_VALUE_PROPERTY) ) {
|
||||
if (oldValue instanceof Number && newValue instanceof Number) {
|
||||
Object[] args = new Object[2];
|
||||
args[0] = Double.valueOf(((Number)oldValue).doubleValue());
|
||||
args[1] = Double.valueOf(((Number)newValue).doubleValue());
|
||||
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_VALUE, args);
|
||||
}
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_DESCRIPTION_PROPERTY)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_DESCRIPTION, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_NAME_PROPERTY)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_NAME, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_HYPERTEXT_OFFSET)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_HYPERTEXT_OFFSET, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_MODEL_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.TABLE_MODEL_CHANGED, null);
|
||||
|
||||
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_CAPTION_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_CAPTION, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_SUMMARY_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_SUMMARY, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_COLUMN_HEADER_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_COLUMN_HEADER, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_COLUMN_DESCRIPTION_CHANGED) ) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_COLUMN_DESCRIPTION, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_ROW_HEADER_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_ROW_HEADER, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_TABLE_ROW_DESCRIPTION_CHANGED)) {
|
||||
emitSignal(ac, AtkSignal.OBJECT_PROPERTY_CHANGE_ACCESSIBLE_TABLE_ROW_DESCRIPTION, null);
|
||||
|
||||
} else if(propertyName.equals(AccessibleContext.ACCESSIBLE_STATE_PROPERTY)) {
|
||||
Accessible parent = ac.getAccessibleParent();
|
||||
AccessibleRole role = ac.getAccessibleRole();
|
||||
if (role != null) {
|
||||
if (newValue == AccessibleState.FOCUSED ||
|
||||
newValue == AccessibleState.SELECTED) {
|
||||
dispatchFocusEvent(o);
|
||||
}
|
||||
}
|
||||
AccessibleState state;
|
||||
boolean value = false;
|
||||
if (newValue != null) {
|
||||
state = (AccessibleState)newValue;
|
||||
value = true;
|
||||
} else {
|
||||
state = (AccessibleState)oldValue;
|
||||
value = false;
|
||||
}
|
||||
|
||||
if (state == AccessibleState.COLLAPSED) {
|
||||
state = AccessibleState.EXPANDED;
|
||||
value = false;
|
||||
}
|
||||
|
||||
if(parent instanceof JComboBox && oldValue ==
|
||||
AccessibleState.VISIBLE) {
|
||||
objectStateChange(ac, AccessibleState.SHOWING, value);
|
||||
}
|
||||
|
||||
objectStateChange(ac, state, value);
|
||||
|
||||
if (parent instanceof JComboBox && newValue ==
|
||||
AccessibleState.VISIBLE && oldValue == null) {
|
||||
objectStateChange(ac, AccessibleState.SHOWING, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public static void registerPropertyChangeListener(AccessibleContext ac) {
|
||||
if (ac != null) {
|
||||
AtkUtil.invokeInSwing( () -> { ac.addPropertyChangeListener(propertyChangeListener); } );
|
||||
}
|
||||
}
|
||||
|
||||
public native static boolean initNativeLibrary();
|
||||
public native static void loadAtkBridge();
|
||||
public native static void GC();
|
||||
|
||||
public native static void focusNotify(AccessibleContext ac);
|
||||
|
||||
public native static void windowOpen(AccessibleContext ac,
|
||||
boolean isToplevel);
|
||||
public native static void windowClose(AccessibleContext ac,
|
||||
boolean isToplevel);
|
||||
|
||||
public native static void windowMinimize(AccessibleContext ac);
|
||||
public native static void windowMaximize(AccessibleContext ac);
|
||||
public native static void windowRestore(AccessibleContext ac);
|
||||
public native static void windowActivate(AccessibleContext ac);
|
||||
public native static void windowDeactivate(AccessibleContext ac);
|
||||
public native static void windowStateChange(AccessibleContext ac);
|
||||
|
||||
public native static void emitSignal(AccessibleContext ac, int id, Object[] args);
|
||||
|
||||
public native static void objectStateChange(AccessibleContext ac,
|
||||
Object state, boolean value);
|
||||
|
||||
public native static void componentAdded(AccessibleContext ac);
|
||||
public native static void componentRemoved(AccessibleContext ac);
|
||||
public native static void boundsChanged(AccessibleContext ac);
|
||||
public native static boolean dispatchKeyEvent(AtkKeyEvent e);
|
||||
public native static long getInstance(AccessibleContext ac);
|
||||
|
||||
public static void printLog(String str) {
|
||||
System.out.println(str);
|
||||
}
|
||||
|
||||
public AtkWrapper() {
|
||||
if (!accessibilityEnabled)
|
||||
return;
|
||||
|
||||
toolkit.addAWTEventListener(globalListener,
|
||||
AWTEvent.WINDOW_EVENT_MASK |
|
||||
AWTEvent.FOCUS_EVENT_MASK |
|
||||
AWTEvent.CONTAINER_EVENT_MASK);
|
||||
|
||||
toolkit.getSystemEventQueue().push(new EventQueue() {
|
||||
boolean previousPressConsumed = false;
|
||||
|
||||
public void dispatchEvent(AWTEvent e) {
|
||||
if (e instanceof KeyEvent) {
|
||||
if (e.getID() == KeyEvent.KEY_PRESSED) {
|
||||
boolean isConsumed = AtkWrapper.dispatchKeyEvent(new AtkKeyEvent((KeyEvent)e));
|
||||
if (isConsumed) {
|
||||
previousPressConsumed = true;
|
||||
return;
|
||||
}
|
||||
} else if (e.getID() == KeyEvent.KEY_TYPED) {
|
||||
if (previousPressConsumed) {
|
||||
return;
|
||||
}
|
||||
} else if (e.getID() == KeyEvent.KEY_RELEASED) {
|
||||
boolean isConsumed = AtkWrapper.dispatchKeyEvent(new AtkKeyEvent((KeyEvent)e));
|
||||
|
||||
previousPressConsumed = false;
|
||||
if (isConsumed) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.dispatchEvent(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static long getInstanceFromSwing(AccessibleContext ac) {
|
||||
return AtkUtil.invokeInSwing( () -> { return getInstance(ac); }, 0l);
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
new AtkWrapper();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
JAVA_SRC=$(filter-out $(srcdir)/AtkWrapper.java, $(filter-out $(srcdir)/AtkProvider.java, $(wildcard $(srcdir)/*.java)))
|
||||
|
||||
if MODULAR_JAR
|
||||
JAVA_SRC += $(srcdir)/AtkProvider.java
|
||||
endif
|
||||
|
||||
CLASSES=$(patsubst %.java,%.class,$(JAVA_SRC))
|
||||
BUILD_CLASSES=$(patsubst $(srcdir)%,$(builddir)%,$(CLASSES)) $(builddir)/AtkWrapper.class
|
||||
|
||||
EXTRA_DIST=$(JAVA_SRC) AtkWrapper.java.in $(srcdir)/AtkProvider.java
|
||||
|
||||
all-local: $(BUILD_CLASSES)
|
||||
|
||||
%.class : %.java AtkWrapper.java
|
||||
$(JAVAC) -cp $(top_builddir)/wrapper -sourcepath $(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d $(top_builddir)/wrapper $<
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
||||
$(RM) AtkWrapper.java
|
||||
|
|
@ -0,0 +1,492 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@MODULAR_JAR_TRUE@am__append_1 = $(srcdir)/AtkProvider.java
|
||||
subdir = wrapper/org/GNOME/Accessibility
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = AtkWrapper.java
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/AtkWrapper.java.in $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
JAVA_SRC = $(filter-out $(srcdir)/AtkWrapper.java, $(filter-out \
|
||||
$(srcdir)/AtkProvider.java, $(wildcard $(srcdir)/*.java))) \
|
||||
$(am__append_1)
|
||||
CLASSES = $(patsubst %.java,%.class,$(JAVA_SRC))
|
||||
BUILD_CLASSES = $(patsubst $(srcdir)%,$(builddir)%,$(CLASSES)) $(builddir)/AtkWrapper.class
|
||||
EXTRA_DIST = $(JAVA_SRC) AtkWrapper.java.in $(srcdir)/AtkProvider.java
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/org/GNOME/Accessibility/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/org/GNOME/Accessibility/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
AtkWrapper.java: $(top_builddir)/config.status $(srcdir)/AtkWrapper.java.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool clean-local cscopelist-am ctags-am distclean \
|
||||
distclean-generic distclean-libtool distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
all-local: $(BUILD_CLASSES)
|
||||
|
||||
%.class : %.java AtkWrapper.java
|
||||
$(JAVAC) -cp $(top_builddir)/wrapper -sourcepath $(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d $(top_builddir)/wrapper $<
|
||||
|
||||
clean-local:
|
||||
$(RM) *.class
|
||||
$(RM) AtkWrapper.java
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1 @@
|
|||
SUBDIRS=Accessibility
|
|
@ -0,0 +1,654 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = wrapper/org/GNOME
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = Accessibility
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/org/GNOME/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/org/GNOME/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1 @@
|
|||
SUBDIRS=GNOME
|
|
@ -0,0 +1,654 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = wrapper/org
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JARDIR = @JARDIR@
|
||||
JAVA = @JAVA@
|
||||
JAVAC = @JAVAC@
|
||||
JAVACFLAGS = @JAVACFLAGS@
|
||||
JAVA_HOME = @JAVA_HOME@
|
||||
JAW_CFLAGS = @JAW_CFLAGS@
|
||||
JAW_JAR_NAME = @JAW_JAR_NAME@
|
||||
JAW_LIBS = @JAW_LIBS@
|
||||
JDK_SRC = @JDK_SRC@
|
||||
JNI_INCLUDES = @JNI_INCLUDES@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIB_ATK_WRAPPER_LD_FLAGS = @LIB_ATK_WRAPPER_LD_FLAGS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
|
||||
PLATFORM_CLASSPATH_SEPARATOR = @PLATFORM_CLASSPATH_SEPARATOR@
|
||||
PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
|
||||
PROPERTIESDIR = @PROPERTIESDIR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
|
||||
XMKMF = @XMKMF@
|
||||
XPROP = @XPROP@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = GNOME
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrapper/org/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu wrapper/org/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
Loading…
Reference in New Issue