Import Upstream version 0.38.0

This commit is contained in:
zhouganqing 2022-09-23 10:44:17 +08:00
commit 96f3f4e601
90 changed files with 70438 additions and 0 deletions

10
AUTHORS Normal file
View File

@ -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

504
COPYING.LESSER Normal file
View File

@ -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!

458
ChangeLog Normal file
View File

@ -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.

368
INSTALL Normal file
View File

@ -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.

15
JavaInfo.java Normal file
View File

@ -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();
}
}

8
Makefile.am Normal file
View File

@ -0,0 +1,8 @@
SUBDIRS=jni wrapper
EXTRA_DIST = JavaInfo.java
ACLOCAL_AMFLAGS=-I m4 ${ACLOCAL_FLAGS}
clean-local:
$(RM) *.class

865
Makefile.in Normal file
View File

@ -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:

615
NEWS Normal file
View File

@ -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.

16
README Normal file
View File

@ -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

83
acinclude.m4 Normal file
View File

@ -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)
])

2397
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

64
config.h.in Normal file
View File

@ -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

270
config/ar-lib Executable file
View File

@ -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

348
config/compile Executable file
View File

@ -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:

1480
config/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

1801
config/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

791
config/depcomp Executable file
View File

@ -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:

518
config/install-sh Executable file
View File

@ -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:

11251
config/ltmain.sh Normal file

File diff suppressed because it is too large Load Diff

215
config/missing Executable file
View File

@ -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:

22653
configure vendored Executable file

File diff suppressed because it is too large Load Diff

228
configure.ac Normal file
View File

@ -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}
"

1
jni/Makefile.am Normal file
View File

@ -0,0 +1 @@
SUBDIRS=src

654
jni/Makefile.in Normal file
View File

@ -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:

1289
jni/src/AtkWrapper.c Normal file

File diff suppressed because it is too large Load Diff

162
jni/src/AtkWrapper.h Normal file
View File

@ -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

42
jni/src/Makefile.am Normal file
View File

@ -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)

912
jni/src/Makefile.in Normal file
View File

@ -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:

264
jni/src/jawaction.c Normal file
View File

@ -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;
}

272
jni/src/jawcomponent.c Normal file
View File

@ -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;
}

258
jni/src/jaweditabletext.c Normal file
View File

@ -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;
}

195
jni/src/jawhyperlink.c Normal file
View File

@ -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;
}

59
jni/src/jawhyperlink.h Normal file
View File

@ -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

136
jni/src/jawhypertext.c Normal file
View File

@ -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;
}

167
jni/src/jawimage.c Normal file
View File

@ -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;
}

645
jni/src/jawimpl.c Normal file
View File

@ -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

112
jni/src/jawimpl.h Normal file
View File

@ -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

598
jni/src/jawobject.c Normal file
View File

@ -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

66
jni/src/jawobject.h Normal file
View File

@ -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

188
jni/src/jawselection.c Normal file
View File

@ -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;
}

635
jni/src/jawtable.c Normal file
View File

@ -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);
}

242
jni/src/jawtablecell.c Normal file
View File

@ -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;
}

624
jni/src/jawtext.c Normal file
View File

@ -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;
}

203
jni/src/jawtoplevel.c Normal file
View File

@ -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;
}

58
jni/src/jawtoplevel.h Normal file
View File

@ -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

692
jni/src/jawutil.c Normal file
View File

@ -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

148
jni/src/jawutil.h Normal file
View File

@ -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

230
jni/src/jawvalue.c Normal file
View File

@ -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

8394
m4/libtool.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

437
m4/ltoptions.m4 vendored Normal file
View File

@ -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])])

124
m4/ltsugar.m4 vendored Normal file
View File

@ -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
])

23
m4/ltversion.m4 vendored Normal file
View File

@ -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)
])

99
m4/lt~obsolete.m4 vendored Normal file
View File

@ -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])])

View File

@ -0,0 +1 @@
SUBDIRS=services

View File

@ -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:

View File

@ -0,0 +1 @@
EXTRA_DIST = javax.accessibility.AccessibilityProvider

View File

@ -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:

View File

@ -0,0 +1 @@
org.GNOME.Accessibility.AtkProvider

43
wrapper/Makefile.am Normal file
View File

@ -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)

765
wrapper/Makefile.in Normal file
View File

@ -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:

View File

@ -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

2
wrapper/manifest.txt Normal file
View File

@ -0,0 +1,2 @@
Main-Class: org.GNOME.Accessibility.AtkWrapper

7
wrapper/module-info.java Normal file
View File

@ -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;
}

View File

@ -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 "";
}
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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
}
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}
}
}

View File

@ -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;
}

View File

@ -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 */
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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

View File

@ -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:

View File

@ -0,0 +1 @@
SUBDIRS=Accessibility

View File

@ -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:

1
wrapper/org/Makefile.am Normal file
View File

@ -0,0 +1 @@
SUBDIRS=GNOME

654
wrapper/org/Makefile.in Normal file
View File

@ -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: