initial upload
|
@ -0,0 +1,675 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If 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 convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = foreign
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
SUBDIRS = src doc test
|
||||||
|
|
||||||
|
doc_DATA = AUTHORS COPYING ChangeLog
|
|
@ -0,0 +1,839 @@
|
||||||
|
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2013 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@
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
|
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 = .
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
|
$(top_srcdir)/configure $(am__configure_deps) AUTHORS COPYING \
|
||||||
|
ChangeLog config.guess config.sub depcomp install-sh missing \
|
||||||
|
ltmain.sh
|
||||||
|
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)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
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)$(docdir)"
|
||||||
|
DATA = $(doc_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 \
|
||||||
|
cscope distdir dist dist-all distcheck
|
||||||
|
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
|
||||||
|
CSCOPE = cscope
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
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_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@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
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@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
SO_VERSION = @SO_VERSION@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
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@
|
||||||
|
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@
|
||||||
|
AUTOMAKE_OPTIONS = foreign
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
SUBDIRS = src doc test
|
||||||
|
doc_DATA = AUTHORS COPYING ChangeLog
|
||||||
|
all: 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) --foreign'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool config.lt
|
||||||
|
install-docDATA: $(doc_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(docdir)" || 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)$(docdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-docDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(docdir)'; $(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"
|
||||||
|
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: $(DISTFILES)
|
||||||
|
$(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) | GZIP=$(GZIP_ENV) gzip -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
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -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*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -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*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir)
|
||||||
|
chmod u+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build $(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 \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
|
distuninstallcheck \
|
||||||
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
|
&& ({ \
|
||||||
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
|
&& rm -rf "$$dc_destdir" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
|
&& 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 $(DATA)
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(docdir)"; 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 mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-libtool \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-docDATA
|
||||||
|
|
||||||
|
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: uninstall-docDATA
|
||||||
|
|
||||||
|
.MAKE: $(am__recursive_targets) 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 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-libtool distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am \
|
||||||
|
install-docDATA 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 uninstall-docDATA
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Set up an m4 environment
|
||||||
|
aclocal
|
||||||
|
|
||||||
|
# Generate configure from configure.ac
|
||||||
|
autoconf
|
||||||
|
|
||||||
|
# reate a template header (config.h.in) for configure
|
||||||
|
autoheader
|
||||||
|
|
||||||
|
# generates a custom version of the generic libtool script
|
||||||
|
libtoolize --copy
|
||||||
|
|
||||||
|
# Generate Makefile.in from Makefile.am
|
||||||
|
automake --add-missing --copy
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo 'run "./configure ; make"'
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Generate Makefile from Makefile.in
|
||||||
|
#./configure
|
||||||
|
|
||||||
|
# Use Makefile to build and test a tarball to distribute
|
||||||
|
#make distcheck
|
||||||
|
#make distclean
|
||||||
|
|
|
@ -0,0 +1,514 @@
|
||||||
|
# This file was generated.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'-',
|
||||||
|
'/usr/share/aclocal-1.13/internal/ac-config-macro-dirs.m4',
|
||||||
|
'/usr/share/aclocal/argz.m4',
|
||||||
|
'/usr/share/aclocal/libtool.m4',
|
||||||
|
'/usr/share/aclocal/ltdl.m4',
|
||||||
|
'/usr/share/aclocal/ltoptions.m4',
|
||||||
|
'/usr/share/aclocal/ltsugar.m4',
|
||||||
|
'/usr/share/aclocal/ltversion.m4',
|
||||||
|
'/usr/share/aclocal/lt~obsolete.m4',
|
||||||
|
'/usr/share/aclocal-1.13/amversion.m4',
|
||||||
|
'/usr/share/aclocal-1.13/auxdir.m4',
|
||||||
|
'/usr/share/aclocal-1.13/cond.m4',
|
||||||
|
'/usr/share/aclocal-1.13/depend.m4',
|
||||||
|
'/usr/share/aclocal-1.13/depout.m4',
|
||||||
|
'/usr/share/aclocal-1.13/init.m4',
|
||||||
|
'/usr/share/aclocal-1.13/install-sh.m4',
|
||||||
|
'/usr/share/aclocal-1.13/lead-dot.m4',
|
||||||
|
'/usr/share/aclocal-1.13/make.m4',
|
||||||
|
'/usr/share/aclocal-1.13/missing.m4',
|
||||||
|
'/usr/share/aclocal-1.13/options.m4',
|
||||||
|
'/usr/share/aclocal-1.13/runlog.m4',
|
||||||
|
'/usr/share/aclocal-1.13/sanity.m4',
|
||||||
|
'/usr/share/aclocal-1.13/silent.m4',
|
||||||
|
'/usr/share/aclocal-1.13/strip.m4',
|
||||||
|
'/usr/share/aclocal-1.13/substnot.m4',
|
||||||
|
'/usr/share/aclocal-1.13/tar.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'AM_MISSING_PROG' => 1,
|
||||||
|
'AC_LTDL_SYMBOL_USCORE' => 1,
|
||||||
|
'AC_ENABLE_SHARED' => 1,
|
||||||
|
'_LT_AC_TAGVAR' => 1,
|
||||||
|
'AC_LTDL_PREOPEN' => 1,
|
||||||
|
'AM_PROG_INSTALL_SH' => 1,
|
||||||
|
'AM_ENABLE_SHARED' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
||||||
|
'_LT_COMPILER_OPTION' => 1,
|
||||||
|
'_LT_AC_LOCK' => 1,
|
||||||
|
'LT_PROG_GO' => 1,
|
||||||
|
'LT_SYS_DLOPEN_SELF' => 1,
|
||||||
|
'_LT_AC_LANG_RC_CONFIG' => 1,
|
||||||
|
'LT_SYS_SYMBOL_USCORE' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'LT_LIB_M' => 1,
|
||||||
|
'AC_PROG_LD_GNU' => 1,
|
||||||
|
'_AM_SET_OPTIONS' => 1,
|
||||||
|
'LTDL_INIT' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
||||||
|
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
||||||
|
'AC_LTDL_OBJDIR' => 1,
|
||||||
|
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
||||||
|
'AM_RUN_LOG' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'_AM_DEPENDENCIES' => 1,
|
||||||
|
'AC_LIBTOOL_FC' => 1,
|
||||||
|
'_AM_AUTOCONF_VERSION' => 1,
|
||||||
|
'AM_PROG_INSTALL_STRIP' => 1,
|
||||||
|
'LT_AC_PROG_SED' => 1,
|
||||||
|
'AM_SANITY_CHECK' => 1,
|
||||||
|
'LT_SYS_DLSEARCH_PATH' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'LT_PATH_LD' => 1,
|
||||||
|
'_LT_WITH_SYSROOT' => 1,
|
||||||
|
'AC_WITH_LTDL' => 1,
|
||||||
|
'_LT_AC_LANG_F77' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
||||||
|
'AC_DISABLE_SHARED' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
||||||
|
'AC_LTDL_SHLIBEXT' => 1,
|
||||||
|
'_LTDL_SETUP' => 1,
|
||||||
|
'gl_FUNC_ARGZ' => 1,
|
||||||
|
'AC_DISABLE_STATIC' => 1,
|
||||||
|
'AM_DEP_TRACK' => 1,
|
||||||
|
'LTOPTIONS_VERSION' => 1,
|
||||||
|
'AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
||||||
|
'gl_PREREQ_ARGZ' => 1,
|
||||||
|
'LT_AC_PROG_EGREP' => 1,
|
||||||
|
'_LT_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'AM_SET_DEPDIR' => 1,
|
||||||
|
'LT_LANG' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
||||||
|
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
||||||
|
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
||||||
|
'AC_PROG_EGREP' => 1,
|
||||||
|
'LT_CMD_MAX_LEN' => 1,
|
||||||
|
'AM_AUX_DIR_EXPAND' => 1,
|
||||||
|
'_LT_AC_PROG_CXXCPP' => 1,
|
||||||
|
'AC_LIBTOOL_GCJ' => 1,
|
||||||
|
'_AM_IF_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
||||||
|
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'LTOBSOLETE_VERSION' => 1,
|
||||||
|
'_AM_PROG_TAR' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_LIBTOOL_CONFIG' => 1,
|
||||||
|
'LT_AC_PROG_RC' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
||||||
|
'LTVERSION_VERSION' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
||||||
|
'AC_LIB_LTDL' => 1,
|
||||||
|
'_LT_LINKER_BOILERPLATE' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
||||||
|
'AC_LTDL_DLSYM_USCORE' => 1,
|
||||||
|
'AC_LTDL_SHLIBPATH' => 1,
|
||||||
|
'_LT_CC_BASENAME' => 1,
|
||||||
|
'LT_PATH_NM' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'_AM_SET_OPTION' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'_LT_PROG_LTMAIN' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
||||||
|
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'_LT_PROG_CXX' => 1,
|
||||||
|
'LTDL_CONVENIENCE' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'_LT_AC_CHECK_DLFCN' => 1,
|
||||||
|
'AC_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'LTDL_INSTALLABLE' => 1,
|
||||||
|
'_LT_AC_LANG_F77_CONFIG' => 1,
|
||||||
|
'AM_MAKE_INCLUDE' => 1,
|
||||||
|
'LT_FUNC_DLSYM_USCORE' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR' => 1,
|
||||||
|
'AM_DISABLE_SHARED' => 1,
|
||||||
|
'LT_SYS_MODULE_EXT' => 1,
|
||||||
|
'_LT_AC_SYS_COMPILER' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_LTDL_DLLIB' => 1,
|
||||||
|
'AC_LTDL_ENABLE_INSTALL' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
||||||
|
'AC_LIBTOOL_SETUP' => 1,
|
||||||
|
'AC_CHECK_LIBM' => 1,
|
||||||
|
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AC_PROG_LD' => 1,
|
||||||
|
'LT_LIB_DLLOAD' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
||||||
|
'LT_PROG_GCJ' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
||||||
|
'AC_LIBTOOL_PICMODE' => 1,
|
||||||
|
'AM_PROG_LD' => 1,
|
||||||
|
'_LT_AC_SHELL_INIT' => 1,
|
||||||
|
'AC_ENABLE_STATIC' => 1,
|
||||||
|
'AC_LIBTOOL_RC' => 1,
|
||||||
|
'_LT_LINKER_OPTION' => 1,
|
||||||
|
'_LT_AC_LANG_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AM_PROG_NM' => 1,
|
||||||
|
'AC_PATH_MAGIC' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'_LT_AC_LANG_C_CONFIG' => 1,
|
||||||
|
'LT_PROG_RC' => 1,
|
||||||
|
'AC_LIBTOOL_WIN32_DLL' => 1,
|
||||||
|
'AM_SET_LEADING_DOT' => 1,
|
||||||
|
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
||||||
|
'_AM_CONFIG_MACRO_DIRS' => 1,
|
||||||
|
'AM_MISSING_HAS_RUN' => 1,
|
||||||
|
'LT_OUTPUT' => 1,
|
||||||
|
'_AM_MANGLE_OPTION' => 1,
|
||||||
|
'LT_WITH_LTDL' => 1,
|
||||||
|
'_LT_PROG_F77' => 1,
|
||||||
|
'_LT_LIBOBJ' => 1,
|
||||||
|
'AC_LIBTOOL_OBJDIR' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_LIBTOOL_CXX' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'_AC_PROG_LIBTOOL' => 1,
|
||||||
|
'LTSUGAR_VERSION' => 1,
|
||||||
|
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
||||||
|
'AM_DISABLE_STATIC' => 1,
|
||||||
|
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AC_LIBTOOL_F77' => 1,
|
||||||
|
'AM_ENABLE_STATIC' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_PROG_NM' => 1,
|
||||||
|
'_LT_AC_FILE_LTDLL_C' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AC_DISABLE_FAST_INSTALL' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
||||||
|
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
||||||
|
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AC_ENABLE_FAST_INSTALL' => 1,
|
||||||
|
'LT_AC_PROG_GCJ' => 1,
|
||||||
|
'_LT_PROG_FC' => 1,
|
||||||
|
'_LT_COMPILER_BOILERPLATE' => 1,
|
||||||
|
'AC_LTDL_SYSSEARCHPATH' => 1,
|
||||||
|
'LT_SYS_MODULE_PATH' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' ),
|
||||||
|
bless( [
|
||||||
|
'1',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
||||||
|
'_AM_COND_IF' => 1,
|
||||||
|
'AC_REQUIRE_AUX_FILE' => 1,
|
||||||
|
'AM_PROG_MKDIR_P' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'AM_PROG_CXX_C_O' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_FC_SRCEXT' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AM_NLS' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AM_PROG_FC_C_O' => 1,
|
||||||
|
'AM_XGETTEXT_OPTION' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AM_PROG_F77_C_O' => 1,
|
||||||
|
'AC_FC_PP_SRCEXT' => 1,
|
||||||
|
'AM_PROG_AR' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'AC_FC_FREEFORM' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
|
||||||
|
'AM_POT_TOOLS' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AM_PROG_MOC' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'_AM_COND_ENDIF' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AM_PATH_GUILE' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AC_FC_PP_DEFINE' => 1,
|
||||||
|
'AC_SUBST_TRACE' => 1,
|
||||||
|
'AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'_AM_COND_ELSE' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' ),
|
||||||
|
bless( [
|
||||||
|
'2',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'-',
|
||||||
|
'/usr/share/aclocal-1.13/internal/ac-config-macro-dirs.m4',
|
||||||
|
'/usr/share/aclocal/argz.m4',
|
||||||
|
'/usr/share/aclocal/ltdl.m4',
|
||||||
|
'/usr/share/aclocal-1.13/amversion.m4',
|
||||||
|
'/usr/share/aclocal-1.13/auxdir.m4',
|
||||||
|
'/usr/share/aclocal-1.13/cond.m4',
|
||||||
|
'/usr/share/aclocal-1.13/depend.m4',
|
||||||
|
'/usr/share/aclocal-1.13/depout.m4',
|
||||||
|
'/usr/share/aclocal-1.13/init.m4',
|
||||||
|
'/usr/share/aclocal-1.13/install-sh.m4',
|
||||||
|
'/usr/share/aclocal-1.13/lead-dot.m4',
|
||||||
|
'/usr/share/aclocal-1.13/make.m4',
|
||||||
|
'/usr/share/aclocal-1.13/missing.m4',
|
||||||
|
'/usr/share/aclocal-1.13/options.m4',
|
||||||
|
'/usr/share/aclocal-1.13/runlog.m4',
|
||||||
|
'/usr/share/aclocal-1.13/sanity.m4',
|
||||||
|
'/usr/share/aclocal-1.13/silent.m4',
|
||||||
|
'/usr/share/aclocal-1.13/strip.m4',
|
||||||
|
'/usr/share/aclocal-1.13/substnot.m4',
|
||||||
|
'/usr/share/aclocal-1.13/tar.m4',
|
||||||
|
'm4/libtool.m4',
|
||||||
|
'm4/ltoptions.m4',
|
||||||
|
'm4/ltsugar.m4',
|
||||||
|
'm4/ltversion.m4',
|
||||||
|
'm4/lt~obsolete.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'AC_PATH_MAGIC' => 1,
|
||||||
|
'AM_PROG_NM' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AC_LIBTOOL_RC' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
||||||
|
'_LT_AC_LANG_CXX' => 1,
|
||||||
|
'_LT_LINKER_OPTION' => 1,
|
||||||
|
'AC_ENABLE_STATIC' => 1,
|
||||||
|
'_LT_AC_SHELL_INIT' => 1,
|
||||||
|
'AM_PROG_LD' => 1,
|
||||||
|
'LT_PROG_GCJ' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
||||||
|
'AC_LIBTOOL_PICMODE' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
||||||
|
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AC_PROG_LD' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
||||||
|
'LT_LIB_DLLOAD' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
||||||
|
'AC_LTDL_ENABLE_INSTALL' => 1,
|
||||||
|
'AC_LTDL_DLLIB' => 1,
|
||||||
|
'AC_CHECK_LIBM' => 1,
|
||||||
|
'AC_LIBTOOL_SETUP' => 1,
|
||||||
|
'LT_SYS_MODULE_EXT' => 1,
|
||||||
|
'_LT_AC_SYS_COMPILER' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AM_DISABLE_SHARED' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR' => 1,
|
||||||
|
'LT_FUNC_DLSYM_USCORE' => 1,
|
||||||
|
'AM_MAKE_INCLUDE' => 1,
|
||||||
|
'_LT_AC_LANG_F77_CONFIG' => 1,
|
||||||
|
'LTDL_INSTALLABLE' => 1,
|
||||||
|
'AC_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'_LT_AC_CHECK_DLFCN' => 1,
|
||||||
|
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'_LT_PROG_CXX' => 1,
|
||||||
|
'LTDL_CONVENIENCE' => 1,
|
||||||
|
'_LT_PROG_LTMAIN' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
||||||
|
'_LT_CC_BASENAME' => 1,
|
||||||
|
'LT_PATH_NM' => 1,
|
||||||
|
'AC_LTDL_SHLIBPATH' => 1,
|
||||||
|
'_AM_SET_OPTION' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'_LT_LINKER_BOILERPLATE' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
||||||
|
'AC_LIB_LTDL' => 1,
|
||||||
|
'AC_LTDL_DLSYM_USCORE' => 1,
|
||||||
|
'_LT_COMPILER_BOILERPLATE' => 1,
|
||||||
|
'AC_LTDL_SYSSEARCHPATH' => 1,
|
||||||
|
'LT_SYS_MODULE_PATH' => 1,
|
||||||
|
'_LT_PROG_FC' => 1,
|
||||||
|
'AC_ENABLE_FAST_INSTALL' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'LT_AC_PROG_GCJ' => 1,
|
||||||
|
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'AC_PROG_NM' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
||||||
|
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
||||||
|
'_LT_AC_FILE_LTDLL_C' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AC_DISABLE_FAST_INSTALL' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AM_DISABLE_STATIC' => 1,
|
||||||
|
'AC_LIBTOOL_F77' => 1,
|
||||||
|
'AM_ENABLE_STATIC' => 1,
|
||||||
|
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
||||||
|
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
||||||
|
'_AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'LTSUGAR_VERSION' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'AC_LIBTOOL_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_OBJDIR' => 1,
|
||||||
|
'_LT_PROG_F77' => 1,
|
||||||
|
'_LT_LIBOBJ' => 1,
|
||||||
|
'LT_WITH_LTDL' => 1,
|
||||||
|
'LT_OUTPUT' => 1,
|
||||||
|
'_AM_MANGLE_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
||||||
|
'_AM_CONFIG_MACRO_DIRS' => 1,
|
||||||
|
'AM_MISSING_HAS_RUN' => 1,
|
||||||
|
'_LT_AC_LANG_C_CONFIG' => 1,
|
||||||
|
'AM_SET_LEADING_DOT' => 1,
|
||||||
|
'AC_LIBTOOL_WIN32_DLL' => 1,
|
||||||
|
'LT_PROG_RC' => 1,
|
||||||
|
'AM_SANITY_CHECK' => 1,
|
||||||
|
'LT_AC_PROG_SED' => 1,
|
||||||
|
'AM_PROG_INSTALL_STRIP' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'_AM_DEPENDENCIES' => 1,
|
||||||
|
'AC_LIBTOOL_FC' => 1,
|
||||||
|
'_AM_AUTOCONF_VERSION' => 1,
|
||||||
|
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
||||||
|
'AM_RUN_LOG' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
||||||
|
'AC_LTDL_OBJDIR' => 1,
|
||||||
|
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
||||||
|
'LTDL_INIT' => 1,
|
||||||
|
'_AM_SET_OPTIONS' => 1,
|
||||||
|
'LT_LIB_M' => 1,
|
||||||
|
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'AC_PROG_LD_GNU' => 1,
|
||||||
|
'LT_SYS_SYMBOL_USCORE' => 1,
|
||||||
|
'_LT_AC_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'LT_SYS_DLOPEN_SELF' => 1,
|
||||||
|
'LT_PROG_GO' => 1,
|
||||||
|
'_LT_AC_LOCK' => 1,
|
||||||
|
'_LT_COMPILER_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ' => 1,
|
||||||
|
'AM_ENABLE_SHARED' => 1,
|
||||||
|
'AC_LTDL_PREOPEN' => 1,
|
||||||
|
'AM_PROG_INSTALL_SH' => 1,
|
||||||
|
'_LT_AC_TAGVAR' => 1,
|
||||||
|
'AC_LTDL_SYMBOL_USCORE' => 1,
|
||||||
|
'AC_ENABLE_SHARED' => 1,
|
||||||
|
'AM_MISSING_PROG' => 1,
|
||||||
|
'LTVERSION_VERSION' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
||||||
|
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_LIBTOOL_CONFIG' => 1,
|
||||||
|
'LT_AC_PROG_RC' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'LTOBSOLETE_VERSION' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'_AM_PROG_TAR' => 1,
|
||||||
|
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'_LT_AC_PROG_CXXCPP' => 1,
|
||||||
|
'AM_AUX_DIR_EXPAND' => 1,
|
||||||
|
'_AM_IF_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_GCJ' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
||||||
|
'AC_PROG_EGREP' => 1,
|
||||||
|
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
||||||
|
'LT_CMD_MAX_LEN' => 1,
|
||||||
|
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
||||||
|
'_LT_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'gl_PREREQ_ARGZ' => 1,
|
||||||
|
'LT_AC_PROG_EGREP' => 1,
|
||||||
|
'AM_SET_DEPDIR' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'LT_LANG' => 1,
|
||||||
|
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
||||||
|
'AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'LTOPTIONS_VERSION' => 1,
|
||||||
|
'AM_DEP_TRACK' => 1,
|
||||||
|
'_LTDL_SETUP' => 1,
|
||||||
|
'AC_LTDL_SHLIBEXT' => 1,
|
||||||
|
'gl_FUNC_ARGZ' => 1,
|
||||||
|
'AC_DISABLE_STATIC' => 1,
|
||||||
|
'AC_DISABLE_SHARED' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
||||||
|
'_LT_AC_LANG_F77' => 1,
|
||||||
|
'AC_WITH_LTDL' => 1,
|
||||||
|
'_LT_WITH_SYSROOT' => 1,
|
||||||
|
'LT_SYS_DLSEARCH_PATH' => 1,
|
||||||
|
'LT_PATH_LD' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
|
@ -0,0 +1,612 @@
|
||||||
|
m4trace:aclocal.m4:1040: -1- m4_include([m4/libtool.m4])
|
||||||
|
m4trace:aclocal.m4:1041: -1- m4_include([m4/ltoptions.m4])
|
||||||
|
m4trace:aclocal.m4:1042: -1- m4_include([m4/ltsugar.m4])
|
||||||
|
m4trace:aclocal.m4:1043: -1- m4_include([m4/ltversion.m4])
|
||||||
|
m4trace:aclocal.m4:1044: -1- m4_include([m4/lt~obsolete.m4])
|
||||||
|
m4trace:configure.ac:7: -1- AC_INIT([finalcut], [0.1.0])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([SHELL])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([SHELL])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^SHELL$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PATH_SEPARATOR$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([exec_prefix])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^exec_prefix$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([prefix])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^prefix$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([program_transform_name])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^program_transform_name$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([bindir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^bindir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sbindir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^sbindir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([libexecdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^libexecdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([datarootdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^datarootdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([datadir], ['${datarootdir}'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([datadir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^datadir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sysconfdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^sysconfdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sharedstatedir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^sharedstatedir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([localstatedir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^localstatedir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([includedir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^includedir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([oldincludedir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^oldincludedir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||||||
|
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
|
||||||
|
['${datarootdir}/doc/${PACKAGE}'])])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([docdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^docdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([infodir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^infodir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([htmldir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([htmldir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^htmldir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([dvidir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([dvidir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^dvidir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([pdfdir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([pdfdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^pdfdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([psdir], ['${docdir}'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([psdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^psdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([libdir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^libdir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([localedir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^localedir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([mandir])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^mandir$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
@%:@undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
@%:@undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
@%:@undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
@%:@undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
@%:@undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
|
||||||
|
@%:@undef PACKAGE_URL])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([DEFS])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^DEFS$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_C])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_C$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_N])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_N$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_T])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_T$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([build_alias])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^build_alias$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([host_alias])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^host_alias$])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST_TRACE([target_alias])
|
||||||
|
m4trace:configure.ac:7: -1- m4_pattern_allow([^target_alias$])
|
||||||
|
m4trace:configure.ac:9: -1- AM_INIT_AUTOMAKE
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
|
||||||
|
m4trace:configure.ac:9: -1- AM_AUTOMAKE_VERSION([1.13.4])
|
||||||
|
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([install-sh])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^INSTALL_DATA$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([am__isrc])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^am__isrc$])
|
||||||
|
m4trace:configure.ac:9: -1- _AM_SUBST_NOTMAKE([am__isrc])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([CYGPATH_W])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CYGPATH_W])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^CYGPATH_W$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([PACKAGE])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^PACKAGE$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([VERSION])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^VERSION$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^PACKAGE$])
|
||||||
|
m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
|
||||||
|
@%:@undef PACKAGE])
|
||||||
|
m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^VERSION$])
|
||||||
|
m4trace:configure.ac:9: -1- AH_OUTPUT([VERSION], [/* Version number of package */
|
||||||
|
@%:@undef VERSION])
|
||||||
|
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([missing])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([ACLOCAL])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([ACLOCAL])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^ACLOCAL$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AUTOCONF])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AUTOCONF])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AUTOCONF$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AUTOMAKE])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AUTOMAKE])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AUTOMAKE$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AUTOHEADER])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AUTOHEADER])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AUTOHEADER$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([MAKEINFO])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([MAKEINFO])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^MAKEINFO$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([install_sh])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([install_sh])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^install_sh$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([STRIP])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^STRIP$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_REQUIRE_AUX_FILE([install-sh])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([MKDIR_P])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([MKDIR_P])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^MKDIR_P$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([mkdir_p])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^mkdir_p$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AWK])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AWK])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AWK$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([SET_MAKE])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^SET_MAKE$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([am__leading_dot])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([am__leading_dot])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^am__leading_dot$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AMTAR])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AMTAR$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([am__tar])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([am__tar])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^am__tar$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([am__untar])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([am__untar])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^am__untar$])
|
||||||
|
m4trace:configure.ac:9: -1- AM_SILENT_RULES
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AM_V])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AM_V])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AM_V$])
|
||||||
|
m4trace:configure.ac:9: -1- _AM_SUBST_NOTMAKE([AM_V])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AM_DEFAULT_V])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AM_DEFAULT_V$])
|
||||||
|
m4trace:configure.ac:9: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST([AM_BACKSLASH])
|
||||||
|
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AM_BACKSLASH])
|
||||||
|
m4trace:configure.ac:9: -1- m4_pattern_allow([^AM_BACKSLASH$])
|
||||||
|
m4trace:configure.ac:9: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CFLAGS$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CC$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DEPDIR])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^DEPDIR$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([am__include])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([am__include])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^am__include$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([am__quote])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([am__quote])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^am__quote$])
|
||||||
|
m4trace:configure.ac:10: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([AMDEP_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AMDEP_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^AMDEP_TRUE$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([AMDEP_FALSE])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AMDEP_FALSE])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^AMDEP_FALSE$])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([AMDEPBACKSLASH])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([am__nodep])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([am__nodep])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^am__nodep$])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([am__nodep])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CCDEPMODE])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^CCDEPMODE$])
|
||||||
|
m4trace:configure.ac:10: -1- AM_CONDITIONAL([am__fastdepCC], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:10: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:10: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
|
||||||
|
m4trace:configure.ac:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CXX])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^CXX$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([CXXFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CXXFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^CXXFLAGS$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CXX])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^CXX$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CXX])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CXX])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CXX$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CXXDEPMODE])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^CXXDEPMODE$])
|
||||||
|
m4trace:configure.ac:11: -1- AM_CONDITIONAL([am__fastdepCXX], [
|
||||||
|
test "x$enable_dependency_tracking" != xno \
|
||||||
|
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:11: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
|
||||||
|
m4trace:configure.ac:11: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
|
||||||
|
m4trace:configure.ac:11: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CPP])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^CPP$])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CPP])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^CPP$])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST([GREP])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([GREP])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^GREP$])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([EGREP])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^EGREP$])
|
||||||
|
m4trace:configure.ac:14: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:14: -1- m4_pattern_allow([^STDC_HEADERS$])
|
||||||
|
m4trace:configure.ac:14: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
@%:@undef STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_LINUX_FB_H], [/* Define to 1 if you have the <linux/fb.h> header file. */
|
||||||
|
@%:@undef HAVE_LINUX_FB_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_IO_H], [/* Define to 1 if you have the <sys/io.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_IO_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_KD_H], [/* Define to 1 if you have the <sys/kd.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_KD_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_TIME_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
@%:@undef HAVE_FCNTL_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
|
||||||
|
@%:@undef HAVE_LANGINFO_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_TERM_H], [/* Define to 1 if you have the <term.h> header file. */
|
||||||
|
@%:@undef HAVE_TERM_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
|
||||||
|
@%:@undef HAVE_TERMIOS_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
@%:@undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_CMATH], [/* Define to 1 if you have the <cmath> header file. */
|
||||||
|
@%:@undef HAVE_CMATH])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_CSIGNAL], [/* Define to 1 if you have the <csignal> header file. */
|
||||||
|
@%:@undef HAVE_CSIGNAL])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_CSTDLIB], [/* Define to 1 if you have the <cstdlib> header file. */
|
||||||
|
@%:@undef HAVE_CSTDLIB])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_LIST], [/* Define to 1 if you have the <list> header file. */
|
||||||
|
@%:@undef HAVE_LIST])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_MAP], [/* Define to 1 if you have the <map> header file. */
|
||||||
|
@%:@undef HAVE_MAP])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_QUEUE], [/* Define to 1 if you have the <queue> header file. */
|
||||||
|
@%:@undef HAVE_QUEUE])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_VECTOR], [/* Define to 1 if you have the <vector> header file. */
|
||||||
|
@%:@undef HAVE_VECTOR])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
@%:@undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
@%:@undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
@%:@undef HAVE_MEMORY_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
@%:@undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
@%:@undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
@%:@undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
@%:@undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:38: -1- _m4_warn([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
|
||||||
|
You should run autoupdate.], [m4/ltoptions.m4:203: AM_ENABLE_SHARED is expanded from...
|
||||||
|
configure.ac:38: the top level])
|
||||||
|
m4trace:configure.ac:39: -1- _m4_warn([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
|
||||||
|
You should run autoupdate.], [m4/ltoptions.m4:258: AM_DISABLE_STATIC is expanded from...
|
||||||
|
configure.ac:39: the top level])
|
||||||
|
m4trace:configure.ac:40: -1- LT_INIT([dlopen])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([LIBTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIBTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LIBTOOL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_CANONICAL_HOST
|
||||||
|
m4trace:configure.ac:40: -1- AC_CANONICAL_BUILD
|
||||||
|
m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([config.sub])
|
||||||
|
m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([config.guess])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([build], [$ac_cv_build])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^build$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([build_cpu], [$[1]])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_cpu])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^build_cpu$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([build_vendor], [$[2]])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_vendor])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^build_vendor$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([build_os])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_os])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^build_os$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([host], [$ac_cv_host])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^host$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([host_cpu], [$[1]])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_cpu])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^host_cpu$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([host_vendor], [$[2]])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_vendor])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^host_vendor$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([host_os])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_os])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^host_os$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([SED])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([SED])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^SED$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([FGREP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([FGREP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^FGREP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([GREP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([GREP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^GREP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([LD])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LD])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([ac_ct_DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DUMPBIN])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([NM])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([NM])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^NM$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LN_S])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LN_S$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([OBJDUMP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OBJDUMP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([OBJDUMP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OBJDUMP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([DLLTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DLLTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^DLLTOOL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([DLLTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DLLTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^DLLTOOL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([AR])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^AR$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([ac_ct_AR])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([ac_ct_AR])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_AR$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([STRIP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^STRIP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([RANLIB])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([RANLIB])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^RANLIB$])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([LT_OBJDIR])
|
||||||
|
m4trace:configure.ac:40: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LT_OBJDIR$])
|
||||||
|
m4trace:configure.ac:40: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
@%:@undef LT_OBJDIR])
|
||||||
|
m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CC])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([MANIFEST_TOOL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^MANIFEST_TOOL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([DSYMUTIL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DSYMUTIL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^DSYMUTIL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([NMEDIT])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([NMEDIT])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^NMEDIT$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([LIPO])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIPO])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LIPO$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([OTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OTOOL])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([OTOOL64])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OTOOL64])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL64$])
|
||||||
|
m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
@%:@undef HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.ac:40: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
|
||||||
|
m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CXX])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST([LD])
|
||||||
|
m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LD])
|
||||||
|
m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
|
||||||
|
m4trace:configure.ac:42: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: unrecognized option: $[1]
|
||||||
|
Try \`$[0] --help' for more information.], [m4/libtool.m4:609: LT_OUTPUT is expanded from...
|
||||||
|
configure.ac:42: the top level])
|
||||||
|
m4trace:configure.ac:42: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: unrecognized argument: $[1]
|
||||||
|
Try \`$[0] --help' for more information.], [m4/libtool.m4:609: LT_OUTPUT is expanded from...
|
||||||
|
configure.ac:42: the top level])
|
||||||
|
m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
|
||||||
|
m4trace:configure.ac:46: -1- AC_SUBST([SO_VERSION], ["0:0:0"])
|
||||||
|
m4trace:configure.ac:46: -1- AC_SUBST_TRACE([SO_VERSION])
|
||||||
|
m4trace:configure.ac:46: -1- m4_pattern_allow([^SO_VERSION$])
|
||||||
|
m4trace:configure.ac:48: -1- AC_SUBST([LIBTOOL_DEPS])
|
||||||
|
m4trace:configure.ac:48: -1- AC_SUBST_TRACE([LIBTOOL_DEPS])
|
||||||
|
m4trace:configure.ac:48: -1- m4_pattern_allow([^LIBTOOL_DEPS$])
|
||||||
|
m4trace:configure.ac:52: -1- AC_CONFIG_FILES([Makefile src/Makefile src/fonts/Makefile doc/Makefile test/Makefile])
|
||||||
|
m4trace:configure.ac:62: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBGPM])
|
||||||
|
m4trace:configure.ac:62: -1- m4_pattern_allow([^HAVE_LIBGPM$])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
|
||||||
|
m4trace:configure.ac:67: -1- m4_pattern_allow([^LIB@&t@OBJS$])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([LTLIBOBJS])
|
||||||
|
m4trace:configure.ac:67: -1- m4_pattern_allow([^LTLIBOBJS$])
|
||||||
|
m4trace:configure.ac:67: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST([am__EXEEXT_TRUE])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
|
||||||
|
m4trace:configure.ac:67: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST([am__EXEEXT_FALSE])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
|
||||||
|
m4trace:configure.ac:67: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
|
||||||
|
m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
|
||||||
|
m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([top_builddir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([top_build_prefix])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([srcdir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([abs_srcdir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([top_srcdir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([abs_top_srcdir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([builddir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([abs_builddir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([abs_top_builddir])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([INSTALL])
|
||||||
|
m4trace:configure.ac:67: -1- AC_SUBST_TRACE([MKDIR_P])
|
||||||
|
m4trace:configure.ac:67: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
|
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"--help"|"help")
|
||||||
|
echo "Usage: $0 {help|debug|release}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
"--debug"|"debug")
|
||||||
|
./configure CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -pedantic"
|
||||||
|
;;
|
||||||
|
"--profile"|"profile")
|
||||||
|
./configure CPPFLAGS="-DDEBUG" CXXFLAGS="-pg -O0 -DDEBUG -W -Wall -pedantic"
|
||||||
|
;;
|
||||||
|
"--release"|"release"|*)
|
||||||
|
./configure
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
make
|
||||||
|
# make install
|
|
@ -0,0 +1,67 @@
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# configure.ac - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_INIT([finalcut], [0.1.0])
|
||||||
|
AC_CONFIG_SRCDIR([src/fobject.cpp])
|
||||||
|
AM_INIT_AUTOMAKE
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_CXX
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS( \
|
||||||
|
linux/fb.h \
|
||||||
|
sys/io.h \
|
||||||
|
sys/kd.h \
|
||||||
|
sys/stat.h \
|
||||||
|
sys/time.h \
|
||||||
|
fcntl.h \
|
||||||
|
langinfo.h \
|
||||||
|
term.h \
|
||||||
|
termios.h \
|
||||||
|
unistd.h \
|
||||||
|
cmath \
|
||||||
|
csignal \
|
||||||
|
cstdlib \
|
||||||
|
list \
|
||||||
|
map \
|
||||||
|
queue \
|
||||||
|
vector)
|
||||||
|
|
||||||
|
# Checks for 'tgetent'
|
||||||
|
AC_SEARCH_LIBS([tgetent], [termcap tinfo curses ncurses])
|
||||||
|
|
||||||
|
# Checks for libtool
|
||||||
|
AM_ENABLE_SHARED
|
||||||
|
AM_DISABLE_STATIC
|
||||||
|
LT_INIT([dlopen])
|
||||||
|
LT_LANG([C++])
|
||||||
|
LT_OUTPUT
|
||||||
|
|
||||||
|
### This defines the version number of the installed .so files
|
||||||
|
### using libtool's versioning system.
|
||||||
|
AC_SUBST(SO_VERSION, ["0:0:0"])
|
||||||
|
|
||||||
|
AC_SUBST([LIBTOOL_DEPS])
|
||||||
|
|
||||||
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile src/Makefile src/fonts/Makefile doc/Makefile test/Makefile])
|
||||||
|
|
||||||
|
# use GPM (General Purpose Mouse)
|
||||||
|
AC_ARG_WITH([gpm],
|
||||||
|
[AS_HELP_STRING([--without-gpm], [Disable GPM mouse support])],
|
||||||
|
[],
|
||||||
|
[with_gpm=yes])
|
||||||
|
|
||||||
|
if test "x$with_gpm" != "xno"
|
||||||
|
then
|
||||||
|
AC_CHECK_LIB([gpm],
|
||||||
|
[main],
|
||||||
|
[AC_DEFINE(HAVE_LIBGPM) LIBS="$LIBS -lgpm"])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_OUTPUT
|
|
@ -0,0 +1,791 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2013-05-30.07; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2013 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 <http://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 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
|
@ -0,0 +1,23 @@
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
select(1, [0], NULL, NULL, {0, 100000}) = 1 (in [0], left {0, 99999})
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
|
||||||
|
read(0, "", 1023) = 0
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
select(1, [0], NULL, NULL, {0, 100000}) = 1 (in [0], left {0, 99998})
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
|
||||||
|
read(0, "", 1023) = 0
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
select(1, [0], NULL, NULL, {0, 100000}) = 1 (in [0], left {0, 99999})
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
|
||||||
|
read(0, "", 1023) = 0
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
select(1, [0], NULL, NULL, {0, 100000}) = 1 (in [0], left {0, 99999})
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
|
||||||
|
read(0, "", 1023) = 0
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
select(1, [0], NULL, NULL, {0, 100000}) = 1 (in [0], left {0, 99999})
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
|
||||||
|
read(0, "", 1023) = 0
|
||||||
|
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0
|
||||||
|
^CProcess 7036 detached
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
calendar-draft.png \
|
||||||
|
class-diagram.txt \
|
||||||
|
console_codes-manual.sh \
|
||||||
|
console_ioctl-manual.sh \
|
||||||
|
fileopen-dialog.png \
|
||||||
|
menu-draft.png \
|
||||||
|
ncurses.supp \
|
||||||
|
newfont1.png \
|
||||||
|
newfont2.png \
|
||||||
|
progress-bar.png \
|
||||||
|
readme.txt \
|
||||||
|
terminfo-capabilities.sh \
|
||||||
|
terminfo-manual.sh \
|
||||||
|
textview.png \
|
||||||
|
TODO \
|
||||||
|
vt100_line_drawing_graphics.png \
|
||||||
|
VTerm.txt \
|
||||||
|
xgraphics
|
||||||
|
|
||||||
|
doc_DATA = \
|
||||||
|
calendar-draft.png \
|
||||||
|
class-diagram.txt \
|
||||||
|
console_codes-manual.sh \
|
||||||
|
console_ioctl-manual.sh \
|
||||||
|
fileopen-dialog.png \
|
||||||
|
menu-draft.png \
|
||||||
|
ncurses.supp \
|
||||||
|
newfont1.png \
|
||||||
|
newfont2.png \
|
||||||
|
progress-bar.png \
|
||||||
|
readme.txt \
|
||||||
|
terminfo-capabilities.sh \
|
||||||
|
terminfo-manual.sh \
|
||||||
|
textview.png \
|
||||||
|
TODO \
|
||||||
|
vt100_line_drawing_graphics.png \
|
||||||
|
VTerm.txt \
|
||||||
|
xgraphics
|
||||||
|
|
|
@ -0,0 +1,526 @@
|
||||||
|
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2013 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@
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
|
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 = doc
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am TODO
|
||||||
|
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)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
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__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)$(docdir)"
|
||||||
|
DATA = $(doc_DATA)
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
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@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
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@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
SO_VERSION = @SO_VERSION@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
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@
|
||||||
|
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 = \
|
||||||
|
calendar-draft.png \
|
||||||
|
class-diagram.txt \
|
||||||
|
console_codes-manual.sh \
|
||||||
|
console_ioctl-manual.sh \
|
||||||
|
fileopen-dialog.png \
|
||||||
|
menu-draft.png \
|
||||||
|
ncurses.supp \
|
||||||
|
newfont1.png \
|
||||||
|
newfont2.png \
|
||||||
|
progress-bar.png \
|
||||||
|
readme.txt \
|
||||||
|
terminfo-capabilities.sh \
|
||||||
|
terminfo-manual.sh \
|
||||||
|
textview.png \
|
||||||
|
TODO \
|
||||||
|
vt100_line_drawing_graphics.png \
|
||||||
|
VTerm.txt \
|
||||||
|
xgraphics
|
||||||
|
|
||||||
|
doc_DATA = \
|
||||||
|
calendar-draft.png \
|
||||||
|
class-diagram.txt \
|
||||||
|
console_codes-manual.sh \
|
||||||
|
console_ioctl-manual.sh \
|
||||||
|
fileopen-dialog.png \
|
||||||
|
menu-draft.png \
|
||||||
|
ncurses.supp \
|
||||||
|
newfont1.png \
|
||||||
|
newfont2.png \
|
||||||
|
progress-bar.png \
|
||||||
|
readme.txt \
|
||||||
|
terminfo-capabilities.sh \
|
||||||
|
terminfo-manual.sh \
|
||||||
|
textview.png \
|
||||||
|
TODO \
|
||||||
|
vt100_line_drawing_graphics.png \
|
||||||
|
VTerm.txt \
|
||||||
|
xgraphics
|
||||||
|
|
||||||
|
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 doc/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu doc/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
install-docDATA: $(doc_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(docdir)" || 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)$(docdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-docDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
|
||||||
|
tags TAGS:
|
||||||
|
|
||||||
|
ctags CTAGS:
|
||||||
|
|
||||||
|
cscope cscopelist:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(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 $(DATA)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(docdir)"; 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-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-docDATA
|
||||||
|
|
||||||
|
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: uninstall-docDATA
|
||||||
|
|
||||||
|
.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-docDATA 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 uninstall-docDATA
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -0,0 +1,22 @@
|
||||||
|
Bugs
|
||||||
|
~~~~
|
||||||
|
-
|
||||||
|
|
||||||
|
Missing Features
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
- application menu
|
||||||
|
- FMenuBar()
|
||||||
|
- FPopupMenu()
|
||||||
|
|
||||||
|
- list/tree view with Columns
|
||||||
|
- FListView()
|
||||||
|
---------------------------------------
|
||||||
|
/
|
||||||
|
├──► bin
|
||||||
|
├──▼ usr
|
||||||
|
│ ├──► bin
|
||||||
|
│ ├──► lib
|
||||||
|
│ └──► local
|
||||||
|
└──► tmp
|
||||||
|
---------------------------------------
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
print(...)
|
||||||
|
printf(...)
|
||||||
|
│
|
||||||
|
│ ╔═════════════════════════[ vterm ]═════════════════════════╗
|
||||||
|
│ ║createVTerm() ║
|
||||||
|
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
||||||
|
│ ║ ║
|
||||||
|
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
||||||
|
│ ║ ║
|
||||||
|
│ ║ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
||||||
|
│ ║ ║
|
||||||
|
│ ┌───────╨─────[ vwin ]─────────────┐ ║
|
||||||
|
│ │createArea(area) │ ║
|
||||||
|
│ │ │ ║
|
||||||
|
│ │ │ ║
|
||||||
|
└───┼─────────────► ──────► updateVTerm(area) ────► ║
|
||||||
|
│ │ ║
|
||||||
|
│ putArea(x,y,area) ║
|
||||||
|
│ ────────────────────► ║
|
||||||
|
│ getArea(x,y,area) ║
|
||||||
|
│ ◄──────────────────── ║
|
||||||
|
│ │ ║
|
||||||
|
│ │ ║
|
||||||
|
│ resizeArea(area)│ ║
|
||||||
|
└───────╥──────────────────────────┘ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ │ resizeVTerm()║
|
||||||
|
╚═══▼═══════════════════════════════════════════════════════╝
|
||||||
|
│
|
||||||
|
│ putVTerm() ┌───────────────┐
|
||||||
|
└───────────────────►│ output_buffer │
|
||||||
|
updateTerminal() └───────┬───────┘
|
||||||
|
│
|
||||||
|
│ flush_out()
|
||||||
|
│ +
|
||||||
|
│ Fputchar(char)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||||
|
▌ ▐
|
||||||
|
▌ screen ▐
|
||||||
|
▌ ───────────── ▐
|
||||||
|
▌ real terminal ▐
|
||||||
|
▌ ▐
|
||||||
|
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
||||||
|
███
|
||||||
|
▀▀▀▀▀▀▀▀▀
|
||||||
|
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,85 @@
|
||||||
|
══════════════════════════════════════════════════════════════════════════════
|
||||||
|
Class digramm
|
||||||
|
══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
┌───────────┐
|
||||||
|
┌────┤ FKeyEvent │
|
||||||
|
│ └───────────┘
|
||||||
|
│ ┌─────────────┐
|
||||||
|
├────┤ FMouseEvent │
|
||||||
|
│ └─────────────┘
|
||||||
|
│ ┌─────────────┐
|
||||||
|
├────┤ FWheelEvent │
|
||||||
|
│ └─────────────┘
|
||||||
|
│ ┌─────────────┐
|
||||||
|
├────┤ FFocusEvent │
|
||||||
|
│ └─────────────┘
|
||||||
|
│ ┌─────────────┐
|
||||||
|
┌────────┐ ├────┤ FAccelEvent │
|
||||||
|
│ FEvent │◄─┤ └─────────────┘
|
||||||
|
└────┬───┘ │ ┌──────────────┐
|
||||||
|
│1 ├────┤ FResizeEvent │
|
||||||
|
│ │ └──────────────┘
|
||||||
|
│ │ ┌────────────┐
|
||||||
|
│ ├────┤ FShowEvent │
|
||||||
|
│ │ └────────────┘
|
||||||
|
│ │ ┌────────────┐
|
||||||
|
│ ├────┤ FHideEvent │
|
||||||
|
│ │ └────────────┘
|
||||||
|
│ │ ┌─────────────┐
|
||||||
|
│ ├────┤ FCloseEvent │
|
||||||
|
│ │ └─────────────┘
|
||||||
|
│ │ ┌─────────────┐
|
||||||
|
│ └────┤ FTimerEvent │
|
||||||
|
│ └─────────────┘
|
||||||
|
│
|
||||||
|
│ ┌──────────────┐
|
||||||
|
│ ┌────┤ FApplication │
|
||||||
|
│ │ └──────────────┘
|
||||||
|
│ │ ┌─────────┐1
|
||||||
|
│ ├────┤ FButton ├-----------------------------.
|
||||||
|
│ │ └─────────┘ │
|
||||||
|
│ │ ┌────────┐1 │
|
||||||
|
│ ├────┤ FLabel ├------------------------------┤
|
||||||
|
│ │ └────────┘ │
|
||||||
|
│ │ ┌───────────┐1 │
|
||||||
|
│ ├────┤ FLineEdit ├---------------------------┤
|
||||||
|
│ │ └───────────┘ ┌──────────────┐1 │
|
||||||
|
│ │ ┌───────────────┐ ┌──┤ FRadioButton ├--┤
|
||||||
|
│1 ├────┤ FToggleButton │◄─┤ └──────────────┘ │
|
||||||
|
┌─────────┐ ┌─────┴───┐ │ └───────────────┘ │ ┌───────────┐1 │
|
||||||
|
│ FObject │◄─┬┤ FWidget │◄─┤ ┌──────────────┐ └──┤ FCheckBox ├-----┤
|
||||||
|
└─────────┘ │└───┬─┬───┘ ├────┤ FButtonGroup │ └───────────┘ │
|
||||||
|
│ │1│1 │ └──────────────┘ │
|
||||||
|
┌───────┐ │ │ │ │ ┌──────────────┐ │
|
||||||
|
│ FTerm │◄─┘ │ │ ├────┤ FProgressbar │ │ *┌─────────┐
|
||||||
|
└──┬─┬──┘ │ │ │ └──────────────┘ ├---┤ FString │
|
||||||
|
│1│1 │ │ │ ┌────────────┐ │ └─────────┘
|
||||||
|
│ └----------┤ │ ├────┤ FScrollbar │ │
|
||||||
|
│* │ │ │ └────────────┘ │
|
||||||
|
┌────┴──────┐ │ │ │ ┌───────────┐1 │
|
||||||
|
│ FOptiMove │ │ │ ├────┤ FTextView ├---------------------------┤
|
||||||
|
└───────────┘ │ │ │ └───────────┘ │
|
||||||
|
│ │ │ ┌──────────┐1 *┌──────────────┐1 │
|
||||||
|
│ │ ├────┤ FListBox ├-------┤ FListBoxItem ├-----┤
|
||||||
|
│ │ │ └──────────┘ └──────────────┘ │
|
||||||
|
│ │ │ ┌────────────┐1 *┌────────────┐1 │
|
||||||
|
│ │ ├────┤ FStatusBar ├-----┤ FStatusKey ├-------┤
|
||||||
|
│ │ │ └────┬───────┘ └────────────┘ │
|
||||||
|
│ │ │ 1└----------------------------------┤
|
||||||
|
│ │ │ ┌─────────────┐1 │
|
||||||
|
│ │ ┌───┴─────┐ ┌─────────┐ ┌──┤ FFileDialog ├----┤
|
||||||
|
│ │ │ FWindow │◄─┤ FDialog │◄──┤ └─────────────┘ │
|
||||||
|
│ │ └─────────┘ └────┬────┘ │ ┌─────────────┐1 │
|
||||||
|
│ │ │ └──┤ FMessageBox ├----┤
|
||||||
|
│ │ │ └─────────────┘ │
|
||||||
|
│ │ 1└------------------------------┤
|
||||||
|
│ │ │
|
||||||
|
│ └---------------------------------------------------'
|
||||||
|
│ *┌────────┐
|
||||||
|
├---┤ FPoint │
|
||||||
|
│ └────────┘
|
||||||
|
│ *┌───────┐
|
||||||
|
└---┤ FRect │
|
||||||
|
└───────┘
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# set the xterm window title
|
||||||
|
TERMTITLE="man 4 console_codes"
|
||||||
|
echo -ne "\033]0;${TERMTITLE}\007"
|
||||||
|
|
||||||
|
man 4 console_codes
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# set the xterm window title
|
||||||
|
TERMTITLE="man 4 console_ioctl"
|
||||||
|
echo -ne "\033]0;${TERMTITLE}\007"
|
||||||
|
|
||||||
|
man 4 console_ioctl
|
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,205 @@
|
||||||
|
# $Id: ncurses.supp,v 1.7 2008/09/20 18:43:42 tom Exp $
|
||||||
|
##############################################################################
|
||||||
|
# Copyright (c) 2008 Free Software Foundation, Inc. #
|
||||||
|
# #
|
||||||
|
# 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, distribute #
|
||||||
|
# with modifications, 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 ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
|
||||||
|
# DEALINGS IN THE SOFTWARE. #
|
||||||
|
# #
|
||||||
|
# Except as contained in this notice, the name(s) of the above copyright #
|
||||||
|
# holders shall not be used in advertising or otherwise to promote the sale, #
|
||||||
|
# use or other dealings in this Software without prior written #
|
||||||
|
# authorization. #
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# This is a warning-suppression file for valgrind and ncurses.
|
||||||
|
#
|
||||||
|
# ncurses can also be configured using the --disable-leaks option, which
|
||||||
|
# allows an application to call _nc_freeall() or _nc_free_and_exit(), to
|
||||||
|
# free all of ncurses' "permanent" memory.
|
||||||
|
#
|
||||||
|
# Some of these leaks can be freed if the application does its own cleanup,
|
||||||
|
# for example:
|
||||||
|
# delscreen(SP);
|
||||||
|
# del_curterm(cur_term);
|
||||||
|
# However, few applications do this.
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_add_to_try
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_add_to_try
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_home_terminfo
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_home_terminfo
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_init_wacs
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_init_wacs
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_keyname
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_keyname
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_keyname_2
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
fun:strdup
|
||||||
|
fun:_nc_keyname
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_printf_string
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_printf_string
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_read_termtype
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
fun:_nc_read_file_entry
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_read_termtype_2
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
fun:_nc_read_file_entry
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_scroll_optimize
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_hash_map
|
||||||
|
fun:_nc_scroll_optimize
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_scroll_optimize_2
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_scroll_optimize
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_setupscreen
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupscreen
|
||||||
|
fun:newterm
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_setupscreen_2
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:newwin
|
||||||
|
fun:_nc_setupscreen
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_setupterm_1
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
fun:strdup
|
||||||
|
fun:_nc_setupterm
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_setupterm
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupterm
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_setupscreen_3
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew
|
||||||
|
fun:newwin
|
||||||
|
fun:_nc_setupscreen
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_set_buffer
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_set_buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_tparm_analyze
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_tparm_analyze
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak__nc_trace_alloc
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:*alloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_trace_alloc
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak_start_color
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:calloc
|
||||||
|
fun:start_color
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak_tparm
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:tparm
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ncurses_leak_tparam_internal
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:get_space
|
||||||
|
fun:save_number
|
||||||
|
fun:tparam_internal
|
||||||
|
}
|
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 737 B |
After Width: | Height: | Size: 788 B |
|
@ -0,0 +1,11 @@
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
The Final Cut
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The Final Cut is a programming library and widget toolkit that creates
|
||||||
|
a text-based user interface with full mouse support. It supports the
|
||||||
|
controlled handling of multiple simultaneous windows.
|
||||||
|
The C++ class design is inspired by the Qt framework. It offers common
|
||||||
|
user interface elements like dialog windows, push buttons, check boxes,
|
||||||
|
radio buttons, input lines, list boxes, status bars and so on.
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# set the xterm window title
|
||||||
|
TERMTITLE="infocmp: $TERM"
|
||||||
|
echo -ne "\033]0;${TERMTITLE}\007"
|
||||||
|
|
||||||
|
infocmp | less
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# set the xterm window title
|
||||||
|
TERMTITLE="man 5 terminfo"
|
||||||
|
echo -ne "\033]0;${TERMTITLE}\007"
|
||||||
|
|
||||||
|
man 5 terminfo
|
||||||
|
|
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,24 @@
|
||||||
|
Unicode Box Drawing graphics
|
||||||
|
┌─┬─┐ ╭─┬─╮
|
||||||
|
├─┼─┤ ├─┼─┤
|
||||||
|
│ │ │ │ │ │ │││
|
||||||
|
└─┴─┘ ╰─┴─╯ ╎┆┊
|
||||||
|
┏━┳━┓ ╔═╦═╗
|
||||||
|
┣━╋━┫ ╠═╬═╣
|
||||||
|
┃ ┃ ┃ ║ ║ ║ ┃┃┃ ║
|
||||||
|
┗━┻━┛ ╚═╩═╝ ╏┇┋ ◆
|
||||||
|
|
||||||
|
VT100 line drawing graphics
|
||||||
|
(used by xterm, rxvt, ...)
|
||||||
|
codes `abcdefghijklmnopqrstuvwxyz{|}~
|
||||||
|
with G1 )0`abcdefghijklmnopqrstuvwxyz{|}~
|
||||||
|
with G0 (0`abcdefghijklmnopqrstuvwxyz{|}~(B
|
||||||
|
|
||||||
|
VGA graphics, switching to "active codepage"
|
||||||
|
(used by cygwin console, Linux console)
|
||||||
|
[11m
|
||||||
|
8x <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 9x <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
Ax <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Bx <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
Cx <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Dx <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
Ex <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fx <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
[10m
|
|
@ -0,0 +1,527 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2011-11-20.07; # 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.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
if test -z "$doit"; then
|
||||||
|
doit_exec=exec
|
||||||
|
else
|
||||||
|
doit_exec=$doit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 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_glob='?'
|
||||||
|
initialize_posix_glob='
|
||||||
|
test "$posix_glob" != "?" || {
|
||||||
|
if (set -f) 2>/dev/null; then
|
||||||
|
posix_glob=
|
||||||
|
else
|
||||||
|
posix_glob=:
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
'
|
||||||
|
|
||||||
|
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
|
||||||
|
no_target_directory=
|
||||||
|
|
||||||
|
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
|
||||||
|
*' '* | *' '* | *'
|
||||||
|
'* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t) dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) no_target_directory=true;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
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
|
||||||
|
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; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test -n "$no_target_directory"; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||||
|
dstdir=`
|
||||||
|
(dirname "$dst") 2>/dev/null ||
|
||||||
|
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$dst" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$dst" : 'X\(//\)$' \| \
|
||||||
|
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
echo X"$dst" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'
|
||||||
|
`
|
||||||
|
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
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.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 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
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob"
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
$posix_glob set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
$posix_glob 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=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_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` &&
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob" &&
|
||||||
|
$posix_glob set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
$posix_glob 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 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
|
@ -0,0 +1,384 @@
|
||||||
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004, 2005, 2007, 2008, 2009 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 7 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_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_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=default])
|
||||||
|
|
||||||
|
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
||||||
|
|
||||||
|
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||||
|
])# _LT_WITH_PIC
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||||
|
|
||||||
|
# Old name:
|
||||||
|
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||||
|
put the `pic-only' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||||
|
|
||||||
|
## ----------------- ##
|
||||||
|
## LTDL_INIT Options ##
|
||||||
|
## ----------------- ##
|
||||||
|
|
||||||
|
m4_define([_LTDL_MODE], [])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||||
|
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||||
|
[m4_define([_LTDL_MODE], [recursive])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||||
|
[m4_define([_LTDL_MODE], [subproject])])
|
||||||
|
|
||||||
|
m4_define([_LTDL_TYPE], [])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||||
|
[m4_define([_LTDL_TYPE], [installable])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||||
|
[m4_define([_LTDL_TYPE], [convenience])])
|
|
@ -0,0 +1,123 @@
|
||||||
|
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||||
|
# Written by Gary V. Vaughan, 2004
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 6 ltsugar.m4
|
||||||
|
|
||||||
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||||
|
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_join(SEP, ARG1, [ARG2...])
|
||||||
|
# -----------------------------
|
||||||
|
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||||
|
# associated separator.
|
||||||
|
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||||
|
# versions in m4sugar had bugs.
|
||||||
|
m4_define([lt_join],
|
||||||
|
[m4_if([$#], [1], [],
|
||||||
|
[$#], [2], [[$2]],
|
||||||
|
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||||
|
m4_define([_lt_join],
|
||||||
|
[m4_if([$#$2], [2], [],
|
||||||
|
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_car(LIST)
|
||||||
|
# lt_cdr(LIST)
|
||||||
|
# ------------
|
||||||
|
# Manipulate m4 lists.
|
||||||
|
# These macros are necessary as long as will still need to support
|
||||||
|
# Autoconf-2.59 which quotes differently.
|
||||||
|
m4_define([lt_car], [[$1]])
|
||||||
|
m4_define([lt_cdr],
|
||||||
|
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||||
|
[$#], 1, [],
|
||||||
|
[m4_dquote(m4_shift($@))])])
|
||||||
|
m4_define([lt_unquote], $1)
|
||||||
|
|
||||||
|
|
||||||
|
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||||
|
# ------------------------------------------
|
||||||
|
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
|
||||||
|
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||||
|
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||||
|
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||||
|
# than defined and empty).
|
||||||
|
#
|
||||||
|
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||||
|
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||||
|
m4_define([lt_append],
|
||||||
|
[m4_define([$1],
|
||||||
|
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# Produce a SEP delimited list of all paired combinations of elements of
|
||||||
|
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||||
|
# has the form PREFIXmINFIXSUFFIXn.
|
||||||
|
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||||
|
m4_define([lt_combine],
|
||||||
|
[m4_if(m4_eval([$# > 3]), [1],
|
||||||
|
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||||
|
[[m4_foreach([_Lt_prefix], [$2],
|
||||||
|
[m4_foreach([_Lt_suffix],
|
||||||
|
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||||
|
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||||
|
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||||
|
m4_define([lt_if_append_uniq],
|
||||||
|
[m4_ifdef([$1],
|
||||||
|
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||||
|
[lt_append([$1], [$2], [$3])$4],
|
||||||
|
[$5])],
|
||||||
|
[lt_append([$1], [$2], [$3])$4])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_add(DICT, KEY, VALUE)
|
||||||
|
# -----------------------------
|
||||||
|
m4_define([lt_dict_add],
|
||||||
|
[m4_define([$1($2)], [$3])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||||
|
# --------------------------------------------
|
||||||
|
m4_define([lt_dict_add_subkey],
|
||||||
|
[m4_define([$1($2:$3)], [$4])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||||
|
# ----------------------------------
|
||||||
|
m4_define([lt_dict_fetch],
|
||||||
|
[m4_ifval([$3],
|
||||||
|
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||||
|
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
m4_define([lt_if_dict_fetch],
|
||||||
|
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||||
|
[$5],
|
||||||
|
[$6])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
m4_define([lt_dict_filter],
|
||||||
|
[m4_if([$5], [], [],
|
||||||
|
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||||
|
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||||
|
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||||
|
])
|
|
@ -0,0 +1,23 @@
|
||||||
|
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004 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 3337 ltversion.m4
|
||||||
|
# This file is part of GNU Libtool
|
||||||
|
|
||||||
|
m4_define([LT_PACKAGE_VERSION], [2.4.2])
|
||||||
|
m4_define([LT_PACKAGE_REVISION], [1.3337])
|
||||||
|
|
||||||
|
AC_DEFUN([LTVERSION_VERSION],
|
||||||
|
[macro_version='2.4.2'
|
||||||
|
macro_revision='1.3337'
|
||||||
|
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||||
|
_LT_DECL(, macro_revision, 0)
|
||||||
|
])
|
|
@ -0,0 +1,98 @@
|
||||||
|
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||||
|
# Written by Scott James Remnant, 2004.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 5 lt~obsolete.m4
|
||||||
|
|
||||||
|
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||||
|
#
|
||||||
|
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
|
||||||
|
# which have later been changed to m4_define as they aren't part of the
|
||||||
|
# exported API, or moved to Autoconf or Automake where they belong.
|
||||||
|
#
|
||||||
|
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||||
|
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||||
|
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||||
|
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||||
|
# and doesn't know about Autoconf macros at all.)
|
||||||
|
#
|
||||||
|
# So we provide this file, which has a silly filename so it's always
|
||||||
|
# included after everything else. This provides aclocal with the
|
||||||
|
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||||
|
# because those macros already exist, or will be overwritten later.
|
||||||
|
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||||
|
#
|
||||||
|
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||||
|
# Yes, that means every name once taken will need to remain here until
|
||||||
|
# we give up compatibility with versions before 1.7, at which point
|
||||||
|
# we need to keep only those names which we still refer to.
|
||||||
|
|
||||||
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||||
|
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||||
|
|
||||||
|
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||||
|
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||||
|
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||||
|
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||||
|
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||||
|
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||||
|
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||||
|
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||||
|
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||||
|
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||||
|
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||||
|
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||||
|
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||||
|
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||||
|
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||||
|
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||||
|
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||||
|
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||||
|
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||||
|
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||||
|
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||||
|
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||||
|
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||||
|
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||||
|
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||||
|
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||||
|
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||||
|
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||||
|
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||||
|
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||||
|
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||||
|
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||||
|
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
|
@ -0,0 +1,215 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Common wrapper for a few potentially missing GNU programs.
|
||||||
|
|
||||||
|
scriptversion=2012-06-26.16; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1996-2013 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 <http://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=http://www.perl.org/
|
||||||
|
flex_URL=http://flex.sourceforge.net/
|
||||||
|
gnu_software_URL=http://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 'automa4te' 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 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]
|
||||||
|
then
|
||||||
|
eval cppcheck --enable=all "$@"
|
||||||
|
else
|
||||||
|
eval cppcheck --enable=all ../src/ ../test/
|
||||||
|
fi
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
LD_PRELOAD="/usr/lib64/libprofiler.so.0" CPUPROFILE=../text/ui.prof ../test/ui
|
||||||
|
pprof --gv ../test/ui ../test/ui.prof
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
hte ../test/.libs/ui
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Protokoliert Funktionsaufrufe in dynamisch hinzugelinkten Bibliotheken
|
||||||
|
|
||||||
|
PROG="ui"
|
||||||
|
|
||||||
|
ltrace -o ./$PROG.ltrace ../test/.libs/$PROG
|
||||||
|
less ./$PROG.ltrace
|
||||||
|
rm -f ./$PROG.ltrace
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DIR="$PWD"
|
||||||
|
cd ../src
|
||||||
|
make clean
|
||||||
|
make profile
|
||||||
|
./finalcut
|
||||||
|
gprof ./finalcut >./profile.txt
|
||||||
|
rm ./gmon.out
|
||||||
|
less ./profile.txt
|
||||||
|
rm ./profile.txt
|
||||||
|
cd "$DIR"
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
find ../src/ \
|
||||||
|
../test/ \
|
||||||
|
-regextype posix-egrep \
|
||||||
|
-regex ".*\.(cpp|h)$" \
|
||||||
|
-exec sed -i 's/ *$//' "{}" \;
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
xfd -center -columns 16 -fn -misc-8x16graph-medium-r-normal--16-160-75-75-C-80-iso8859-1
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
showconsolefont
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
strace -c ../test/.libs/ui
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Findet uninitialisiertem Speicher, Pufferüberläufe, Speicherlecks und entdeckt Speicherzugriffe auf freigegebene Bereiche
|
||||||
|
|
||||||
|
LD_LIBRARY_PATH=../src/.libs/ valgrind --tool=memcheck --suppressions=../doc/ncurses.supp --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --track-origins=yes --log-file=./valgrind.txt ../test/.libs/ui "$@"
|
||||||
|
less ./valgrind.txt
|
||||||
|
rm -f ./valgrind.txt
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
luit -encoding POSIX ../test/ui
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = fonts
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -Wall -Werror
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libfinal.la
|
||||||
|
|
||||||
|
libfinal_la_SOURCES = \
|
||||||
|
fstring.cpp \
|
||||||
|
fpoint.cpp \
|
||||||
|
frect.cpp \
|
||||||
|
fscrollbar.cpp \
|
||||||
|
fprogressbar.cpp \
|
||||||
|
flineedit.cpp \
|
||||||
|
fbutton.cpp \
|
||||||
|
fbuttongroup.cpp \
|
||||||
|
ftogglebutton.cpp \
|
||||||
|
fradiobutton.cpp \
|
||||||
|
fcheckbox.cpp \
|
||||||
|
flabel.cpp \
|
||||||
|
flistbox.cpp \
|
||||||
|
fdialog.cpp \
|
||||||
|
fwindow.cpp \
|
||||||
|
fmessagebox.cpp \
|
||||||
|
ffiledialog.cpp \
|
||||||
|
ftextview.cpp \
|
||||||
|
fstatusbar.cpp \
|
||||||
|
fterm.cpp \
|
||||||
|
fevent.cpp \
|
||||||
|
foptimove.cpp \
|
||||||
|
fapp.cpp \
|
||||||
|
fwidget.cpp \
|
||||||
|
fobject.cpp
|
||||||
|
|
||||||
|
libfinal_la_LDFLAGS = -version-info @SO_VERSION@
|
||||||
|
|
||||||
|
finalcutincludedir = $(includedir)/final
|
||||||
|
|
||||||
|
finalcutinclude_HEADERS = \
|
||||||
|
fapp.h \
|
||||||
|
fbutton.h \
|
||||||
|
fbuttongroup.h \
|
||||||
|
fcharmap.h \
|
||||||
|
fcheckbox.h \
|
||||||
|
fdialog.h \
|
||||||
|
fenum.h \
|
||||||
|
fevent.h \
|
||||||
|
ffiledialog.h \
|
||||||
|
final.h \
|
||||||
|
fkey_map.h \
|
||||||
|
flabel.h \
|
||||||
|
flineedit.h \
|
||||||
|
flistbox.h \
|
||||||
|
fmessagebox.h \
|
||||||
|
fobject.h \
|
||||||
|
foptimove.h \
|
||||||
|
fpoint.h \
|
||||||
|
fprogressbar.h \
|
||||||
|
fradiobutton.h \
|
||||||
|
frect.h \
|
||||||
|
fscrollbar.h \
|
||||||
|
fstatusbar.h \
|
||||||
|
fstring.h \
|
||||||
|
ftcap_map.h \
|
||||||
|
fterm.h \
|
||||||
|
ftextview.h \
|
||||||
|
ftogglebutton.h \
|
||||||
|
fwidget.h \
|
||||||
|
fwindow.h
|
||||||
|
|
||||||
|
#uninstall:
|
||||||
|
# rm -R -f $(includedir)/final
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Makefile for Final Cut
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# This is where make install will install the library
|
||||||
|
LIBDIR = /usr/local/lib64
|
||||||
|
INCLUDEDIR = /usr/local/include/final
|
||||||
|
INCLUDE_HEADERS = fapp.h \
|
||||||
|
fbuttongroup.h \
|
||||||
|
fbutton.h \
|
||||||
|
fcheckbox.h \
|
||||||
|
fdialog.h \
|
||||||
|
fevent.h \
|
||||||
|
ffiledialog.h \
|
||||||
|
final.h \
|
||||||
|
flabel.h \
|
||||||
|
flineedit.h \
|
||||||
|
flistbox.h \
|
||||||
|
fmessagebox.h \
|
||||||
|
fobject.h \
|
||||||
|
foptimove.h \
|
||||||
|
fpoint.h \
|
||||||
|
fprogressbar.h \
|
||||||
|
fradiobutton.h \
|
||||||
|
frect.h \
|
||||||
|
fscrollbar.h \
|
||||||
|
fstatusbar.h \
|
||||||
|
fstring.h \
|
||||||
|
fterm.h \
|
||||||
|
ftextview.h \
|
||||||
|
ftogglebutton.h \
|
||||||
|
fwidget.h \
|
||||||
|
fwindow.h
|
||||||
|
|
||||||
|
# compiler parameter
|
||||||
|
CXX = clang++
|
||||||
|
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG) $(GPM) -march=x86-64 -frtti -fexceptions
|
||||||
|
MAKEFILE = -f Makefile.clang
|
||||||
|
LDFLAGS = $(TERMCAP) -lgpm
|
||||||
|
INCLUDES = -I./
|
||||||
|
GPM = -D HAVE_LIBGPM
|
||||||
|
RM = rm -f
|
||||||
|
LIB = libfinal.so
|
||||||
|
OBJS = fstring.o \
|
||||||
|
fpoint.o \
|
||||||
|
frect.o \
|
||||||
|
fscrollbar.o \
|
||||||
|
fprogressbar.o \
|
||||||
|
flineedit.o \
|
||||||
|
fbutton.o \
|
||||||
|
fbuttongroup.o \
|
||||||
|
ftogglebutton.o \
|
||||||
|
fradiobutton.o \
|
||||||
|
fcheckbox.o \
|
||||||
|
flabel.o \
|
||||||
|
flistbox.o \
|
||||||
|
fdialog.o \
|
||||||
|
fwindow.o \
|
||||||
|
fmessagebox.o \
|
||||||
|
ffiledialog.o \
|
||||||
|
ftextview.o \
|
||||||
|
fstatusbar.o \
|
||||||
|
fterm.o \
|
||||||
|
fevent.o \
|
||||||
|
foptimove.o \
|
||||||
|
fapp.o \
|
||||||
|
fwidget.o \
|
||||||
|
fobject.o
|
||||||
|
|
||||||
|
TERMCAP := $(shell test -n "$$(ldd {/usr,}/lib64/libncursesw.so.5 2>/dev/null | grep libtinfo)" && echo "-ltinfo" || echo "-lncurses")
|
||||||
|
|
||||||
|
ifdef DEBUG
|
||||||
|
OPTIMIZE = -O0
|
||||||
|
else
|
||||||
|
OPTIMIZE = -O2
|
||||||
|
endif
|
||||||
|
|
||||||
|
.SUFFIXES: .cpp
|
||||||
|
|
||||||
|
# $@ = name of the targets
|
||||||
|
# $< = the first dependency
|
||||||
|
.cpp.o:
|
||||||
|
$(CXX) -c $(CCXFLAGS) -fpic -o $@ $<
|
||||||
|
|
||||||
|
all: dep $(OBJS)
|
||||||
|
$(CXX) $(CCXFLAGS) $(INCLUDES) $(LDFLAGS) -shared -Wl,-soname,$(LIB).0 -o $(LIB).0.1.0 $(OBJS)
|
||||||
|
ln -s -f $(LIB).0.1.0 libfinal.so.0
|
||||||
|
ln -s -f $(LIB).0 libfinal.so
|
||||||
|
|
||||||
|
$(LIB): all
|
||||||
|
|
||||||
|
debug:
|
||||||
|
$(MAKE) $(MAKEFILE) DEBUG="-g -D DEBUG -W -Wall -Weverything -Wpadded -pedantic"
|
||||||
|
|
||||||
|
profile:
|
||||||
|
$(MAKE) $(MAKEFILE) PROFILE="-pg"
|
||||||
|
|
||||||
|
install: $(LIB)
|
||||||
|
mkdir -p $(LIBDIR)
|
||||||
|
install -c $(LIB).0.1.0 $(LIBDIR)/$(LIB).0.1.0
|
||||||
|
ln -s -f $(LIB).0.1.0 $(LIBDIR)/libfinal.so.0
|
||||||
|
ln -s -f $(LIB).0 $(LIBDIR)/libfinal.so
|
||||||
|
ldconfig
|
||||||
|
mkdir -p $(INCLUDEDIR)
|
||||||
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
||||||
|
do \
|
||||||
|
install -m 644 $$h $(INCLUDEDIR)/$$h; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall: $(INCLUDE_HEADERS)
|
||||||
|
$(RM) $(LIBDIR)/$(LIB).0.1.0 $(LIBDIR)/libfinal.so.0 $(LIBDIR)/libfinal.so
|
||||||
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
||||||
|
do \
|
||||||
|
$(RM) $(INCLUDEDIR)/$$h; \
|
||||||
|
done
|
||||||
|
rmdir $(INCLUDEDIR)
|
||||||
|
|
||||||
|
.PHONY: clean dep
|
||||||
|
clean:
|
||||||
|
$(RM) $(LIB)* $(OBJS) .depend *.gch *.plist *~
|
||||||
|
|
||||||
|
dep:
|
||||||
|
$(CXX) -MM *.cpp >.depend
|
||||||
|
|
||||||
|
#
|
||||||
|
# include .depend if it exists
|
||||||
|
#
|
||||||
|
|
||||||
|
-include .depend
|
|
@ -0,0 +1,129 @@
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Makefile for Final Cut
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# This is where make install will install the library
|
||||||
|
LIBDIR = /usr/local/lib64
|
||||||
|
INCLUDEDIR = /usr/local/include/final
|
||||||
|
INCLUDE_HEADERS = fapp.h \
|
||||||
|
fbuttongroup.h \
|
||||||
|
fbutton.h \
|
||||||
|
fcheckbox.h \
|
||||||
|
fdialog.h \
|
||||||
|
fevent.h \
|
||||||
|
ffiledialog.h \
|
||||||
|
final.h \
|
||||||
|
flabel.h \
|
||||||
|
flineedit.h \
|
||||||
|
flistbox.h \
|
||||||
|
fmessagebox.h \
|
||||||
|
fobject.h \
|
||||||
|
foptimove.h \
|
||||||
|
fpoint.h \
|
||||||
|
fprogressbar.h \
|
||||||
|
fradiobutton.h \
|
||||||
|
frect.h \
|
||||||
|
fscrollbar.h \
|
||||||
|
fstatusbar.h \
|
||||||
|
fstring.h \
|
||||||
|
fterm.h \
|
||||||
|
ftextview.h \
|
||||||
|
ftogglebutton.h \
|
||||||
|
fwidget.h \
|
||||||
|
fwindow.h
|
||||||
|
|
||||||
|
# compiler parameter
|
||||||
|
CXX = g++
|
||||||
|
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG) $(GPM) -march=x86-64 -frtti -fexceptions
|
||||||
|
MAKEFILE = -f Makefile.gcc
|
||||||
|
LDFLAGS = $(TERMCAP) -lgpm
|
||||||
|
INCLUDES = -I./
|
||||||
|
GPM = -D HAVE_LIBGPM
|
||||||
|
RM = rm -f
|
||||||
|
LIB = libfinal.so
|
||||||
|
OBJS = fstring.o \
|
||||||
|
fpoint.o \
|
||||||
|
frect.o \
|
||||||
|
fscrollbar.o \
|
||||||
|
fprogressbar.o \
|
||||||
|
flineedit.o \
|
||||||
|
fbutton.o \
|
||||||
|
fbuttongroup.o \
|
||||||
|
ftogglebutton.o \
|
||||||
|
fradiobutton.o \
|
||||||
|
fcheckbox.o \
|
||||||
|
flabel.o \
|
||||||
|
flistbox.o \
|
||||||
|
fdialog.o \
|
||||||
|
fwindow.o \
|
||||||
|
fmessagebox.o \
|
||||||
|
ffiledialog.o \
|
||||||
|
ftextview.o \
|
||||||
|
fstatusbar.o \
|
||||||
|
fterm.o \
|
||||||
|
fevent.o \
|
||||||
|
foptimove.o \
|
||||||
|
fapp.o \
|
||||||
|
fwidget.o \
|
||||||
|
fobject.o
|
||||||
|
|
||||||
|
TERMCAP := $(shell test -n "$$(ldd {/usr,}/lib64/libncursesw.so.5 2>/dev/null | grep libtinfo)" && echo "-ltinfo" || echo "-lncurses")
|
||||||
|
|
||||||
|
ifdef DEBUG
|
||||||
|
OPTIMIZE = -O0
|
||||||
|
else
|
||||||
|
OPTIMIZE = -O2
|
||||||
|
endif
|
||||||
|
|
||||||
|
.SUFFIXES: .cpp
|
||||||
|
|
||||||
|
# $@ = name of the targets
|
||||||
|
# $< = the first dependency
|
||||||
|
.cpp.o:
|
||||||
|
$(CXX) -c $(CCXFLAGS) -fpic -o $@ $<
|
||||||
|
|
||||||
|
all: dep $(OBJS)
|
||||||
|
$(CXX) $(CCXFLAGS) $(INCLUDES) $(LDFLAGS) -shared -Wl,-soname,$(LIB).0 -o $(LIB).0.1.0 $(OBJS)
|
||||||
|
ln -s -f $(LIB).0.1.0 libfinal.so.0
|
||||||
|
ln -s -f $(LIB).0 libfinal.so
|
||||||
|
|
||||||
|
$(LIB): all
|
||||||
|
|
||||||
|
debug:
|
||||||
|
$(MAKE) $(MAKEFILE) DEBUG="-g -D DEBUG -W -Wall -pedantic"
|
||||||
|
|
||||||
|
profile:
|
||||||
|
$(MAKE) $(MAKEFILE) PROFILE="-pg"
|
||||||
|
|
||||||
|
install: $(LIB)
|
||||||
|
mkdir -p $(LIBDIR)
|
||||||
|
install -c $(LIB).0.1.0 $(LIBDIR)/$(LIB).0.1.0
|
||||||
|
ln -s -f $(LIB).0.1.0 $(LIBDIR)/libfinal.so.0
|
||||||
|
ln -s -f $(LIB).0 $(LIBDIR)/libfinal.so
|
||||||
|
ldconfig
|
||||||
|
mkdir -p $(INCLUDEDIR)
|
||||||
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
||||||
|
do \
|
||||||
|
install -m 644 $$h $(INCLUDEDIR)/$$h; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall: $(INCLUDE_HEADERS)
|
||||||
|
$(RM) $(LIBDIR)/$(LIB).0.1.0 $(LIBDIR)/libfinal.so.0 $(LIBDIR)/libfinal.so
|
||||||
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
||||||
|
do \
|
||||||
|
$(RM) $(INCLUDEDIR)/$$h; \
|
||||||
|
done
|
||||||
|
rmdir $(INCLUDEDIR)
|
||||||
|
|
||||||
|
.PHONY: clean dep
|
||||||
|
clean:
|
||||||
|
$(RM) $(LIB)* $(OBJS) .depend *.prof *~
|
||||||
|
|
||||||
|
dep:
|
||||||
|
$(CXX) -MM *.cpp >.depend
|
||||||
|
|
||||||
|
#
|
||||||
|
# include .depend if it exists
|
||||||
|
#
|
||||||
|
|
||||||
|
-include .depend
|
|
@ -0,0 +1,875 @@
|
||||||
|
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2013 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@
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
|
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 = src
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
|
$(top_srcdir)/depcomp $(finalcutinclude_HEADERS)
|
||||||
|
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)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
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)" \
|
||||||
|
"$(DESTDIR)$(finalcutincludedir)"
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
libfinal_la_LIBADD =
|
||||||
|
am_libfinal_la_OBJECTS = fstring.lo fpoint.lo frect.lo fscrollbar.lo \
|
||||||
|
fprogressbar.lo flineedit.lo fbutton.lo fbuttongroup.lo \
|
||||||
|
ftogglebutton.lo fradiobutton.lo fcheckbox.lo flabel.lo \
|
||||||
|
flistbox.lo fdialog.lo fwindow.lo fmessagebox.lo \
|
||||||
|
ffiledialog.lo ftextview.lo fstatusbar.lo fterm.lo fevent.lo \
|
||||||
|
foptimove.lo fapp.lo fwidget.lo fobject.lo
|
||||||
|
libfinal_la_OBJECTS = $(am_libfinal_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 =
|
||||||
|
libfinal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(libfinal_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@
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
AM_V_CXX = $(am__v_CXX_@AM_V@)
|
||||||
|
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
|
||||||
|
am__v_CXX_0 = @echo " CXX " $@;
|
||||||
|
am__v_CXX_1 =
|
||||||
|
CXXLD = $(CXX)
|
||||||
|
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
|
||||||
|
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
||||||
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||||
|
am__v_CXXLD_1 =
|
||||||
|
SOURCES = $(libfinal_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libfinal_la_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
|
||||||
|
HEADERS = $(finalcutinclude_HEADERS)
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
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_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@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
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@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
SO_VERSION = @SO_VERSION@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
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@
|
||||||
|
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 = fonts
|
||||||
|
AM_CPPFLAGS = -Wall -Werror
|
||||||
|
lib_LTLIBRARIES = libfinal.la
|
||||||
|
libfinal_la_SOURCES = \
|
||||||
|
fstring.cpp \
|
||||||
|
fpoint.cpp \
|
||||||
|
frect.cpp \
|
||||||
|
fscrollbar.cpp \
|
||||||
|
fprogressbar.cpp \
|
||||||
|
flineedit.cpp \
|
||||||
|
fbutton.cpp \
|
||||||
|
fbuttongroup.cpp \
|
||||||
|
ftogglebutton.cpp \
|
||||||
|
fradiobutton.cpp \
|
||||||
|
fcheckbox.cpp \
|
||||||
|
flabel.cpp \
|
||||||
|
flistbox.cpp \
|
||||||
|
fdialog.cpp \
|
||||||
|
fwindow.cpp \
|
||||||
|
fmessagebox.cpp \
|
||||||
|
ffiledialog.cpp \
|
||||||
|
ftextview.cpp \
|
||||||
|
fstatusbar.cpp \
|
||||||
|
fterm.cpp \
|
||||||
|
fevent.cpp \
|
||||||
|
foptimove.cpp \
|
||||||
|
fapp.cpp \
|
||||||
|
fwidget.cpp \
|
||||||
|
fobject.cpp
|
||||||
|
|
||||||
|
libfinal_la_LDFLAGS = -version-info @SO_VERSION@
|
||||||
|
finalcutincludedir = $(includedir)/final
|
||||||
|
finalcutinclude_HEADERS = \
|
||||||
|
fapp.h \
|
||||||
|
fbutton.h \
|
||||||
|
fbuttongroup.h \
|
||||||
|
fcharmap.h \
|
||||||
|
fcheckbox.h \
|
||||||
|
fdialog.h \
|
||||||
|
fenum.h \
|
||||||
|
fevent.h \
|
||||||
|
ffiledialog.h \
|
||||||
|
final.h \
|
||||||
|
fkey_map.h \
|
||||||
|
flabel.h \
|
||||||
|
flineedit.h \
|
||||||
|
flistbox.h \
|
||||||
|
fmessagebox.h \
|
||||||
|
fobject.h \
|
||||||
|
foptimove.h \
|
||||||
|
fpoint.h \
|
||||||
|
fprogressbar.h \
|
||||||
|
fradiobutton.h \
|
||||||
|
frect.h \
|
||||||
|
fscrollbar.h \
|
||||||
|
fstatusbar.h \
|
||||||
|
fstring.h \
|
||||||
|
ftcap_map.h \
|
||||||
|
fterm.h \
|
||||||
|
ftextview.h \
|
||||||
|
ftogglebutton.h \
|
||||||
|
fwidget.h \
|
||||||
|
fwindow.h
|
||||||
|
|
||||||
|
all: all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .cpp .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu src/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(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}; \
|
||||||
|
}
|
||||||
|
|
||||||
|
libfinal.la: $(libfinal_la_OBJECTS) $(libfinal_la_DEPENDENCIES) $(EXTRA_libfinal_la_DEPENDENCIES)
|
||||||
|
$(AM_V_CXXLD)$(libfinal_la_LINK) -rpath $(libdir) $(libfinal_la_OBJECTS) $(libfinal_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fapp.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fbutton.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fbuttongroup.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcheckbox.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdialog.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fevent.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffiledialog.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flabel.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flineedit.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flistbox.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmessagebox.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fobject.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foptimove.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpoint.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprogressbar.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fradiobutton.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frect.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fscrollbar.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatusbar.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstring.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fterm.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftextview.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftogglebutton.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwidget.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwindow.Plo@am__quote@
|
||||||
|
|
||||||
|
.cpp.o:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.cpp.obj:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.cpp.lo:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
install-finalcutincludeHEADERS: $(finalcutinclude_HEADERS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(finalcutinclude_HEADERS)'; test -n "$(finalcutincludedir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(finalcutincludedir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(finalcutincludedir)" || 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_HEADER) $$files '$(DESTDIR)$(finalcutincludedir)'"; \
|
||||||
|
$(INSTALL_HEADER) $$files "$(DESTDIR)$(finalcutincludedir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-finalcutincludeHEADERS:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(finalcutinclude_HEADERS)'; test -n "$(finalcutincludedir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(finalcutincludedir)'; $(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: $(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 $(LTLIBRARIES) $(HEADERS)
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(finalcutincludedir)"; 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-libLTLIBRARIES clean-libtool \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-finalcutincludeHEADERS
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
|
||||||
|
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 -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-finalcutincludeHEADERS \
|
||||||
|
uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
.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-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-finalcutincludeHEADERS 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 installdirs-am 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-finalcutincludeHEADERS uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
|
||||||
|
#uninstall:
|
||||||
|
# rm -R -f $(includedir)/final
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -0,0 +1,162 @@
|
||||||
|
// fapplication.h
|
||||||
|
// class FApplication
|
||||||
|
|
||||||
|
#ifndef _FAPPLICATION_H
|
||||||
|
#define _FAPPLICATION_H
|
||||||
|
|
||||||
|
#include <linux/keyboard.h> // need for gpm keyboard modifiers
|
||||||
|
#include <sys/time.h> // need for gettimeofday
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
#include "fevent.h"
|
||||||
|
#include "fwidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FApplication
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FApplication : public FWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef std::pair<FObject*,FEvent*> eventPair;
|
||||||
|
static std::deque<eventPair>* event_queue;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int app_argc;
|
||||||
|
char** app_argv;
|
||||||
|
static int quit_code;
|
||||||
|
static bool quit_now;
|
||||||
|
static int loop_level;
|
||||||
|
static bool process_timer_event;
|
||||||
|
static FPoint* zero_point;
|
||||||
|
int key;
|
||||||
|
char k_buf[1024];
|
||||||
|
char x11_mouse[4];
|
||||||
|
char sgr_mouse[13];
|
||||||
|
char urxvt_mouse[13];
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBGPM
|
||||||
|
Gpm_Event gpm_ev;
|
||||||
|
bool gpmMouseEvent;
|
||||||
|
enum gpmEventType
|
||||||
|
{
|
||||||
|
no_event = 0,
|
||||||
|
keyboard_event = 1,
|
||||||
|
mouse_event = 2
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum btn_state
|
||||||
|
{
|
||||||
|
Pressed = 1,
|
||||||
|
Released = 2,
|
||||||
|
DoubleClick = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
struct button_state // bit field
|
||||||
|
{
|
||||||
|
uChar left_button : 2; // 0..3
|
||||||
|
uChar right_button : 2; // 0..3
|
||||||
|
uChar middle_button : 2; // 0..3
|
||||||
|
uChar shift_button : 1; // 0..1
|
||||||
|
uChar control_button : 1; // 0..1
|
||||||
|
uChar meta_button : 1; // 0..1
|
||||||
|
uChar wheel_up : 1; // 0..1
|
||||||
|
uChar wheel_down : 1; // 0..1
|
||||||
|
uChar mouse_moved : 1; // 0..1
|
||||||
|
uChar : 4; // padding bits
|
||||||
|
} b_state;
|
||||||
|
|
||||||
|
char fifo_buf[512];
|
||||||
|
int fifo_offset;
|
||||||
|
bool fifo_in_use;
|
||||||
|
int fifo_buf_size;
|
||||||
|
long key_timeout;
|
||||||
|
long dblclick_interval;
|
||||||
|
struct timeval time_keypressed;
|
||||||
|
struct timeval time_mousepressed;
|
||||||
|
FPoint newMousePosition;
|
||||||
|
static FWidget* main_widget;
|
||||||
|
static FWidget* active_window;
|
||||||
|
static FWidget* focus_widget;
|
||||||
|
static FWidget* clicked_widget;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FApplication (const FApplication&); // Disabled copy constructor
|
||||||
|
FApplication& operator = (const FApplication&); // and operator '='
|
||||||
|
|
||||||
|
void init (int argc, char* argv[]);
|
||||||
|
void cmd_options();
|
||||||
|
bool KeyPressed();
|
||||||
|
ssize_t readKey();
|
||||||
|
void processKeyboardEvent();
|
||||||
|
bool parseX11Mouse();
|
||||||
|
bool parseSGRMouse();
|
||||||
|
bool parseUrxvtMouse();
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBGPM
|
||||||
|
int gpmEvent();
|
||||||
|
bool processGpmEvent();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void processMouseEvent();
|
||||||
|
void processResizeEvent();
|
||||||
|
int processTimerEvent();
|
||||||
|
bool processNextEvent();
|
||||||
|
friend class FWidget;
|
||||||
|
friend class FWindow;
|
||||||
|
friend class FDialog;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FApplication (int &argc, char* argv[]); // constructor
|
||||||
|
virtual ~FApplication(); // destructor
|
||||||
|
|
||||||
|
const char* getClassName() const;
|
||||||
|
int argc() const;
|
||||||
|
char** argv() const;
|
||||||
|
FWidget* mainWidget() const;
|
||||||
|
FWidget* focusWidget() const;
|
||||||
|
static void print_cmd_Options();
|
||||||
|
void setMainWidget (FWidget*);
|
||||||
|
int exec(); // run
|
||||||
|
int enter_loop();
|
||||||
|
void exit_loop();
|
||||||
|
static void exit (int retcode=0);
|
||||||
|
void quit();
|
||||||
|
bool isQuit();
|
||||||
|
static bool sendEvent (FObject*, FEvent*);
|
||||||
|
static void queueEvent (FObject*, FEvent*);
|
||||||
|
static void sendQueuedEvents ();
|
||||||
|
static bool eventInQueue();
|
||||||
|
static bool removeQueuedEvent(FObject*);
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FApplication inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline int FApplication::argc() const
|
||||||
|
{ return app_argc; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline char** FApplication::argv() const
|
||||||
|
{ return app_argv; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FWidget* FApplication::mainWidget() const
|
||||||
|
{ return main_widget; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FWidget* FApplication::focusWidget() const
|
||||||
|
{ return focus_widget; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FApplication::getClassName() const
|
||||||
|
{ return "FApplication"; }
|
||||||
|
|
||||||
|
#endif // _FAPPLICATION_H
|
|
@ -0,0 +1,608 @@
|
||||||
|
// fbutton.cpp
|
||||||
|
// class FButton
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "fbutton.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FButton
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructors and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButton::FButton(FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButton::FButton (const FString& txt, FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
setText(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButton::~FButton() // destructor
|
||||||
|
{
|
||||||
|
delAccelerator (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private methods of FButton
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::init()
|
||||||
|
{
|
||||||
|
flags = 0;
|
||||||
|
button_down = false;
|
||||||
|
this->text = "";
|
||||||
|
|
||||||
|
if ( hasFocus() )
|
||||||
|
this->flags = FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
|
||||||
|
if ( hasFocus() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_focus_fg;
|
||||||
|
backgroundColor = wc.button_active_focus_bg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_fg;
|
||||||
|
backgroundColor = wc.button_active_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // inactive
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_inactive_fg;
|
||||||
|
backgroundColor = wc.button_inactive_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
uChar FButton::getHotkey()
|
||||||
|
{
|
||||||
|
int length;
|
||||||
|
|
||||||
|
if ( text.isEmpty() )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
length = int(text.getLength());
|
||||||
|
|
||||||
|
for (int i=0; i < length; i++)
|
||||||
|
if ( (i+1 < length) && (text[uInt(i)] == '&') )
|
||||||
|
return uChar(text[uInt(++i)]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::setHotkeyAccelerator()
|
||||||
|
{
|
||||||
|
int hotkey = getHotkey();
|
||||||
|
if ( hotkey )
|
||||||
|
{
|
||||||
|
if ( isalpha(hotkey) || isdigit(hotkey) )
|
||||||
|
{
|
||||||
|
addAccelerator (tolower(hotkey), this);
|
||||||
|
addAccelerator (toupper(hotkey), this);
|
||||||
|
// Meta + hotkey
|
||||||
|
addAccelerator (0x20000e0+tolower(hotkey), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
addAccelerator (getHotkey(), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delAccelerator(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::draw()
|
||||||
|
{
|
||||||
|
register wchar_t* src;
|
||||||
|
register wchar_t* dest;
|
||||||
|
wchar_t* ButtonText;
|
||||||
|
FString txt;
|
||||||
|
int d, i, j, x, mono_offset, margin;
|
||||||
|
int length, hotkeypos, hotkey_offset, space;
|
||||||
|
int button_fg, button_bg;
|
||||||
|
bool isActiveFocus, isActive, isFocus, isFlat;
|
||||||
|
bool isNonFlatShadow, isNoUnderline;
|
||||||
|
|
||||||
|
if ( text.isNull() || text.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
length = int(text.getLength());
|
||||||
|
hotkeypos = -1;
|
||||||
|
hotkey_offset = 0;
|
||||||
|
space = int(' ');
|
||||||
|
|
||||||
|
if ( isMonochron() )
|
||||||
|
ButtonText = new wchar_t[length+3];
|
||||||
|
else
|
||||||
|
ButtonText = new wchar_t[length+1];
|
||||||
|
|
||||||
|
txt = this->text;
|
||||||
|
src = const_cast<wchar_t*>(txt.wc_str());
|
||||||
|
dest = const_cast<wchar_t*>(ButtonText);
|
||||||
|
|
||||||
|
isActiveFocus = (flags & (ACTIVE+FOCUS)) == (ACTIVE+FOCUS);
|
||||||
|
isActive = ((flags & ACTIVE) != 0);
|
||||||
|
isFocus = ((flags & FOCUS) != 0);
|
||||||
|
isFlat = ((flags & FLAT) != 0);
|
||||||
|
isNonFlatShadow = ((flags & (SHADOW+FLAT)) == SHADOW);
|
||||||
|
isNoUnderline = ((flags & NO_UNDERLINE) != 0);
|
||||||
|
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
if ( button_down )
|
||||||
|
{
|
||||||
|
// noshadow + indent one character to the right
|
||||||
|
if ( isFlat )
|
||||||
|
clearFlatBorder();
|
||||||
|
clearShadow();
|
||||||
|
setColor ( parentWidget()->getForegroundColor(),
|
||||||
|
parentWidget()->getBackgroundColor() );
|
||||||
|
for (int y=1; y <= height; y++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-2+y);
|
||||||
|
print (' '); // clear one left █
|
||||||
|
}
|
||||||
|
d = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
d = 0;
|
||||||
|
|
||||||
|
if ( ! isActive && (isMonochron() || getMaxColor() < 16) )
|
||||||
|
space = fc::MediumShade; // ▒
|
||||||
|
|
||||||
|
if ( isMonochron() && isActiveFocus )
|
||||||
|
{
|
||||||
|
txt = "<" + txt + ">";
|
||||||
|
length = int(txt.getLength());
|
||||||
|
src = const_cast<wchar_t*>(txt.wc_str());
|
||||||
|
mono_offset = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mono_offset = 0;
|
||||||
|
|
||||||
|
// find hotkey position in string
|
||||||
|
// + generate a new string without the '&'-sign
|
||||||
|
for (i=0; i < length; i++)
|
||||||
|
{
|
||||||
|
if ( (i < length) && (txt[uInt(i)] == '&') && (hotkeypos == -1) )
|
||||||
|
{
|
||||||
|
hotkeypos = i;
|
||||||
|
i++;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
*dest++ = *src++;
|
||||||
|
}
|
||||||
|
if ( hotkeypos != -1 )
|
||||||
|
hotkey_offset = 1;
|
||||||
|
|
||||||
|
if ( (length - hotkey_offset + mono_offset - hotkey_offset) <= width )
|
||||||
|
margin = 1;
|
||||||
|
else
|
||||||
|
margin = 0;
|
||||||
|
|
||||||
|
button_fg = foregroundColor;
|
||||||
|
button_bg = backgroundColor;
|
||||||
|
|
||||||
|
if ( isMonochron() && (isActive || isFocus) )
|
||||||
|
setReverse(true);
|
||||||
|
|
||||||
|
if ( isFlat )
|
||||||
|
{
|
||||||
|
if ( margin == 1 )
|
||||||
|
{
|
||||||
|
setColor (wc.button_active_fg, button_bg);
|
||||||
|
for (int y=0; y <= height-1; y++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin-1+d, ypos+ymin-1+y);
|
||||||
|
print (space); // full block █
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( ! button_down )
|
||||||
|
drawFlatBorder();
|
||||||
|
}
|
||||||
|
else if ( ! isMonochron() )
|
||||||
|
{
|
||||||
|
if ( ! isActive && getMaxColor() < 16 )
|
||||||
|
setColor (button_fg, button_bg);
|
||||||
|
else
|
||||||
|
setColor (button_bg, parentWidget()->getBackgroundColor());
|
||||||
|
gotoxy (xpos+xmin-1+d, ypos+ymin-1);
|
||||||
|
for (int y=1; y <= height; y++)
|
||||||
|
{
|
||||||
|
// Cygwin terminal use IBM Codepage 850
|
||||||
|
if ( this->isCygwinTerminal() )
|
||||||
|
print (fc::FullBlock); // █
|
||||||
|
else
|
||||||
|
print (fc::RightHalfBlock); // ▐
|
||||||
|
gotoxy (xpos+xmin-1+d, ypos+ymin-1+y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! button_down
|
||||||
|
&& ! isNewFont()
|
||||||
|
&& (isFlat || ! hasShadow() || isMonochron()) )
|
||||||
|
{
|
||||||
|
// clear the right █ from button down
|
||||||
|
setColor ( parentWidget()->getForegroundColor(),
|
||||||
|
parentWidget()->getBackgroundColor() );
|
||||||
|
for (int y=1; y <= height; y++)
|
||||||
|
{
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(false);
|
||||||
|
gotoxy (xpos+xmin-1+width, ypos+ymin-2+y);
|
||||||
|
print (' '); // clear right
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( hotkeypos != -1 )
|
||||||
|
length--;
|
||||||
|
|
||||||
|
i = width - length - 1;
|
||||||
|
i = int(i / 2);
|
||||||
|
|
||||||
|
if ( height > 1 )
|
||||||
|
j = int((height-1) / 2);
|
||||||
|
else
|
||||||
|
j=0;
|
||||||
|
|
||||||
|
gotoxy (xpos+xmin-1+margin+d, ypos+ymin-1+j);
|
||||||
|
setColor (button_fg, button_bg);
|
||||||
|
|
||||||
|
for (x=0; x < i; x++)
|
||||||
|
print (space); // █
|
||||||
|
|
||||||
|
if ( hotkeypos == -1 )
|
||||||
|
setCursorPos ( xpos+xmin-1+margin+i,
|
||||||
|
ypos+ymin-1+j ); // first character
|
||||||
|
else
|
||||||
|
setCursorPos ( xpos+xmin-1+margin+i+hotkeypos,
|
||||||
|
ypos+ymin-1+j ); // hotkey
|
||||||
|
|
||||||
|
if ( isMonochron() && isActiveFocus )
|
||||||
|
setBold();
|
||||||
|
for (int z=0; x < i+length && z < width; z++,x++)
|
||||||
|
{
|
||||||
|
if ( (z == hotkeypos) && isActive )
|
||||||
|
{
|
||||||
|
setColor (wc.button_hotkey_fg, button_bg);
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
setUnderline();
|
||||||
|
print ( ButtonText[z] );
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
unsetUnderline();
|
||||||
|
setColor (button_fg, button_bg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ( ButtonText[z] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( isMonochron() && isActiveFocus )
|
||||||
|
unsetBold();
|
||||||
|
for (x=i+length; x < width-1; x++)
|
||||||
|
print (space); // █
|
||||||
|
|
||||||
|
if ( height > 1 )
|
||||||
|
{
|
||||||
|
for (i=0; i < j; i++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+d, ypos+ymin-1+i);
|
||||||
|
for (int z=1; z <= width-1; z++)
|
||||||
|
print (space); // █
|
||||||
|
}
|
||||||
|
for (i=j+1; i < height; i++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+d, ypos+ymin-1+i);
|
||||||
|
for (int z=1; z <= width-1; z++)
|
||||||
|
print (space); // █
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(false);
|
||||||
|
|
||||||
|
if ( isNonFlatShadow && ! button_down )
|
||||||
|
{
|
||||||
|
setColor ( parentWidget()->getForegroundColor(),
|
||||||
|
parentWidget()->getBackgroundColor() );
|
||||||
|
print(' '); // restore background after button down
|
||||||
|
drawShadow();
|
||||||
|
}
|
||||||
|
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
delete[] ButtonText;
|
||||||
|
|
||||||
|
if ( isFocus && statusBar() )
|
||||||
|
{
|
||||||
|
FString msg = getStatusbarMessage();
|
||||||
|
FString curMsg = statusBar()->getMessage();
|
||||||
|
if ( curMsg != msg )
|
||||||
|
{
|
||||||
|
statusBar()->setMessage(msg);
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::processClick()
|
||||||
|
{
|
||||||
|
emitCallback("clicked");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public methods of FButton
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::hide()
|
||||||
|
{
|
||||||
|
int fg, bg, s, f, size;
|
||||||
|
char* blank;
|
||||||
|
|
||||||
|
FWidget::hide();
|
||||||
|
|
||||||
|
fg = parentWidget()->getForegroundColor();
|
||||||
|
bg = parentWidget()->getBackgroundColor();
|
||||||
|
setColor (fg, bg);
|
||||||
|
|
||||||
|
s = hasShadow() ? 1 : 0;
|
||||||
|
f = isFlat() ? 1 : 0;
|
||||||
|
size = width + s + (f << 1);
|
||||||
|
blank = new char[size+1];
|
||||||
|
memset(blank, ' ', uLong(size));
|
||||||
|
blank[size] = '\0';
|
||||||
|
for (int y=0; y < height+s+(f << 1); y++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin-1-f, ypos+ymin-1+y-f);
|
||||||
|
print (blank);
|
||||||
|
}
|
||||||
|
delete[] blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setNoUnderline(bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->flags |= NO_UNDERLINE;
|
||||||
|
else
|
||||||
|
this->flags &= ~NO_UNDERLINE;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setEnable(bool on)
|
||||||
|
{
|
||||||
|
FWidget::setEnable(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
if ( hasFocus() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_focus_fg;
|
||||||
|
backgroundColor = wc.button_active_focus_bg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_fg;
|
||||||
|
backgroundColor = wc.button_active_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~ACTIVE;
|
||||||
|
delAccelerator (this);
|
||||||
|
foregroundColor = wc.button_inactive_fg;
|
||||||
|
backgroundColor = wc.button_inactive_bg;
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setFocus(bool on)
|
||||||
|
{
|
||||||
|
FWidget::setFocus(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_focus_fg;
|
||||||
|
backgroundColor = wc.button_active_focus_bg;
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
FString msg = getStatusbarMessage();
|
||||||
|
FString curMsg = statusBar()->getMessage();
|
||||||
|
if ( curMsg != msg )
|
||||||
|
statusBar()->setMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.button_active_fg;
|
||||||
|
backgroundColor = wc.button_active_bg;
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->clearMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setFlat(bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->flags |= FLAT;
|
||||||
|
else
|
||||||
|
this->flags &= ~FLAT;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setShadow(bool on)
|
||||||
|
{
|
||||||
|
if ( on && Encoding != fc::VT100 && Encoding != fc::ASCII )
|
||||||
|
this->flags |= SHADOW;
|
||||||
|
else
|
||||||
|
this->flags &= ~SHADOW;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButton::setDown(bool on)
|
||||||
|
{
|
||||||
|
if ( button_down != on )
|
||||||
|
{
|
||||||
|
button_down = on;
|
||||||
|
redraw();
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onKeyPress (FKeyEvent* event)
|
||||||
|
{
|
||||||
|
int key;
|
||||||
|
|
||||||
|
if ( ! isEnabled() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
key = event->key();
|
||||||
|
|
||||||
|
switch ( key )
|
||||||
|
{
|
||||||
|
case fc::Fkey_return:
|
||||||
|
case fc::Fkey_enter:
|
||||||
|
case fc::Fkey_space:
|
||||||
|
setDown();
|
||||||
|
usleep(150000);
|
||||||
|
setUp();
|
||||||
|
processClick();
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onMouseDown (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
{
|
||||||
|
setUp();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = getFocusWidget();
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
this->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
FPoint gPos = event->getGlobalPos();
|
||||||
|
if ( getGeometryGlobal().contains(gPos) )
|
||||||
|
setDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onMouseUp (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( button_down )
|
||||||
|
{
|
||||||
|
setUp();
|
||||||
|
if ( getGeometryGlobal().contains(event->getGlobalPos()) )
|
||||||
|
processClick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onMouseMove (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
FPoint gPos = event->getGlobalPos();
|
||||||
|
if ( getGeometryGlobal().contains(gPos) )
|
||||||
|
setDown();
|
||||||
|
else
|
||||||
|
setUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onAccel (FAccelEvent* event)
|
||||||
|
{
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
if ( ! hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = static_cast<FWidget*>(event->focusedWidget());
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
setDown();
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
setDown();
|
||||||
|
usleep(150000);
|
||||||
|
setUp();
|
||||||
|
processClick();
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onFocusIn (FFocusEvent*)
|
||||||
|
{
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::onFocusOut (FFocusEvent*)
|
||||||
|
{
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->clearMessage();
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButton::setText (const FString& txt)
|
||||||
|
{
|
||||||
|
this->text = txt;
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
delAccelerator (this);
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,153 @@
|
||||||
|
// fbutton.h
|
||||||
|
// class FButton
|
||||||
|
|
||||||
|
#ifndef _FBUTTON_H
|
||||||
|
#define _FBUTTON_H
|
||||||
|
|
||||||
|
#include "fwidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FButton
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FButton : public FWidget
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
bool button_down;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FButton (const FButton&);
|
||||||
|
FButton& operator = (const FButton&);
|
||||||
|
void init();
|
||||||
|
uChar getHotkey();
|
||||||
|
void setHotkeyAccelerator();
|
||||||
|
void draw();
|
||||||
|
void processClick();
|
||||||
|
friend class FDialog;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FButton (FWidget* parent=0); // constructor
|
||||||
|
FButton (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FButton(); // destructor
|
||||||
|
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void hide();
|
||||||
|
|
||||||
|
void onKeyPress (FKeyEvent*);
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onMouseUp (FMouseEvent*);
|
||||||
|
void onMouseMove (FMouseEvent*);
|
||||||
|
void onAccel (FAccelEvent*);
|
||||||
|
void onFocusIn (FFocusEvent*);
|
||||||
|
void onFocusOut (FFocusEvent*);
|
||||||
|
|
||||||
|
bool setNoUnderline(bool);
|
||||||
|
bool setNoUnderline();
|
||||||
|
bool unsetNoUnderline();
|
||||||
|
|
||||||
|
bool setEnable(bool);
|
||||||
|
bool setEnable();
|
||||||
|
bool unsetEnable();
|
||||||
|
bool setDisable();
|
||||||
|
bool setFocus(bool);
|
||||||
|
bool setFocus();
|
||||||
|
bool unsetFocus();
|
||||||
|
bool setFlat(bool);
|
||||||
|
bool setFlat();
|
||||||
|
bool unsetFlat();
|
||||||
|
bool isFlat() const;
|
||||||
|
bool setShadow(bool);
|
||||||
|
bool setShadow();
|
||||||
|
bool unsetShadow();
|
||||||
|
bool hasShadow() const;
|
||||||
|
bool setDown(bool);
|
||||||
|
bool setDown();
|
||||||
|
bool setUp();
|
||||||
|
bool isDown() const;
|
||||||
|
|
||||||
|
void setText (const FString&);
|
||||||
|
FString& getText();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FButton inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FButton::getClassName() const
|
||||||
|
{ return "FButton"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setNoUnderline()
|
||||||
|
{ return setNoUnderline(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::unsetNoUnderline()
|
||||||
|
{ return setNoUnderline(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setEnable()
|
||||||
|
{ return setEnable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::unsetEnable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setDisable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setFocus()
|
||||||
|
{ return setFocus(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::unsetFocus()
|
||||||
|
{ return setFocus(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setFlat()
|
||||||
|
{ return setFlat(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::unsetFlat()
|
||||||
|
{ return setFlat(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::isFlat() const
|
||||||
|
{ return ((flags & FLAT) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setShadow()
|
||||||
|
{ return setShadow(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::unsetShadow()
|
||||||
|
{ return setShadow(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::hasShadow() const
|
||||||
|
{ return ((flags & SHADOW) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setDown()
|
||||||
|
{ return setDown(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::setUp()
|
||||||
|
{ return setDown(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButton::isDown() const
|
||||||
|
{ return button_down; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString& FButton::getText()
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
#endif // _FBUTTON_H
|
|
@ -0,0 +1,541 @@
|
||||||
|
// fbuttongroup.cpp
|
||||||
|
// class FButtonGroup
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "fbuttongroup.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
#include "ftogglebutton.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FButtonGroup
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructor and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButtonGroup::FButtonGroup(FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButtonGroup::FButtonGroup ( const FString& txt,
|
||||||
|
FWidget* parent ) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
setText(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FButtonGroup::~FButtonGroup() // destructor
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::iterator iter;
|
||||||
|
|
||||||
|
if ( buttonlist.empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
|
||||||
|
while ( iter != buttonlist.end() )
|
||||||
|
{
|
||||||
|
(*iter)->setGroup(0);
|
||||||
|
iter = buttonlist.erase(iter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// private methods of FButtonGroup
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::init()
|
||||||
|
{
|
||||||
|
flags = 0;
|
||||||
|
border = true;
|
||||||
|
top_padding = 1;
|
||||||
|
left_padding = 1;
|
||||||
|
bottom_padding = 1;
|
||||||
|
right_padding = 1;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
|
||||||
|
foregroundColor = wc.label_fg;
|
||||||
|
backgroundColor = wc.label_bg;
|
||||||
|
|
||||||
|
buttonlist.clear(); // no buttons yet
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButtonGroup::isRadioButton(FToggleButton* button) const
|
||||||
|
{
|
||||||
|
return bool ( strcmp ( button->getClassName(),
|
||||||
|
const_cast<char*>("FRadioButton") ) == 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::directFocus()
|
||||||
|
{
|
||||||
|
if ( ! hasFocusedButton() )
|
||||||
|
{
|
||||||
|
bool found_checked = false;
|
||||||
|
|
||||||
|
if ( hasCheckedButton() && ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->isChecked() )
|
||||||
|
{
|
||||||
|
if ( isRadioButton(*iter) )
|
||||||
|
{
|
||||||
|
found_checked = true;
|
||||||
|
FWidget* focused_widget = getFocusWidget();
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
(*iter)->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
getFocusWidget()->redraw();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! found_checked )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = getFocusWidget();
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
focusFirstChild();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
getFocusWidget()->redraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected methods of FButtonGroup
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::draw()
|
||||||
|
{
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
if ( border )
|
||||||
|
drawBorder();
|
||||||
|
drawLabel();
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
uChar FButtonGroup::getHotkey()
|
||||||
|
{
|
||||||
|
uInt length;
|
||||||
|
|
||||||
|
if ( text.isEmpty() )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
length = text.getLength();
|
||||||
|
|
||||||
|
for (uInt i=0; i < length; i++)
|
||||||
|
if ( (i+1 < length) && (text[i] == '&') )
|
||||||
|
return uChar(text[++i]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::setHotkeyAccelerator()
|
||||||
|
{
|
||||||
|
int hotkey = getHotkey();
|
||||||
|
|
||||||
|
if ( hotkey )
|
||||||
|
{
|
||||||
|
if ( isalpha(hotkey) || isdigit(hotkey) )
|
||||||
|
{
|
||||||
|
addAccelerator (tolower(hotkey), this);
|
||||||
|
addAccelerator (toupper(hotkey), this);
|
||||||
|
// Meta + hotkey
|
||||||
|
addAccelerator (0x20000e0 + tolower(hotkey), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
addAccelerator (getHotkey(), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delAccelerator(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::drawLabel()
|
||||||
|
{
|
||||||
|
wchar_t* LabelText;
|
||||||
|
register wchar_t* src;
|
||||||
|
register wchar_t* dest;
|
||||||
|
FString txt;
|
||||||
|
uInt length;
|
||||||
|
int hotkeypos;
|
||||||
|
bool isActive, isNoUnderline;
|
||||||
|
|
||||||
|
if ( text.isNull() || text.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
txt = " " + this->text + " ";
|
||||||
|
length = txt.getLength();
|
||||||
|
hotkeypos = -1;
|
||||||
|
LabelText = new wchar_t[length+1];
|
||||||
|
src = const_cast<wchar_t*>(txt.wc_str());
|
||||||
|
dest = const_cast<wchar_t*>(LabelText);
|
||||||
|
|
||||||
|
isActive = ((flags & ACTIVE) != 0);
|
||||||
|
isNoUnderline = ((flags & NO_UNDERLINE) != 0);
|
||||||
|
|
||||||
|
// find hotkey position in string
|
||||||
|
// + generate a new string without the '&'-sign
|
||||||
|
for (uInt i=0; i < length; i++)
|
||||||
|
{
|
||||||
|
if ( (i < length) && (txt[i] == '&') && (hotkeypos == -1) )
|
||||||
|
{
|
||||||
|
hotkeypos = int(i);
|
||||||
|
i++;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
*dest++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( hotkeypos != -1 )
|
||||||
|
length--;
|
||||||
|
|
||||||
|
if ( border )
|
||||||
|
gotoxy (xpos+xmin, ypos+ymin-1);
|
||||||
|
else
|
||||||
|
gotoxy (xpos+xmin-2, ypos+ymin-1);
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
setColor(wc.label_emphasis_fg, wc.label_bg);
|
||||||
|
else
|
||||||
|
setColor(wc.label_inactive_fg, wc.label_inactive_bg);
|
||||||
|
|
||||||
|
for (int z=0; z < int(length); z++)
|
||||||
|
{
|
||||||
|
if ( (z == hotkeypos) && isActive )
|
||||||
|
{
|
||||||
|
setColor (wc.label_hotkey_fg, wc.label_hotkey_bg);
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
setUnderline();
|
||||||
|
print ( LabelText[z] );
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
unsetUnderline();
|
||||||
|
setColor (wc.label_emphasis_fg, wc.label_bg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
print ( LabelText[z] );
|
||||||
|
}
|
||||||
|
delete[] LabelText;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public methods of FButtonGroup
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::hide()
|
||||||
|
{
|
||||||
|
int fg, bg, size;
|
||||||
|
char* blank;
|
||||||
|
FWidget::hide();
|
||||||
|
if ( ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
(*iter)->hide();
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fg = parentWidget()->getForegroundColor();
|
||||||
|
bg = parentWidget()->getBackgroundColor();
|
||||||
|
setColor (fg, bg);
|
||||||
|
|
||||||
|
size = width;
|
||||||
|
blank = new char[size+1];
|
||||||
|
memset(blank, ' ', uLong(size));
|
||||||
|
blank[size] = '\0';
|
||||||
|
for (int y=0; y < height; y++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1+y);
|
||||||
|
print (blank);
|
||||||
|
}
|
||||||
|
delete[] blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::insert(FToggleButton* button)
|
||||||
|
{
|
||||||
|
if ( button->group() )
|
||||||
|
button->group()->remove(button);
|
||||||
|
|
||||||
|
// setChecked the first FRadioButton
|
||||||
|
if ( buttonlist.size() == 1 && isRadioButton(*buttonlist.begin()) )
|
||||||
|
(*buttonlist.begin())->setChecked();
|
||||||
|
|
||||||
|
button->setGroup(this);
|
||||||
|
buttonlist.push_back(button);
|
||||||
|
|
||||||
|
button->addCallback
|
||||||
|
(
|
||||||
|
"toggled",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FButtonGroup::cb_buttonToggled),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::remove(FToggleButton* button)
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::iterator iter;
|
||||||
|
|
||||||
|
if ( buttonlist.empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
|
||||||
|
while ( iter != buttonlist.end() )
|
||||||
|
{
|
||||||
|
if ( (*iter) == button )
|
||||||
|
{
|
||||||
|
iter = buttonlist.erase(iter);
|
||||||
|
button->setGroup(0);
|
||||||
|
|
||||||
|
button->delCallback(this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::cb_buttonToggled (FWidget* widget, void*)
|
||||||
|
{
|
||||||
|
FToggleButton* button = static_cast<FToggleButton*>(widget);
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
|
||||||
|
if ( ! button->isChecked() )
|
||||||
|
return;
|
||||||
|
if ( buttonlist.empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter) != button
|
||||||
|
&& (*iter)->isChecked()
|
||||||
|
&& isRadioButton(*iter) )
|
||||||
|
{
|
||||||
|
(*iter)->unsetChecked();
|
||||||
|
if ( (*iter)->isVisible() && (*iter)->isShown() )
|
||||||
|
(*iter)->redraw();
|
||||||
|
}
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FToggleButton* FButtonGroup::getFirstButton()
|
||||||
|
{
|
||||||
|
if ( ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->isEnabled() && (*iter)->acceptFocus() )
|
||||||
|
return (*iter);
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FToggleButton* FButtonGroup::getLastButton()
|
||||||
|
{
|
||||||
|
if ( ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, begin;
|
||||||
|
begin = buttonlist.begin();
|
||||||
|
iter = buttonlist.end();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
--iter;
|
||||||
|
if ( (*iter)->isEnabled() && (*iter)->acceptFocus() )
|
||||||
|
return (*iter);
|
||||||
|
}
|
||||||
|
while ( iter != begin );
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButtonGroup::hasFocusedButton()
|
||||||
|
{
|
||||||
|
if ( ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->hasFocus() )
|
||||||
|
return true;
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButtonGroup::hasCheckedButton()
|
||||||
|
{
|
||||||
|
if ( ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->isChecked() )
|
||||||
|
return true;
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::onMouseDown (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
directFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::onAccel (FAccelEvent*)
|
||||||
|
{
|
||||||
|
directFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::onFocusIn (FFocusEvent* in_ev)
|
||||||
|
{
|
||||||
|
if ( hasCheckedButton() && ! buttonlist.empty() )
|
||||||
|
{
|
||||||
|
FButtonGroup::FButtonList::const_iterator iter, end;
|
||||||
|
iter = buttonlist.begin();
|
||||||
|
end = buttonlist.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->isChecked() )
|
||||||
|
{
|
||||||
|
if ( isRadioButton(*iter) )
|
||||||
|
{
|
||||||
|
in_ev->ignore();
|
||||||
|
FWidget* prev_element = getFocusWidget();
|
||||||
|
(*iter)->setFocus();
|
||||||
|
prev_element->redraw();
|
||||||
|
(*iter)->redraw();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( in_ev->isAccepted() )
|
||||||
|
{
|
||||||
|
if ( in_ev->getFocusType() == FocusNextWidget )
|
||||||
|
{
|
||||||
|
in_ev->ignore();
|
||||||
|
FWidget* prev_element = getFocusWidget();
|
||||||
|
focusFirstChild();
|
||||||
|
prev_element->redraw();
|
||||||
|
getFocusWidget()->redraw();
|
||||||
|
}
|
||||||
|
else if ( in_ev->getFocusType() == FocusPreviousWidget )
|
||||||
|
{
|
||||||
|
in_ev->ignore();
|
||||||
|
FWidget* prev_element = getFocusWidget();
|
||||||
|
focusLastChild();
|
||||||
|
prev_element->redraw();
|
||||||
|
getFocusWidget()->redraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::onFocusOut (FFocusEvent*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButtonGroup::setEnable (bool on)
|
||||||
|
{
|
||||||
|
FWidget::setEnable(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~ACTIVE;
|
||||||
|
delAccelerator (this);
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FButtonGroup::setBorder(bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
border = true;
|
||||||
|
else
|
||||||
|
border = false;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FButtonGroup::setText (const FString& txt)
|
||||||
|
{
|
||||||
|
this->text = txt;
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
delAccelerator (this);
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
// fbuttongroup.h
|
||||||
|
// class FButtonGroup
|
||||||
|
|
||||||
|
#ifndef _FBUTTONGROUP_H
|
||||||
|
#define _FBUTTONGROUP_H
|
||||||
|
|
||||||
|
#include "fwidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
class FToggleButton;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FButtonGroup
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FButtonGroup : public FWidget
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
bool border;
|
||||||
|
typedef std::vector<FToggleButton*> FButtonList;
|
||||||
|
FButtonGroup::FButtonList buttonlist;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FButtonGroup (const FButtonGroup&);
|
||||||
|
FButtonGroup& operator = (const FButtonGroup&);
|
||||||
|
void init();
|
||||||
|
bool isRadioButton(FToggleButton*) const;
|
||||||
|
void directFocus();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void draw();
|
||||||
|
uChar getHotkey();
|
||||||
|
void setHotkeyAccelerator();
|
||||||
|
void drawLabel();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FButtonGroup (FWidget* parent=0); // constructor
|
||||||
|
FButtonGroup (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FButtonGroup(); // destructor
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void hide();
|
||||||
|
|
||||||
|
FToggleButton* getFirstButton();
|
||||||
|
FToggleButton* getLastButton();
|
||||||
|
bool hasFocusedButton();
|
||||||
|
bool hasCheckedButton();
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onAccel (FAccelEvent*);
|
||||||
|
void onFocusIn (FFocusEvent*);
|
||||||
|
void onFocusOut (FFocusEvent*);
|
||||||
|
|
||||||
|
void insert (FToggleButton*);
|
||||||
|
void remove (FToggleButton*);
|
||||||
|
|
||||||
|
void cb_buttonToggled (FWidget*, void*);
|
||||||
|
|
||||||
|
bool setEnable(bool);
|
||||||
|
bool setEnable();
|
||||||
|
bool unsetEnable();
|
||||||
|
bool setDisable();
|
||||||
|
bool setBorder(bool);
|
||||||
|
bool setBorder();
|
||||||
|
bool unsetBorder();
|
||||||
|
void setText (const FString&);
|
||||||
|
FString& getText();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FButtonGroup inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FButtonGroup::getClassName() const
|
||||||
|
{ return "FButtonGroup"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButtonGroup::setEnable()
|
||||||
|
{ return setEnable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButtonGroup::unsetEnable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButtonGroup::setDisable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButtonGroup::setBorder()
|
||||||
|
{ return setBorder(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FButtonGroup::unsetBorder()
|
||||||
|
{ return setBorder(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString& FButtonGroup::getText()
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
#endif // _FBUTTONGROUP_H
|
|
@ -0,0 +1,293 @@
|
||||||
|
// fcharmap.h
|
||||||
|
|
||||||
|
#ifndef _FCHARMAP_H
|
||||||
|
#define _FCHARMAP_H
|
||||||
|
|
||||||
|
static uInt character[][fc::NUM_OF_ENCODINGS] =
|
||||||
|
{
|
||||||
|
// .--------------------- Unicode (UTF-8)
|
||||||
|
// | .--------------- VT100
|
||||||
|
// | | .--------- PC (IBM-437)
|
||||||
|
// | | | .---- ASCII (7-Bit)
|
||||||
|
// | | | |
|
||||||
|
{0x00f6,0xf6, 0x94, 'o'}, // ö - o-umlaut
|
||||||
|
{0x00e4,0xe4, 0x84, 'a'}, // ä - a-umlaut
|
||||||
|
{0x00fc,0xfc, 0x81, 'u'}, // ü - u-umlaut
|
||||||
|
{0x00d6,0xd6, 0x99, 'O'}, // Ö - O-umlaut
|
||||||
|
{0x00c4,0xc4, 0x8e, 'A'}, // Ä - A-umlaut
|
||||||
|
{0x00dc,0xdc, 0x9a, 'U'}, // Ü - U-umlaut
|
||||||
|
{0x00df,0xdf, 0xe1, 's'}, // ß - sz-ligature
|
||||||
|
{0x20ac, 'E', 0xee, 'E'}, // € - Euro
|
||||||
|
{0x00a3, '}', 0x9c, 'P'}, // £ - Pound
|
||||||
|
{0x03c0, '{', 0xe3, 'n'}, // π - Pi
|
||||||
|
{0x207F, 'I', 0xfc, ' '}, // ⁿ - SuperscriptLatinSmallLetterN
|
||||||
|
{0x2265, 'z', 0xf2, '>'}, // ≥ - GreaterThanOrEqualTo
|
||||||
|
{0x2264, 'y', 0xf3, '<'}, // ≤ - LessThanOrEqualTo
|
||||||
|
{0x2260, '|', 0xd8, '!'}, // ≠ - NotEqualTo
|
||||||
|
{0x00b1, 'g', 0xf1, '#'}, // ± - PlusMinus
|
||||||
|
{0x00b0, 'f', 0xb0, 'o'}, // ° - Degree
|
||||||
|
{0x2022, '`', 0x04, '*'}, // • - Bullet
|
||||||
|
{0x00b7, '`', 0xf9, '*'}, // · - small Bullet
|
||||||
|
{0x25c6, '`', 0x04, '*'}, // ◆ - BlackDiamond
|
||||||
|
{0x2424, 'h', ' ', ' '}, //  - SymbolForNewline
|
||||||
|
{0x240b, 'i', ' ', ' '}, // ␋ - SymbolForVerticalTab
|
||||||
|
{0x2409, 'b', ' ', ' '}, // ␉ - SymbolForHorizontalTab
|
||||||
|
{0x240c, 'c', ' ', ' '}, // ␌ - SymbolForFormFeed
|
||||||
|
{0x240d, 'd', ' ', ' '}, // ␍ - SymbolForCarriageReturn
|
||||||
|
{0x240a, 'e', ' ', ' '}, // ␊ - SymbolForLineFeed
|
||||||
|
{0x2592, 'a', 0xb0, '#'}, // ▒ - MediumShade
|
||||||
|
{0x2588, '0', 0xdb, '#'}, // █ - FullBlock
|
||||||
|
{0x25ae, '_', 0xfe, '#'}, // ▮ - BlackVerticalRectangle
|
||||||
|
{0x258c, 0 , 0xdd, ' '}, // ▌ - LeftHalfBlock
|
||||||
|
{0x2590, 0 , 0xde, ' '}, // ▐ - RightHalfBlock
|
||||||
|
{0x2584, 0 , 0xdc, ' '}, // ▄ - LowerHalfBlock
|
||||||
|
{0x2580, 0 , 0xdf, ' '}, // ▀ - UpperHalfBlock
|
||||||
|
{0x2500, 'q', 0xc4, '-'}, // ─ - BoxDrawingsHorizontal
|
||||||
|
{0x2502, 'x', 0xb3, '|'}, // │ - BoxDrawingsVertical
|
||||||
|
{0x250c, 'l', 0xda, '.'}, // ┌ - BoxDrawingsDownAndRight
|
||||||
|
{0x2510, 'k', 0xbf, '.'}, // ┐ - BoxDrawingsDownAndLeft
|
||||||
|
{0x2514, 'm', 0xc0, '`'}, // └ - BoxDrawingsUpAndRight
|
||||||
|
{0x2518, 'j', 0xd9, '\''}, // ┘ - BoxDrawingsUpAndLeft
|
||||||
|
{0x253c, 'n', 0xc5, '+'}, // ┼ - BoxDrawingsCross
|
||||||
|
{0x252c, 'w', 0xc2, '+'}, // ┬ - BoxDrawingsDownAndHorizontal
|
||||||
|
{0x2524, 'u', 0xb4, '+'}, // ┤ - BoxDrawingsVerticalAndLeft
|
||||||
|
{0x251c, 't', 0xc3, '+'}, // ├ - BoxDrawingsVerticalAndRight
|
||||||
|
{0x2534, 'v', 0xc1, '+'}, // ┴ - BoxDrawingsUpAndHorizontal
|
||||||
|
{0x23ba, 'o', '~', '~'}, // ⎺ - HorizontalScanLine1
|
||||||
|
{0x23bb, 'p', 0xc4, '-'}, // ⎻ - HorizontalScanLine3
|
||||||
|
{0x23bc, 'r', 0xc4, '-'}, // ⎼ - HorizontalScanLine7
|
||||||
|
{0x23bd, 's', '_', '_'}, // ⎽ - HorizontalScanLine9
|
||||||
|
{0x25b2, '-', 0x1e, '^'}, // ▲ - BlackUpPointingTriangle
|
||||||
|
{0x25bc, '.', 0x1f, 'v'}, // ▼ - BlackDownPointingTriangle
|
||||||
|
{0x25ba, '+', 0x10, '>'}, // ► - BlackRightPointingPointer
|
||||||
|
{0x25c4, ',', 0x11, '<'}, // ◄ - BlackLeftPointingPointer
|
||||||
|
{0x1ab4, 0, 0xb4, 0}, // ⊐ - NF_rev_left_arrow2
|
||||||
|
{0x1ab5, 0, 0xb5, 0}, // ► - NF_rev_right_arrow2
|
||||||
|
{0x1ab7, 0, 0xb7, 0}, // ) - NF_radio_button3
|
||||||
|
{0x1ab8, 0, 0xb8, 0}, // ⎤ - NF_rev_border_corner_upper_right
|
||||||
|
{0x1ab9, 0, 0xb9, 0}, // ⎹ - NF_rev_border_line_right
|
||||||
|
{0x1aba, 0, 0xba, 0}, // ┤ - NF_rev_border_line_vertical_left
|
||||||
|
{0x1abb, 0, 0xbb, 0}, // ⎦ - NF_rev_border_corner_lower_right
|
||||||
|
{0x1abc, 0, 0xbc, 0}, // ⎸ - NF_border_line_left
|
||||||
|
{0x1abd, 0, 0xbd, 0}, //⎹◣ - NF_rev_up_arrow2
|
||||||
|
{0x1abe, 0, 0xbe, 0}, //⎹◤ - NF_rev_down_arrow2
|
||||||
|
{0x1ac0, 0, 0xc0, 0}, // └ - NF_border_corner_middle_lower_left
|
||||||
|
{0x1ac1, 0, 0xc1, 0}, // ◢⎸ - NF_rev_up_arrow1
|
||||||
|
{0x1ac2, 0, 0xc2, 0}, // ◥⎸ - NF_rev_down_arrow1
|
||||||
|
{0x1ac3, 0, 0xc3, 0}, // ├ - NF_border_line_vertical_right
|
||||||
|
{0x1ac5, 0, 0xc5, 0}, // = - NF_border_line_up_and_down
|
||||||
|
{0x1ac6, 0, 0xc6, 0}, // = - NF_shadow_box_middle
|
||||||
|
{0x1ac7, 0, 0xc7, 0}, // = - NF_shadow_box_hdd
|
||||||
|
{0x1ac8, 0, 0xc8, 0}, // ◄ - NF_rev_left_arrow1
|
||||||
|
{0x1ac9, 0, 0xc9, 0}, // ⊏ - NF_rev_right_arrow1
|
||||||
|
{0x1aca, 0, 0xca, 0}, // [ - NF_rev_menu_button1
|
||||||
|
{0x1acb, 0, 0xcb, 0}, // - - NF_rev_menu_button2
|
||||||
|
{0x1acc, 0, 0xcc, 0}, // ┌ - NF_border_corner_middle_upper_left
|
||||||
|
{0x1acd, 0, 0xcd, 0}, // = - NF_shadow_box_cd
|
||||||
|
{0x1ace, 0, 0xce, 0}, // [ - NF_shadow_box_left
|
||||||
|
{0x1acf, 0, 0xcf, 0}, // ┘ - NF_border_corner_middle_lower_right
|
||||||
|
{0x1ad0, 0, 0xd0, 0}, // ┐ - NF_border_corner_middle_upper_right
|
||||||
|
{0x1ad1, 0, 0xd1, 0}, // = - NF_shadow_box_net
|
||||||
|
{0x1ad2, 0, 0xd2, 0}, // ◢ - NF_rev_up_pointing_triangle1
|
||||||
|
{0x1ad3, 0, 0xd3, 0}, // ⎣ - NF_border_corner_lower_left
|
||||||
|
{0x1ad4, 0, 0xd4, 0}, // _ - NF_border_line_bottom
|
||||||
|
{0x1ad5, 0, 0xd5, 0}, // O - NF_radio_button2
|
||||||
|
{0x1ad6, 0, 0xd6, 0}, // ● - NF_radio_button2_checked
|
||||||
|
{0x1ad7, 0, 0xd7, 0}, // ◥ - NF_rev_down_pointing_triangle1
|
||||||
|
{0x1ad8, 0, 0xd8, 0}, // ¯ - NF_border_line_upper
|
||||||
|
{0x1ad9, 0, 0xd9, 0}, // ( - NF_radio_button1
|
||||||
|
{0x1ada, 0, 0xda, 0}, // ⎡ - NF_border_corner_upper_left
|
||||||
|
{0x1adc, 0, 0xdc, 0}, // ✓ - NF_shadow_box_checked
|
||||||
|
{0x1ae8, 0, 0xe8, 0}, // ◣ - NF_rev_up_pointing_triangle2
|
||||||
|
{0x1ae9, 0, 0xe9, 0}, // ◤ - NF_rev_down_pointing_triangle2
|
||||||
|
{0x1af4, 0, 0xf4, 0}, // ] - NF_rev_menu_button3
|
||||||
|
{0x1af5, 0, 0xf5, 0}, // ] - NF_shadow_box_right
|
||||||
|
{0x1afb, 0, 0xfb, 0} // ✓ - NF_check_mark
|
||||||
|
};
|
||||||
|
|
||||||
|
const int lastCharItem = (sizeof(character) / sizeof(character[0])) - 1;
|
||||||
|
|
||||||
|
|
||||||
|
static int vt100_key_to_utf8[][2] =
|
||||||
|
{
|
||||||
|
{fc::vt100_key_rarrow , fc::BlackRightPointingPointer}, // ►
|
||||||
|
{fc::vt100_key_larrow , fc::BlackLeftPointingPointer}, // ◄
|
||||||
|
{fc::vt100_key_uarrow , fc::BlackUpPointingTriangle}, // ▲
|
||||||
|
{fc::vt100_key_darrow , fc::BlackDownPointingTriangle}, // ▼
|
||||||
|
{fc::vt100_key_block , fc::FullBlock}, // █
|
||||||
|
{fc::vt100_key_nsup , fc::SuperscriptLatinSmallLetterN}, // ⁿ
|
||||||
|
{fc::vt100_key_blackrect, fc::BlackVerticalRectangle}, // ▮
|
||||||
|
{fc::vt100_key_diamond , fc::BlackDiamond}, // ◆
|
||||||
|
{fc::vt100_key_ckboard , fc::MediumShade}, // ▒
|
||||||
|
{fc::vt100_key_htab , fc::SymbolForHorizontalTab}, // ␉
|
||||||
|
{fc::vt100_key_ff , fc::SymbolForFormFeed}, // ␌
|
||||||
|
{fc::vt100_key_cr , fc::SymbolForCarriageReturn}, // ␍
|
||||||
|
{fc::vt100_key_lf , fc::SymbolForLineFeed}, // ␊
|
||||||
|
{fc::vt100_key_degree , fc::Degree}, // °
|
||||||
|
{fc::vt100_key_plminus , fc::PlusMinus}, // ±
|
||||||
|
{fc::vt100_key_board , fc::SymbolForNewline}, // 
|
||||||
|
{fc::vt100_key_lantern , fc::SymbolForVerticalTab}, // ␋
|
||||||
|
{fc::vt100_key_lrcorner , fc::BoxDrawingsUpAndLeft}, // ┘
|
||||||
|
{fc::vt100_key_urcorner , fc::BoxDrawingsDownAndLeft}, // ┐
|
||||||
|
{fc::vt100_key_ulcorner , fc::BoxDrawingsDownAndRight}, // ┌
|
||||||
|
{fc::vt100_key_llcorner , fc::BoxDrawingsUpAndRight}, // └
|
||||||
|
{fc::vt100_key_plus , fc::BoxDrawingsCross}, // ┼
|
||||||
|
{fc::vt100_key_s1 , fc::HorizontalScanLine1}, // ⎺
|
||||||
|
{fc::vt100_key_s3 , fc::HorizontalScanLine3}, // ⎻
|
||||||
|
{fc::vt100_key_hline , fc::BoxDrawingsHorizontal}, // ─
|
||||||
|
{fc::vt100_key_s7 , fc::HorizontalScanLine7}, // ⎼
|
||||||
|
{fc::vt100_key_s9 , fc::HorizontalScanLine9}, // ⎽
|
||||||
|
{fc::vt100_key_ltee , fc::BoxDrawingsVerticalAndRight}, // ├
|
||||||
|
{fc::vt100_key_rtee , fc::BoxDrawingsVerticalAndLeft}, // ┤
|
||||||
|
{fc::vt100_key_btee , fc::BoxDrawingsUpAndHorizontal}, // ┴
|
||||||
|
{fc::vt100_key_ttee , fc::BoxDrawingsDownAndHorizontal}, // ┬
|
||||||
|
{fc::vt100_key_vline , fc::BoxDrawingsVertical}, // │
|
||||||
|
{fc::vt100_key_lequal , fc::LessThanOrEqualTo}, // ≤
|
||||||
|
{fc::vt100_key_gequal , fc::GreaterThanOrEqualTo}, // ≥
|
||||||
|
{fc::vt100_key_pi , fc::Pi}, // π
|
||||||
|
{fc::vt100_key_nequal , fc::NotEqualTo}, // ≠
|
||||||
|
{fc::vt100_key_sterling , fc::Pound}, // £
|
||||||
|
{fc::vt100_key_bullet , fc::SmallBullet}, // ·
|
||||||
|
{fc::vt100_key_diamond , fc::Bullet} // ◆
|
||||||
|
};
|
||||||
|
|
||||||
|
const int lastKeyItem = ( sizeof(vt100_key_to_utf8) /
|
||||||
|
sizeof(vt100_key_to_utf8[0]) ) - 1;
|
||||||
|
|
||||||
|
|
||||||
|
static uInt cp437_to_ucs[][2] =
|
||||||
|
{
|
||||||
|
{0x80, 0x00c7}, // latin capital letter c with cedilla
|
||||||
|
{0x81, 0x00fc}, // latin small letter u with diaeresis
|
||||||
|
{0x82, 0x00e9}, // latin small letter e with acute
|
||||||
|
{0x83, 0x00e2}, // latin small letter a with circumflex
|
||||||
|
{0x84, 0x00e4}, // latin small letter a with diaeresis
|
||||||
|
{0x85, 0x00e0}, // latin small letter a with grave
|
||||||
|
{0x86, 0x00e5}, // latin small letter a with ring above
|
||||||
|
{0x87, 0x00e7}, // latin small letter c with cedilla
|
||||||
|
{0x88, 0x00ea}, // latin small letter e with circumflex
|
||||||
|
{0x89, 0x00eb}, // latin small letter e with diaeresis
|
||||||
|
{0x8a, 0x00e8}, // latin small letter e with grave
|
||||||
|
{0x8b, 0x00ef}, // latin small letter i with diaeresis
|
||||||
|
{0x8c, 0x00ee}, // latin small letter i with circumflex
|
||||||
|
{0x8d, 0x00ec}, // latin small letter i with grave
|
||||||
|
{0x8e, 0x00c4}, // latin capital letter a with diaeresis
|
||||||
|
{0x8f, 0x00c5}, // latin capital letter a with ring above
|
||||||
|
{0x90, 0x00c9}, // latin capital letter e with acute
|
||||||
|
{0x91, 0x00e6}, // latin small ligature ae
|
||||||
|
{0x92, 0x00c6}, // latin capital ligature ae
|
||||||
|
{0x93, 0x00f4}, // latin small letter o with circumflex
|
||||||
|
{0x94, 0x00f6}, // latin small letter o with diaeresis
|
||||||
|
{0x95, 0x00f2}, // latin small letter o with grave
|
||||||
|
{0x96, 0x00fb}, // latin small letter u with circumflex
|
||||||
|
{0x97, 0x00f9}, // latin small letter u with grave
|
||||||
|
{0x98, 0x00ff}, // latin small letter y with diaeresis
|
||||||
|
{0x99, 0x00d6}, // latin capital letter o with diaeresis
|
||||||
|
{0x9a, 0x00dc}, // latin capital letter u with diaeresis
|
||||||
|
{0x9b, 0x00a2}, // cent sign
|
||||||
|
{0x9c, 0x00a3}, // pound sign
|
||||||
|
{0x9d, 0x00a5}, // yen sign
|
||||||
|
{0x9e, 0x20a7}, // peseta sign
|
||||||
|
{0x9f, 0x0192}, // latin small letter f with hook
|
||||||
|
{0xa0, 0x00e1}, // latin small letter a with acute
|
||||||
|
{0xa1, 0x00ed}, // latin small letter i with acute
|
||||||
|
{0xa2, 0x00f3}, // latin small letter o with acute
|
||||||
|
{0xa3, 0x00fa}, // latin small letter u with acute
|
||||||
|
{0xa4, 0x00f1}, // latin small letter n with tilde
|
||||||
|
{0xa5, 0x00d1}, // latin capital letter n with tilde
|
||||||
|
{0xa6, 0x00aa}, // feminine ordinal indicator
|
||||||
|
{0xa7, 0x00ba}, // masculine ordinal indicator
|
||||||
|
{0xa8, 0x00bf}, // inverted question mark
|
||||||
|
{0xa9, 0x2310}, // reversed not sign
|
||||||
|
{0xaa, 0x00ac}, // not sign
|
||||||
|
{0xab, 0x00bd}, // vulgar fraction one half
|
||||||
|
{0xac, 0x00bc}, // vulgar fraction one quarter
|
||||||
|
{0xad, 0x00a1}, // inverted exclamation mark
|
||||||
|
{0xae, 0x00ab}, // left-pointing double angle quotation mark
|
||||||
|
{0xaf, 0x00bb}, // right-pointing double angle quotation mark
|
||||||
|
{0xb0, 0x2591}, // light shade
|
||||||
|
{0xb1, 0x2592}, // medium shade
|
||||||
|
{0xb2, 0x2593}, // dark shade
|
||||||
|
{0xb3, 0x2502}, // box drawings light vertical
|
||||||
|
{0xb4, 0x2524}, // box drawings light vertical and left
|
||||||
|
{0xb5, 0x2561}, // box drawings vertical single and left double
|
||||||
|
{0xb6, 0x2562}, // box drawings vertical double and left single
|
||||||
|
{0xb7, 0x2556}, // box drawings down double and left single
|
||||||
|
{0xb8, 0x2555}, // box drawings down single and left double
|
||||||
|
{0xb9, 0x2563}, // box drawings double vertical and left
|
||||||
|
{0xba, 0x2551}, // box drawings double vertical
|
||||||
|
{0xbb, 0x2557}, // box drawings double down and left
|
||||||
|
{0xbc, 0x255d}, // box drawings double up and left
|
||||||
|
{0xbd, 0x255c}, // box drawings up double and left single
|
||||||
|
{0xbe, 0x255b}, // box drawings up single and left double
|
||||||
|
{0xbf, 0x2510}, // box drawings light down and left
|
||||||
|
{0xc0, 0x2514}, // box drawings light up and right
|
||||||
|
{0xc1, 0x2534}, // box drawings light up and horizontal
|
||||||
|
{0xc2, 0x252c}, // box drawings light down and horizontal
|
||||||
|
{0xc3, 0x251c}, // box drawings light vertical and right
|
||||||
|
{0xc4, 0x2500}, // box drawings light horizontal
|
||||||
|
{0xc5, 0x253c}, // box drawings light vertical and horizontal
|
||||||
|
{0xc6, 0x255e}, // box drawings vertical single and right double
|
||||||
|
{0xc7, 0x255f}, // box drawings vertical double and right single
|
||||||
|
{0xc8, 0x255a}, // box drawings double up and right
|
||||||
|
{0xc9, 0x2554}, // box drawings double down and right
|
||||||
|
{0xca, 0x2569}, // box drawings double up and horizontal
|
||||||
|
{0xcb, 0x2566}, // box drawings double down and horizontal
|
||||||
|
{0xcc, 0x2560}, // box drawings double vertical and right
|
||||||
|
{0xcd, 0x2550}, // box drawings double horizontal
|
||||||
|
{0xce, 0x256c}, // box drawings double vertical and horizontal
|
||||||
|
{0xcf, 0x2567}, // box drawings up single and horizontal double
|
||||||
|
{0xd0, 0x2568}, // box drawings up double and horizontal single
|
||||||
|
{0xd1, 0x2564}, // box drawings down single and horizontal double
|
||||||
|
{0xd2, 0x2565}, // box drawings down double and horizontal single
|
||||||
|
{0xd3, 0x2559}, // box drawings up double and right single
|
||||||
|
{0xd4, 0x2558}, // box drawings up single and right double
|
||||||
|
{0xd5, 0x2552}, // box drawings down single and right double
|
||||||
|
{0xd6, 0x2553}, // box drawings down double and right single
|
||||||
|
{0xd7, 0x256b}, // box drawings vertical double and horizontal single
|
||||||
|
{0xd8, 0x256a}, // box drawings vertical single and horizontal double
|
||||||
|
{0xd9, 0x2518}, // box drawings light up and left
|
||||||
|
{0xda, 0x250c}, // box drawings light down and right
|
||||||
|
{0xdb, 0x2588}, // full block
|
||||||
|
{0xdc, 0x2584}, // lower half block
|
||||||
|
{0xdd, 0x258c}, // left half block
|
||||||
|
{0xde, 0x2590}, // right half block
|
||||||
|
{0xdf, 0x2580}, // upper half block
|
||||||
|
{0xe0, 0x03b1}, // greek small letter alpha
|
||||||
|
{0xe1, 0x00df}, // latin small letter sharp s
|
||||||
|
{0xe2, 0x0393}, // greek capital letter gamma
|
||||||
|
{0xe3, 0x03c0}, // greek small letter pi
|
||||||
|
{0xe4, 0x03a3}, // greek capital letter sigma
|
||||||
|
{0xe5, 0x03c3}, // greek small letter sigma
|
||||||
|
{0xe6, 0x00b5}, // micro sign
|
||||||
|
{0xe7, 0x03c4}, // greek small letter tau
|
||||||
|
{0xe8, 0x03a6}, // greek capital letter phi
|
||||||
|
{0xe9, 0x0398}, // greek capital letter theta
|
||||||
|
{0xea, 0x03a9}, // greek capital letter omega
|
||||||
|
{0xeb, 0x03b4}, // greek small letter delta
|
||||||
|
{0xec, 0x221e}, // infinity
|
||||||
|
{0xed, 0x03c6}, // greek small letter phi
|
||||||
|
{0xee, 0x03b5}, // greek small letter epsilon
|
||||||
|
{0xef, 0x2229}, // intersection
|
||||||
|
{0xf0, 0x2261}, // identical to
|
||||||
|
{0xf1, 0x00b1}, // plus-minus sign
|
||||||
|
{0xf2, 0x2265}, // greater-than or equal to
|
||||||
|
{0xf3, 0x2264}, // less-than or equal to
|
||||||
|
{0xf4, 0x2320}, // top half integral
|
||||||
|
{0xf5, 0x2321}, // bottom half integral
|
||||||
|
{0xf6, 0x00f7}, // division sign
|
||||||
|
{0xf7, 0x2248}, // almost equal to
|
||||||
|
{0xf8, 0x00b0}, // degree sign
|
||||||
|
{0xf9, 0x2219}, // bullet operator
|
||||||
|
{0xfa, 0x00b7}, // middle dot
|
||||||
|
{0xfb, 0x221a}, // square root
|
||||||
|
{0xfc, 0x207f}, // superscript latin small letter n
|
||||||
|
{0xfd, 0x00b2}, // superscript two
|
||||||
|
{0xfe, 0x25a0}, // black square
|
||||||
|
{0xff, 0x00a0} // no-break space
|
||||||
|
};
|
||||||
|
|
||||||
|
const uInt lastCP437Item = (sizeof(cp437_to_ucs) / sizeof(cp437_to_ucs[0])) - 1;
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _FCHARMAP_H
|
|
@ -0,0 +1,70 @@
|
||||||
|
// fcheckbox.cpp
|
||||||
|
// class FCheckBox
|
||||||
|
|
||||||
|
#include "fcheckbox.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FCheckBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructor and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FCheckBox::FCheckBox(FWidget* parent) : FToggleButton(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FCheckBox::FCheckBox ( const FString& txt,
|
||||||
|
FWidget* parent ) : FToggleButton(txt, parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FCheckBox::~FCheckBox() // destructor
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private methods of FCheckBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FCheckBox::draw()
|
||||||
|
{
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
drawCheckButton();
|
||||||
|
drawLabel();
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
|
||||||
|
FToggleButton::draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FCheckBox::drawCheckButton()
|
||||||
|
{
|
||||||
|
if ( ! isVisible() )
|
||||||
|
return;
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1);
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
if ( checked )
|
||||||
|
{
|
||||||
|
if ( isNewFont() )
|
||||||
|
print (CHECKBOX_ON);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ('[');
|
||||||
|
print ('x');
|
||||||
|
print (']');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( isNewFont() )
|
||||||
|
print (CHECKBOX);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ('[');
|
||||||
|
print (' ');
|
||||||
|
print (']');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
// fcheckbox.h
|
||||||
|
// class FCheckBox
|
||||||
|
|
||||||
|
#ifndef _FCHECKBOX_H
|
||||||
|
#define _FCHECKBOX_H
|
||||||
|
|
||||||
|
#include "ftogglebutton.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FCheckBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FCheckBox : public FToggleButton
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FCheckBox (const FCheckBox&);
|
||||||
|
FCheckBox& operator = (const FCheckBox&);
|
||||||
|
void draw();
|
||||||
|
void drawCheckButton();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FCheckBox (FWidget* parent=0); // constructor
|
||||||
|
FCheckBox (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FCheckBox(); // destructor
|
||||||
|
const char* getClassName() const;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FCheckBox inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FCheckBox::getClassName() const
|
||||||
|
{ return "FCheckBox"; }
|
||||||
|
|
||||||
|
#endif // _FCHECKBOX_H
|
|
@ -0,0 +1,909 @@
|
||||||
|
// fdialog.cpp
|
||||||
|
// class FDialog
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "fdialog.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructor and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FDialog::FDialog(FWidget* parent) : FWindow(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FDialog::FDialog (const FString& txt, FWidget* parent) : FWindow(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
setText(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FDialog::~FDialog() // destructor
|
||||||
|
{
|
||||||
|
delete accelerator_list;
|
||||||
|
accelerator_list = 0;
|
||||||
|
activatePrevWindow();
|
||||||
|
delWindow(this);
|
||||||
|
|
||||||
|
const FRect& geometry = getGeometryGlobalShadow();
|
||||||
|
restoreVTerm (geometry);
|
||||||
|
|
||||||
|
FApplication* fapp = static_cast<FApplication*>(getRootWidget());
|
||||||
|
if ( ! fapp->quit_now )
|
||||||
|
parentWidget()->redraw();
|
||||||
|
|
||||||
|
if ( window_list && ! window_list->empty() )
|
||||||
|
{
|
||||||
|
widgetList::const_iterator iter, end;
|
||||||
|
iter = window_list->begin();
|
||||||
|
end = window_list->end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
putArea ((*iter)->getGlobalPos(), (*iter)->getVWin());
|
||||||
|
if ( ! maximized && ((*iter)->getFlags() & SHADOW) != 0 )
|
||||||
|
static_cast<FDialog*>(*iter)->drawDialogShadow();
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
setFocusWidget(0);
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( vwin != 0 )
|
||||||
|
{
|
||||||
|
if ( vwin->changes != 0 )
|
||||||
|
delete[] vwin->changes;
|
||||||
|
if ( vwin->text != 0 )
|
||||||
|
delete[] vwin->text;
|
||||||
|
delete vwin;
|
||||||
|
}
|
||||||
|
if ( isModal() )
|
||||||
|
unsetModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
// private methods of FDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::init()
|
||||||
|
{
|
||||||
|
flags = 0;
|
||||||
|
result_code = FDialog::Reject;
|
||||||
|
width = 10;
|
||||||
|
height = 10;
|
||||||
|
xmin = 1;
|
||||||
|
ymin = 1;
|
||||||
|
xmax = width;
|
||||||
|
ymax = height;
|
||||||
|
client_xmin = 1;
|
||||||
|
client_ymin = 1;
|
||||||
|
client_xmax = width;
|
||||||
|
client_ymax = height;
|
||||||
|
top_padding = 2;
|
||||||
|
left_padding = 1;
|
||||||
|
bottom_padding = 1;
|
||||||
|
right_padding = 1;
|
||||||
|
createArea (vwin);
|
||||||
|
setGeometry (1, 1, 10, 10, false); // initialize geometry values
|
||||||
|
focus_widget = 0;
|
||||||
|
this->text = "";
|
||||||
|
maximized = false;
|
||||||
|
ignore_padding = true;
|
||||||
|
window_object = true;
|
||||||
|
addWindow(this);
|
||||||
|
setActiveWindow(this);
|
||||||
|
|
||||||
|
foregroundColor = wc.dialog_fg;
|
||||||
|
backgroundColor = wc.dialog_bg;
|
||||||
|
|
||||||
|
if ( hasFocus() )
|
||||||
|
this->flags |= FOCUS;
|
||||||
|
if ( isEnabled() )
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
|
||||||
|
FWidget* old_focus = FWidget::getFocusWidget();
|
||||||
|
setFocus();
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
accelerator_list = new Accelerators;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::drawBorder()
|
||||||
|
{
|
||||||
|
int x1, x2, y1, y2;
|
||||||
|
x1 = xpos+xmin-1;
|
||||||
|
x2 = xpos+xmin-2+width;
|
||||||
|
y1 = ypos+ymin;
|
||||||
|
y2 = ypos+ymin-2+height;
|
||||||
|
|
||||||
|
if ( isNewFont() )
|
||||||
|
{
|
||||||
|
int fg;
|
||||||
|
if ( ! isRootWidget() )
|
||||||
|
fg = parentWidget()->getForegroundColor();
|
||||||
|
else
|
||||||
|
fg = wc.term_fg;
|
||||||
|
for (int y=y1; y <= y2; y++)
|
||||||
|
{
|
||||||
|
setColor (fg, backgroundColor);
|
||||||
|
gotoxy (x1, y);
|
||||||
|
// border left ⎸
|
||||||
|
print (fc::NF_border_line_left);
|
||||||
|
gotoxy (x2, y);
|
||||||
|
// border right⎹
|
||||||
|
print (fc::NF_rev_border_line_right);
|
||||||
|
}
|
||||||
|
if ( (flags & SHADOW) == 0 )
|
||||||
|
{
|
||||||
|
setColor (fg, backgroundColor);
|
||||||
|
gotoxy (x1, y2);
|
||||||
|
// lower left corner border ⎣
|
||||||
|
print (fc::NF_border_corner_lower_left);
|
||||||
|
for (int x=1; x < width-1; x++) // low line _
|
||||||
|
print (fc::NF_border_line_bottom);
|
||||||
|
gotoxy (x2, y2);
|
||||||
|
// lower right corner border ⎦
|
||||||
|
print (fc::NF_rev_border_corner_lower_right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gotoxy (x1, y1);
|
||||||
|
print (fc::BoxDrawingsDownAndRight); // ┌
|
||||||
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
print (fc::BoxDrawingsDownAndLeft); // ┐
|
||||||
|
|
||||||
|
gotoxy (x1, y2);
|
||||||
|
print (fc::BoxDrawingsUpAndRight); // └
|
||||||
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
print (fc::BoxDrawingsUpAndLeft); // ┘
|
||||||
|
|
||||||
|
for (int y=y1+1; y < y2; y++)
|
||||||
|
{
|
||||||
|
gotoxy (x1, y);
|
||||||
|
print (fc::BoxDrawingsVertical); // │
|
||||||
|
gotoxy (x2, y);
|
||||||
|
print (fc::BoxDrawingsVertical); // │
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::drawTitleBar()
|
||||||
|
{
|
||||||
|
int i,x;
|
||||||
|
uInt length = text.getLength();
|
||||||
|
|
||||||
|
// draw the title button
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1);
|
||||||
|
setColor (wc.titlebar_button_fg, wc.titlebar_button_bg);
|
||||||
|
if ( isNewFont() )
|
||||||
|
{
|
||||||
|
print (fc::NF_rev_menu_button1);
|
||||||
|
print (fc::NF_rev_menu_button2);
|
||||||
|
print (fc::NF_rev_menu_button3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
print (" - ");
|
||||||
|
|
||||||
|
// fill with spaces (left of the title)
|
||||||
|
if ( isActiveWindow() )
|
||||||
|
setColor (wc.titlebar_active_fg, wc.titlebar_active_bg);
|
||||||
|
else
|
||||||
|
setColor (wc.titlebar_inactive_fg, wc.titlebar_inactive_bg);
|
||||||
|
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(true);
|
||||||
|
|
||||||
|
i = width - 3 - int(length);
|
||||||
|
i = int(i/2);
|
||||||
|
|
||||||
|
for (x=1; x <= i; x++)
|
||||||
|
print (' ');
|
||||||
|
|
||||||
|
// the title bar text
|
||||||
|
print (text);
|
||||||
|
|
||||||
|
// fill the rest of the bar
|
||||||
|
for (; x+1+int(length) <= width-2; x++)
|
||||||
|
print (' ');
|
||||||
|
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(false);
|
||||||
|
|
||||||
|
/* print the number of window in stack */
|
||||||
|
//gotoxy(xpos+xmin+width-4, ypos+ymin-1);
|
||||||
|
//printf ("(%d)", getWindowLayer(this));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected methods of FDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::done(int result)
|
||||||
|
{
|
||||||
|
hide();
|
||||||
|
result_code = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::drawDialogShadow()
|
||||||
|
{
|
||||||
|
if ((flags & TRANS_SHADOW) != 0)
|
||||||
|
{
|
||||||
|
// transparent shadow
|
||||||
|
drawShadow();
|
||||||
|
if ( isNewFont() && ((flags & SCROLLABLE) == 0) )
|
||||||
|
{
|
||||||
|
FTerm::char_data ch;
|
||||||
|
// left of the shaddow ▀▀
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1+height);
|
||||||
|
for (int x=0; x <= 1; x++)
|
||||||
|
{
|
||||||
|
ch = getCoveredCharacter (xpos+xmin-1+x, ypos+ymin-1+height, this);
|
||||||
|
setColor (wc.shadow_fg, ch.bg_color);
|
||||||
|
// high line ⎺
|
||||||
|
print (fc::NF_border_line_upper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
drawShadow();
|
||||||
|
FTerm::char_data ch;
|
||||||
|
ch = getCoveredCharacter (xpos+xmin-1, ypos+ymin-1+height, this);
|
||||||
|
// left of the shaddow ▀▀
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1+height);
|
||||||
|
|
||||||
|
if ( isNewFont() && ((flags & SCROLLABLE) == 0) )
|
||||||
|
{
|
||||||
|
setColor (wc.shadow_fg, ch.bg_color);
|
||||||
|
// high line ⎺
|
||||||
|
print (fc::NF_border_line_upper);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setColor(ch.fg_color, ch.bg_color);
|
||||||
|
|
||||||
|
if ( ch.bold )
|
||||||
|
setBold();
|
||||||
|
if ( ch.reverse )
|
||||||
|
setReverse();
|
||||||
|
if ( ch.underline )
|
||||||
|
setUnderline();
|
||||||
|
|
||||||
|
print (ch.code);
|
||||||
|
|
||||||
|
if ( ch.underline )
|
||||||
|
unsetUnderline();
|
||||||
|
if ( ch.reverse )
|
||||||
|
unsetReverse();
|
||||||
|
if ( ch.bold )
|
||||||
|
unsetBold();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::draw()
|
||||||
|
{
|
||||||
|
if ( maximized && ! isRootWidget() )
|
||||||
|
{
|
||||||
|
xpos = 1;
|
||||||
|
ypos = 1;
|
||||||
|
width = xmax;
|
||||||
|
height = ymax;
|
||||||
|
}
|
||||||
|
// fill the background
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
clrscr();
|
||||||
|
drawBorder();
|
||||||
|
drawTitleBar();
|
||||||
|
|
||||||
|
if ( ! maximized && (flags & SHADOW) != 0 )
|
||||||
|
drawDialogShadow();
|
||||||
|
|
||||||
|
if ( (flags & RESIZEABLE) != 0 )
|
||||||
|
{
|
||||||
|
if ( maximized )
|
||||||
|
{
|
||||||
|
if ( isNewFont() )
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+width-3, ypos+ymin-1);
|
||||||
|
setColor (wc.titlebar_button_fg, wc.titlebar_button_bg);
|
||||||
|
print (fc::NF_rev_down_pointing_triangle1);
|
||||||
|
print (fc::NF_rev_down_pointing_triangle2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+width-4, ypos+ymin-1);
|
||||||
|
setColor (wc.titlebar_button_fg, wc.titlebar_button_bg);
|
||||||
|
print (' ');
|
||||||
|
print (fc::BlackDownPointingTriangle); // ▼
|
||||||
|
print (' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( isNewFont() )
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+width-3, ypos+ymin-1);
|
||||||
|
setColor (wc.titlebar_button_fg, wc.titlebar_button_bg);
|
||||||
|
print (fc::NF_rev_up_pointing_triangle1);
|
||||||
|
print (fc::NF_rev_up_pointing_triangle2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin+width-4, ypos+ymin-1);
|
||||||
|
setColor (wc.titlebar_button_fg, wc.titlebar_button_bg);
|
||||||
|
print (' ');
|
||||||
|
print (fc::BlackUpPointingTriangle); // ▲
|
||||||
|
print (' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onShow (FShowEvent*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onHide (FHideEvent*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onClose (FCloseEvent* event)
|
||||||
|
{
|
||||||
|
event->accept();
|
||||||
|
result_code = FDialog::Reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public methods of FDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onKeyPress (FKeyEvent* event)
|
||||||
|
{
|
||||||
|
if ( ! isEnabled() || this == getMainWidget() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( event->key() == fc::Fkey_escape
|
||||||
|
|| event->key() == fc::Fkey_escape_mintty )
|
||||||
|
{
|
||||||
|
event->accept();
|
||||||
|
if ( isModal() )
|
||||||
|
done (FDialog::Reject);
|
||||||
|
else
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onMouseDown (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int mouse_x = event->getX();
|
||||||
|
int mouse_y = event->getY();
|
||||||
|
|
||||||
|
if ( event->getButton() == LeftButton )
|
||||||
|
{
|
||||||
|
// click on titlebar or window: raise + activate
|
||||||
|
if ( mouse_x >= 4 && mouse_x <= width && mouse_y == 1 )
|
||||||
|
TitleBarClickPos.setPoint (event->getGlobalX(), event->getGlobalY());
|
||||||
|
else
|
||||||
|
TitleBarClickPos.setPoint (0,0);
|
||||||
|
|
||||||
|
bool has_raised = raiseWindow();
|
||||||
|
|
||||||
|
if ( ! isActiveWindow() )
|
||||||
|
{
|
||||||
|
FWidget* old_focus = FWidget::getFocusWidget();
|
||||||
|
setActiveWindow(this);
|
||||||
|
if ( focus_widget )
|
||||||
|
{
|
||||||
|
focus_widget->setFocus();
|
||||||
|
focus_widget->redraw();
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
}
|
||||||
|
else if ( focusFirstChild() )
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
}
|
||||||
|
if ( has_raised )
|
||||||
|
redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( event->getButton() == RightButton )
|
||||||
|
{
|
||||||
|
// click on titlebar: just activate
|
||||||
|
if ( mouse_x >= 4 && mouse_x <= width && mouse_y == 1 )
|
||||||
|
{
|
||||||
|
if ( ! isActiveWindow() )
|
||||||
|
{
|
||||||
|
FWidget* old_focus = FWidget::getFocusWidget();
|
||||||
|
setActiveWindow(this);
|
||||||
|
if ( focus_widget )
|
||||||
|
{
|
||||||
|
focus_widget->setFocus();
|
||||||
|
focus_widget->redraw();
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
}
|
||||||
|
else if ( focusFirstChild() )
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( event->getButton() == MiddleButton )
|
||||||
|
{
|
||||||
|
// click on titlebar: lower + activate
|
||||||
|
if ( mouse_x >= 4 && mouse_x <= width && mouse_y == 1 )
|
||||||
|
{
|
||||||
|
bool has_lowered = lowerWindow();
|
||||||
|
|
||||||
|
if ( ! isActiveWindow() )
|
||||||
|
{
|
||||||
|
FWidget* old_focus = FWidget::getFocusWidget();
|
||||||
|
setActiveWindow(this);
|
||||||
|
if ( focus_widget )
|
||||||
|
{
|
||||||
|
focus_widget->setFocus();
|
||||||
|
focus_widget->redraw();
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
}
|
||||||
|
else if ( focusFirstChild() )
|
||||||
|
if ( old_focus )
|
||||||
|
old_focus->redraw();
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( has_lowered )
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onMouseUp (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int titlebar_x = TitleBarClickPos.getX();
|
||||||
|
int titlebar_y = TitleBarClickPos.getY();
|
||||||
|
|
||||||
|
if ( event->getButton() == LeftButton )
|
||||||
|
{
|
||||||
|
if ( ! TitleBarClickPos.isNull()
|
||||||
|
&& titlebar_x >= xpos+xmin+3
|
||||||
|
&& titlebar_x <= xpos+xmin-1+width
|
||||||
|
&& titlebar_y == ypos+ymin-1 )
|
||||||
|
{
|
||||||
|
FPoint currentPos(getGeometry().getX(), getGeometry().getY());
|
||||||
|
FPoint deltaPos = event->getGlobalPos() - TitleBarClickPos;
|
||||||
|
move (currentPos + deltaPos);
|
||||||
|
TitleBarClickPos = event->getGlobalPos();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onMouseMove (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int titlebar_x = TitleBarClickPos.getX();
|
||||||
|
int titlebar_y = TitleBarClickPos.getY();
|
||||||
|
|
||||||
|
if ( event->getButton() == LeftButton )
|
||||||
|
{
|
||||||
|
if ( ! TitleBarClickPos.isNull()
|
||||||
|
&& titlebar_x >= xpos+xmin+3
|
||||||
|
&& titlebar_x <= xpos+xmin-1+width
|
||||||
|
&& titlebar_y == ypos+ymin-1 )
|
||||||
|
{
|
||||||
|
FPoint currentPos(getGeometry().getX(), getGeometry().getY());
|
||||||
|
FPoint deltaPos = event->getGlobalPos() - TitleBarClickPos;
|
||||||
|
move (currentPos + deltaPos);
|
||||||
|
TitleBarClickPos = event->getGlobalPos();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onMouseDoubleClick (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
x = xpos + xmin - 1;
|
||||||
|
y = ypos + ymin - 1;
|
||||||
|
FRect title_button(x, y, 3, 1);
|
||||||
|
|
||||||
|
FPoint gPos = event->getGlobalPos();
|
||||||
|
if ( title_button.contains(gPos) )
|
||||||
|
{
|
||||||
|
setClickedWidget(0);
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onWindowActive (FEvent*)
|
||||||
|
{
|
||||||
|
if ( isVisible() && isShown() )
|
||||||
|
drawTitleBar();
|
||||||
|
|
||||||
|
if ( ! FWidget::getFocusWidget() )
|
||||||
|
{
|
||||||
|
if ( focus_widget && focus_widget->isVisible() && focus_widget->isShown() )
|
||||||
|
{
|
||||||
|
focus_widget->setFocus();
|
||||||
|
focus_widget->redraw();
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
focusFirstChild();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onWindowInactive (FEvent*)
|
||||||
|
{
|
||||||
|
if ( isVisible() && isEnabled() )
|
||||||
|
drawTitleBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onWindowRaised (FEvent*)
|
||||||
|
{
|
||||||
|
widgetList::const_iterator iter, end;
|
||||||
|
putArea (getGlobalPos(), vwin);
|
||||||
|
|
||||||
|
if ( ! window_list )
|
||||||
|
return;
|
||||||
|
if ( window_list->empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// redraw shaddow of the other windows
|
||||||
|
iter = window_list->begin();
|
||||||
|
end = window_list->end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( *iter != this
|
||||||
|
&& ! maximized
|
||||||
|
&& ((*iter)->getFlags() & SHADOW) != 0 )
|
||||||
|
static_cast<FDialog*>(*iter)->drawDialogShadow();
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::onWindowLowered (FEvent*)
|
||||||
|
{
|
||||||
|
widgetList::const_iterator iter, end;
|
||||||
|
|
||||||
|
if ( ! window_list )
|
||||||
|
return;
|
||||||
|
if ( window_list->empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
iter = window_list->begin();
|
||||||
|
end = window_list->end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
putArea ((*iter)->getGlobalPos(), (*iter)->getVWin());
|
||||||
|
if ( ! maximized && ((*iter)->getFlags() & SHADOW) != 0 )
|
||||||
|
static_cast<FDialog*>(*iter)->drawDialogShadow();
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::show()
|
||||||
|
{
|
||||||
|
if ( ! isVisible() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
FWidget::show();
|
||||||
|
|
||||||
|
// set the cursor to the focus widget
|
||||||
|
if ( FWidget::getFocusWidget()
|
||||||
|
&& FWidget::getFocusWidget()->isVisible()
|
||||||
|
&& FWidget::getFocusWidget()->hasVisibleCursor()
|
||||||
|
&& FWidget::getFocusWidget()->isCursorInside() )
|
||||||
|
{
|
||||||
|
FWidget::getFocusWidget()->setCursor();
|
||||||
|
showCursor();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isModal() )
|
||||||
|
{
|
||||||
|
FApplication* fapp = static_cast<FApplication*>(getRootWidget());
|
||||||
|
fapp->enter_loop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::hide()
|
||||||
|
{
|
||||||
|
FWidget::hide();
|
||||||
|
|
||||||
|
if ( isModal() )
|
||||||
|
{
|
||||||
|
FApplication* fapp = static_cast<FApplication*>(getRootWidget());
|
||||||
|
fapp->exit_loop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FDialog::exec()
|
||||||
|
{
|
||||||
|
result_code = FDialog::Reject;
|
||||||
|
show();
|
||||||
|
return result_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::move (const FPoint& pos)
|
||||||
|
{
|
||||||
|
move( pos.getX(), pos.getY() );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::move (int x, int y)
|
||||||
|
{
|
||||||
|
int dx, dy, old_x, old_y;
|
||||||
|
|
||||||
|
if ( x == xpos && y == ypos )
|
||||||
|
return;
|
||||||
|
if ( x+width < 1 || x > getColumnNumber() || y < 1 || y > getLineNumber() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
dx = xpos - x;
|
||||||
|
dy = ypos - y;
|
||||||
|
old_x = xpos;
|
||||||
|
old_y = ypos;
|
||||||
|
short& rsw = shadow.x_ref(); // right shadow width;
|
||||||
|
short& bsh = shadow.y_ref(); // bottom shadow height
|
||||||
|
oldGeometry = getGeometryShadow();
|
||||||
|
|
||||||
|
FWidget::move(x,y);
|
||||||
|
xpos = x;
|
||||||
|
ypos = y;
|
||||||
|
|
||||||
|
putArea (x, y, vwin);
|
||||||
|
|
||||||
|
if ( getGeometry().overlap(oldGeometry) )
|
||||||
|
{
|
||||||
|
// dx > 0 : move left
|
||||||
|
// dx = 0 : move vertical
|
||||||
|
// dx < 0 : move right
|
||||||
|
// dy > 0 : move up
|
||||||
|
// dy = 0 : move horizontal
|
||||||
|
// dy < 0 : move down
|
||||||
|
|
||||||
|
if ( dx > 0 )
|
||||||
|
{
|
||||||
|
if ( dy > 0 )
|
||||||
|
restoreVTerm (old_x+width+rsw-dx, old_y, dx, height+bsh-dy);
|
||||||
|
else
|
||||||
|
restoreVTerm (old_x+width+rsw-dx, old_y+abs(dy), dx, height+bsh-abs(dy));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( dy > 0 )
|
||||||
|
restoreVTerm (old_x, old_y, abs(dx), height+bsh-dy);
|
||||||
|
else
|
||||||
|
restoreVTerm (old_x, old_y+abs(dy), abs(dx), height+bsh-abs(dy));
|
||||||
|
}
|
||||||
|
if ( dy > 0 )
|
||||||
|
restoreVTerm (old_x, old_y+height+bsh-dy, width+rsw, dy);
|
||||||
|
else
|
||||||
|
restoreVTerm (old_x, old_y, width+rsw, abs(dy));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
restoreVTerm (old_x, old_y, width+rsw, height+bsh);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! maximized && (flags & SHADOW) != 0 )
|
||||||
|
drawDialogShadow();
|
||||||
|
|
||||||
|
// handle overlaid windows
|
||||||
|
if ( window_list && ! window_list->empty() )
|
||||||
|
{
|
||||||
|
bool overlaid = false;
|
||||||
|
widgetList::const_iterator iter, end;
|
||||||
|
iter = window_list->begin();
|
||||||
|
end = window_list->end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( overlaid )
|
||||||
|
{
|
||||||
|
putArea ((*iter)->getGlobalPos(), (*iter)->getVWin());
|
||||||
|
if ( ! maximized && ((*iter)->getFlags() & SHADOW) != 0 )
|
||||||
|
static_cast<FDialog*>(*iter)->drawDialogShadow();
|
||||||
|
}
|
||||||
|
if ( vwin == (*iter)->getVWin() )
|
||||||
|
overlaid = true;
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FWidget::adjustSize();
|
||||||
|
|
||||||
|
// set the cursor to the focus widget
|
||||||
|
if ( FWidget::getFocusWidget()
|
||||||
|
&& FWidget::getFocusWidget()->isVisible()
|
||||||
|
&& FWidget::getFocusWidget()->hasVisibleCursor() )
|
||||||
|
{
|
||||||
|
FPoint cursor_pos = FWidget::getFocusWidget()->getCursorPos();
|
||||||
|
cursor_pos -= FPoint(dx,dy);
|
||||||
|
if ( ! FWidget::getFocusWidget()->setCursorPos(cursor_pos) )
|
||||||
|
hideCursor();
|
||||||
|
}
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::setWidth (int w, bool adjust)
|
||||||
|
{
|
||||||
|
int old_width = width;
|
||||||
|
FWidget::setWidth (w, adjust);
|
||||||
|
if ( vwin && width != old_width )
|
||||||
|
resizeArea (vwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::setHeight (int h, bool adjust)
|
||||||
|
{
|
||||||
|
int old_height = height;
|
||||||
|
FWidget::setHeight (h, adjust);
|
||||||
|
if ( vwin && height != old_height )
|
||||||
|
resizeArea (vwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::setGeometry (int x, int y, int w, int h, bool adjust)
|
||||||
|
{
|
||||||
|
int old_width = width;
|
||||||
|
int old_height = height;
|
||||||
|
FWidget::setGeometry (x, y, w, h, adjust);
|
||||||
|
if ( vwin && (width != old_width || height != old_height) )
|
||||||
|
resizeArea (vwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FWidget* FDialog::getFocusWidget() const
|
||||||
|
{
|
||||||
|
return static_cast<FWidget*>(focus_widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FDialog::setFocusWidget (FWidget* obj)
|
||||||
|
{
|
||||||
|
focus_widget = obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setFocus (bool on)
|
||||||
|
{
|
||||||
|
FWidget::setFocus(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
this->flags |= FOCUS;
|
||||||
|
else
|
||||||
|
this->flags &= ~FOCUS;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setModal (bool on)
|
||||||
|
{
|
||||||
|
if ( isModal() == on )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= MODAL;
|
||||||
|
modal_dialogs++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~MODAL;
|
||||||
|
modal_dialogs--;
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setTransparentShadow (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= SHADOW;
|
||||||
|
this->flags |= TRANS_SHADOW;
|
||||||
|
shadow.setPoint(2,1);
|
||||||
|
adjustWidgetSizeShadow = getGeometry() + getShadow();
|
||||||
|
adjustWidgetSizeGlobalShadow = getGeometryGlobal() + getShadow();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~SHADOW;
|
||||||
|
this->flags &= ~TRANS_SHADOW;
|
||||||
|
shadow.setPoint(0,0);
|
||||||
|
adjustWidgetSizeShadow = getGeometry() + getShadow();
|
||||||
|
adjustWidgetSizeGlobalShadow = getGeometryGlobal() + getShadow();
|
||||||
|
}
|
||||||
|
resizeArea (vwin);
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setShadow (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= SHADOW;
|
||||||
|
this->flags &= ~TRANS_SHADOW;
|
||||||
|
shadow.setPoint(1,1);
|
||||||
|
adjustWidgetSizeShadow = getGeometry() + getShadow();
|
||||||
|
adjustWidgetSizeGlobalShadow = getGeometryGlobal() + getShadow();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~SHADOW;
|
||||||
|
this->flags &= ~TRANS_SHADOW;
|
||||||
|
shadow.setPoint(0,0);
|
||||||
|
adjustWidgetSizeShadow = getGeometry() + getShadow();
|
||||||
|
adjustWidgetSizeGlobalShadow = getGeometryGlobal() + getShadow();
|
||||||
|
}
|
||||||
|
resizeArea (vwin);
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setScrollable (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->flags |= SCROLLABLE;
|
||||||
|
else
|
||||||
|
this->flags &= ~SCROLLABLE;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setResizeable (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->flags |= RESIZEABLE;
|
||||||
|
else
|
||||||
|
this->flags &= ~RESIZEABLE;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FDialog::setMaximized()
|
||||||
|
{
|
||||||
|
if ( maximized )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
maximized = true;
|
||||||
|
// setGeometry(1, 1, xmax, ymax);
|
||||||
|
return maximized;
|
||||||
|
}
|
|
@ -0,0 +1,190 @@
|
||||||
|
// fdialog.h
|
||||||
|
// class FDialog
|
||||||
|
|
||||||
|
#ifndef _FDIALOG_H
|
||||||
|
#define _FDIALOG_H
|
||||||
|
|
||||||
|
#include "fwindow.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FDialog : public FWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum DialogCode
|
||||||
|
{
|
||||||
|
Reject = 0,
|
||||||
|
Accept = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
int result_code;
|
||||||
|
bool maximized;
|
||||||
|
FPoint TitleBarClickPos;
|
||||||
|
FRect oldGeometry; // required by move()
|
||||||
|
FWidget* focus_widget;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FDialog (const FDialog&);
|
||||||
|
FDialog& operator = (const FDialog&);
|
||||||
|
void init();
|
||||||
|
void drawBorder();
|
||||||
|
void drawTitleBar();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void done (int);
|
||||||
|
virtual void draw();
|
||||||
|
virtual void onShow (FShowEvent*);
|
||||||
|
virtual void onHide (FHideEvent*);
|
||||||
|
virtual void onClose (FCloseEvent*);
|
||||||
|
|
||||||
|
public:
|
||||||
|
FDialog (FWidget* parent=0); // constructor
|
||||||
|
FDialog (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FDialog(); // destructor
|
||||||
|
virtual const char* getClassName() const;
|
||||||
|
|
||||||
|
void onKeyPress (FKeyEvent*);
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onMouseUp (FMouseEvent*);
|
||||||
|
void onMouseMove (FMouseEvent*);
|
||||||
|
void onMouseDoubleClick (FMouseEvent*);
|
||||||
|
void onWindowActive (FEvent*);
|
||||||
|
void onWindowInactive (FEvent*);
|
||||||
|
void onWindowRaised (FEvent*);
|
||||||
|
void onWindowLowered (FEvent*);
|
||||||
|
|
||||||
|
void drawDialogShadow();
|
||||||
|
void show();
|
||||||
|
void hide();
|
||||||
|
int exec();
|
||||||
|
void move (const FPoint&);
|
||||||
|
void move (int, int);
|
||||||
|
void setWidth (int, bool adjust=true);
|
||||||
|
void setHeight (int, bool adjust=true);
|
||||||
|
void setGeometry (int, int, int, int, bool adjust=true);
|
||||||
|
FWidget* getFocusWidget() const;
|
||||||
|
void setFocusWidget (FWidget*);
|
||||||
|
bool setFocus(bool);
|
||||||
|
bool setFocus();
|
||||||
|
bool unsetFocus();
|
||||||
|
bool setModal(bool);
|
||||||
|
bool setModal();
|
||||||
|
bool unsetModal();
|
||||||
|
bool isModal();
|
||||||
|
bool setScrollable(bool);
|
||||||
|
bool setScrollable();
|
||||||
|
bool unsetScrollable();
|
||||||
|
bool isScrollable();
|
||||||
|
bool setResizeable(bool);
|
||||||
|
bool setResizeable();
|
||||||
|
bool unsetResizeable();
|
||||||
|
bool isResizeable();
|
||||||
|
bool setMaximized();
|
||||||
|
bool isMaximized() const;
|
||||||
|
bool setTransparentShadow(bool);
|
||||||
|
bool setTransparentShadow();
|
||||||
|
bool unsetTransparentShadow();
|
||||||
|
bool hasTransparentShadow();
|
||||||
|
bool setShadow(bool);
|
||||||
|
bool setShadow();
|
||||||
|
bool unsetShadow();
|
||||||
|
bool hasShadow();
|
||||||
|
void setText (const FString);
|
||||||
|
FString getText() const;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
// FDialog inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FDialog::getClassName() const
|
||||||
|
{ return "FDialog"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setFocus()
|
||||||
|
{ return setFocus(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetFocus()
|
||||||
|
{ return setFocus(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setModal()
|
||||||
|
{ return setModal(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetModal()
|
||||||
|
{ return setModal(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::isModal()
|
||||||
|
{ return ((flags & MODAL) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setScrollable()
|
||||||
|
{ return setScrollable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetScrollable()
|
||||||
|
{ return setScrollable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::isScrollable()
|
||||||
|
{ return ((flags & SCROLLABLE) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setResizeable()
|
||||||
|
{ return setResizeable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetResizeable()
|
||||||
|
{ return setResizeable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::isResizeable()
|
||||||
|
{ return ((flags & RESIZEABLE) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::isMaximized() const
|
||||||
|
{ return maximized; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setTransparentShadow()
|
||||||
|
{ return setTransparentShadow(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetTransparentShadow()
|
||||||
|
{ return setTransparentShadow(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::hasTransparentShadow()
|
||||||
|
{ return ((flags & TRANS_SHADOW) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::setShadow()
|
||||||
|
{ return setShadow(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::unsetShadow()
|
||||||
|
{ return setShadow(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FDialog::hasShadow()
|
||||||
|
{ return ((flags & SHADOW) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FDialog::setText (FString txt)
|
||||||
|
{ this->text = txt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString FDialog::getText() const
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
#endif // _FDIALOG_H
|
|
@ -0,0 +1,840 @@
|
||||||
|
// fenum.h
|
||||||
|
// class fc
|
||||||
|
|
||||||
|
#ifndef _FENUM_H
|
||||||
|
#define _FENUM_H
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class fc
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class fc
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// internal character encoding
|
||||||
|
enum encoding
|
||||||
|
{
|
||||||
|
UTF8,
|
||||||
|
VT100,
|
||||||
|
PC,
|
||||||
|
ASCII,
|
||||||
|
NUM_OF_ENCODINGS // number of items
|
||||||
|
};
|
||||||
|
|
||||||
|
// VT100 line graphic keys
|
||||||
|
enum vt100_keys
|
||||||
|
{
|
||||||
|
vt100_key_rarrow = '+', // ► - arrow pointing right
|
||||||
|
vt100_key_larrow = ',', // ◄ - arrow pointing left
|
||||||
|
vt100_key_uarrow = '-', // ▲ - arrow pointing up
|
||||||
|
vt100_key_darrow = '.', // ▼ - arrow pointing down
|
||||||
|
vt100_key_block = '0', // █ - solid square block
|
||||||
|
vt100_key_nsup = 'I', // ⁿ - superscript letter n
|
||||||
|
vt100_key_blackrect = '_', // ▮ - black vertical rectangle
|
||||||
|
vt100_key_diamond = '`', // ◆ - diamond
|
||||||
|
vt100_key_ckboard = 'a', // ▒ - checker board (stipple)
|
||||||
|
vt100_key_htab = 'b', // ␉ - horizontal tab symbol
|
||||||
|
vt100_key_ff = 'c', // ␌ - form feed symbol
|
||||||
|
vt100_key_cr = 'd', // ␍ - carriage return symbol
|
||||||
|
vt100_key_lf = 'e', // ␊ - line feed symbol
|
||||||
|
vt100_key_degree = 'f', // ° - degree symbol
|
||||||
|
vt100_key_plminus = 'g', // ± - plus/minus
|
||||||
|
vt100_key_board = 'h', //  - board of squares
|
||||||
|
vt100_key_lantern = 'i', // ␋ - lantern symbol
|
||||||
|
vt100_key_lrcorner = 'j', // ┘ - lower right corner
|
||||||
|
vt100_key_urcorner = 'k', // ┐ - upper right corner
|
||||||
|
vt100_key_ulcorner = 'l', // ┌ - upper left corner
|
||||||
|
vt100_key_llcorner = 'm', // └ - lower left corner
|
||||||
|
vt100_key_plus = 'n', // ┼ - large plus or crossover
|
||||||
|
vt100_key_s1 = 'o', // ⎺ - scan line 1
|
||||||
|
vt100_key_s3 = 'p', // ⎻ - scan line 3
|
||||||
|
vt100_key_hline = 'q', // ─ - horizontal line
|
||||||
|
vt100_key_s7 = 'r', // ⎼ - scan line 7
|
||||||
|
vt100_key_s9 = 's', // ⎽ - scan line 9
|
||||||
|
vt100_key_ltee = 't', // ├ - tee pointing right
|
||||||
|
vt100_key_rtee = 'u', // ┤ - tee pointing left
|
||||||
|
vt100_key_btee = 'v', // ┴ - tee pointing up
|
||||||
|
vt100_key_ttee = 'w', // ┬ - tee pointing down
|
||||||
|
vt100_key_vline = 'x', // │ - vertical line
|
||||||
|
vt100_key_lequal = 'y', // ≤ - less-than-or-equal-to
|
||||||
|
vt100_key_gequal = 'z', // ≥ - greater-than-or-equal-to
|
||||||
|
vt100_key_pi = '{', // π - greek pi
|
||||||
|
vt100_key_nequal = '|', // ≠ - not-equal
|
||||||
|
vt100_key_sterling = '}', // £ - UK pound sign
|
||||||
|
vt100_key_bullet = '~' // · - bullet
|
||||||
|
};
|
||||||
|
|
||||||
|
// unicode characters
|
||||||
|
enum SpecialCharacter
|
||||||
|
{
|
||||||
|
Euro = 0x20ac, // €
|
||||||
|
Pound = 0x00a3, // £
|
||||||
|
Pi = 0x03c0, // π
|
||||||
|
SuperscriptLatinSmallLetterN = 0x207F, // ⁿ
|
||||||
|
GreaterThanOrEqualTo = 0x2265, // ≥
|
||||||
|
LessThanOrEqualTo = 0x2264, // ≤
|
||||||
|
NotEqualTo = 0x2260, // ≠
|
||||||
|
PlusMinus = 0x00b1, // ±
|
||||||
|
Degree = 0x00b0, // °
|
||||||
|
BlackVerticalRectangle = 0x25ae, // ▮
|
||||||
|
SmallBullet = 0x00b7, // ·
|
||||||
|
BlackDiamond = 0x25c6, // ◆
|
||||||
|
SymbolForNewline = 0x2424, // 
|
||||||
|
SymbolForVerticalTab = 0x240b, // ␋
|
||||||
|
SymbolForHorizontalTab = 0x2409, // ␉
|
||||||
|
SymbolForFormFeed = 0x240c, // ␌
|
||||||
|
SymbolForCarriageReturn = 0x240d, // ␍
|
||||||
|
SymbolForLineFeed = 0x240a, // ␊
|
||||||
|
MediumShade = 0x2592, // ▒
|
||||||
|
BoxDrawingsHorizontal = 0x2500, // ─
|
||||||
|
BoxDrawingsVertical = 0x2502, // │
|
||||||
|
BoxDrawingsDownAndRight = 0x250c, // ┌
|
||||||
|
BoxDrawingsDownAndLeft = 0x2510, // ┐
|
||||||
|
BoxDrawingsUpAndRight = 0x2514, // └
|
||||||
|
BoxDrawingsUpAndLeft = 0x2518, // ┘
|
||||||
|
BoxDrawingsCross = 0x253c, // ┼
|
||||||
|
BoxDrawingsDownAndHorizontal = 0x252c, // ┬
|
||||||
|
BoxDrawingsVerticalAndLeft = 0x2524, // ┤
|
||||||
|
BoxDrawingsVerticalAndRight = 0x251c, // ├
|
||||||
|
BoxDrawingsUpAndHorizontal = 0x2534, // ┴
|
||||||
|
HorizontalScanLine1 = 0x23ba, // ⎺
|
||||||
|
HorizontalScanLine3 = 0x23bb, // ⎻
|
||||||
|
HorizontalScanLine7 = 0x23bc, // ⎼
|
||||||
|
HorizontalScanLine9 = 0x23bd, // ⎽
|
||||||
|
BlackUpPointingTriangle = 0x25b2, // ▲
|
||||||
|
BlackDownPointingTriangle = 0x25bc, // ▼
|
||||||
|
BlackRightPointingPointer = 0x25ba, // ►
|
||||||
|
BlackLeftPointingPointer = 0x25c4, // ◄
|
||||||
|
Bullet = 0x2022, // •
|
||||||
|
FullBlock = 0x2588, // █
|
||||||
|
UpperHalfBlock = 0x2580, // ▀
|
||||||
|
LowerHalfBlock = 0x2584, // ▄
|
||||||
|
LeftHalfBlock = 0x258c, // ▌
|
||||||
|
RightHalfBlock = 0x2590, // ▐
|
||||||
|
NF_rev_left_arrow2 = 0x1ab4, // ⊐
|
||||||
|
NF_rev_right_arrow2 = 0x1ab5, // ►
|
||||||
|
NF_radio_button3 = 0x1ab7, // )
|
||||||
|
NF_rev_border_corner_upper_right = 0x1ab8, // ⎤
|
||||||
|
NF_rev_border_line_right = 0x1ab9, // ⎹
|
||||||
|
NF_rev_border_line_vertical_left = 0x1aba, // ┤
|
||||||
|
NF_rev_border_corner_lower_right = 0x1abb, // ⎦
|
||||||
|
NF_border_line_left = 0x1abc, // ⎸
|
||||||
|
NF_rev_up_arrow2 = 0x1abd, //⎹◣
|
||||||
|
NF_rev_down_arrow2 = 0x1abe, //⎹◤
|
||||||
|
NF_border_corner_middle_lower_left = 0x1ac0, // └
|
||||||
|
NF_rev_up_arrow1 = 0x1ac1, // ◢⎸
|
||||||
|
NF_rev_down_arrow1 = 0x1ac2, // ◥⎸
|
||||||
|
NF_border_line_vertical_right = 0x1ac3, // ├
|
||||||
|
NF_border_line_up_and_down = 0x1ac5, // ニ
|
||||||
|
NF_shadow_box_middle = 0x1ac6, // ニ
|
||||||
|
NF_shadow_box_hdd = 0x1ac7, // ニ
|
||||||
|
NF_rev_left_arrow1 = 0x1ac8, // ◄
|
||||||
|
NF_rev_right_arrow1 = 0x1ac9, // ⊏
|
||||||
|
NF_rev_menu_button1 = 0x1aca, // [
|
||||||
|
NF_rev_menu_button2 = 0x1acb, // -
|
||||||
|
NF_border_corner_middle_upper_left = 0x1acc, // ┌
|
||||||
|
NF_shadow_box_cd = 0x1acd, // ニ
|
||||||
|
NF_shadow_box_left = 0x1ace, // [
|
||||||
|
NF_border_corner_middle_lower_right = 0x1acf, // ┘
|
||||||
|
NF_border_corner_middle_upper_right = 0x1ad0, // ┐
|
||||||
|
NF_shadow_box_net = 0x1ad1, // ニ
|
||||||
|
NF_rev_up_pointing_triangle1 = 0x1ad2, // ◢
|
||||||
|
NF_border_corner_lower_left = 0x1ad3, // ⎣
|
||||||
|
NF_border_line_bottom = 0x1ad4, // _
|
||||||
|
NF_radio_button2 = 0x1ad5, // ⁐
|
||||||
|
NF_radio_button2_checked = 0x1ad6, // ●
|
||||||
|
NF_rev_down_pointing_triangle1 = 0x1ad7, // ◥
|
||||||
|
NF_border_line_upper = 0x1ad8, // ¯
|
||||||
|
NF_radio_button1 = 0x1ad9, // (
|
||||||
|
NF_border_corner_upper_left = 0x1ada, // ⎡
|
||||||
|
NF_shadow_box_checked = 0x1adc, // ✓
|
||||||
|
NF_rev_up_pointing_triangle2 = 0x1ae8, // ◣
|
||||||
|
NF_rev_down_pointing_triangle2 = 0x1ae9, // ◤
|
||||||
|
NF_rev_menu_button3 = 0x1af4, // ]
|
||||||
|
NF_shadow_box_right = 0x1af5, // ]
|
||||||
|
NF_check_mark = 0x1afb // ✓
|
||||||
|
};
|
||||||
|
|
||||||
|
// keyboard - single keys
|
||||||
|
enum keys
|
||||||
|
{
|
||||||
|
Fkey_erase = 0x0000008,
|
||||||
|
Fkey_tab = 0x0000009,
|
||||||
|
Fkey_return = 0x000000d,
|
||||||
|
Fkey_escape = 0x000001b,
|
||||||
|
Fkey_space = 0x0000020,
|
||||||
|
Fkey_backspace = 0x1000100,
|
||||||
|
Fkey_catab = 0x1000101,
|
||||||
|
Fkey_clear = 0x1000102,
|
||||||
|
Fkey_ctab = 0x1000103,
|
||||||
|
Fkey_dc = 0x1000104,
|
||||||
|
Fkey_dl = 0x1000105,
|
||||||
|
Fkey_down = 0x1000106,
|
||||||
|
Fkey_eic = 0x1000107,
|
||||||
|
Fkey_eol = 0x1000108,
|
||||||
|
Fkey_eos = 0x1000109,
|
||||||
|
Fkey_f0 = 0x100010a,
|
||||||
|
Fkey_f1 = 0x100010b,
|
||||||
|
Fkey_f2 = 0x100010c,
|
||||||
|
Fkey_f3 = 0x100010d,
|
||||||
|
Fkey_f4 = 0x100010e,
|
||||||
|
Fkey_f5 = 0x100010f,
|
||||||
|
Fkey_f6 = 0x1000110,
|
||||||
|
Fkey_f7 = 0x1000111,
|
||||||
|
Fkey_f8 = 0x1000112,
|
||||||
|
Fkey_f9 = 0x1000113,
|
||||||
|
Fkey_f10 = 0x1000114,
|
||||||
|
Fkey_home = 0x1000115,
|
||||||
|
Fkey_ic = 0x1000116, // insert key
|
||||||
|
Fkey_il = 0x1000117,
|
||||||
|
Fkey_left = 0x1000118,
|
||||||
|
Fkey_ll = 0x1000119,
|
||||||
|
Fkey_npage = 0x100011a,
|
||||||
|
Fkey_ppage = 0x100011b,
|
||||||
|
Fkey_right = 0x100011c,
|
||||||
|
Fkey_sf = 0x100011d,
|
||||||
|
Fkey_sr = 0x100011e,
|
||||||
|
Fkey_stab = 0x100011f,
|
||||||
|
Fkey_up = 0x1000120,
|
||||||
|
Fkey_a1 = 0x1000121,
|
||||||
|
Fkey_a3 = 0x1000122,
|
||||||
|
Fkey_b2 = 0x1000123,
|
||||||
|
Fkey_c1 = 0x1000124,
|
||||||
|
Fkey_c3 = 0x1000125,
|
||||||
|
Fkey_btab = 0x1000126,
|
||||||
|
Fkey_beg = 0x1000127,
|
||||||
|
Fkey_cancel = 0x1000128,
|
||||||
|
Fkey_close = 0x1000129,
|
||||||
|
Fkey_command = 0x100012a,
|
||||||
|
Fkey_copy = 0x100012b,
|
||||||
|
Fkey_create = 0x100012c,
|
||||||
|
Fkey_end = 0x100012d,
|
||||||
|
Fkey_enter = 0x100012e,
|
||||||
|
Fkey_exit = 0x100012f,
|
||||||
|
Fkey_find = 0x1000130,
|
||||||
|
Fkey_help = 0x1000131,
|
||||||
|
Fkey_mark = 0x1000132,
|
||||||
|
Fkey_message = 0x1000133,
|
||||||
|
Fkey_move = 0x1000134,
|
||||||
|
Fkey_next = 0x1000135,
|
||||||
|
Fkey_open = 0x1000136,
|
||||||
|
Fkey_options = 0x1000137,
|
||||||
|
Fkey_previous = 0x1000138,
|
||||||
|
Fkey_print = 0x1000139,
|
||||||
|
Fkey_redo = 0x100013a,
|
||||||
|
Fkey_reference = 0x100013b,
|
||||||
|
Fkey_refresh = 0x100013c,
|
||||||
|
Fkey_replace = 0x100013d,
|
||||||
|
Fkey_restart = 0x100013e,
|
||||||
|
Fkey_resume = 0x100013f,
|
||||||
|
Fkey_save = 0x1000140,
|
||||||
|
Fkey_suspend = 0x1000141,
|
||||||
|
Fkey_undo = 0x1000142,
|
||||||
|
Fkey_sbeg = 0x1000143,
|
||||||
|
Fkey_scancel = 0x1000144,
|
||||||
|
Fkey_scommand = 0x1000145,
|
||||||
|
Fkey_scopy = 0x1000146,
|
||||||
|
Fkey_screate = 0x1000147,
|
||||||
|
Fkey_sdc = 0x1000148,
|
||||||
|
Fkey_sdl = 0x1000149,
|
||||||
|
Fkey_select = 0x100014a,
|
||||||
|
Fkey_send = 0x100014b,
|
||||||
|
Fkey_seol = 0x100014c,
|
||||||
|
Fkey_sexit = 0x100014d,
|
||||||
|
Fkey_sfind = 0x100014e,
|
||||||
|
Fkey_shelp = 0x100014f,
|
||||||
|
Fkey_shome = 0x1000150,
|
||||||
|
Fkey_sic = 0x1000151,
|
||||||
|
Fkey_sleft = 0x1000152,
|
||||||
|
Fkey_smessage = 0x1000153,
|
||||||
|
Fkey_smove = 0x1000154,
|
||||||
|
Fkey_snext = 0x1000155,
|
||||||
|
Fkey_soptions = 0x1000156,
|
||||||
|
Fkey_sprevious = 0x1000157,
|
||||||
|
Fkey_sprint = 0x1000158,
|
||||||
|
Fkey_sredo = 0x1000159,
|
||||||
|
Fkey_sreplace = 0x100015a,
|
||||||
|
Fkey_sright = 0x100015b,
|
||||||
|
Fkey_srsume = 0x100015c,
|
||||||
|
Fkey_ssave = 0x100015d,
|
||||||
|
Fkey_ssuspend = 0x100015e,
|
||||||
|
Fkey_sundo = 0x100015f,
|
||||||
|
Fkey_f11 = 0x1000160,
|
||||||
|
Fkey_f12 = 0x1000161,
|
||||||
|
Fkey_f13 = 0x1000162,
|
||||||
|
Fkey_f14 = 0x1000163,
|
||||||
|
Fkey_f15 = 0x1000164,
|
||||||
|
Fkey_f16 = 0x1000165,
|
||||||
|
Fkey_f17 = 0x1000166,
|
||||||
|
Fkey_f18 = 0x1000167,
|
||||||
|
Fkey_f19 = 0x1000168,
|
||||||
|
Fkey_f20 = 0x1000169,
|
||||||
|
Fkey_f21 = 0x100016a,
|
||||||
|
Fkey_f22 = 0x100016b,
|
||||||
|
Fkey_f23 = 0x100016c,
|
||||||
|
Fkey_f24 = 0x100016d,
|
||||||
|
Fkey_f25 = 0x100016e,
|
||||||
|
Fkey_f26 = 0x100016f,
|
||||||
|
Fkey_f27 = 0x1000170,
|
||||||
|
Fkey_f28 = 0x1000171,
|
||||||
|
Fkey_f29 = 0x1000172,
|
||||||
|
Fkey_f30 = 0x1000173,
|
||||||
|
Fkey_f31 = 0x1000174,
|
||||||
|
Fkey_f32 = 0x1000175,
|
||||||
|
Fkey_f33 = 0x1000176,
|
||||||
|
Fkey_f34 = 0x1000177,
|
||||||
|
Fkey_f35 = 0x1000178,
|
||||||
|
Fkey_f36 = 0x1000179,
|
||||||
|
Fkey_f37 = 0x100017a,
|
||||||
|
Fkey_f38 = 0x100017b,
|
||||||
|
Fkey_f39 = 0x100017c,
|
||||||
|
Fkey_f40 = 0x100017d,
|
||||||
|
Fkey_f41 = 0x100017e,
|
||||||
|
Fkey_f42 = 0x100017f,
|
||||||
|
Fkey_f43 = 0x1000180,
|
||||||
|
Fkey_f44 = 0x1000181,
|
||||||
|
Fkey_f45 = 0x1000182,
|
||||||
|
Fkey_f46 = 0x1000183,
|
||||||
|
Fkey_f47 = 0x1000184,
|
||||||
|
Fkey_f48 = 0x1000185,
|
||||||
|
Fkey_f49 = 0x1000186,
|
||||||
|
Fkey_f50 = 0x1000187,
|
||||||
|
Fkey_f51 = 0x1000188,
|
||||||
|
Fkey_f52 = 0x1000189,
|
||||||
|
Fkey_f53 = 0x100018a,
|
||||||
|
Fkey_f54 = 0x100018b,
|
||||||
|
Fkey_f55 = 0x100018c,
|
||||||
|
Fkey_f56 = 0x100018d,
|
||||||
|
Fkey_f57 = 0x100018e,
|
||||||
|
Fkey_f58 = 0x100018f,
|
||||||
|
Fkey_f59 = 0x1000190,
|
||||||
|
Fkey_f60 = 0x1000191,
|
||||||
|
Fkey_f61 = 0x1000192,
|
||||||
|
Fkey_f62 = 0x1000193,
|
||||||
|
Fkey_f63 = 0x1000194
|
||||||
|
};
|
||||||
|
|
||||||
|
// keyboard - modifier key combinations
|
||||||
|
enum metakeys
|
||||||
|
{
|
||||||
|
Fmkey_ic = 0x1500100, // M-insert
|
||||||
|
Fmkey_dc = 0x1500101, // M-delete
|
||||||
|
Fmkey_home = 0x1500102, // M-home
|
||||||
|
Fmkey_end = 0x1500103, // M-end
|
||||||
|
Fmkey_ppage = 0x1500104, // M-prev-page
|
||||||
|
Fmkey_npage = 0x1500105, // M-next-page
|
||||||
|
Fmkey_f1 = 0x1500106, // M-f1
|
||||||
|
Fmkey_f2 = 0x1500107, // M-f2
|
||||||
|
Fmkey_f3 = 0x1500108, // M-f3
|
||||||
|
Fmkey_f4 = 0x1500109, // M-f4
|
||||||
|
Fmkey_f5 = 0x150010a, // M-f5
|
||||||
|
Fmkey_f6 = 0x150010b, // M-F6
|
||||||
|
Fmkey_f7 = 0x150010c, // M-f7
|
||||||
|
Fmkey_f8 = 0x150010d, // M-f8
|
||||||
|
Fmkey_f9 = 0x150010e, // M-f9
|
||||||
|
Fmkey_f10 = 0x150010f, // M-f10
|
||||||
|
Fmkey_f11 = 0x1500110, // M-f11
|
||||||
|
Fmkey_f12 = 0x1500111, // M-f12
|
||||||
|
Fmkey_up = 0x1500112, // M-up
|
||||||
|
Fmkey_down = 0x1500113, // M-down
|
||||||
|
Fmkey_right = 0x1500114, // M-right
|
||||||
|
Fmkey_left = 0x1500115, // M-left
|
||||||
|
Fmkey_sic = 0x1500116, // shifted M-Insert
|
||||||
|
Fmkey_sdc = 0x1500117, // shifted M-Delete
|
||||||
|
Fmkey_shome = 0x1500118, // shifted M-Home
|
||||||
|
Fmkey_send = 0x1500119, // shifted M-End
|
||||||
|
Fmkey_sppage = 0x150011a, // shifted M-Page_Up
|
||||||
|
Fmkey_snpage = 0x150011b, // shifted M-Page_Down
|
||||||
|
Fmkey_sf1 = 0x150011c, // shifted M-F1
|
||||||
|
Fmkey_sf2 = 0x150011d, // shifted M-F2
|
||||||
|
Fmkey_sf3 = 0x150011e, // shifted M-F3
|
||||||
|
Fmkey_sf4 = 0x150011f, // shifted M-F4
|
||||||
|
Fmkey_sf5 = 0x1500120, // shifted M-F5
|
||||||
|
Fmkey_sf6 = 0x1500121, // shifted M-F6
|
||||||
|
Fmkey_sf7 = 0x1500122, // shifted M-F7
|
||||||
|
Fmkey_sf8 = 0x1500123, // shifted M-F8
|
||||||
|
Fmkey_sf9 = 0x1500124, // shifted M-F9
|
||||||
|
Fmkey_sf10 = 0x1500125, // shifted M-F10
|
||||||
|
Fmkey_sf11 = 0x1500126, // shifted M-F11
|
||||||
|
Fmkey_sf12 = 0x1500127, // shifted M-F12
|
||||||
|
Fmkey_sup = 0x1500128, // shifted M-Up
|
||||||
|
Fmkey_sdown = 0x1500129, // shifted M-Down
|
||||||
|
Fmkey_sright = 0x150012a, // shifted M-Right
|
||||||
|
Fmkey_sleft = 0x150012b, // shifted M-Left
|
||||||
|
Fckey_ic = 0x150012c, // control-Insert
|
||||||
|
Fckey_dc = 0x150012d, // control-Delete
|
||||||
|
Fckey_home = 0x150012e, // control-Home
|
||||||
|
Fckey_end = 0x150012f, // control-End
|
||||||
|
Fckey_ppage = 0x1500130, // control-Page_Up
|
||||||
|
Fckey_npage = 0x1500131, // control-Page_Down
|
||||||
|
Fckey_up = 0x1500132, // control-Up
|
||||||
|
Fckey_down = 0x1500133, // control-Down
|
||||||
|
Fckey_right = 0x1500134, // control-Right
|
||||||
|
Fckey_left = 0x1500135, // control-Left
|
||||||
|
Fckey_sic = 0x1500136, // shifted control-M-Insert
|
||||||
|
Fckey_sdc = 0x1500137, // shifted control-M-Delete
|
||||||
|
Fckey_shome = 0x1500138, // shifted control-M-Home
|
||||||
|
Fckey_send = 0x1500139, // shifted control-M-End
|
||||||
|
Fckey_sppage = 0x150013a, // shifted control-M-Page_Up
|
||||||
|
Fckey_snpage = 0x150013b, // shifted control-M-Page_Down
|
||||||
|
Fckey_sup = 0x150013c, // shifted control-M-Up
|
||||||
|
Fckey_sdown = 0x150013d, // shifted control-M-Down
|
||||||
|
Fckey_sright = 0x150013e, // shifted control-M-Right
|
||||||
|
Fckey_sleft = 0x150013f, // shifted control-M-Left
|
||||||
|
Fcmkey_ic = 0x1500140, // control-M-Insert
|
||||||
|
Fcmkey_dc = 0x1500141, // control-M-Delete
|
||||||
|
Fcmkey_home = 0x1500142, // control-M-Home
|
||||||
|
Fcmkey_end = 0x1500143, // control-M-End
|
||||||
|
Fcmkey_ppage = 0x1500144, // control-M-Page_Up
|
||||||
|
Fcmkey_npage = 0x1500145, // control-M-Page_Down
|
||||||
|
Fcmkey_up = 0x1500146, // control-M-Up
|
||||||
|
Fcmkey_down = 0x1500147, // control-M-Down
|
||||||
|
Fcmkey_right = 0x1500148, // control-M-Right
|
||||||
|
Fcmkey_left = 0x1500149, // control-M-Left
|
||||||
|
Fcmkey_sic = 0x150014a, // shifted control-M-Insert
|
||||||
|
Fcmkey_sdc = 0x150014b, // shifted control-M-Delete
|
||||||
|
Fcmkey_shome = 0x150014c, // shifted control-M-Home
|
||||||
|
Fcmkey_send = 0x150014d, // shifted control-M-End
|
||||||
|
Fcmkey_sppage = 0x150014e, // shifted control-M-Page_Up
|
||||||
|
Fcmkey_snpage = 0x150014f, // shifted control-M-Page_Down
|
||||||
|
Fcmkey_sf1 = 0x1500150, // shifted control-M-F1
|
||||||
|
Fcmkey_sf2 = 0x1500151, // shifted control-M-F2
|
||||||
|
Fcmkey_sf3 = 0x1500152, // shifted control-M-F3
|
||||||
|
Fcmkey_sf4 = 0x1500153, // shifted control-M-F4
|
||||||
|
Fcmkey_sf5 = 0x1500154, // shifted control-M-F5
|
||||||
|
Fcmkey_sf6 = 0x1500155, // shifted control-M-F6
|
||||||
|
Fcmkey_sf7 = 0x1500156, // shifted control-M-F7
|
||||||
|
Fcmkey_sf8 = 0x1500157, // shifted control-M-F8
|
||||||
|
Fcmkey_sf9 = 0x1500158, // shifted control-M-F9
|
||||||
|
Fcmkey_sf10 = 0x1500159, // shifted control-M-F10
|
||||||
|
Fcmkey_sf11 = 0x150015a, // shifted control-M-F11
|
||||||
|
Fcmkey_sf12 = 0x150015b, // shifted control-M-F12
|
||||||
|
Fcmkey_sup = 0x150015c, // shifted control-M-Up
|
||||||
|
Fcmkey_sdown = 0x150015d, // shifted control-M-Down
|
||||||
|
Fcmkey_sright = 0x150015e, // shifted control-M-Right
|
||||||
|
Fcmkey_sleft = 0x150015f, // shifted control-M-Left
|
||||||
|
Fkey_escape_mintty = 0x200001b, // mintty Esc
|
||||||
|
Fkey_mouse = 0x2000020, // xterm mouse
|
||||||
|
Fkey_extended_mouse = 0x2000021, // SGR extended mouse
|
||||||
|
Fkey_urxvt_mouse = 0x2000022, // urxvt mouse extension
|
||||||
|
Fmkey_space = 0x2000100, // M-' '
|
||||||
|
Fmkey_bang = 0x2000101, // M-!
|
||||||
|
Fmkey_quotes = 0x2000102, // M-"
|
||||||
|
Fmkey_hash = 0x2000103, // M-#
|
||||||
|
Fmkey_dollar = 0x2000104, // M-$
|
||||||
|
Fmkey_percent = 0x2000105, // M-%
|
||||||
|
Fmkey_ampersand = 0x2000106, // M-&
|
||||||
|
Fmkey_apostrophe = 0x2000107, // M-'
|
||||||
|
Fmkey_left_parenthesis = 0x2000108, // M-(
|
||||||
|
Fmkey_right_parenthesis = 0x2000109, // M-)
|
||||||
|
Fmkey_asterisk = 0x200010a, // M-*
|
||||||
|
Fmkey_plus = 0x200010b, // M-+
|
||||||
|
Fmkey_comma = 0x200010c, // M-,
|
||||||
|
Fmkey_minus = 0x200010d, // M-'-'
|
||||||
|
Fmkey_full_stop = 0x200010e, // M-.
|
||||||
|
Fmkey_slash = 0x200010f, // M-/
|
||||||
|
Fmkey_0 = 0x2000110, // M-0
|
||||||
|
Fmkey_1 = 0x2000111, // M-1
|
||||||
|
Fmkey_2 = 0x2000112, // M-2
|
||||||
|
Fmkey_3 = 0x2000113, // M-3
|
||||||
|
Fmkey_4 = 0x2000114, // M-4
|
||||||
|
Fmkey_5 = 0x2000115, // M-5
|
||||||
|
Fmkey_6 = 0x2000116, // M-6
|
||||||
|
Fmkey_7 = 0x2000117, // M-7
|
||||||
|
Fmkey_8 = 0x2000118, // M-8
|
||||||
|
Fmkey_9 = 0x2000119, // M-9
|
||||||
|
Fmkey_colon = 0x200011a, // M-:
|
||||||
|
Fmkey_semicolon = 0x200011b, // M-;
|
||||||
|
Fmkey_less_than = 0x200011c, // M-<
|
||||||
|
Fmkey_equals = 0x200011d, // M-=
|
||||||
|
Fmkey_greater_than = 0x200011e, // M->
|
||||||
|
Fmkey_question_mark = 0x200011f, // M-?
|
||||||
|
Fmkey_at = 0x2000120, // M-@
|
||||||
|
Fmkey_A = 0x2000121, // M-A
|
||||||
|
Fmkey_B = 0x2000122, // M-B
|
||||||
|
Fmkey_C = 0x2000123, // M-C
|
||||||
|
Fmkey_D = 0x2000124, // M-D
|
||||||
|
Fmkey_E = 0x2000125, // M-E
|
||||||
|
Fmkey_F = 0x2000126, // M-F
|
||||||
|
Fmkey_G = 0x2000127, // M-G
|
||||||
|
Fmkey_H = 0x2000128, // M-H
|
||||||
|
Fmkey_I = 0x2000129, // M-I
|
||||||
|
Fmkey_J = 0x200012a, // M-J
|
||||||
|
Fmkey_K = 0x200012b, // M-K
|
||||||
|
Fmkey_L = 0x200012c, // M-L
|
||||||
|
Fmkey_M = 0x200012d, // M-M
|
||||||
|
Fmkey_N = 0x200012e, // M-N
|
||||||
|
Fmkey_O = 0x200012f, // M-O
|
||||||
|
Fmkey_P = 0x2000130, // M-P
|
||||||
|
Fmkey_Q = 0x2000131, // M-Q
|
||||||
|
Fmkey_R = 0x2000132, // M-R
|
||||||
|
Fmkey_S = 0x2000133, // M-S
|
||||||
|
Fmkey_T = 0x2000134, // M-T
|
||||||
|
Fmkey_U = 0x2000135, // M-U
|
||||||
|
Fmkey_V = 0x2000136, // M-V
|
||||||
|
Fmkey_W = 0x2000137, // M-W
|
||||||
|
Fmkey_X = 0x2000138, // M-X
|
||||||
|
Fmkey_Y = 0x2000139, // M-Y
|
||||||
|
Fmkey_Z = 0x200013a, // M-Z
|
||||||
|
Fmkey_left_square_bracket = 0x200013b, // M-[
|
||||||
|
Fmkey_backslash = 0x200013c, // M-'\'
|
||||||
|
Fmkey_right_square_bracket = 0x200013d, // M-]
|
||||||
|
Fmkey_caret = 0x200013e, // M-^
|
||||||
|
Fmkey_underscore = 0x200013f, // M-_
|
||||||
|
Fmkey_grave_accent = 0x2000140, // M-`
|
||||||
|
Fmkey_a = 0x2000141, // M-a
|
||||||
|
Fmkey_b = 0x2000142, // M-b
|
||||||
|
Fmkey_c = 0x2000143, // M-c
|
||||||
|
Fmkey_d = 0x2000144, // M-d
|
||||||
|
Fmkey_e = 0x2000145, // M-e
|
||||||
|
Fmkey_f = 0x2000146, // M-f
|
||||||
|
Fmkey_g = 0x2000147, // M-g
|
||||||
|
Fmkey_h = 0x2000148, // M-h
|
||||||
|
Fmkey_i = 0x2000149, // M-i
|
||||||
|
Fmkey_j = 0x200014a, // M-j
|
||||||
|
Fmkey_k = 0x200014b, // M-k
|
||||||
|
Fmkey_l = 0x200014c, // M-l
|
||||||
|
Fmkey_m = 0x200014d, // M-m
|
||||||
|
Fmkey_n = 0x200014e, // M-n
|
||||||
|
Fmkey_o = 0x200014f, // M-o
|
||||||
|
Fmkey_p = 0x2000150, // M-p
|
||||||
|
Fmkey_q = 0x2000151, // M-q
|
||||||
|
Fmkey_r = 0x2000152, // M-r
|
||||||
|
Fmkey_s = 0x2000153, // M-s
|
||||||
|
Fmkey_t = 0x2000154, // M-t
|
||||||
|
Fmkey_u = 0x2000155, // M-u
|
||||||
|
Fmkey_v = 0x2000156, // M-v
|
||||||
|
Fmkey_w = 0x2000157, // M-w
|
||||||
|
Fmkey_x = 0x2000158, // M-x
|
||||||
|
Fmkey_y = 0x2000159, // M-y
|
||||||
|
Fmkey_z = 0x200015a, // M-z
|
||||||
|
Fmkey_left_curly_bracket = 0x200015b, // M-{
|
||||||
|
Fmkey_vertical_bar = 0x200015c, // M-|
|
||||||
|
Fmkey_right_curly_bracket = 0x200015d, // M-}
|
||||||
|
Fmkey_tilde = 0x200015e // M-~
|
||||||
|
};
|
||||||
|
|
||||||
|
// console color names
|
||||||
|
enum colornames
|
||||||
|
{
|
||||||
|
Black = 0,
|
||||||
|
Blue = 1,
|
||||||
|
Green = 2,
|
||||||
|
Cyan = 3,
|
||||||
|
Red = 4,
|
||||||
|
Magenta = 5,
|
||||||
|
Brown = 6,
|
||||||
|
LightGray = 7,
|
||||||
|
DarkGray = 8,
|
||||||
|
LightBlue = 9,
|
||||||
|
LightGreen = 10,
|
||||||
|
LightCyan = 11,
|
||||||
|
LightRed = 12,
|
||||||
|
LightMagenta = 13,
|
||||||
|
Yellow = 14,
|
||||||
|
White = 15,
|
||||||
|
/* 256 color terminals */
|
||||||
|
Grey0 = 16, // #000000
|
||||||
|
NavyBlue = 17, // #00005f
|
||||||
|
DarkBlue = 18, // #000087
|
||||||
|
Blue3 = 19, // #0000af
|
||||||
|
Blue2 = 20, // #0000d7
|
||||||
|
Blue1 = 21, // #0000ff
|
||||||
|
DarkGreen = 22, // #005f00
|
||||||
|
DarkCyan2 = 23, // #005f5f
|
||||||
|
DeepSkyBlue6 = 24, // #005f87
|
||||||
|
DeepSkyBlue5 = 25, // #005faf
|
||||||
|
DodgerBlue3 = 26, // #005fd7
|
||||||
|
DodgerBlue2 = 27, // #005fff
|
||||||
|
Green4 = 28, // #008700
|
||||||
|
SpringGreen6 = 29, // #00875f
|
||||||
|
Turquoise4 = 30, // #008787
|
||||||
|
DeepSkyBlue4 = 31, // #0087af
|
||||||
|
DeepSkyBlue3 = 32, // #0087d7
|
||||||
|
DodgerBlue1 = 33, // #0087ff
|
||||||
|
Green2 = 34, // #00af00
|
||||||
|
SpringGreen5 = 35, // #00af5f
|
||||||
|
DarkCyan = 36, // #00af87
|
||||||
|
LightSeaGreen = 37, // #00afaf
|
||||||
|
DeepSkyBlue2 = 38, // #00afd7
|
||||||
|
DeepSkyBlue1 = 39, // #00afff
|
||||||
|
Green3 = 40, // #00d700
|
||||||
|
SpringGreen4 = 41, // #00d75f
|
||||||
|
SpringGreen3 = 42, // #00d787
|
||||||
|
Cyan3 = 43, // #00d7af
|
||||||
|
DarkTurquoise = 44, // #00d7d7
|
||||||
|
Turquoise2 = 45, // #00d7ff
|
||||||
|
Green1 = 46, // #00ff00
|
||||||
|
SpringGreen2 = 47, // #00ff5f
|
||||||
|
SpringGreen1 = 48, // #00ff87
|
||||||
|
MediumSpringGreen = 49, // #00ffaf
|
||||||
|
Cyan2 = 50, // #00ffd7
|
||||||
|
Cyan1 = 51, // #00ffff
|
||||||
|
DarkRed = 52, // #5f0000
|
||||||
|
DeepPink7 = 53, // #5f005f
|
||||||
|
Purple4 = 54, // #5f0087
|
||||||
|
Purple3 = 55, // #5f00af
|
||||||
|
Purple2 = 56, // #5f00d7
|
||||||
|
BlueViolet = 57, // #5f00ff
|
||||||
|
Orange4 = 58, // #5f5f00
|
||||||
|
Grey37 = 59, // #5f5f5f
|
||||||
|
MediumPurple6 = 60, // #5f5f87
|
||||||
|
SlateBlue3 = 61, // #5f5faf
|
||||||
|
SlateBlue2 = 62, // #5f5fd7
|
||||||
|
RoyalBlue1 = 63, // #5f5fff
|
||||||
|
Chartreuse5 = 64, // #5f8700
|
||||||
|
DarkSeaGreen8 = 65, // #5f875f
|
||||||
|
PaleTurquoise4 = 66, // #5f8787
|
||||||
|
SteelBlue = 67, // #5f87af
|
||||||
|
SteelBlue3 = 68, // #5f87d7
|
||||||
|
CornflowerBlue = 69, // #5f87ff
|
||||||
|
Chartreuse4 = 70, // #5faf00
|
||||||
|
DarkSeaGreen7 = 71, // #5faf5f
|
||||||
|
CadetBlue2 = 72, // #5faf87
|
||||||
|
CadetBlue1 = 73, // #5fafaf
|
||||||
|
SkyBlue3 = 74, // #5fafd7
|
||||||
|
SteelBlue2 = 75, // #5fafff
|
||||||
|
Chartreuse3 = 76, // #5fd700
|
||||||
|
PaleGreen3 = 77, // #5fd75f
|
||||||
|
SeaGreen4 = 78, // #5fd787
|
||||||
|
Aquamarine3 = 79, // #5fd7af
|
||||||
|
MediumTurquoise = 80, // #5fd7d7
|
||||||
|
SteelBlue1 = 81, // #5fd7ff
|
||||||
|
Chartreuse = 82, // #5fff00
|
||||||
|
SeaGreen3 = 83, // #5fff5f
|
||||||
|
SeaGreen2 = 84, // #5fff87
|
||||||
|
SeaGreen1 = 85, // #5fffaf
|
||||||
|
Aquamarine2 = 86, // #5fffd7
|
||||||
|
DarkSlateGray2 = 87, // #5fffff
|
||||||
|
DarkRed2 = 88, // #870000
|
||||||
|
DeepPink6 = 89, // #87005f
|
||||||
|
DarkMagenta2 = 90, // #870087
|
||||||
|
DarkMagenta = 91, // #8700af
|
||||||
|
DarkViolet1 = 92, // #8700d7
|
||||||
|
Purple1 = 93, // #8700ff
|
||||||
|
Orange3 = 94, // #875f00
|
||||||
|
LightPink4 = 95, // #875f5f
|
||||||
|
Plum4 = 96, // #875f87
|
||||||
|
MediumPurple5 = 97, // #875faf
|
||||||
|
MediumPurple4 = 98, // #875fd7
|
||||||
|
SlateBlue1 = 99, // #875fff
|
||||||
|
Yellow6 = 100, // #878700
|
||||||
|
Wheat4 = 101, // #87875f
|
||||||
|
Grey53 = 102, // #878787
|
||||||
|
LightSlateGrey = 103, // #8787af
|
||||||
|
MediumPurple = 104, // #8787d7
|
||||||
|
LightSlateBlue = 105, // #8787ff
|
||||||
|
Yellow5 = 106, // #87af00
|
||||||
|
DarkOliveGreen5 = 107, // #87af5f
|
||||||
|
DarkSeaGreen6 = 108, // #87af87
|
||||||
|
LightSkyBlue3 = 109, // #87afaf
|
||||||
|
LightSkyBlue2 = 110, // #87afd7
|
||||||
|
SkyBlue2 = 111, // #87afff
|
||||||
|
Chartreuse2 = 112, // #87d700
|
||||||
|
DarkOliveGreen4 = 113, // #87d75f
|
||||||
|
PaleGreen2 = 114, // #87d787
|
||||||
|
DarkSeaGreen5 = 115, // #87d7af
|
||||||
|
DarkSlateGray3 = 116, // #87d7d7
|
||||||
|
SkyBlue1 = 117, // #87d7ff
|
||||||
|
Chartreuse1 = 118, // #87ff00
|
||||||
|
LightGreen3 = 119, // #87ff5f
|
||||||
|
LightGreen2 = 120, // #87ff87
|
||||||
|
PaleGreen1 = 121, // #87ffaf
|
||||||
|
Aquamarine1 = 122, // #87ffd7
|
||||||
|
DarkSlateGray1 = 123, // #87ffff
|
||||||
|
Red3 = 124, // #af0000
|
||||||
|
DeepPink5 = 125, // #af005f
|
||||||
|
MediumVioletRed = 126, // #af0087
|
||||||
|
Magenta6 = 127, // #af00af
|
||||||
|
DarkViolet = 128, // #af00d7
|
||||||
|
Purple = 129, // #af00ff
|
||||||
|
DarkOrange3 = 130, // #af5f00
|
||||||
|
IndianRed3 = 131, // #af5f5f
|
||||||
|
HotPink4 = 132, // #af5f87
|
||||||
|
MediumOrchid3 = 133, // #af5faf
|
||||||
|
MediumOrchid = 134, // #af5fd7
|
||||||
|
MediumPurple3 = 135, // #af5fff
|
||||||
|
DarkGoldenrod = 136, // #af8700
|
||||||
|
LightSalmon3 = 137, // #af875f
|
||||||
|
RosyBrown = 138, // #af8787
|
||||||
|
Grey63 = 139, // #af87af
|
||||||
|
MediumPurple2 = 140, // #af87d7
|
||||||
|
MediumPurple1 = 141, // #af87ff
|
||||||
|
Gold3 = 142, // #afaf00
|
||||||
|
DarkKhaki = 143, // #afaf5f
|
||||||
|
NavajoWhite3 = 144, // #afaf87
|
||||||
|
Grey69 = 145, // #afafaf
|
||||||
|
LightSteelBlue3 = 146, // #afafd7
|
||||||
|
LightSteelBlue = 147, // #afafff
|
||||||
|
Yellow4 = 148, // #afd700
|
||||||
|
DarkOliveGreen3 = 149, // #afd75f
|
||||||
|
DarkSeaGreen4 = 150, // #afd787
|
||||||
|
DarkSeaGreen3 = 151, // #afd7af
|
||||||
|
LightCyan3 = 152, // #afd7d7
|
||||||
|
LightSkyBlue1 = 153, // #afd7ff
|
||||||
|
GreenYellow = 154, // #afff00
|
||||||
|
DarkOliveGreen2 = 155, // #afff5f
|
||||||
|
PaleGreen = 156, // #afff87
|
||||||
|
DarkSeaGreen2 = 157, // #afffaf
|
||||||
|
DarkSeaGreen1 = 158, // #afffd7
|
||||||
|
PaleTurquoise1 = 159, // #afffff
|
||||||
|
Red2 = 160, // #d70000
|
||||||
|
DeepPink4 = 161, // #d7005f
|
||||||
|
DeepPink3 = 162, // #d70087
|
||||||
|
Magenta5 = 163, // #d700af
|
||||||
|
Magenta4 = 164, // #d700d7
|
||||||
|
Magenta3 = 165, // #d700ff
|
||||||
|
DarkOrange2 = 166, // #d75f00
|
||||||
|
IndianRed = 167, // #d75f5f
|
||||||
|
HotPink3 = 168, // #d75f87
|
||||||
|
HotPink2 = 169, // #d75faf
|
||||||
|
Orchid = 170, // #d75fd7
|
||||||
|
MediumOrchid2 = 171, // #d75fff
|
||||||
|
Orange2 = 172, // #d78700
|
||||||
|
LightSalmon2 = 173, // #d7875f
|
||||||
|
LightPink3 = 174, // #d78787
|
||||||
|
Pink3 = 175, // #d787af
|
||||||
|
Plum3 = 176, // #d787d7
|
||||||
|
Violet = 177, // #d787ff
|
||||||
|
Gold2 = 178, // #d7af00
|
||||||
|
LightGoldenrod5 = 179, // #d7af5f
|
||||||
|
Tan = 180, // #d7af87
|
||||||
|
MistyRose3 = 181, // #d7afaf
|
||||||
|
Thistle3 = 182, // #d7afd7
|
||||||
|
Plum2 = 183, // #d7afff
|
||||||
|
Yellow3 = 184, // #d7d700
|
||||||
|
Khaki3 = 185, // #d7d75f
|
||||||
|
LightGoldenrod4 = 186, // #d7d787
|
||||||
|
LightYellow3 = 187, // #d7d7af
|
||||||
|
Grey84 = 188, // #d7d7d7
|
||||||
|
LightSteelBlue1 = 189, // #d7d7ff
|
||||||
|
Yellow2 = 190, // #d7ff00
|
||||||
|
DarkOliveGreen1 = 191, // #d7ff5f
|
||||||
|
DarkOliveGreen = 192, // #d7ff87
|
||||||
|
DarkSeaGreen = 193, // #d7ffaf
|
||||||
|
Honeydew2 = 194, // #d7ffd7
|
||||||
|
LightCyan1 = 195, // #d7ffff
|
||||||
|
Red1 = 196, // #ff0000
|
||||||
|
DeepPink2 = 197, // #ff005f
|
||||||
|
DeepPink1 = 198, // #ff0087
|
||||||
|
DeepPink = 199, // #ff00af
|
||||||
|
Magenta2 = 200, // #ff00d7
|
||||||
|
Magenta1 = 201, // #ff00ff
|
||||||
|
OrangeRed1 = 202, // #ff5f00
|
||||||
|
IndianRed2 = 203, // #ff5f5f
|
||||||
|
IndianRed1 = 204, // #ff5f87
|
||||||
|
HotPink1 = 205, // #ff5faf
|
||||||
|
HotPink = 206, // #ff5fd7
|
||||||
|
MediumOrchid1 = 207, // #ff5fff
|
||||||
|
DarkOrange = 208, // #ff8700
|
||||||
|
Salmon1 = 209, // #ff875f
|
||||||
|
LightCoral = 210, // #ff8787
|
||||||
|
PaleVioletRed1 = 211, // #ff87af
|
||||||
|
Orchid2 = 212, // #ff87d7
|
||||||
|
Orchid1 = 213, // #ff87ff
|
||||||
|
Orange1 = 214, // #ffaf00
|
||||||
|
SandyBrown = 215, // #ffaf5f
|
||||||
|
LightSalmon1 = 216, // #ffaf87
|
||||||
|
LightPink1 = 217, // #ffafaf
|
||||||
|
Pink1 = 218, // #ffafd7
|
||||||
|
Plum1 = 219, // #ffafff
|
||||||
|
Gold1 = 220, // #ffd700
|
||||||
|
LightGoldenrod3 = 221, // #ffd75f
|
||||||
|
LightGoldenrod2 = 222, // #ffd787
|
||||||
|
NavajoWhite1 = 223, // #ffd7af
|
||||||
|
MistyRose1 = 224, // #ffd7d7
|
||||||
|
Thistle1 = 225, // #ffd7ff
|
||||||
|
Yellow1 = 226, // #ffff00
|
||||||
|
LightGoldenrod = 227, // #ffff5f
|
||||||
|
Khaki1 = 228, // #ffff87
|
||||||
|
Wheat1 = 229, // #ffffaf
|
||||||
|
Cornsilk1 = 230, // #ffffd7
|
||||||
|
Grey100 = 231, // #ffffff
|
||||||
|
Grey3 = 232, // #080808
|
||||||
|
Grey7 = 233, // #121212
|
||||||
|
Grey11 = 234, // #1c1c1c
|
||||||
|
Grey15 = 235, // #262626
|
||||||
|
Grey19 = 236, // #303030
|
||||||
|
Grey23 = 237, // #3a3a3a
|
||||||
|
Grey27 = 238, // #444444
|
||||||
|
Grey30 = 239, // #4e4e4e
|
||||||
|
Grey35 = 240, // #585858
|
||||||
|
Grey39 = 241, // #626262
|
||||||
|
Grey42 = 242, // #6c6c6c
|
||||||
|
Grey46 = 243, // #767676
|
||||||
|
Grey50 = 244, // #808080
|
||||||
|
Grey54 = 245, // #8a8a8a
|
||||||
|
Grey58 = 246, // #949494
|
||||||
|
Grey62 = 247, // #9e9e9e
|
||||||
|
Grey66 = 248, // #a8a8a8
|
||||||
|
Grey70 = 249, // #b2b2b2
|
||||||
|
Grey74 = 250, // #bcbcbc
|
||||||
|
Grey78 = 251, // #c6c6c6
|
||||||
|
Grey82 = 252, // #d0d0d0
|
||||||
|
Grey85 = 253, // #dadada
|
||||||
|
Grey89 = 254, // #e4e4e4
|
||||||
|
Grey93 = 255 // #eeeeee
|
||||||
|
};
|
||||||
|
|
||||||
|
// xterm cursor style
|
||||||
|
enum xterm_cursor_style
|
||||||
|
{
|
||||||
|
blinking_block = 0,
|
||||||
|
blinking_block_default = 1,
|
||||||
|
steady_block = 2,
|
||||||
|
blinking_underline = 3,
|
||||||
|
steady_underline = 4,
|
||||||
|
blinking_bar_xterm = 5,
|
||||||
|
steady_bar_xterm = 6
|
||||||
|
};
|
||||||
|
|
||||||
|
// linux console and framebuffer cursor style
|
||||||
|
enum console_cursor_style
|
||||||
|
{
|
||||||
|
default_cursor = 0,
|
||||||
|
invisible_cursor = 1,
|
||||||
|
underscore_cursor = 2,
|
||||||
|
lower_third_cursor = 3,
|
||||||
|
lower_half_cursor = 4,
|
||||||
|
two_thirds_cursor = 5,
|
||||||
|
full_block_cursor = 6
|
||||||
|
};
|
||||||
|
|
||||||
|
// KDE konsole cursor style
|
||||||
|
enum kde_konsole_CursorShape
|
||||||
|
{
|
||||||
|
BlockCursor = 0,
|
||||||
|
IBeamCursor = 1,
|
||||||
|
UnderlineCursor = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
enum text_alignment
|
||||||
|
{
|
||||||
|
alignLeft = 1,
|
||||||
|
alignCenter = 2,
|
||||||
|
alignRight = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
enum orientation
|
||||||
|
{
|
||||||
|
vertical = 0,
|
||||||
|
horizontal = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
enum brackets_type
|
||||||
|
{
|
||||||
|
NoBrackets = 0,
|
||||||
|
SquareBrackets = 1, // [ ]
|
||||||
|
Parenthesis = 2, // ( )
|
||||||
|
CurlyBrackets = 3, // { }
|
||||||
|
AngleBrackets = 4 // < >
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
#endif // _FENUM_H
|
|
@ -0,0 +1,275 @@
|
||||||
|
// fevent.cpp
|
||||||
|
// class FEvent
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include "fevent.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FKeyEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FKeyEvent::FKeyEvent(int type, int key) : FEvent(type) // constructor
|
||||||
|
{
|
||||||
|
k = key;
|
||||||
|
accpt = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FKeyEvent::key() const
|
||||||
|
{ return k; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FKeyEvent::isAccepted() const
|
||||||
|
{ return accpt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FKeyEvent::accept()
|
||||||
|
{ accpt = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FKeyEvent::ignore()
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FMouseEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FMouseEvent::FMouseEvent (int type, // constructor
|
||||||
|
const FPoint& pos,
|
||||||
|
int button) : FEvent(type),
|
||||||
|
p(pos),
|
||||||
|
b(button)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FMouseEvent::FMouseEvent (int type, // constructor
|
||||||
|
const FPoint& pos,
|
||||||
|
const FPoint& globalPos,
|
||||||
|
int button) : FEvent(type),
|
||||||
|
p(pos),
|
||||||
|
g(globalPos),
|
||||||
|
b(button)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
const FPoint& FMouseEvent::getPos() const
|
||||||
|
{ return p; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
const FPoint& FMouseEvent::getGlobalPos() const
|
||||||
|
{ return g; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMouseEvent::getX() const
|
||||||
|
{ return p.getX(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMouseEvent::getY() const
|
||||||
|
{ return p.getY(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMouseEvent::getGlobalX() const
|
||||||
|
{ return g.getX(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMouseEvent::getGlobalY() const
|
||||||
|
{ return g.getY(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMouseEvent::getButton() const
|
||||||
|
{ return b; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FWheelEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FWheelEvent::FWheelEvent (int type, // constructor
|
||||||
|
const FPoint& pos,
|
||||||
|
int wheel) : FEvent(type),
|
||||||
|
p(pos),
|
||||||
|
w(wheel)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FWheelEvent::FWheelEvent (int type, // constructor
|
||||||
|
const FPoint& pos,
|
||||||
|
const FPoint& globalPos,
|
||||||
|
int wheel) : FEvent(type),
|
||||||
|
p(pos),
|
||||||
|
g(globalPos),
|
||||||
|
w(wheel)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
const FPoint& FWheelEvent::getPos() const
|
||||||
|
{ return p; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
const FPoint& FWheelEvent::getGlobalPos() const
|
||||||
|
{ return g; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FWheelEvent::getX() const
|
||||||
|
{ return p.getX(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FWheelEvent::getY() const
|
||||||
|
{ return p.getY(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FWheelEvent::getGlobalX() const
|
||||||
|
{ return g.getX(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FWheelEvent::getGlobalY() const
|
||||||
|
{ return g.getY(); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FWheelEvent::getWheel() const
|
||||||
|
{ return w; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FFocusEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FFocusEvent::FFocusEvent (int type) : FEvent(type) // constructor
|
||||||
|
{
|
||||||
|
accpt = true;
|
||||||
|
focus_type = FocusDefiniteWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FFocusEvent::gotFocus() const
|
||||||
|
{
|
||||||
|
return (type() == FocusIn_Event);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FFocusEvent::lostFocus() const
|
||||||
|
{
|
||||||
|
return (type() == FocusOut_Event);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FocusTypes FFocusEvent::getFocusType() const
|
||||||
|
{ return focus_type; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFocusEvent::setFocusType(FocusTypes ft)
|
||||||
|
{ focus_type = ft; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FFocusEvent::isAccepted() const
|
||||||
|
{ return accpt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFocusEvent::accept()
|
||||||
|
{ accpt = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFocusEvent::ignore()
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FAccelEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FAccelEvent::FAccelEvent(int type, void* focused) : FEvent(type) // constructor
|
||||||
|
{
|
||||||
|
focus_widget = focused;
|
||||||
|
accpt = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void* FAccelEvent::focusedWidget() const
|
||||||
|
{ return focus_widget; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FAccelEvent::isAccepted() const
|
||||||
|
{ return accpt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FAccelEvent::accept()
|
||||||
|
{ accpt = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FAccelEvent::ignore()
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FResizeEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FResizeEvent::FResizeEvent(int type) : FEvent(type) // constructor
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FResizeEvent::isAccepted() const
|
||||||
|
{ return accpt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FResizeEvent::accept()
|
||||||
|
{ accpt = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FResizeEvent::ignore()
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FShowEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FShowEvent::FShowEvent(int type) : FEvent(type) // constructor
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FHideEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FHideEvent::FHideEvent(int type) : FEvent(type) // constructor
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FCloseEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FCloseEvent::FCloseEvent(int type) : FEvent(type) // constructor
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FCloseEvent::isAccepted() const
|
||||||
|
{ return accpt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FCloseEvent::accept()
|
||||||
|
{ accpt = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FCloseEvent::ignore()
|
||||||
|
{ accpt = false; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FTimerEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
FTimerEvent::FTimerEvent(int type, int timer_id) : FEvent(type) // constructor
|
||||||
|
{ id = timer_id; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FTimerEvent::timerId() const
|
||||||
|
{ return id; }
|
|
@ -0,0 +1,319 @@
|
||||||
|
// fevent.h
|
||||||
|
// class FEvent
|
||||||
|
|
||||||
|
#ifndef _FEVENT_H
|
||||||
|
#define _FEVENT_H
|
||||||
|
|
||||||
|
#include "fpoint.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define None_Event 0 // invalid event
|
||||||
|
#define KeyPress_Event 1 // key pressed
|
||||||
|
#define KeyUp_Event 2 // key released
|
||||||
|
#define KeyDown_Event 3 // key pressed
|
||||||
|
#define MouseDown_Event 4 // mouse button pressed
|
||||||
|
#define MouseUp_Event 5 // mouse button released
|
||||||
|
#define MouseDoubleClick_Event 6 // mouse button double click
|
||||||
|
#define MouseWheel_Event 7 // mouse wheel rolled
|
||||||
|
#define MouseMove_Event 8 // mouse move
|
||||||
|
#define FocusIn_Event 9 // focus in
|
||||||
|
#define FocusOut_Event 10 // focus out
|
||||||
|
#define WindowActive_Event 11 // activate window
|
||||||
|
#define WindowInactive_Event 12 // deactivate window
|
||||||
|
#define WindowRaised_Event 13 // raise window
|
||||||
|
#define WindowLowered_Event 14 // lower window
|
||||||
|
#define Accelerator_Event 15 // keyboard accelerator
|
||||||
|
#define Resize_Event 16 // terminal resize
|
||||||
|
#define Show_Event 17 // widget is shown
|
||||||
|
#define Hide_Event 18 // widget is hidden
|
||||||
|
#define Close_Event 19 // widget close
|
||||||
|
#define Timer_Event 20 // timer event occur
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FEvent // event base class
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FEvent(int);
|
||||||
|
~FEvent();
|
||||||
|
int type() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int t;
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FEvent inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FEvent::FEvent(int type) // constructor
|
||||||
|
{ t = type; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FEvent::~FEvent() // destructor
|
||||||
|
{}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline int FEvent::type() const
|
||||||
|
{ return t; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FKeyEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FKeyEvent : public FEvent // keyboard event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FKeyEvent (int, int);
|
||||||
|
int key() const;
|
||||||
|
bool isAccepted() const;
|
||||||
|
void accept();
|
||||||
|
void ignore();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int k;
|
||||||
|
bool accpt;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_KEY_EVENT(x) ((FKeyEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FMouseEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
enum ButtonState // mouse/keyboard state values
|
||||||
|
{
|
||||||
|
NoButton = 0x00,
|
||||||
|
LeftButton = 0x01,
|
||||||
|
RightButton = 0x02,
|
||||||
|
MiddleButton = 0x04,
|
||||||
|
MouseButtonMask = 0x07,
|
||||||
|
ShiftButton = 0x08,
|
||||||
|
ControlButton = 0x10,
|
||||||
|
MetaButton = 0x20,
|
||||||
|
KeyButtonMask = 0x38
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FMouseEvent : public FEvent // mouse event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FMouseEvent (int, const FPoint&, int);
|
||||||
|
FMouseEvent (int, const FPoint&, const FPoint&, int);
|
||||||
|
|
||||||
|
const FPoint& getPos() const;
|
||||||
|
const FPoint& getGlobalPos() const;
|
||||||
|
int getX() const;
|
||||||
|
int getY() const;
|
||||||
|
int getGlobalX() const;
|
||||||
|
int getGlobalY() const;
|
||||||
|
int getButton() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
FPoint p;
|
||||||
|
FPoint g;
|
||||||
|
int b;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_MOUSE_EVENT(x) ((FMouseEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FWheelEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
enum WheelState // wheel state values
|
||||||
|
{
|
||||||
|
NoWheel = 0x00,
|
||||||
|
WheelUp = 0x01,
|
||||||
|
WheelDown = 0x02,
|
||||||
|
WheelMask = 0x03
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FWheelEvent : public FEvent // mouse event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FWheelEvent (int, const FPoint&, int);
|
||||||
|
FWheelEvent (int, const FPoint&, const FPoint&, int);
|
||||||
|
|
||||||
|
const FPoint& getPos() const;
|
||||||
|
const FPoint& getGlobalPos() const;
|
||||||
|
int getX() const;
|
||||||
|
int getY() const;
|
||||||
|
int getGlobalX() const;
|
||||||
|
int getGlobalY() const;
|
||||||
|
int getWheel() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
FPoint p;
|
||||||
|
FPoint g;
|
||||||
|
int w;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_WHEEL_EVENT(x) ((FWheelEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FFocusEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
enum FocusTypes
|
||||||
|
{
|
||||||
|
FocusNextWidget = 0x00,
|
||||||
|
FocusPreviousWidget = 0x01,
|
||||||
|
FocusDefiniteWidget = 0x03
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FFocusEvent : public FEvent // focus event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FFocusEvent (int);
|
||||||
|
bool gotFocus() const;
|
||||||
|
bool lostFocus() const;
|
||||||
|
FocusTypes getFocusType() const;
|
||||||
|
void setFocusType(FocusTypes);
|
||||||
|
bool isAccepted() const;
|
||||||
|
void accept();
|
||||||
|
void ignore();
|
||||||
|
protected:
|
||||||
|
bool accpt;
|
||||||
|
FocusTypes focus_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_FOCUS_EVENT(x) ((FFocusEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FAccelEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FAccelEvent : public FEvent // focus event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FAccelEvent (int, void*);
|
||||||
|
void* focusedWidget() const;
|
||||||
|
bool isAccepted() const;
|
||||||
|
void accept();
|
||||||
|
void ignore();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void* focus_widget;
|
||||||
|
bool accpt;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_ACCEL_EVENT(x) ((FAccelEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FResizeEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
class FResizeEvent : public FEvent // resize event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FResizeEvent (int);
|
||||||
|
bool isAccepted() const;
|
||||||
|
void accept();
|
||||||
|
void ignore();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool accpt;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_RESIZE_EVENT(x) ((FResizeEvent*)x)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FShowEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
class FShowEvent : public FEvent // show event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FShowEvent (int);
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_SHOW_EVENT(x) ((FShowEvent*)x)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FHideEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
class FHideEvent : public FEvent // hide event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FHideEvent (int);
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_HIDE_EVENT(x) ((FHideEvent*)x)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FCloseEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
class FCloseEvent : public FEvent // close event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FCloseEvent(int);
|
||||||
|
bool isAccepted() const;
|
||||||
|
void accept();
|
||||||
|
void ignore();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool accpt;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_CLOSE_EVENT(x) ((FCloseEvent*)x)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FTimerEvent
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FTimerEvent : public FEvent // timer event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FTimerEvent(int, int);
|
||||||
|
int timerId() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int id;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define F_TIMER_EVENT(x) ((FTimerEvent*)x)
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
#endif // _FEVENT_H
|
|
@ -0,0 +1,680 @@
|
||||||
|
// ffiledialog.cpp
|
||||||
|
// class FFileDialog
|
||||||
|
|
||||||
|
#include "ffiledialog.h"
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
static bool sortByName (const dir_entry &lhs, const dir_entry &rhs)
|
||||||
|
{
|
||||||
|
// lhs < rhs
|
||||||
|
return bool(strcasecmp(lhs.name, rhs.name) < 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
static bool sortDirFirst (const dir_entry &lhs, const dir_entry &rhs)
|
||||||
|
{
|
||||||
|
// sort directories first
|
||||||
|
if ( lhs.type == DT_DIR && rhs.type != DT_DIR )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FFileDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructors and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FFileDialog::FFileDialog(FWidget* parent) : FDialog(parent)
|
||||||
|
{
|
||||||
|
dlg_type = FFileDialog::Open;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FFileDialog::FFileDialog ( const FString& dirname,
|
||||||
|
const FString& filter,
|
||||||
|
DialogType type,
|
||||||
|
FWidget* parent ) : FDialog(parent)
|
||||||
|
{
|
||||||
|
if ( dirname )
|
||||||
|
setPath(dirname);
|
||||||
|
if ( filter )
|
||||||
|
setFilter(filter);
|
||||||
|
dlg_type = type;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FFileDialog::~FFileDialog() // destructor
|
||||||
|
{
|
||||||
|
delete open;
|
||||||
|
delete cancel;
|
||||||
|
delete hidden;
|
||||||
|
delete filebrowser;
|
||||||
|
delete filename;
|
||||||
|
clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private methods of FFileDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::init()
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
show_hidden = false;
|
||||||
|
height = 15;
|
||||||
|
width = 42;
|
||||||
|
if ( width < 15 )
|
||||||
|
width = 15;
|
||||||
|
if ( width < 20 )
|
||||||
|
width = 20;
|
||||||
|
x = 1 + int((parentWidget()->getWidth()-width)/2);
|
||||||
|
y = 1 + int((parentWidget()->getHeight()-height)/3);
|
||||||
|
|
||||||
|
if ( dlg_type == FFileDialog::Save )
|
||||||
|
FDialog::setText("Save file");
|
||||||
|
else
|
||||||
|
FDialog::setText("Open file");
|
||||||
|
|
||||||
|
filename = new FLineEdit(this);
|
||||||
|
filename->setLabelText("File&name:");
|
||||||
|
filename->setText(filter_pattern);
|
||||||
|
filename->setGeometry(11, 1, 28, 1);
|
||||||
|
filename->setShadow();
|
||||||
|
filename->setFocus();
|
||||||
|
|
||||||
|
filebrowser = new FListBox(this);
|
||||||
|
filebrowser->setGeometry(2, 3, 38, 6);
|
||||||
|
printPath(directory);
|
||||||
|
|
||||||
|
hidden = new FCheckBox("&hidden files", this);
|
||||||
|
hidden->setGeometry(2, 10, 16, 1);
|
||||||
|
|
||||||
|
cancel = new FButton("&Cancel", this);
|
||||||
|
cancel->setGeometry(19, 10, 9, 1);
|
||||||
|
cancel->setShadow();
|
||||||
|
|
||||||
|
if ( dlg_type == FFileDialog::Save )
|
||||||
|
open = new FButton("&Save",this);
|
||||||
|
else
|
||||||
|
open = new FButton("&Open",this);
|
||||||
|
open->setGeometry(30, 10, 9, 1);
|
||||||
|
open->setShadow();
|
||||||
|
|
||||||
|
setGeometry (x, y, width, height);
|
||||||
|
|
||||||
|
filename->addCallback
|
||||||
|
(
|
||||||
|
"activate",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processActivate),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
filebrowser->addCallback
|
||||||
|
(
|
||||||
|
"row-changed",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processRowChanged),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
filebrowser->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processClicked),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
hidden->addCallback
|
||||||
|
(
|
||||||
|
"toggled",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processShowHidden),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
cancel->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processCancel),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
open->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FFileDialog::cb_processOpen),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
setModal();
|
||||||
|
setTransparentShadow();
|
||||||
|
|
||||||
|
readDir();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
char* FFileDialog::getHomeDir()
|
||||||
|
{
|
||||||
|
struct passwd* pwd;
|
||||||
|
pwd = getpwuid( geteuid() );
|
||||||
|
|
||||||
|
if ( pwd == 0 )
|
||||||
|
return const_cast<char*>("");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pwd = getpwnam(pwd->pw_name);
|
||||||
|
|
||||||
|
if ( pwd == 0 )
|
||||||
|
return const_cast<char*>("");
|
||||||
|
else
|
||||||
|
return pwd->pw_dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::draw()
|
||||||
|
{
|
||||||
|
FDialog::draw();
|
||||||
|
|
||||||
|
if ( Encoding == fc::VT100 )
|
||||||
|
unsetVT100altChar();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FFileDialog::pattern_match ( const char* pattern,
|
||||||
|
const char* fname )
|
||||||
|
{
|
||||||
|
char search[128];
|
||||||
|
if ( show_hidden && fname[0] == '.' && fname[1] != '\0' ) // hidden files
|
||||||
|
{
|
||||||
|
search[0] = '.';
|
||||||
|
search[1] = '\0';
|
||||||
|
strncat(search, pattern, sizeof(search) - strlen(search) - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strncpy(search, pattern, sizeof(search));
|
||||||
|
|
||||||
|
if ( fnmatch (search, fname, FNM_PERIOD) == 0 )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::clear()
|
||||||
|
{
|
||||||
|
std::vector<dir_entry>::const_iterator iter, end;
|
||||||
|
|
||||||
|
if ( dir_entries.empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// delete all directory entries;
|
||||||
|
iter = dir_entries.begin();
|
||||||
|
end = dir_entries.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
free ((*iter).name);
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
|
||||||
|
dir_entries.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FFileDialog::numOfDirs()
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
if ( ! dir_entries.empty() )
|
||||||
|
{
|
||||||
|
std::vector<dir_entry>::const_iterator iter, end;
|
||||||
|
iter = dir_entries.begin();
|
||||||
|
end = dir_entries.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter).type == DT_DIR && strcmp((*iter).name, ".") != 0 )
|
||||||
|
n++;
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FFileDialog::changeDir (const FString& dirname)
|
||||||
|
{
|
||||||
|
FString lastdir = directory;
|
||||||
|
FString newdir = dirname;
|
||||||
|
|
||||||
|
if ( newdir.includes('~') )
|
||||||
|
newdir = newdir.replace('~', getHomeDir());
|
||||||
|
|
||||||
|
if ( newdir[0] == '/' )
|
||||||
|
setPath(newdir);
|
||||||
|
else
|
||||||
|
setPath(directory + newdir);
|
||||||
|
|
||||||
|
switch ( readDir() )
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
setPath(lastdir);
|
||||||
|
return -1;
|
||||||
|
case -2:
|
||||||
|
setPath(lastdir);
|
||||||
|
readDir();
|
||||||
|
return -2;
|
||||||
|
case 0:
|
||||||
|
if ( newdir == FString("..") )
|
||||||
|
{
|
||||||
|
if ( lastdir == FString('/') )
|
||||||
|
filename->setText('/');
|
||||||
|
else if ( ! dir_entries.empty() )
|
||||||
|
{
|
||||||
|
int i = 1;
|
||||||
|
std::vector<dir_entry>::const_iterator iter, end;
|
||||||
|
const char* baseName = basename(const_cast<char*>(lastdir.c_str()));
|
||||||
|
|
||||||
|
iter = dir_entries.begin();
|
||||||
|
end = dir_entries.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( strcmp((*iter).name, baseName) == 0 )
|
||||||
|
{
|
||||||
|
filebrowser->setCurrentItem(i);
|
||||||
|
filename->setText(FString(baseName) + '/');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FString firstname = dir_entries[0].name;
|
||||||
|
if ( dir_entries[0].type == DT_DIR )
|
||||||
|
filename->setText(firstname + '/');
|
||||||
|
else
|
||||||
|
filename->setText(firstname);
|
||||||
|
}
|
||||||
|
printPath(directory);
|
||||||
|
filename->redraw();
|
||||||
|
filebrowser->redraw();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::printPath (const FString& txt)
|
||||||
|
{
|
||||||
|
FString text = txt;
|
||||||
|
uInt max_width = uInt(filebrowser->getWidth()) - 4;
|
||||||
|
|
||||||
|
if ( text.getLength() > max_width )
|
||||||
|
filebrowser->setText(".." + text.right(max_width-2));
|
||||||
|
else
|
||||||
|
filebrowser->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processActivate (FWidget*, void*)
|
||||||
|
{
|
||||||
|
if ( filename->getText().includes('*')
|
||||||
|
|| filename->getText().includes('?') )
|
||||||
|
{
|
||||||
|
setFilter(filename->getText());
|
||||||
|
readDir();
|
||||||
|
filebrowser->redraw();
|
||||||
|
}
|
||||||
|
else if ( filename->getText().getLength() == 0 )
|
||||||
|
{
|
||||||
|
setFilter("*");
|
||||||
|
readDir();
|
||||||
|
filebrowser->redraw();
|
||||||
|
}
|
||||||
|
else if ( filename->getText().trim() == FString("..")
|
||||||
|
|| filename->getText().includes('/')
|
||||||
|
|| filename->getText().includes('~') )
|
||||||
|
{
|
||||||
|
changeDir(filename->getText().trim());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
if ( ! dir_entries.empty() )
|
||||||
|
{
|
||||||
|
std::vector<dir_entry>::const_iterator iter, end;
|
||||||
|
FString input = filename->getText().trim();
|
||||||
|
|
||||||
|
iter = dir_entries.begin();
|
||||||
|
end = dir_entries.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( strcmp((*iter).name, input) == 0 && (*iter).type == DT_DIR )
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
changeDir(input);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( ! found )
|
||||||
|
done (FDialog::Accept);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processRowChanged (FWidget*, void*)
|
||||||
|
{
|
||||||
|
int n = filebrowser->currentItem();
|
||||||
|
if ( n == 0 )
|
||||||
|
return;
|
||||||
|
FString name = dir_entries[uLong(n-1)].name;
|
||||||
|
if ( dir_entries[uLong(n-1)].type == DT_DIR )
|
||||||
|
filename->setText( name + '/' );
|
||||||
|
else
|
||||||
|
filename->setText( name );
|
||||||
|
filename->redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processClicked (FWidget*, void*)
|
||||||
|
{
|
||||||
|
uLong n = uLong(filebrowser->currentItem() - 1);
|
||||||
|
|
||||||
|
if ( dir_entries[n].type == DT_DIR )
|
||||||
|
changeDir(dir_entries[n].name);
|
||||||
|
else
|
||||||
|
done (FDialog::Accept);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processCancel (FWidget*, void*)
|
||||||
|
{
|
||||||
|
done (FDialog::Reject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processOpen (FWidget*, void*)
|
||||||
|
{
|
||||||
|
done (FDialog::Accept);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::cb_processShowHidden (FWidget*, void*)
|
||||||
|
{
|
||||||
|
setShowHiddenFiles(not show_hidden);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// protected methods of FFileDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::adjustSize()
|
||||||
|
{
|
||||||
|
int X, Y;
|
||||||
|
int max_height = getRootWidget()->getClientHeight();
|
||||||
|
int max_width = getRootWidget()->getClientWidth();
|
||||||
|
int h = max_height - 6;
|
||||||
|
if ( h < 15 ) // minimum
|
||||||
|
h = 15;
|
||||||
|
if ( h > 30 ) // maximum
|
||||||
|
h = 30;
|
||||||
|
setHeight (h, false);
|
||||||
|
X = 1 + int((max_width-width)/2);
|
||||||
|
Y = 1 + int((max_height-height)/3);
|
||||||
|
setX(X, false);
|
||||||
|
setY(Y, false);
|
||||||
|
filebrowser->setHeight(h-8, false);
|
||||||
|
hidden->setY(h-4, false);
|
||||||
|
cancel->setY(h-4, false);
|
||||||
|
open->setY(h-4, false);
|
||||||
|
FDialog::adjustSize();
|
||||||
|
printPath(directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public methods of FFileDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::onKeyPress (FKeyEvent* event)
|
||||||
|
{
|
||||||
|
if ( ! isEnabled() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
FDialog::onKeyPress (event);
|
||||||
|
|
||||||
|
if ( ! filebrowser->hasFocus() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
int key = event->key();
|
||||||
|
switch ( key )
|
||||||
|
{
|
||||||
|
case fc::Fkey_erase:
|
||||||
|
case fc::Fkey_backspace:
|
||||||
|
changeDir("..");
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::setPath (const FString& dir)
|
||||||
|
{
|
||||||
|
const char* dirname = dir.c_str();
|
||||||
|
char resolved_path[MAXPATHLEN];
|
||||||
|
FString r_dir;
|
||||||
|
struct stat sb;
|
||||||
|
|
||||||
|
stat(dirname, &sb);
|
||||||
|
if ( S_ISLNK(sb.st_mode) )
|
||||||
|
{
|
||||||
|
lstat(dirname, &sb);
|
||||||
|
}
|
||||||
|
if ( ! S_ISDIR(sb.st_mode) )
|
||||||
|
{
|
||||||
|
directory = '/';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( realpath(dir.c_str(), resolved_path) != 0 )
|
||||||
|
r_dir = resolved_path;
|
||||||
|
else
|
||||||
|
r_dir = dir;
|
||||||
|
|
||||||
|
if ( r_dir[r_dir.getLength()-1] != '/' )
|
||||||
|
directory = r_dir + "/";
|
||||||
|
else
|
||||||
|
directory = r_dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FFileDialog::setFilter (const FString& filter)
|
||||||
|
{
|
||||||
|
filter_pattern = filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
const FString FFileDialog::getSelectedFile() const
|
||||||
|
{
|
||||||
|
uLong n = uLong(filebrowser->currentItem() - 1);
|
||||||
|
|
||||||
|
if ( dir_entries[n].type == DT_DIR )
|
||||||
|
return FString("");
|
||||||
|
else
|
||||||
|
return FString(dir_entries[n].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FFileDialog::readDir()
|
||||||
|
{
|
||||||
|
const char* dir = directory.c_str();
|
||||||
|
const char* filter = filter_pattern.c_str();
|
||||||
|
errno = 0;
|
||||||
|
directory_stream = opendir(dir);
|
||||||
|
if ( ! directory_stream )
|
||||||
|
{
|
||||||
|
FMessageBox::error (this, "Can't open directory\n" + directory);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
clear();
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
errno = 0;
|
||||||
|
struct dirent* next = readdir (directory_stream);
|
||||||
|
if ( next )
|
||||||
|
{
|
||||||
|
if ( next->d_name[0] == '.' && next->d_name[1] == '\0' )
|
||||||
|
continue;
|
||||||
|
if ( ! show_hidden
|
||||||
|
&& next->d_name[0] == '.'
|
||||||
|
&& next->d_name[1] != '\0'
|
||||||
|
&& next->d_name[1] != '.' )
|
||||||
|
continue;
|
||||||
|
if ( dir[0] == '/' && dir[1] == '\0' && strcmp(next->d_name, "..") == 0 )
|
||||||
|
continue;
|
||||||
|
dir_entry entry;
|
||||||
|
entry.name = strdup(next->d_name);
|
||||||
|
entry.type = next->d_type;
|
||||||
|
|
||||||
|
if ( next->d_type == DT_LNK ) // symbolic link
|
||||||
|
{
|
||||||
|
char resolved_path[MAXPATHLEN];
|
||||||
|
char symLink[MAXPATHLEN];
|
||||||
|
strncpy(symLink, dir, sizeof(symLink));
|
||||||
|
strncat(symLink, next->d_name, sizeof(symLink) - strlen(symLink) - 1);
|
||||||
|
|
||||||
|
if ( realpath(symLink, resolved_path) != 0 ) // follow link
|
||||||
|
{
|
||||||
|
struct stat sb;
|
||||||
|
lstat(resolved_path, &sb);
|
||||||
|
if ( S_ISDIR(sb.st_mode) )
|
||||||
|
entry.type = DT_DIR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( entry.type == DT_DIR )
|
||||||
|
dir_entries.push_back (entry);
|
||||||
|
else if ( pattern_match(filter, entry.name) )
|
||||||
|
dir_entries.push_back (entry);
|
||||||
|
else
|
||||||
|
free(entry.name);
|
||||||
|
}
|
||||||
|
else if (errno != 0)
|
||||||
|
{
|
||||||
|
FMessageBox::error (this, "Reading directory\n" + directory);
|
||||||
|
if ( errno != EOVERFLOW )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
} // end while
|
||||||
|
|
||||||
|
if ( closedir (directory_stream) != 0 )
|
||||||
|
{
|
||||||
|
FMessageBox::error (this, "Closing directory\n" + directory);
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int start;
|
||||||
|
if ( strcmp((*dir_entries.begin()).name, "..") == 0 )
|
||||||
|
start=1;
|
||||||
|
else
|
||||||
|
start=0;
|
||||||
|
int dir_num = numOfDirs();
|
||||||
|
|
||||||
|
// directories first
|
||||||
|
std::sort(dir_entries.begin()+start, dir_entries.end(), sortDirFirst);
|
||||||
|
|
||||||
|
// sort directories by name
|
||||||
|
std::sort(dir_entries.begin()+start, dir_entries.begin()+dir_num, sortByName);
|
||||||
|
|
||||||
|
// sort files by name
|
||||||
|
std::sort(dir_entries.begin()+dir_num, dir_entries.end(), sortByName);
|
||||||
|
|
||||||
|
// fill list with directory entries
|
||||||
|
filebrowser->clear();
|
||||||
|
if ( ! dir_entries.empty() )
|
||||||
|
{
|
||||||
|
std::vector<dir_entry>::const_iterator iter, end;
|
||||||
|
iter = dir_entries.begin();
|
||||||
|
end = dir_entries.end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter).type == DT_DIR )
|
||||||
|
filebrowser->insert(FString((*iter).name), fc::SquareBrackets);
|
||||||
|
else
|
||||||
|
filebrowser->insert(FString((*iter).name));
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FFileDialog::setShowHiddenFiles (bool on)
|
||||||
|
{
|
||||||
|
if ( on == show_hidden )
|
||||||
|
return show_hidden;
|
||||||
|
|
||||||
|
show_hidden = on;
|
||||||
|
readDir();
|
||||||
|
filebrowser->redraw();
|
||||||
|
return show_hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FString FFileDialog::fileOpenChooser ( FWidget* parent,
|
||||||
|
const FString& dirname,
|
||||||
|
const FString& filter )
|
||||||
|
{
|
||||||
|
FString ret;
|
||||||
|
FString path = dirname;
|
||||||
|
FString file_filter = filter;
|
||||||
|
if ( path.isNull() )
|
||||||
|
path = getHomeDir();
|
||||||
|
if ( file_filter.isNull() )
|
||||||
|
file_filter = FString("*");
|
||||||
|
FFileDialog* fileopen = new FFileDialog ( path,
|
||||||
|
file_filter,
|
||||||
|
FFileDialog::Open,
|
||||||
|
parent );
|
||||||
|
if ( fileopen->exec() == FDialog::Accept )
|
||||||
|
ret = fileopen->getPath() + fileopen->getSelectedFile();
|
||||||
|
else
|
||||||
|
ret = FString();
|
||||||
|
delete fileopen;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FString FFileDialog::fileSaveChooser ( FWidget* parent,
|
||||||
|
const FString& dirname,
|
||||||
|
const FString& filter )
|
||||||
|
{
|
||||||
|
FString ret;
|
||||||
|
FString path = dirname;
|
||||||
|
FString file_filter = filter;
|
||||||
|
if ( path.isNull() )
|
||||||
|
path = getHomeDir();
|
||||||
|
if ( file_filter.isNull() )
|
||||||
|
file_filter = FString("*");
|
||||||
|
FFileDialog* fileopen = new FFileDialog ( path,
|
||||||
|
file_filter,
|
||||||
|
FFileDialog::Save,
|
||||||
|
parent );
|
||||||
|
if ( fileopen->exec() == FDialog::Accept )
|
||||||
|
ret = fileopen->getPath() + fileopen->getSelectedFile();
|
||||||
|
else
|
||||||
|
ret = FString();
|
||||||
|
delete fileopen;
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,143 @@
|
||||||
|
// ffiledialog.h
|
||||||
|
// class FFileDialog.h
|
||||||
|
|
||||||
|
#ifndef _FFILEDIALOG_H
|
||||||
|
#define _FFILEDIALOG_H
|
||||||
|
|
||||||
|
#include <sys/param.h>
|
||||||
|
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fnmatch.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "fbutton.h"
|
||||||
|
#include "fcheckbox.h"
|
||||||
|
#include "fdialog.h"
|
||||||
|
#include "flineedit.h"
|
||||||
|
#include "flistbox.h"
|
||||||
|
#include "fmessagebox.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
#include "fterm.h"
|
||||||
|
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
struct dir_entry
|
||||||
|
{
|
||||||
|
char* name;
|
||||||
|
uChar type;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FFileDialog
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FFileDialog : public FDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum DialogType
|
||||||
|
{
|
||||||
|
Open = 0,
|
||||||
|
Save = 1
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
DIR* directory_stream;
|
||||||
|
std::vector<dir_entry> dir_entries;
|
||||||
|
|
||||||
|
FString directory;
|
||||||
|
FString filter_pattern;
|
||||||
|
FListBox* filebrowser;
|
||||||
|
FLineEdit* filename;
|
||||||
|
FCheckBox* hidden;
|
||||||
|
FButton* cancel;
|
||||||
|
FButton* open;
|
||||||
|
DialogType dlg_type;
|
||||||
|
bool show_hidden;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void init();
|
||||||
|
static char* getHomeDir();
|
||||||
|
virtual void draw();
|
||||||
|
inline bool pattern_match (const char*, const char*);
|
||||||
|
void clear();
|
||||||
|
int numOfDirs();
|
||||||
|
int changeDir (const FString&);
|
||||||
|
void printPath (const FString&);
|
||||||
|
void cb_processActivate (FWidget*, void*);
|
||||||
|
void cb_processRowChanged (FWidget*, void*);
|
||||||
|
void cb_processClicked (FWidget*, void*);
|
||||||
|
void cb_processCancel (FWidget*, void*);
|
||||||
|
void cb_processOpen (FWidget*, void*);
|
||||||
|
void cb_processShowHidden (FWidget*, void*);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void adjustSize();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FFileDialog (FWidget* parent=0);
|
||||||
|
FFileDialog (const FString&,
|
||||||
|
const FString&,
|
||||||
|
DialogType type = FFileDialog::Open,
|
||||||
|
FWidget* parent=0);
|
||||||
|
~FFileDialog();
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void onKeyPress (FKeyEvent*);
|
||||||
|
|
||||||
|
const FString getPath() const;
|
||||||
|
void setPath (const FString&);
|
||||||
|
const FString getFilter() const;
|
||||||
|
void setFilter (const FString&);
|
||||||
|
const FString getSelectedFile() const;
|
||||||
|
int readDir();
|
||||||
|
bool setShowHiddenFiles(bool);
|
||||||
|
bool setShowHiddenFiles();
|
||||||
|
bool unsetShowHiddenFiles();
|
||||||
|
bool getShowHiddenFiles();
|
||||||
|
|
||||||
|
static FString fileOpenChooser (FWidget*,
|
||||||
|
const FString& = FString(),
|
||||||
|
const FString& = FString());
|
||||||
|
static FString fileSaveChooser (FWidget*,
|
||||||
|
const FString& = FString(),
|
||||||
|
const FString& = FString());
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FMessageBox inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FFileDialog::getClassName() const
|
||||||
|
{ return "FFileDialog"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const FString FFileDialog::getPath() const
|
||||||
|
{ return directory; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const FString FFileDialog::getFilter() const
|
||||||
|
{ return filter_pattern; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FFileDialog::setShowHiddenFiles()
|
||||||
|
{ return setShowHiddenFiles(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FFileDialog::unsetShowHiddenFiles()
|
||||||
|
{ return setShowHiddenFiles(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FFileDialog::getShowHiddenFiles()
|
||||||
|
{ return show_hidden; }
|
||||||
|
|
||||||
|
#endif // _FFILEDIALOG_H
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
// final.h
|
||||||
|
|
||||||
|
#ifndef _FINAL_H
|
||||||
|
#define _FINAL_H
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "fterm.h"
|
||||||
|
#include "fwidget.h"
|
||||||
|
#include "fpoint.h"
|
||||||
|
#include "frect.h"
|
||||||
|
#include "fstring.h"
|
||||||
|
#include "fdialog.h"
|
||||||
|
#include "flabel.h"
|
||||||
|
#include "fbutton.h"
|
||||||
|
#include "fradiobutton.h"
|
||||||
|
#include "fcheckbox.h"
|
||||||
|
#include "fbuttongroup.h"
|
||||||
|
#include "flistbox.h"
|
||||||
|
#include "ftextview.h"
|
||||||
|
#include "flineedit.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
#include "fscrollbar.h"
|
||||||
|
#include "fprogressbar.h"
|
||||||
|
#include "fmessagebox.h"
|
||||||
|
#include "ffiledialog.h"
|
||||||
|
|
||||||
|
#endif // _FINAL_H
|
|
@ -0,0 +1,755 @@
|
||||||
|
// fkey_map.h
|
||||||
|
|
||||||
|
#ifndef _FKEYMAP_H
|
||||||
|
#define _FKEYMAP_H
|
||||||
|
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
char* string;
|
||||||
|
char tname[4];
|
||||||
|
}
|
||||||
|
keymap;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
static keymap Fkey[] =
|
||||||
|
{
|
||||||
|
{ fc::Fkey_backspace, 0, "kb" }, // backspace key
|
||||||
|
{ fc::Fkey_catab , 0, "ka" }, // clear-all-tabs key
|
||||||
|
{ fc::Fkey_clear , 0, "kC" }, // clear-screen or erase key
|
||||||
|
{ fc::Fkey_ctab , 0, "kt" }, // clear-tab key
|
||||||
|
{ fc::Fkey_dc , 0, "kD" }, // delete-character key
|
||||||
|
{ fc::Fkey_dl , 0, "kL" }, // delete-line key
|
||||||
|
{ fc::Fkey_down , 0, "kd" }, // down-arrow key
|
||||||
|
{ fc::Fkey_down , 0, "kdx"}, // down-arrow key
|
||||||
|
{ fc::Fkey_eic , 0, "kM" }, // sent by rmir or smir in insert mode
|
||||||
|
{ fc::Fkey_eol , 0, "kE" }, // clear-to-end-of-line key
|
||||||
|
{ fc::Fkey_eos , 0, "kS" }, // clear-to-end-of-screen key
|
||||||
|
{ fc::Fkey_f0 , 0, "k0" }, // F0 function key
|
||||||
|
{ fc::Fkey_f1 , 0, "k1" }, // F1 function key
|
||||||
|
{ fc::Fkey_f1 , 0, "k1x"}, // F1 function key
|
||||||
|
{ fc::Fkey_f1 , 0, "k1X"}, // F1 function key
|
||||||
|
{ fc::Fkey_f2 , 0, "k2" }, // F2 function key
|
||||||
|
{ fc::Fkey_f2 , 0, "k2x"}, // F2 function key
|
||||||
|
{ fc::Fkey_f2 , 0, "k2X"}, // F2 function key
|
||||||
|
{ fc::Fkey_f3 , 0, "k3" }, // F3 function key
|
||||||
|
{ fc::Fkey_f3 , 0, "k3x"}, // F3 function key
|
||||||
|
{ fc::Fkey_f3 , 0, "k3X"}, // F3 function key
|
||||||
|
{ fc::Fkey_f4 , 0, "k4" }, // F4 function key
|
||||||
|
{ fc::Fkey_f4 , 0, "k4x"}, // F4 function key
|
||||||
|
{ fc::Fkey_f4 , 0, "k4X"}, // F4 function key
|
||||||
|
{ fc::Fkey_f5 , 0, "k5" }, // F5 function key
|
||||||
|
{ fc::Fkey_f6 , 0, "k6" }, // F6 function key
|
||||||
|
{ fc::Fkey_f7 , 0, "k7" }, // F7 function key
|
||||||
|
{ fc::Fkey_f8 , 0, "k8" }, // F8 fucntion key
|
||||||
|
{ fc::Fkey_f9 , 0, "k9" }, // F9 function key
|
||||||
|
{ fc::Fkey_f10 , 0, "k;" }, // F10 function key
|
||||||
|
{ fc::Fkey_home , 0, "kh" }, // home key
|
||||||
|
{ fc::Fkey_home , 0, "khx"}, // home key
|
||||||
|
{ fc::Fkey_ic , 0, "kI" }, // insert-character key
|
||||||
|
{ fc::Fkey_il , 0, "kA" }, // insert-line key
|
||||||
|
{ fc::Fkey_left , 0, "kl" }, // left-arrow key
|
||||||
|
{ fc::Fkey_left , 0, "klx"}, // left-arrow key
|
||||||
|
{ fc::Fkey_ll , 0, "kH" }, // last-line key
|
||||||
|
{ fc::Fkey_npage , 0, "kN" }, // next-page key
|
||||||
|
{ fc::Fkey_ppage , 0, "kP" }, // prev-page key
|
||||||
|
{ fc::Fkey_right , 0, "kr" }, // right-arrow key
|
||||||
|
{ fc::Fkey_right , 0, "krx"}, // right-arrow key
|
||||||
|
{ fc::Fkey_sf , 0, "kF" }, // scroll-forward key
|
||||||
|
{ fc::Fkey_sr , 0, "kR" }, // scroll-backward key
|
||||||
|
{ fc::Fkey_stab , 0, "kT" }, // set-tab key
|
||||||
|
{ fc::Fkey_up , 0, "ku" }, // up-arrow key
|
||||||
|
{ fc::Fkey_up , 0, "kux"}, // up-arrow key
|
||||||
|
{ fc::Fkey_a1 , 0, "K1" }, // upper left of keypad
|
||||||
|
{ fc::Fkey_a3 , 0, "K3" }, // upper right of keypad
|
||||||
|
{ fc::Fkey_b2 , 0, "K2" }, // center of keypad
|
||||||
|
{ fc::Fkey_c1 , 0, "K4" }, // lower left of keypad
|
||||||
|
{ fc::Fkey_c3 , 0, "K5" }, // lower right of keypad
|
||||||
|
{ fc::Fkey_btab , 0, "kB" }, // back-tab key
|
||||||
|
{ fc::Fkey_beg , 0, "@1" }, // begin key
|
||||||
|
{ fc::Fkey_cancel , 0, "@2" }, // cancel key
|
||||||
|
{ fc::Fkey_close , 0, "@3" }, // close key
|
||||||
|
{ fc::Fkey_command , 0, "@4" }, // command key
|
||||||
|
{ fc::Fkey_copy , 0, "@5" }, // copy key
|
||||||
|
{ fc::Fkey_create , 0, "@6" }, // create key
|
||||||
|
{ fc::Fkey_end , 0, "@7" }, // end key
|
||||||
|
{ fc::Fkey_end , 0, "@7x"}, // end key
|
||||||
|
{ fc::Fkey_enter , 0, "@8" }, // enter/send key
|
||||||
|
{ fc::Fkey_exit , 0, "@9" }, // exit key
|
||||||
|
{ fc::Fkey_find , 0, "@0" }, // find key
|
||||||
|
{ fc::Fkey_help , 0, "%1" }, // help key
|
||||||
|
{ fc::Fkey_mark , 0, "%2" }, // mark key
|
||||||
|
{ fc::Fkey_message , 0, "%3" }, // message key
|
||||||
|
{ fc::Fkey_move , 0, "%4" }, // move key
|
||||||
|
{ fc::Fkey_next , 0, "%5" }, // next key
|
||||||
|
{ fc::Fkey_open , 0, "%6" }, // open key
|
||||||
|
{ fc::Fkey_options , 0, "%7" }, // options key
|
||||||
|
{ fc::Fkey_previous , 0, "%8" }, // previous key
|
||||||
|
{ fc::Fkey_print , 0, "%9" }, // print key
|
||||||
|
{ fc::Fkey_redo , 0, "%0" }, // redo key
|
||||||
|
{ fc::Fkey_reference, 0, "&1" }, // reference key
|
||||||
|
{ fc::Fkey_refresh , 0, "&2" }, // refresh key
|
||||||
|
{ fc::Fkey_replace , 0, "&3" }, // replace key
|
||||||
|
{ fc::Fkey_restart , 0, "&4" }, // restart key
|
||||||
|
{ fc::Fkey_resume , 0, "&5" }, // resume key
|
||||||
|
{ fc::Fkey_save , 0, "&6" }, // save key
|
||||||
|
{ fc::Fkey_suspend , 0, "&7" }, // suspend key
|
||||||
|
{ fc::Fkey_undo , 0, "&8" }, // undo key
|
||||||
|
{ fc::Fkey_sbeg , 0, "&9" }, // shifted key
|
||||||
|
{ fc::Fkey_scancel , 0, "&0" }, // shifted key
|
||||||
|
{ fc::Fkey_scommand , 0, "*1" }, // shifted key
|
||||||
|
{ fc::Fkey_scopy , 0, "*2" }, // shifted key
|
||||||
|
{ fc::Fkey_screate , 0, "*3" }, // shifted key
|
||||||
|
{ fc::Fkey_sdc , 0, "*4" }, // shifted key
|
||||||
|
{ fc::Fkey_sdl , 0, "*5" }, // shifted key
|
||||||
|
{ fc::Fkey_select , 0, "*6" }, // select key
|
||||||
|
{ fc::Fkey_send , 0, "*7" }, // shifted key
|
||||||
|
{ fc::Fkey_seol , 0, "*8" }, // shifted key
|
||||||
|
{ fc::Fkey_sexit , 0, "*9" }, // shifted key
|
||||||
|
{ fc::Fkey_sfind , 0, "*0" }, // shifted key
|
||||||
|
{ fc::Fkey_shelp , 0, "#1" }, // shifted key
|
||||||
|
{ fc::Fkey_shome , 0, "#2" }, // shifted key
|
||||||
|
{ fc::Fkey_sic , 0, "#3" }, // shifted key
|
||||||
|
{ fc::Fkey_sleft , 0, "#4" }, // shifted key
|
||||||
|
{ fc::Fkey_smessage , 0, "%a" }, // shifted key
|
||||||
|
{ fc::Fkey_smove , 0, "%b" }, // shifted key
|
||||||
|
{ fc::Fkey_snext , 0, "%c" }, // shifted key
|
||||||
|
{ fc::Fkey_soptions , 0, "%d" }, // shifted key
|
||||||
|
{ fc::Fkey_sprevious, 0, "%e" }, // shifted key
|
||||||
|
{ fc::Fkey_sprint , 0, "%f" }, // shifted key
|
||||||
|
{ fc::Fkey_sredo , 0, "%g" }, // shifted key
|
||||||
|
{ fc::Fkey_sreplace , 0, "%h" }, // shifted key
|
||||||
|
{ fc::Fkey_sright , 0, "%i" }, // shifted key
|
||||||
|
{ fc::Fkey_srsume , 0, "%j" }, // shifted key
|
||||||
|
{ fc::Fkey_ssave , 0, "!1" }, // shifted key
|
||||||
|
{ fc::Fkey_ssuspend , 0, "!2" }, // shifted key
|
||||||
|
{ fc::Fkey_sundo , 0, "!3" }, // shifted key
|
||||||
|
{ fc::Fkey_f11 , 0, "F1" }, // F11 function key
|
||||||
|
{ fc::Fkey_f12 , 0, "F2" }, // F12 function key
|
||||||
|
{ fc::Fkey_f13 , 0, "F3" }, // F13 function key
|
||||||
|
{ fc::Fkey_f14 , 0, "F4" }, // F14 function key
|
||||||
|
{ fc::Fkey_f15 , 0, "F5" }, // F15 function key
|
||||||
|
{ fc::Fkey_f16 , 0, "F6" }, // F16 function key
|
||||||
|
{ fc::Fkey_f17 , 0, "F7" }, // F17 function key
|
||||||
|
{ fc::Fkey_f18 , 0, "F8" }, // F18 function key
|
||||||
|
{ fc::Fkey_f19 , 0, "F9" }, // F19 function key
|
||||||
|
{ fc::Fkey_f20 , 0, "FA" }, // F20 function key
|
||||||
|
{ fc::Fkey_f21 , 0, "FB" }, // F21 function key
|
||||||
|
{ fc::Fkey_f22 , 0, "FC" }, // F22 function key
|
||||||
|
{ fc::Fkey_f23 , 0, "FD" }, // F23 function key
|
||||||
|
{ fc::Fkey_f24 , 0, "FE" }, // F24 function key
|
||||||
|
{ fc::Fkey_f25 , 0, "FF" }, // F25 function key
|
||||||
|
{ fc::Fkey_f26 , 0, "FG" }, // F26 function key
|
||||||
|
{ fc::Fkey_f27 , 0, "FH" }, // F27 function key
|
||||||
|
{ fc::Fkey_f28 , 0, "FI" }, // F28 function key
|
||||||
|
{ fc::Fkey_f29 , 0, "FJ" }, // F29 function key
|
||||||
|
{ fc::Fkey_f30 , 0, "FK" }, // F30 function key
|
||||||
|
{ fc::Fkey_f31 , 0, "FL" }, // F31 function key
|
||||||
|
{ fc::Fkey_f32 , 0, "FM" }, // F32 function key
|
||||||
|
{ fc::Fkey_f33 , 0, "FN" }, // F33 function key
|
||||||
|
{ fc::Fkey_f34 , 0, "FO" }, // F34 function key
|
||||||
|
{ fc::Fkey_f35 , 0, "FP" }, // F35 function key
|
||||||
|
{ fc::Fkey_f36 , 0, "FQ" }, // F36 function key
|
||||||
|
{ fc::Fkey_f37 , 0, "FR" }, // F37 function key
|
||||||
|
{ fc::Fkey_f38 , 0, "FS" }, // F38 function key
|
||||||
|
{ fc::Fkey_f39 , 0, "FT" }, // F39 function key
|
||||||
|
{ fc::Fkey_f40 , 0, "FU" }, // F40 function key
|
||||||
|
{ fc::Fkey_f41 , 0, "FV" }, // F41 function key
|
||||||
|
{ fc::Fkey_f42 , 0, "FW" }, // F42 function key
|
||||||
|
{ fc::Fkey_f43 , 0, "FX" }, // F43 function key
|
||||||
|
{ fc::Fkey_f44 , 0, "FY" }, // F44 function key
|
||||||
|
{ fc::Fkey_f45 , 0, "FZ" }, // F45 function key
|
||||||
|
{ fc::Fkey_f46 , 0, "Fa" }, // F46 function key
|
||||||
|
{ fc::Fkey_f47 , 0, "Fb" }, // F47 function key
|
||||||
|
{ fc::Fkey_f48 , 0, "Fc" }, // F48 function key
|
||||||
|
{ fc::Fkey_f49 , 0, "Fd" }, // F49 function key
|
||||||
|
{ fc::Fkey_f50 , 0, "Fe" }, // F50 function key
|
||||||
|
{ fc::Fkey_f51 , 0, "Ff" }, // F51 function key
|
||||||
|
{ fc::Fkey_f52 , 0, "Fg" }, // F52 function key
|
||||||
|
{ fc::Fkey_f53 , 0, "Fh" }, // F53 function key
|
||||||
|
{ fc::Fkey_f54 , 0, "Fi" }, // F54 function key
|
||||||
|
{ fc::Fkey_f55 , 0, "Fj" }, // F55 function key
|
||||||
|
{ fc::Fkey_f56 , 0, "Fk" }, // F56 function key
|
||||||
|
{ fc::Fkey_f57 , 0, "Fl" }, // F57 function key
|
||||||
|
{ fc::Fkey_f58 , 0, "Fm" }, // F58 function key
|
||||||
|
{ fc::Fkey_f59 , 0, "Fn" }, // F59 function key
|
||||||
|
{ fc::Fkey_f60 , 0, "Fo" }, // F60 function key
|
||||||
|
{ fc::Fkey_f61 , 0, "Fp" }, // F61 function key
|
||||||
|
{ fc::Fkey_f62 , 0, "Fq" }, // F62 function key
|
||||||
|
{ fc::Fkey_f63 , 0, "Fr" }, // F63 function key
|
||||||
|
{ 0 , 0, "\0" }
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
char string[8];
|
||||||
|
}
|
||||||
|
metakeymap;
|
||||||
|
|
||||||
|
static metakeymap Fmetakey[] =
|
||||||
|
{
|
||||||
|
{ fc::Fmkey_ic , "\033[2;3~" }, // M-insert
|
||||||
|
{ fc::Fmkey_dc , "\033[3;3~" }, // M-delete
|
||||||
|
{ fc::Fmkey_home , "\033[1;3H" }, // M-home
|
||||||
|
{ fc::Fmkey_end , "\033[1;3F" }, // M-end
|
||||||
|
{ fc::Fmkey_ppage , "\033[5;3~" }, // M-prev-page
|
||||||
|
{ fc::Fmkey_npage , "\033[6;3~" }, // M-next-page
|
||||||
|
{ fc::Fmkey_f1 , "\033[1;3P" }, // M-f1
|
||||||
|
{ fc::Fmkey_f2 , "\033[1;3Q" }, // M-f2
|
||||||
|
{ fc::Fmkey_f3 , "\033[1;3R" }, // M-f3
|
||||||
|
{ fc::Fmkey_f4 , "\033[1;3S" }, // M-f4
|
||||||
|
{ fc::Fmkey_f5 , "\033[15;3~" }, // M-f5
|
||||||
|
{ fc::Fmkey_f6 , "\033[17;3~" }, // M-f6
|
||||||
|
{ fc::Fmkey_f7 , "\033[18;3~" }, // M-f7
|
||||||
|
{ fc::Fmkey_f8 , "\033[19;3~" }, // M-f8
|
||||||
|
{ fc::Fmkey_f9 , "\033[20;3~" }, // M-f9
|
||||||
|
{ fc::Fmkey_f10 , "\033[21;3~" }, // M-f10
|
||||||
|
{ fc::Fmkey_f11 , "\033[23;3~" }, // M-f11
|
||||||
|
{ fc::Fmkey_f12 , "\033[24;3~" }, // M-f12
|
||||||
|
{ fc::Fmkey_up , "\033[1;3A" }, // M-up
|
||||||
|
{ fc::Fmkey_down , "\033[1;3B" }, // M-down
|
||||||
|
{ fc::Fmkey_right , "\033[1;3C" }, // M-right
|
||||||
|
{ fc::Fmkey_left , "\033[1;3D" }, // M-left
|
||||||
|
{ fc::Fmkey_sic , "\033[2;4~" }, // shift-M-insert
|
||||||
|
{ fc::Fmkey_sdc , "\033[3;4~" }, // shift-M-delete
|
||||||
|
{ fc::Fmkey_shome , "\033[1;4H" }, // shift-M-home
|
||||||
|
{ fc::Fmkey_send , "\033[1;4F" }, // shift-M-end
|
||||||
|
{ fc::Fmkey_sppage , "\033[5;4~" }, // shift-M-prev-page
|
||||||
|
{ fc::Fmkey_snpage , "\033[6;4~" }, // shift-M-next-page
|
||||||
|
{ fc::Fmkey_sf1 , "\033[1;4P" }, // shift-M-f1
|
||||||
|
{ fc::Fmkey_sf2 , "\033[1;4Q" }, // shift-M-f2
|
||||||
|
{ fc::Fmkey_sf3 , "\033[1;4R" }, // shift-M-f3
|
||||||
|
{ fc::Fmkey_sf4 , "\033[1;4S" }, // shift-M-f4
|
||||||
|
{ fc::Fmkey_sf5 , "\033[15;4~" }, // shift-M-f5
|
||||||
|
{ fc::Fmkey_sf6 , "\033[17;4~" }, // shift-M-f6
|
||||||
|
{ fc::Fmkey_sf7 , "\033[18;4~" }, // shift-M-f7
|
||||||
|
{ fc::Fmkey_sf8 , "\033[19;4~" }, // shift-M-f8
|
||||||
|
{ fc::Fmkey_sf9 , "\033[20;4~" }, // shift-M-f9
|
||||||
|
{ fc::Fmkey_sf10 , "\033[21;4~" }, // shift-M-f10
|
||||||
|
{ fc::Fmkey_sf11 , "\033[23;4~" }, // shift-M-f11
|
||||||
|
{ fc::Fmkey_sf12 , "\033[24;4~" }, // shift-M-f12
|
||||||
|
{ fc::Fmkey_sup , "\033[1;4A" }, // shift-M-up
|
||||||
|
{ fc::Fmkey_sdown , "\033[1;4B" }, // shift-M-down
|
||||||
|
{ fc::Fmkey_sright , "\033[1;4C" }, // shift-M-right
|
||||||
|
{ fc::Fmkey_sleft , "\033[1;4D" }, // shift-M-left
|
||||||
|
{ fc::Fckey_ic , "\033[2;5~" }, // ctrl-insert
|
||||||
|
{ fc::Fckey_dc , "\033[3;5~" }, // ctrl-delete
|
||||||
|
{ fc::Fckey_home , "\033[1;5H" }, // ctrl-home
|
||||||
|
{ fc::Fckey_end , "\033[1;5F" }, // ctrl-end
|
||||||
|
{ fc::Fckey_ppage , "\033[5;5~" }, // ctrl-prev-page
|
||||||
|
{ fc::Fckey_npage , "\033[6;5~" }, // ctrl-next-page
|
||||||
|
{ fc::Fckey_up , "\033[1;5A" }, // ctrl-up
|
||||||
|
{ fc::Fckey_down , "\033[1;5B" }, // ctrl-down
|
||||||
|
{ fc::Fckey_right , "\033[1;5C" }, // ctrl-right
|
||||||
|
{ fc::Fckey_left , "\033[1;5D" }, // ctrl-left
|
||||||
|
{ fc::Fckey_sic , "\033[2;6~" }, // shift-ctrl-M-insert
|
||||||
|
{ fc::Fckey_sdc , "\033[3;6~" }, // shift-ctrl-M-delete
|
||||||
|
{ fc::Fckey_shome , "\033[1;6H" }, // shift-ctrl-M-home
|
||||||
|
{ fc::Fckey_send , "\033[1;6F" }, // shift-ctrl-M-end
|
||||||
|
{ fc::Fckey_sppage , "\033[5;6~" }, // shift-ctrl-M-prev-page
|
||||||
|
{ fc::Fckey_snpage , "\033[6;6~" }, // shift-ctrl-M-next-page
|
||||||
|
{ fc::Fckey_sup , "\033[1;6A" }, // shift-ctrl-M-up
|
||||||
|
{ fc::Fckey_sdown , "\033[1;6B" }, // shift-ctrl-M-down
|
||||||
|
{ fc::Fckey_sright , "\033[1;6C" }, // shift-ctrl-M-right
|
||||||
|
{ fc::Fckey_sleft , "\033[1;6D" }, // shift-ctrl-M-left
|
||||||
|
{ fc::Fcmkey_ic , "\033[2;7~" }, // ctrl-M-insert
|
||||||
|
{ fc::Fcmkey_dc , "\033[3;7~" }, // ctrl-M-delete
|
||||||
|
{ fc::Fcmkey_home , "\033[1;7H" }, // ctrl-M-home
|
||||||
|
{ fc::Fcmkey_end , "\033[1;7F" }, // ctrl-M-end
|
||||||
|
{ fc::Fcmkey_ppage , "\033[5;7~" }, // ctrl-M-prev-page
|
||||||
|
{ fc::Fcmkey_npage , "\033[6;7~" }, // ctrl-M-next-page
|
||||||
|
{ fc::Fcmkey_up , "\033[1;7A" }, // ctrl-M-up
|
||||||
|
{ fc::Fcmkey_down , "\033[1;7B" }, // ctrl-M-down
|
||||||
|
{ fc::Fcmkey_right , "\033[1;7C" }, // ctrl-M-right
|
||||||
|
{ fc::Fcmkey_left , "\033[1;7D" }, // ctrl-M-left
|
||||||
|
{ fc::Fcmkey_sic , "\033[2;8~" }, // shift-ctrl-M-insert
|
||||||
|
{ fc::Fcmkey_sdc , "\033[3;8~" }, // shift-ctrl-M-delete
|
||||||
|
{ fc::Fcmkey_shome , "\033[1;8H" }, // shift-ctrl-M-home
|
||||||
|
{ fc::Fcmkey_send , "\033[1;8F" }, // shift-ctrl-M-end
|
||||||
|
{ fc::Fcmkey_sppage , "\033[5;8~" }, // shift-ctrl-M-prev-page
|
||||||
|
{ fc::Fcmkey_snpage , "\033[6;8~" }, // shift-ctrl-M-next-page
|
||||||
|
{ fc::Fcmkey_sf1 , "\033[1;8P" }, // shift-ctrl-M-f1
|
||||||
|
{ fc::Fcmkey_sf2 , "\033[1;8Q" }, // shift-ctrl-M-f2
|
||||||
|
{ fc::Fcmkey_sf3 , "\033[1;8R" }, // shift-ctrl-M-f3
|
||||||
|
{ fc::Fcmkey_sf4 , "\033[1;8S" }, // shift-ctrl-M-f4
|
||||||
|
{ fc::Fcmkey_sf5 , "\033[15;8~" }, // shift-ctrl-M-f5
|
||||||
|
{ fc::Fcmkey_sf6 , "\033[17;8~" }, // shift-ctrl-M-f6
|
||||||
|
{ fc::Fcmkey_sf7 , "\033[18;8~" }, // shift-ctrl-M-f7
|
||||||
|
{ fc::Fcmkey_sf8 , "\033[19;8~" }, // shift-ctrl-M-f8
|
||||||
|
{ fc::Fcmkey_sf9 , "\033[20;8~" }, // shift-ctrl-M-f9
|
||||||
|
{ fc::Fcmkey_sf10 , "\033[21;8~" }, // shift-ctrl-M-f10
|
||||||
|
{ fc::Fcmkey_sf11 , "\033[23;8~" }, // shift-ctrl-M-f11
|
||||||
|
{ fc::Fcmkey_sf12 , "\033[24;8~" }, // shift-ctrl-M-f12
|
||||||
|
{ fc::Fcmkey_sup , "\033[1;8A" }, // shift-ctrl-M-up
|
||||||
|
{ fc::Fcmkey_sdown , "\033[1;8B" }, // shift-ctrl-M-down
|
||||||
|
{ fc::Fcmkey_sright , "\033[1;8C" }, // shift-ctrl-M-right
|
||||||
|
{ fc::Fcmkey_sleft , "\033[1;8D" }, // shift-ctrl-M-left
|
||||||
|
{ fc::Fkey_escape_mintty , "\033O["}, // mintty Esc
|
||||||
|
{ fc::Fmkey_space , "\033 " }, // M-' '
|
||||||
|
{ fc::Fmkey_bang , "\033!" }, // M-!
|
||||||
|
{ fc::Fmkey_quotes , "\033\""}, // M-"
|
||||||
|
{ fc::Fmkey_hash , "\033#" }, // M-#
|
||||||
|
{ fc::Fmkey_dollar , "\033$" }, // M-$
|
||||||
|
{ fc::Fmkey_percent , "\033%" }, // M-%
|
||||||
|
{ fc::Fmkey_ampersand , "\033&" }, // M-&
|
||||||
|
{ fc::Fmkey_apostrophe , "\033'" }, // M-'
|
||||||
|
{ fc::Fmkey_left_parenthesis , "\033(" }, // M-(
|
||||||
|
{ fc::Fmkey_right_parenthesis , "\033)" }, // M-)
|
||||||
|
{ fc::Fmkey_asterisk , "\033*" }, // M-*
|
||||||
|
{ fc::Fmkey_plus , "\033+" }, // M-+
|
||||||
|
{ fc::Fmkey_comma , "\033," }, // M-,
|
||||||
|
{ fc::Fmkey_minus , "\033-" }, // M-'-'
|
||||||
|
{ fc::Fmkey_full_stop , "\033." }, // M-.
|
||||||
|
{ fc::Fmkey_slash , "\033/" }, // M-/
|
||||||
|
{ fc::Fmkey_0 , "\0330" }, // M-0
|
||||||
|
{ fc::Fmkey_1 , "\0331" }, // M-1
|
||||||
|
{ fc::Fmkey_2 , "\0332" }, // M-2
|
||||||
|
{ fc::Fmkey_3 , "\0333" }, // M-3
|
||||||
|
{ fc::Fmkey_4 , "\0334" }, // M-4
|
||||||
|
{ fc::Fmkey_5 , "\0335" }, // M-5
|
||||||
|
{ fc::Fmkey_6 , "\0336" }, // M-6
|
||||||
|
{ fc::Fmkey_7 , "\0337" }, // M-7
|
||||||
|
{ fc::Fmkey_8 , "\0338" }, // M-8
|
||||||
|
{ fc::Fmkey_9 , "\0339" }, // M-9
|
||||||
|
{ fc::Fmkey_colon , "\033:" }, // M-:
|
||||||
|
{ fc::Fmkey_semicolon , "\033;" }, // M-;
|
||||||
|
{ fc::Fmkey_less_than , "\033<" }, // M-<
|
||||||
|
{ fc::Fmkey_equals , "\033=" }, // M-=
|
||||||
|
{ fc::Fmkey_greater_than , "\033>" }, // M->
|
||||||
|
{ fc::Fmkey_question_mark , "\033?" }, // M-?
|
||||||
|
{ fc::Fmkey_at , "\033@" }, // M-@
|
||||||
|
{ fc::Fmkey_A , "\033A" }, // M-A
|
||||||
|
{ fc::Fmkey_B , "\033B" }, // M-B
|
||||||
|
{ fc::Fmkey_C , "\033C" }, // M-C
|
||||||
|
{ fc::Fmkey_D , "\033D" }, // M-D
|
||||||
|
{ fc::Fmkey_E , "\033E" }, // M-E
|
||||||
|
{ fc::Fmkey_F , "\033F" }, // M-F
|
||||||
|
{ fc::Fmkey_G , "\033G" }, // M-G
|
||||||
|
{ fc::Fmkey_H , "\033H" }, // M-H
|
||||||
|
{ fc::Fmkey_I , "\033I" }, // M-I
|
||||||
|
{ fc::Fmkey_J , "\033J" }, // M-J
|
||||||
|
{ fc::Fmkey_K , "\033K" }, // M-K
|
||||||
|
{ fc::Fmkey_L , "\033L" }, // M-L
|
||||||
|
{ fc::Fmkey_M , "\033M" }, // M-M
|
||||||
|
{ fc::Fmkey_N , "\033N" }, // M-N
|
||||||
|
{ fc::Fmkey_O , "\033O" }, // M-O
|
||||||
|
{ fc::Fmkey_P , "\033P" }, // M-P
|
||||||
|
{ fc::Fmkey_Q , "\033Q" }, // M-Q
|
||||||
|
{ fc::Fmkey_R , "\033R" }, // M-R
|
||||||
|
{ fc::Fmkey_S , "\033S" }, // M-S
|
||||||
|
{ fc::Fmkey_T , "\033T" }, // M-T
|
||||||
|
{ fc::Fmkey_U , "\033U" }, // M-U
|
||||||
|
{ fc::Fmkey_V , "\033V" }, // M-V
|
||||||
|
{ fc::Fmkey_W , "\033W" }, // M-W
|
||||||
|
{ fc::Fmkey_X , "\033X" }, // M-X
|
||||||
|
{ fc::Fmkey_Y , "\033Y" }, // M-Y
|
||||||
|
{ fc::Fmkey_Z , "\033Z" }, // M-Z
|
||||||
|
{ fc::Fmkey_left_square_bracket , "\033[" }, // M-[
|
||||||
|
{ fc::Fmkey_backslash , "\033\\"}, // M-'\'
|
||||||
|
{ fc::Fmkey_right_square_bracket , "\033]" }, // M-]
|
||||||
|
{ fc::Fmkey_caret , "\033^" }, // M-^
|
||||||
|
{ fc::Fmkey_underscore , "\033_" }, // M-_
|
||||||
|
{ fc::Fmkey_grave_accent , "\033`" }, // M-`
|
||||||
|
{ fc::Fmkey_a , "\033a" }, // M-a
|
||||||
|
{ fc::Fmkey_b , "\033b" }, // M-b
|
||||||
|
{ fc::Fmkey_c , "\033c" }, // M-c
|
||||||
|
{ fc::Fmkey_d , "\033d" }, // M-d
|
||||||
|
{ fc::Fmkey_e , "\033e" }, // M-e
|
||||||
|
{ fc::Fmkey_f , "\033f" }, // M-f
|
||||||
|
{ fc::Fmkey_g , "\033g" }, // M-g
|
||||||
|
{ fc::Fmkey_h , "\033h" }, // M-h
|
||||||
|
{ fc::Fmkey_i , "\033i" }, // M-i
|
||||||
|
{ fc::Fmkey_j , "\033j" }, // M-j
|
||||||
|
{ fc::Fmkey_k , "\033k" }, // M-k
|
||||||
|
{ fc::Fmkey_l , "\033l" }, // M-l
|
||||||
|
{ fc::Fmkey_m , "\033m" }, // M-m
|
||||||
|
{ fc::Fmkey_n , "\033n" }, // M-n
|
||||||
|
{ fc::Fmkey_o , "\033o" }, // M-o
|
||||||
|
{ fc::Fmkey_p , "\033p" }, // M-p
|
||||||
|
{ fc::Fmkey_q , "\033q" }, // M-q
|
||||||
|
{ fc::Fmkey_r , "\033r" }, // M-r
|
||||||
|
{ fc::Fmkey_s , "\033s" }, // M-s
|
||||||
|
{ fc::Fmkey_t , "\033t" }, // M-t
|
||||||
|
{ fc::Fmkey_u , "\033u" }, // M-u
|
||||||
|
{ fc::Fmkey_v , "\033v" }, // M-v
|
||||||
|
{ fc::Fmkey_w , "\033w" }, // M-w
|
||||||
|
{ fc::Fmkey_x , "\033x" }, // M-x
|
||||||
|
{ fc::Fmkey_y , "\033y" }, // M-y
|
||||||
|
{ fc::Fmkey_z , "\033z" }, // M-z
|
||||||
|
{ fc::Fmkey_left_curly_bracket , "\033{" }, // M-{
|
||||||
|
{ fc::Fmkey_vertical_bar , "\033|" }, // M-|
|
||||||
|
{ fc::Fmkey_right_curly_bracket , "\033}" }, // M-}
|
||||||
|
{ fc::Fmkey_tilde , "\033~" }, // M-~
|
||||||
|
{ 0 , "\0" }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
char string[25];
|
||||||
|
}
|
||||||
|
keyname;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
static keyname FkeyName[] =
|
||||||
|
{
|
||||||
|
{ fc::Fkey_erase , "Backspace" },
|
||||||
|
{ fc::Fkey_tab , "Tab" },
|
||||||
|
{ fc::Fkey_return , "Return" },
|
||||||
|
{ fc::Fkey_escape , "Esc" },
|
||||||
|
{ fc::Fkey_space , "Space" },
|
||||||
|
{ fc::Fkey_backspace , "Backspace" },
|
||||||
|
{ fc::Fkey_catab , "Clear-All-Tabs" },
|
||||||
|
{ fc::Fkey_clear , "Clear-Screen" },
|
||||||
|
{ fc::Fkey_ctab , "Clear-Tab" },
|
||||||
|
{ fc::Fkey_dc , "Del" },
|
||||||
|
{ fc::Fkey_dl , "Del-line" },
|
||||||
|
{ fc::Fkey_down , "Down" },
|
||||||
|
{ fc::Fkey_eic , "Exit-Ins" },
|
||||||
|
{ fc::Fkey_eol , "Clear-End-of-Line" },
|
||||||
|
{ fc::Fkey_eos , "Clear-End-of-Screen" },
|
||||||
|
{ fc::Fkey_f0 , "F0" },
|
||||||
|
{ fc::Fkey_f1 , "F1" },
|
||||||
|
{ fc::Fkey_f2 , "F2" },
|
||||||
|
{ fc::Fkey_f3 , "F3" },
|
||||||
|
{ fc::Fkey_f4 , "F4" },
|
||||||
|
{ fc::Fkey_f5 , "F5" },
|
||||||
|
{ fc::Fkey_f6 , "F6" },
|
||||||
|
{ fc::Fkey_f7 , "F7" },
|
||||||
|
{ fc::Fkey_f8 , "F8" },
|
||||||
|
{ fc::Fkey_f9 , "F9" },
|
||||||
|
{ fc::Fkey_f10 , "F10" },
|
||||||
|
{ fc::Fkey_home , "Home" },
|
||||||
|
{ fc::Fkey_ic , "Ins" },
|
||||||
|
{ fc::Fkey_il , "Ins-Line" },
|
||||||
|
{ fc::Fkey_left , "Left" },
|
||||||
|
{ fc::Fkey_ll , "Lower-Left" },
|
||||||
|
{ fc::Fkey_npage , "PgDn" },
|
||||||
|
{ fc::Fkey_ppage , "PgUp" },
|
||||||
|
{ fc::Fkey_right , "Right" },
|
||||||
|
{ fc::Fkey_sf , "Scroll-Forward" },
|
||||||
|
{ fc::Fkey_sr , "Scroll-Backward" },
|
||||||
|
{ fc::Fkey_stab , "Set-Tab" },
|
||||||
|
{ fc::Fkey_up , "Up" },
|
||||||
|
{ fc::Fkey_a1 , "Upper-Left" },
|
||||||
|
{ fc::Fkey_a3 , "Upper-Right" },
|
||||||
|
{ fc::Fkey_b2 , "Center" },
|
||||||
|
{ fc::Fkey_c1 , "Lower-Left" },
|
||||||
|
{ fc::Fkey_c3 , "Lower-Right" },
|
||||||
|
{ fc::Fkey_btab , "Shift+Tab" },
|
||||||
|
{ fc::Fkey_beg , "Begin" },
|
||||||
|
{ fc::Fkey_cancel , "Cancel" },
|
||||||
|
{ fc::Fkey_close , "Close" },
|
||||||
|
{ fc::Fkey_command , "Command" },
|
||||||
|
{ fc::Fkey_copy , "Copy" },
|
||||||
|
{ fc::Fkey_create , "Create" },
|
||||||
|
{ fc::Fkey_end , "End" },
|
||||||
|
{ fc::Fkey_enter , "Enter" },
|
||||||
|
{ fc::Fkey_exit , "Exit" },
|
||||||
|
{ fc::Fkey_find , "Find" },
|
||||||
|
{ fc::Fkey_help , "Help" },
|
||||||
|
{ fc::Fkey_mark , "Mark" },
|
||||||
|
{ fc::Fkey_message , "Message" },
|
||||||
|
{ fc::Fkey_move , "Move" },
|
||||||
|
{ fc::Fkey_next , "Next" },
|
||||||
|
{ fc::Fkey_open , "Open" },
|
||||||
|
{ fc::Fkey_options , "Options" },
|
||||||
|
{ fc::Fkey_previous , "Previous" },
|
||||||
|
{ fc::Fkey_print , "Print" },
|
||||||
|
{ fc::Fkey_redo , "Redo" },
|
||||||
|
{ fc::Fkey_reference , "Reference" },
|
||||||
|
{ fc::Fkey_refresh , "Refresh" },
|
||||||
|
{ fc::Fkey_replace , "Replace" },
|
||||||
|
{ fc::Fkey_restart , "Restart" },
|
||||||
|
{ fc::Fkey_resume , "Resume" },
|
||||||
|
{ fc::Fkey_save , "Save" },
|
||||||
|
{ fc::Fkey_suspend , "Suspend" },
|
||||||
|
{ fc::Fkey_undo , "Undo" },
|
||||||
|
{ fc::Fkey_sbeg , "Shift+Begin" },
|
||||||
|
{ fc::Fkey_scancel , "Shift+Cancel" },
|
||||||
|
{ fc::Fkey_scommand , "Shift+Command" },
|
||||||
|
{ fc::Fkey_scopy , "Shift+Copy" },
|
||||||
|
{ fc::Fkey_screate , "Shift+Create" },
|
||||||
|
{ fc::Fkey_sdc , "Shift+Del" },
|
||||||
|
{ fc::Fkey_sdl , "Shift+Del-line" },
|
||||||
|
{ fc::Fkey_select , "Select" },
|
||||||
|
{ fc::Fkey_send , "Shift+End" },
|
||||||
|
{ fc::Fkey_seol , "Shift+Clear-End-of-Line" },
|
||||||
|
{ fc::Fkey_sexit , "Shift+Exit" },
|
||||||
|
{ fc::Fkey_sfind , "Shift+Find" },
|
||||||
|
{ fc::Fkey_shelp , "Shift+Help" },
|
||||||
|
{ fc::Fkey_shome , "Shift+Home" },
|
||||||
|
{ fc::Fkey_sic , "Shift+Ins" },
|
||||||
|
{ fc::Fkey_sleft , "Shift+Left" },
|
||||||
|
{ fc::Fkey_smessage , "Shift+Message" },
|
||||||
|
{ fc::Fkey_smove , "Shift+Move" },
|
||||||
|
{ fc::Fkey_snext , "Shift+Next" },
|
||||||
|
{ fc::Fkey_soptions , "Shift+Options" },
|
||||||
|
{ fc::Fkey_sprevious , "Shift+Previous" },
|
||||||
|
{ fc::Fkey_sprint , "Shift+Print" },
|
||||||
|
{ fc::Fkey_sredo , "Shift+Redo" },
|
||||||
|
{ fc::Fkey_sreplace , "Shift+Replace" },
|
||||||
|
{ fc::Fkey_sright , "Shift+Right" },
|
||||||
|
{ fc::Fkey_srsume , "Shift+Resume" },
|
||||||
|
{ fc::Fkey_ssave , "Shift+Save" },
|
||||||
|
{ fc::Fkey_ssuspend , "Shift+Suspend" },
|
||||||
|
{ fc::Fkey_sundo , "Shift+Undo" },
|
||||||
|
{ fc::Fkey_f11 , "F11" },
|
||||||
|
{ fc::Fkey_f12 , "F12" },
|
||||||
|
{ fc::Fkey_f13 , "Shift+F1" },
|
||||||
|
{ fc::Fkey_f14 , "Shift+F2" },
|
||||||
|
{ fc::Fkey_f15 , "Shift+F3" },
|
||||||
|
{ fc::Fkey_f16 , "Shift+F4" },
|
||||||
|
{ fc::Fkey_f17 , "Shift+F5" },
|
||||||
|
{ fc::Fkey_f18 , "Shift+F6" },
|
||||||
|
{ fc::Fkey_f19 , "Shift+F7" },
|
||||||
|
{ fc::Fkey_f20 , "Shift+F8" },
|
||||||
|
{ fc::Fkey_f21 , "Shift+F9" },
|
||||||
|
{ fc::Fkey_f22 , "Shift+F10" },
|
||||||
|
{ fc::Fkey_f23 , "Shift+F11" },
|
||||||
|
{ fc::Fkey_f24 , "Shift+F12" },
|
||||||
|
{ fc::Fkey_f25 , "Ctrl+F1" },
|
||||||
|
{ fc::Fkey_f26 , "Ctrl+F2" },
|
||||||
|
{ fc::Fkey_f27 , "Ctrl+F3" },
|
||||||
|
{ fc::Fkey_f28 , "Ctrl+F4" },
|
||||||
|
{ fc::Fkey_f29 , "Ctrl+F5" },
|
||||||
|
{ fc::Fkey_f30 , "Ctrl+F6" },
|
||||||
|
{ fc::Fkey_f31 , "Ctrl+F7" },
|
||||||
|
{ fc::Fkey_f32 , "Ctrl+F8" },
|
||||||
|
{ fc::Fkey_f33 , "Ctrl+F9" },
|
||||||
|
{ fc::Fkey_f34 , "Ctrl+F10" },
|
||||||
|
{ fc::Fkey_f35 , "Ctrl+F11" },
|
||||||
|
{ fc::Fkey_f36 , "Ctrl+F12" },
|
||||||
|
{ fc::Fkey_f37 , "Shift+Ctrl+F1" },
|
||||||
|
{ fc::Fkey_f38 , "Shift+Ctrl+F2" },
|
||||||
|
{ fc::Fkey_f39 , "Shift+Ctrl+F3" },
|
||||||
|
{ fc::Fkey_f40 , "Shift+Ctrl+F4" },
|
||||||
|
{ fc::Fkey_f41 , "Shift+Ctrl+F5" },
|
||||||
|
{ fc::Fkey_f42 , "Shift+Ctrl+F6" },
|
||||||
|
{ fc::Fkey_f43 , "Shift+Ctrl+F7" },
|
||||||
|
{ fc::Fkey_f44 , "Shift+Ctrl+F8" },
|
||||||
|
{ fc::Fkey_f45 , "Shift+Ctrl+F9" },
|
||||||
|
{ fc::Fkey_f46 , "Shift+Ctrl+F10" },
|
||||||
|
{ fc::Fkey_f47 , "Shift+Ctrl+F11" },
|
||||||
|
{ fc::Fkey_f48 , "Shift+Ctrl+F12" },
|
||||||
|
{ fc::Fkey_f49 , "Meta+F1" },
|
||||||
|
{ fc::Fkey_f50 , "Meta+F2" },
|
||||||
|
{ fc::Fkey_f51 , "Meta+F3" },
|
||||||
|
{ fc::Fkey_f52 , "Meta+F4" },
|
||||||
|
{ fc::Fkey_f53 , "Meta+F5" },
|
||||||
|
{ fc::Fkey_f54 , "Meta+F6" },
|
||||||
|
{ fc::Fkey_f55 , "Meta+F7" },
|
||||||
|
{ fc::Fkey_f56 , "Meta+F8" },
|
||||||
|
{ fc::Fkey_f57 , "Meta+F9" },
|
||||||
|
{ fc::Fkey_f58 , "Meta+F10" },
|
||||||
|
{ fc::Fkey_f59 , "Meta+F11" },
|
||||||
|
{ fc::Fkey_f60 , "Meta+F12" },
|
||||||
|
{ fc::Fkey_f61 , "Shift+Meta+F1" },
|
||||||
|
{ fc::Fkey_f62 , "Shift+Meta+F2" },
|
||||||
|
{ fc::Fkey_f63 , "Shift+Meta+F3" },
|
||||||
|
{ fc::Fmkey_ic , "Meta+Ins" },
|
||||||
|
{ fc::Fmkey_dc , "Meta+Del" },
|
||||||
|
{ fc::Fmkey_home , "Meta+Home" },
|
||||||
|
{ fc::Fmkey_end , "Meta+End" },
|
||||||
|
{ fc::Fmkey_ppage , "Meta+PgUp" },
|
||||||
|
{ fc::Fmkey_npage , "Meta+PgDn" },
|
||||||
|
{ fc::Fmkey_f1 , "Meta+F1" },
|
||||||
|
{ fc::Fmkey_f2 , "Meta+F2" },
|
||||||
|
{ fc::Fmkey_f3 , "Meta+F3" },
|
||||||
|
{ fc::Fmkey_f4 , "Meta+F4" },
|
||||||
|
{ fc::Fmkey_f5 , "Meta+F5" },
|
||||||
|
{ fc::Fmkey_f6 , "Meta+F6" },
|
||||||
|
{ fc::Fmkey_f7 , "Meta+F7" },
|
||||||
|
{ fc::Fmkey_f8 , "Meta+F8" },
|
||||||
|
{ fc::Fmkey_f9 , "Meta+F9" },
|
||||||
|
{ fc::Fmkey_f10 , "Meta+F10" },
|
||||||
|
{ fc::Fmkey_f11 , "Meta+F11" },
|
||||||
|
{ fc::Fmkey_f12 , "Meta+F12" },
|
||||||
|
{ fc::Fmkey_up , "Meta+Up" },
|
||||||
|
{ fc::Fmkey_down , "Meta+Down" },
|
||||||
|
{ fc::Fmkey_right , "Meta+Right" },
|
||||||
|
{ fc::Fmkey_left , "Meta+Left" },
|
||||||
|
{ fc::Fmkey_sic , "Shift+Meta+Ins" },
|
||||||
|
{ fc::Fmkey_sdc , "Shift+Meta+Del" },
|
||||||
|
{ fc::Fmkey_shome , "Shift+Meta+Home" },
|
||||||
|
{ fc::Fmkey_send , "Shift+Meta+End" },
|
||||||
|
{ fc::Fmkey_sppage , "Shift+Meta+PgUp" },
|
||||||
|
{ fc::Fmkey_snpage , "Shift+Meta+PgDn" },
|
||||||
|
{ fc::Fmkey_sf1 , "Shift+Meta+F1" },
|
||||||
|
{ fc::Fmkey_sf2 , "Shift+Meta+F2" },
|
||||||
|
{ fc::Fmkey_sf3 , "Shift+Meta+F3" },
|
||||||
|
{ fc::Fmkey_sf4 , "Shift+Meta+F4" },
|
||||||
|
{ fc::Fmkey_sf5 , "Shift+Meta+F5" },
|
||||||
|
{ fc::Fmkey_sf6 , "Shift+Meta+F6" },
|
||||||
|
{ fc::Fmkey_sf7 , "Shift+Meta+F7" },
|
||||||
|
{ fc::Fmkey_sf8 , "Shift+Meta+F8" },
|
||||||
|
{ fc::Fmkey_sf9 , "Shift+Meta+F9" },
|
||||||
|
{ fc::Fmkey_sf10 , "Shift+Meta+F10" },
|
||||||
|
{ fc::Fmkey_sf11 , "Shift+Meta+F11" },
|
||||||
|
{ fc::Fmkey_sf12 , "Shift+Meta+F12" },
|
||||||
|
{ fc::Fmkey_sup , "Shift+Meta+Up" },
|
||||||
|
{ fc::Fmkey_sdown , "Shift+Meta+Down" },
|
||||||
|
{ fc::Fmkey_sright , "Shift+Meta+Right" },
|
||||||
|
{ fc::Fmkey_sleft , "Shift+Meta+Left" },
|
||||||
|
{ fc::Fckey_ic , "Ctrl+Ins" },
|
||||||
|
{ fc::Fckey_dc , "Ctrl+Del" },
|
||||||
|
{ fc::Fckey_home , "Ctrl+Home" },
|
||||||
|
{ fc::Fckey_end , "Ctrl+End" },
|
||||||
|
{ fc::Fckey_ppage , "Ctrl+PgUp" },
|
||||||
|
{ fc::Fckey_npage , "Ctrl+PgDn" },
|
||||||
|
{ fc::Fckey_up , "Ctrl+Up" },
|
||||||
|
{ fc::Fckey_down , "Ctrl+Down" },
|
||||||
|
{ fc::Fckey_right , "Ctrl+Right" },
|
||||||
|
{ fc::Fckey_left , "Ctrl+Left" },
|
||||||
|
{ fc::Fckey_sic , "Ctrl+Ins" },
|
||||||
|
{ fc::Fckey_sdc , "Ctrl+Del" },
|
||||||
|
{ fc::Fckey_shome , "Ctrl+Home" },
|
||||||
|
{ fc::Fckey_send , "Ctrl+End" },
|
||||||
|
{ fc::Fckey_sppage , "Shift+Ctrl+PgUp" },
|
||||||
|
{ fc::Fckey_snpage , "Shift+Ctrl+PgDn" },
|
||||||
|
{ fc::Fckey_sup , "Shift+Ctrl+Up" },
|
||||||
|
{ fc::Fckey_sdown , "Shift+Ctrl+Down" },
|
||||||
|
{ fc::Fckey_sright , "Shift+Ctrl+Right" },
|
||||||
|
{ fc::Fckey_sleft , "Shift+Ctrl+Left" },
|
||||||
|
{ fc::Fcmkey_ic , "Ctrl+Meta+Ins" },
|
||||||
|
{ fc::Fcmkey_dc , "Ctrl+Meta+Del" },
|
||||||
|
{ fc::Fcmkey_home , "Ctrl+Meta+Home" },
|
||||||
|
{ fc::Fcmkey_end , "Ctrl+Meta+End" },
|
||||||
|
{ fc::Fcmkey_ppage , "Ctrl+Meta+PgUp" },
|
||||||
|
{ fc::Fcmkey_npage , "Ctrl+Meta+PgDn" },
|
||||||
|
{ fc::Fcmkey_up , "Ctrl+Meta+Up" },
|
||||||
|
{ fc::Fcmkey_down , "Ctrl+Meta+Down" },
|
||||||
|
{ fc::Fcmkey_right , "Ctrl+Meta+Right" },
|
||||||
|
{ fc::Fcmkey_left , "Ctrl+Meta+Left" },
|
||||||
|
{ fc::Fcmkey_sic , "Shift+Ctrl+Meta+Ins" },
|
||||||
|
{ fc::Fcmkey_sdc , "Shift+Ctrl+Meta+Del" },
|
||||||
|
{ fc::Fcmkey_shome , "Shift+Ctrl+Meta+Home" },
|
||||||
|
{ fc::Fcmkey_send , "Shift+Ctrl+Meta+End" },
|
||||||
|
{ fc::Fcmkey_sppage , "Shift+Ctrl+Meta+PgUp" },
|
||||||
|
{ fc::Fcmkey_snpage , "Shift+Ctrl+Meta+PgDn" },
|
||||||
|
{ fc::Fcmkey_sf1 , "Shift+Ctrl+Meta+F1" },
|
||||||
|
{ fc::Fcmkey_sf2 , "Shift+Ctrl+Meta+F2" },
|
||||||
|
{ fc::Fcmkey_sf3 , "Shift+Ctrl+Meta+F3" },
|
||||||
|
{ fc::Fcmkey_sf4 , "Shift+Ctrl+Meta+F4" },
|
||||||
|
{ fc::Fcmkey_sf5 , "Shift+Ctrl+Meta+F5" },
|
||||||
|
{ fc::Fcmkey_sf6 , "Shift+Ctrl+Meta+F6" },
|
||||||
|
{ fc::Fcmkey_sf7 , "Shift+Ctrl+Meta+F7" },
|
||||||
|
{ fc::Fcmkey_sf8 , "Shift+Ctrl+Meta+F8" },
|
||||||
|
{ fc::Fcmkey_sf9 , "Shift+Ctrl+Meta+F9" },
|
||||||
|
{ fc::Fcmkey_sf10 , "Shift+Ctrl+Meta+F10" },
|
||||||
|
{ fc::Fcmkey_sf11 , "Shift+Ctrl+Meta+F11" },
|
||||||
|
{ fc::Fcmkey_sf12 , "Shift+Ctrl+Meta+F12" },
|
||||||
|
{ fc::Fcmkey_sup , "Shift+Ctrl+Meta+Up" },
|
||||||
|
{ fc::Fcmkey_sdown , "Shift+Ctrl+Meta+Down" },
|
||||||
|
{ fc::Fcmkey_sright , "Shift+Ctrl+Meta+Right" },
|
||||||
|
{ fc::Fcmkey_sleft , "Shift+Ctrl+Meta+Left" },
|
||||||
|
{ fc::Fmkey_space , "Meta+Space" },
|
||||||
|
{ fc::Fmkey_bang , "Meta+!" },
|
||||||
|
{ fc::Fmkey_quotes , "Meta+\"" },
|
||||||
|
{ fc::Fmkey_hash , "Meta+#" },
|
||||||
|
{ fc::Fmkey_dollar , "Meta+$" },
|
||||||
|
{ fc::Fmkey_percent , "Meta+%" },
|
||||||
|
{ fc::Fmkey_ampersand , "Meta+&" },
|
||||||
|
{ fc::Fmkey_apostrophe , "Meta+'" },
|
||||||
|
{ fc::Fmkey_left_parenthesis , "Meta+(" },
|
||||||
|
{ fc::Fmkey_right_parenthesis , "Meta+)" },
|
||||||
|
{ fc::Fmkey_asterisk , "Meta+*" },
|
||||||
|
{ fc::Fmkey_plus , "Meta++" },
|
||||||
|
{ fc::Fmkey_comma , "Meta+," },
|
||||||
|
{ fc::Fmkey_minus , "Meta+-" },
|
||||||
|
{ fc::Fmkey_full_stop , "Meta+." },
|
||||||
|
{ fc::Fmkey_slash , "Meta+/" },
|
||||||
|
{ fc::Fmkey_0 , "Meta+0" },
|
||||||
|
{ fc::Fmkey_1 , "Meta+1" },
|
||||||
|
{ fc::Fmkey_2 , "Meta+2" },
|
||||||
|
{ fc::Fmkey_3 , "Meta+3" },
|
||||||
|
{ fc::Fmkey_4 , "Meta+4" },
|
||||||
|
{ fc::Fmkey_5 , "Meta+5" },
|
||||||
|
{ fc::Fmkey_6 , "Meta+6" },
|
||||||
|
{ fc::Fmkey_7 , "Meta+7" },
|
||||||
|
{ fc::Fmkey_8 , "Meta+8" },
|
||||||
|
{ fc::Fmkey_9 , "Meta+9" },
|
||||||
|
{ fc::Fmkey_colon , "Meta+:" },
|
||||||
|
{ fc::Fmkey_semicolon , "Meta+;" },
|
||||||
|
{ fc::Fmkey_less_than , "Meta+<" },
|
||||||
|
{ fc::Fmkey_equals , "Meta+=" },
|
||||||
|
{ fc::Fmkey_greater_than , "Meta+>" },
|
||||||
|
{ fc::Fmkey_question_mark , "Meta+?" },
|
||||||
|
{ fc::Fmkey_at , "Meta+@" },
|
||||||
|
{ fc::Fmkey_A , "Shift+Meta+A" },
|
||||||
|
{ fc::Fmkey_B , "Shift+Meta+B" },
|
||||||
|
{ fc::Fmkey_C , "Shift+Meta+C" },
|
||||||
|
{ fc::Fmkey_D , "Shift+Meta+D" },
|
||||||
|
{ fc::Fmkey_E , "Shift+Meta+E" },
|
||||||
|
{ fc::Fmkey_F , "Shift+Meta+F" },
|
||||||
|
{ fc::Fmkey_G , "Shift+Meta+G" },
|
||||||
|
{ fc::Fmkey_H , "Shift+Meta+H" },
|
||||||
|
{ fc::Fmkey_I , "Shift+Meta+I" },
|
||||||
|
{ fc::Fmkey_J , "Shift+Meta+J" },
|
||||||
|
{ fc::Fmkey_K , "Shift+Meta+K" },
|
||||||
|
{ fc::Fmkey_L , "Shift+Meta+L" },
|
||||||
|
{ fc::Fmkey_M , "Shift+Meta+M" },
|
||||||
|
{ fc::Fmkey_N , "Shift+Meta+N" },
|
||||||
|
{ fc::Fmkey_O , "Shift+Meta+O" },
|
||||||
|
{ fc::Fmkey_P , "Shift+Meta+P" },
|
||||||
|
{ fc::Fmkey_Q , "Shift+Meta+Q" },
|
||||||
|
{ fc::Fmkey_R , "Shift+Meta+R" },
|
||||||
|
{ fc::Fmkey_S , "Shift+Meta+S" },
|
||||||
|
{ fc::Fmkey_T , "Shift+Meta+T" },
|
||||||
|
{ fc::Fmkey_U , "Shift+Meta+U" },
|
||||||
|
{ fc::Fmkey_V , "Shift+Meta+V" },
|
||||||
|
{ fc::Fmkey_W , "Shift+Meta+W" },
|
||||||
|
{ fc::Fmkey_X , "Shift+Meta+X" },
|
||||||
|
{ fc::Fmkey_Y , "Shift+Meta+Y" },
|
||||||
|
{ fc::Fmkey_Z , "Shift+Meta+Z" },
|
||||||
|
{ fc::Fmkey_left_square_bracket , "Meta+[" },
|
||||||
|
{ fc::Fmkey_backslash , "Meta+\\" },
|
||||||
|
{ fc::Fmkey_right_square_bracket, "Meta+]" },
|
||||||
|
{ fc::Fmkey_caret , "Meta+^" },
|
||||||
|
{ fc::Fmkey_underscore , "Meta+_" },
|
||||||
|
{ fc::Fmkey_grave_accent , "Meta+`" },
|
||||||
|
{ fc::Fmkey_a , "Meta+A" },
|
||||||
|
{ fc::Fmkey_b , "Meta+B" },
|
||||||
|
{ fc::Fmkey_c , "Meta+C" },
|
||||||
|
{ fc::Fmkey_d , "Meta+D" },
|
||||||
|
{ fc::Fmkey_e , "Meta+E" },
|
||||||
|
{ fc::Fmkey_f , "Meta+F" },
|
||||||
|
{ fc::Fmkey_g , "Meta+G" },
|
||||||
|
{ fc::Fmkey_h , "Meta+H" },
|
||||||
|
{ fc::Fmkey_i , "Meta+I" },
|
||||||
|
{ fc::Fmkey_j , "Meta+J" },
|
||||||
|
{ fc::Fmkey_k , "Meta+K" },
|
||||||
|
{ fc::Fmkey_l , "Meta+L" },
|
||||||
|
{ fc::Fmkey_m , "Meta+M" },
|
||||||
|
{ fc::Fmkey_n , "Meta+N" },
|
||||||
|
{ fc::Fmkey_o , "Meta+O" },
|
||||||
|
{ fc::Fmkey_p , "Meta+P" },
|
||||||
|
{ fc::Fmkey_q , "Meta+Q" },
|
||||||
|
{ fc::Fmkey_r , "Meta+R" },
|
||||||
|
{ fc::Fmkey_s , "Meta+S" },
|
||||||
|
{ fc::Fmkey_t , "Meta+T" },
|
||||||
|
{ fc::Fmkey_u , "Meta+U" },
|
||||||
|
{ fc::Fmkey_v , "Meta+V" },
|
||||||
|
{ fc::Fmkey_w , "Meta+W" },
|
||||||
|
{ fc::Fmkey_x , "Meta+X" },
|
||||||
|
{ fc::Fmkey_y , "Meta+Y" },
|
||||||
|
{ fc::Fmkey_z , "Meta+Z" },
|
||||||
|
{ fc::Fmkey_left_curly_bracket , "Meta+{" },
|
||||||
|
{ fc::Fmkey_vertical_bar , "Meta+|" },
|
||||||
|
{ fc::Fmkey_right_curly_bracket , "Meta+}" },
|
||||||
|
{ fc::Fmkey_tilde , "Meta+~" },
|
||||||
|
{ 0 , "\0" }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _FKEYMAP_H
|
|
@ -0,0 +1,369 @@
|
||||||
|
// flabel.cpp
|
||||||
|
// class FLabel
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "flabel.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FLabel
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructors and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLabel::FLabel(FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLabel::FLabel (const FString& txt, FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
setText(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLabel::~FLabel() // destructor
|
||||||
|
{
|
||||||
|
delAccelerator (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private methods of FLabel
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::init()
|
||||||
|
{
|
||||||
|
flags = 0;
|
||||||
|
emphasis = 0;
|
||||||
|
xoffset = 0;
|
||||||
|
alignment = fc::alignLeft;
|
||||||
|
this->text = "";
|
||||||
|
accel_widget = 0;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
|
||||||
|
unsetFocusable();
|
||||||
|
|
||||||
|
foregroundColor = parentWidget()->getForegroundColor();
|
||||||
|
backgroundColor = parentWidget()->getBackgroundColor();
|
||||||
|
emphasis_color = wc.label_emphasis_fg;
|
||||||
|
ellipsis_color = wc.label_ellipsis_fg;
|
||||||
|
reverse_mode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
uChar FLabel::getHotkey()
|
||||||
|
{
|
||||||
|
uInt length;
|
||||||
|
|
||||||
|
if ( text.isEmpty() )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
length = text.getLength();
|
||||||
|
|
||||||
|
for (uInt i=0; i < length; i++)
|
||||||
|
if ( (i+1 < length) && (text[i] == '&') )
|
||||||
|
return uChar(text[++i]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::setHotkeyAccelerator()
|
||||||
|
{
|
||||||
|
int hotkey = getHotkey();
|
||||||
|
if ( hotkey )
|
||||||
|
{
|
||||||
|
if ( isalpha(hotkey) || isdigit(hotkey) )
|
||||||
|
{
|
||||||
|
addAccelerator (tolower(hotkey), this);
|
||||||
|
addAccelerator (toupper(hotkey), this);
|
||||||
|
// Meta + hotkey
|
||||||
|
addAccelerator (0x20000e0 + tolower(hotkey), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
addAccelerator (getHotkey(), this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delAccelerator(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::draw()
|
||||||
|
{
|
||||||
|
register wchar_t* src;
|
||||||
|
register wchar_t* dest;
|
||||||
|
wchar_t* LabelText;
|
||||||
|
FString txt;
|
||||||
|
uInt length;
|
||||||
|
int hotkeypos, to_char;
|
||||||
|
bool isActive, isNoUnderline;
|
||||||
|
|
||||||
|
if ( text.isNull() || text.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( Encoding == fc::VT100 )
|
||||||
|
unsetVT100altChar();
|
||||||
|
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
if ( hasEmphasis() )
|
||||||
|
setColor (emphasis_color, backgroundColor);
|
||||||
|
else
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
|
||||||
|
length = text.getLength();
|
||||||
|
hotkeypos = -1;
|
||||||
|
LabelText = new wchar_t[length+1];
|
||||||
|
txt = this->text;
|
||||||
|
src = const_cast<wchar_t*>(txt.wc_str());
|
||||||
|
dest = const_cast<wchar_t*>(LabelText);
|
||||||
|
|
||||||
|
isActive = ((flags & ACTIVE) != 0);
|
||||||
|
isNoUnderline = ((flags & NO_UNDERLINE) != 0);
|
||||||
|
|
||||||
|
// find hotkey position in string
|
||||||
|
// + generate a new string without the '&'-sign
|
||||||
|
for (uInt i=0; i < length; i++)
|
||||||
|
{
|
||||||
|
if ( (i < length) && (txt[i] == '&') && (hotkeypos == -1) )
|
||||||
|
{
|
||||||
|
hotkeypos = int(i);
|
||||||
|
i++;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
*dest++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( hotkeypos != -1 )
|
||||||
|
length--;
|
||||||
|
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1);
|
||||||
|
|
||||||
|
for (int x=0; x < xoffset; x++)
|
||||||
|
print (' ');
|
||||||
|
|
||||||
|
if ( length <= uInt(width) )
|
||||||
|
to_char = int(length);
|
||||||
|
else
|
||||||
|
to_char = width - 2;
|
||||||
|
|
||||||
|
if ( hasReverseMode() )
|
||||||
|
setReverse(true);
|
||||||
|
|
||||||
|
for (int z=0; z < to_char; z++)
|
||||||
|
{
|
||||||
|
if ( (z == hotkeypos) && isActive )
|
||||||
|
{
|
||||||
|
setColor (wc.label_hotkey_fg, wc.label_hotkey_bg);
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
setUnderline();
|
||||||
|
print ( LabelText[z] );
|
||||||
|
if ( ! isNoUnderline )
|
||||||
|
unsetUnderline();
|
||||||
|
if ( hasEmphasis() )
|
||||||
|
setColor (emphasis_color, backgroundColor);
|
||||||
|
else
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
print ( LabelText[z] );
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int x=to_char+2; x < width; x++)
|
||||||
|
print (' ');
|
||||||
|
|
||||||
|
if ( length > uInt(width) )
|
||||||
|
{
|
||||||
|
setColor (ellipsis_color, backgroundColor);
|
||||||
|
print ("..");
|
||||||
|
}
|
||||||
|
if ( hasReverseMode() )
|
||||||
|
setReverse(false);
|
||||||
|
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
delete[] LabelText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public methods of FLabel
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::hide()
|
||||||
|
{
|
||||||
|
int fg, bg;
|
||||||
|
char* blank;
|
||||||
|
|
||||||
|
FWidget::hide();
|
||||||
|
|
||||||
|
fg = parentWidget()->getForegroundColor();
|
||||||
|
bg = parentWidget()->getBackgroundColor();
|
||||||
|
setColor (fg, bg);
|
||||||
|
|
||||||
|
blank = new char[width+1];
|
||||||
|
memset(blank, ' ', uLong(width));
|
||||||
|
blank[width] = '\0';
|
||||||
|
print (blank);
|
||||||
|
delete[] blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::onMouseDown (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! isEnabled() || ! accel_widget )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! accel_widget->hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = getFocusWidget();
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
accel_widget->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
accel_widget->redraw();
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
accel_widget->statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::onAccel (FAccelEvent* event)
|
||||||
|
{
|
||||||
|
if ( ! isEnabled() || ! accel_widget )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! accel_widget->hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = static_cast<FWidget*>(event->focusedWidget());
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
accel_widget->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
accel_widget->redraw();
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
accel_widget->statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::cb_accel_widget_destroyed (FWidget*, void*)
|
||||||
|
{
|
||||||
|
accel_widget = 0;
|
||||||
|
delAccelerator (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::setAccelWidget (FWidget* widget)
|
||||||
|
{
|
||||||
|
if ( widget )
|
||||||
|
accel_widget = widget;
|
||||||
|
|
||||||
|
accel_widget->addCallback
|
||||||
|
(
|
||||||
|
"destroy",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FLabel::cb_accel_widget_destroyed),
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::setAlignment (uInt align)
|
||||||
|
{
|
||||||
|
int text_length;
|
||||||
|
|
||||||
|
if ( align != fc::alignLeft
|
||||||
|
&& align != fc::alignCenter
|
||||||
|
&& align != fc::alignRight )
|
||||||
|
alignment = fc::alignLeft;
|
||||||
|
else
|
||||||
|
alignment = align;
|
||||||
|
|
||||||
|
text_length = int(text.getLength());
|
||||||
|
|
||||||
|
if ( getHotkey() )
|
||||||
|
text_length--;
|
||||||
|
|
||||||
|
if ( text_length > width )
|
||||||
|
text_length = width;
|
||||||
|
|
||||||
|
switch ( alignment )
|
||||||
|
{ // convert type to msg string
|
||||||
|
case fc::alignLeft:
|
||||||
|
xoffset = 0;
|
||||||
|
break;
|
||||||
|
case fc::alignCenter:
|
||||||
|
xoffset = int((width - text_length) / 2);
|
||||||
|
break;
|
||||||
|
case fc::alignRight:
|
||||||
|
xoffset = width - text_length;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLabel::setEmphasis (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->emphasis |= EMPHASIS;
|
||||||
|
else
|
||||||
|
this->emphasis &= ~EMPHASIS;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLabel::setReverseMode (bool on)
|
||||||
|
{
|
||||||
|
if ( reverse_mode != on )
|
||||||
|
reverse_mode = on;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLabel::setEnable (bool on)
|
||||||
|
{
|
||||||
|
FWidget::setEnable(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~ACTIVE;
|
||||||
|
delAccelerator (this);
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::setNumber (long num)
|
||||||
|
{
|
||||||
|
setText(FString().setNumber(num));
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLabel::setText (const FString& txt)
|
||||||
|
{
|
||||||
|
this->text = txt;
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
delAccelerator (this);
|
||||||
|
setHotkeyAccelerator();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
// flabel.h
|
||||||
|
// class FLabel
|
||||||
|
|
||||||
|
#ifndef _FLABEL_H
|
||||||
|
#define _FLABEL_H
|
||||||
|
|
||||||
|
#include "fwidget.h"
|
||||||
|
|
||||||
|
#define NO_EMPHASIS 0x00000000
|
||||||
|
#define EMPHASIS 0x00000001
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FLabel
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FLabel : public FWidget
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
int emphasis;
|
||||||
|
int xoffset;
|
||||||
|
uInt alignment;
|
||||||
|
uChar emphasis_color;
|
||||||
|
uChar ellipsis_color;
|
||||||
|
bool reverse_mode;
|
||||||
|
FWidget* accel_widget;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FLabel (const FLabel&);
|
||||||
|
FLabel& operator = (const FLabel&);
|
||||||
|
|
||||||
|
void init();
|
||||||
|
uChar getHotkey();
|
||||||
|
void setHotkeyAccelerator();
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FLabel (FWidget* parent=0); // constructor
|
||||||
|
FLabel (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FLabel(); // destructor
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void hide();
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onAccel (FAccelEvent*);
|
||||||
|
void cb_accel_widget_destroyed (FWidget*, void*);
|
||||||
|
void setAccelWidget (FWidget* widget=0);
|
||||||
|
FTerm* getAccelWidget();
|
||||||
|
void setAlignment(uInt);
|
||||||
|
uInt getAlignment();
|
||||||
|
bool setEmphasis(bool);
|
||||||
|
bool setEmphasis();
|
||||||
|
bool unsetEmphasis();
|
||||||
|
bool hasEmphasis();
|
||||||
|
bool setReverseMode(bool);
|
||||||
|
bool setReverseMode();
|
||||||
|
bool unsetReverseMode();
|
||||||
|
bool hasReverseMode();
|
||||||
|
bool setEnable (bool);
|
||||||
|
void setNumber(long);
|
||||||
|
void setText (const FString&);
|
||||||
|
FString& getText();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FLabel inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FLabel::getClassName() const
|
||||||
|
{ return "FLabel"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FTerm* FLabel::getAccelWidget ()
|
||||||
|
{ return accel_widget; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline uInt FLabel::getAlignment()
|
||||||
|
{ return alignment; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::setEmphasis()
|
||||||
|
{ return setEmphasis(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::unsetEmphasis()
|
||||||
|
{ return setEmphasis(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::hasEmphasis()
|
||||||
|
{ return ((emphasis & EMPHASIS) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::setReverseMode()
|
||||||
|
{ return setReverseMode(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::unsetReverseMode()
|
||||||
|
{ return setReverseMode(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLabel::hasReverseMode()
|
||||||
|
{ return reverse_mode; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString& FLabel::getText()
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
#endif // _FLABEL_H
|
|
@ -0,0 +1,767 @@
|
||||||
|
// flineedit.cpp
|
||||||
|
// class FLineEdit
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "flineedit.h"
|
||||||
|
#include "fstatusbar.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FLineEdit
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructor and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLineEdit::FLineEdit(FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLineEdit::FLineEdit (const FString& txt, FWidget* parent) : FWidget(parent)
|
||||||
|
{
|
||||||
|
this->init();
|
||||||
|
setText(txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FLineEdit::~FLineEdit() // destructor
|
||||||
|
{
|
||||||
|
if ( ! insert_mode )
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
setKDECursor(fc::UnderlineCursor);
|
||||||
|
setConsoleCursor(fc::underscore_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:ffff/ffff/ffff");
|
||||||
|
}
|
||||||
|
if ( hasFocus() )
|
||||||
|
hideCursor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// private methods of FLineEdit
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::init()
|
||||||
|
{
|
||||||
|
flags = 0;
|
||||||
|
scrollTimer = false;
|
||||||
|
scrollRepeat = 100;
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
insert_mode = true;
|
||||||
|
cursor_pos = 0;
|
||||||
|
offset = 0;
|
||||||
|
this->text = "";
|
||||||
|
this->label_text = "";
|
||||||
|
this->label = new FLabel(label_text, parentWidget());
|
||||||
|
label->setAccelWidget(this);
|
||||||
|
label_orientation = FLineEdit::label_left;
|
||||||
|
setVisibleCursor();
|
||||||
|
|
||||||
|
if ( hasFocus() )
|
||||||
|
this->flags |= FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
|
||||||
|
if ( hasFocus() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_focus_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_focus_bg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // inactive
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_inactive_fg;
|
||||||
|
backgroundColor = wc.inputfield_inactive_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLineEdit::hasHotkey()
|
||||||
|
{
|
||||||
|
if ( label_text.isEmpty() )
|
||||||
|
return 0;
|
||||||
|
return label_text.includes('&');
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::draw()
|
||||||
|
{
|
||||||
|
bool isFocus;
|
||||||
|
|
||||||
|
if ( Encoding == fc::VT100 )
|
||||||
|
unsetVT100altChar();
|
||||||
|
|
||||||
|
drawInputField();
|
||||||
|
|
||||||
|
isFocus = ((flags & FOCUS) != 0);
|
||||||
|
if ( isFocus && statusBar() )
|
||||||
|
{
|
||||||
|
FString msg = getStatusbarMessage();
|
||||||
|
FString curMsg = statusBar()->getMessage();
|
||||||
|
if ( curMsg != msg )
|
||||||
|
{
|
||||||
|
statusBar()->setMessage(msg);
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::drawInputField()
|
||||||
|
{
|
||||||
|
bool isActiveFocus, isActive, isShadow;
|
||||||
|
int x;
|
||||||
|
FString show_text;
|
||||||
|
isActiveFocus = (flags & (ACTIVE+FOCUS)) == (ACTIVE+FOCUS);
|
||||||
|
isActive = ((flags & ACTIVE) != 0);
|
||||||
|
isShadow = ((flags & SHADOW) != 0 );
|
||||||
|
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1);
|
||||||
|
if ( isMonochron() )
|
||||||
|
{
|
||||||
|
setReverse(true);
|
||||||
|
print (' ');
|
||||||
|
}
|
||||||
|
else if ( isActiveFocus )
|
||||||
|
{
|
||||||
|
setColor (wc.inputfield_active_focus_bg, wc.dialog_bg);
|
||||||
|
if ( this->isCygwinTerminal() ) // IBM Codepage 850
|
||||||
|
print (fc::FullBlock); // █
|
||||||
|
else
|
||||||
|
print (fc::RightHalfBlock); // ▐
|
||||||
|
}
|
||||||
|
else if ( isActive )
|
||||||
|
{
|
||||||
|
setColor (wc.inputfield_active_bg, wc.dialog_bg);
|
||||||
|
if ( this->isCygwinTerminal() ) // IBM Codepage 850
|
||||||
|
print (fc::FullBlock); // █
|
||||||
|
else
|
||||||
|
print (fc::RightHalfBlock); // ▐
|
||||||
|
}
|
||||||
|
else // isInactive
|
||||||
|
{
|
||||||
|
setColor (wc.inputfield_inactive_bg, wc.dialog_bg);
|
||||||
|
if ( this->isCygwinTerminal() ) // IBM Codepage 850
|
||||||
|
print (fc::FullBlock); // █
|
||||||
|
else
|
||||||
|
print (fc::RightHalfBlock); // ▐
|
||||||
|
}
|
||||||
|
setColor (foregroundColor, backgroundColor);
|
||||||
|
show_text = text.mid(uInt(1+offset), uInt(width-2));
|
||||||
|
|
||||||
|
if ( isUTF8_linux_terminal() )
|
||||||
|
{
|
||||||
|
setUTF8(true);
|
||||||
|
print (show_text);
|
||||||
|
setUTF8(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
print (show_text);
|
||||||
|
|
||||||
|
x = int(show_text.getLength());
|
||||||
|
while ( x <= width-2 )
|
||||||
|
{
|
||||||
|
print (' ');
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
if ( isMonochron() )
|
||||||
|
setReverse(false);
|
||||||
|
|
||||||
|
if ( isShadow )
|
||||||
|
drawShadow ();
|
||||||
|
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
|
||||||
|
// set the cursor to the first pos.
|
||||||
|
setCursorPos (xpos+xmin+cursor_pos-offset, ypos+ymin-1);
|
||||||
|
|
||||||
|
if ( isCursorInside() && hasFocus() && isHiddenCursor() )
|
||||||
|
showCursor();
|
||||||
|
else if ( ! isHiddenCursor() )
|
||||||
|
hideCursor();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::processActivate()
|
||||||
|
{
|
||||||
|
if ( ! hasFocus() )
|
||||||
|
{
|
||||||
|
setFocus();
|
||||||
|
redraw();
|
||||||
|
}
|
||||||
|
emitCallback("activate");
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::processChanged()
|
||||||
|
{
|
||||||
|
emitCallback("changed");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// protected methods of FListBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::adjustLabel()
|
||||||
|
{
|
||||||
|
int label_length = int(label_text.getLength());
|
||||||
|
|
||||||
|
if ( hasHotkey() )
|
||||||
|
label_length--;
|
||||||
|
|
||||||
|
assert ( label_orientation == label_above
|
||||||
|
|| label_orientation == label_left );
|
||||||
|
|
||||||
|
switch ( label_orientation )
|
||||||
|
{
|
||||||
|
case label_above:
|
||||||
|
label->setGeometry(xpos, ypos-1, label_length, 1);
|
||||||
|
break;
|
||||||
|
case label_left:
|
||||||
|
label->setGeometry(xpos-label_length, ypos-1, label_length, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::adjustSize()
|
||||||
|
{
|
||||||
|
FWidget::adjustSize();
|
||||||
|
adjustLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public methods of FLineEdit
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::hide()
|
||||||
|
{
|
||||||
|
int fg, bg, s, size, lable_Length;
|
||||||
|
char* blank;
|
||||||
|
|
||||||
|
FWidget::hide();
|
||||||
|
|
||||||
|
fg = parentWidget()->getForegroundColor();
|
||||||
|
bg = parentWidget()->getBackgroundColor();
|
||||||
|
setColor (fg, bg);
|
||||||
|
s = hasShadow() ? 1 : 0;
|
||||||
|
size = width + s;
|
||||||
|
blank = new char[size+1];
|
||||||
|
memset(blank, ' ', uLong(size));
|
||||||
|
blank[size] = '\0';
|
||||||
|
|
||||||
|
for (int y=0; y < height+s; y++)
|
||||||
|
{
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-1+y);
|
||||||
|
print (blank);
|
||||||
|
}
|
||||||
|
delete[] blank;
|
||||||
|
|
||||||
|
lable_Length = int(label_text.getLength());
|
||||||
|
|
||||||
|
if ( lable_Length > 0 )
|
||||||
|
{
|
||||||
|
assert ( label_orientation == label_above
|
||||||
|
|| label_orientation == label_left );
|
||||||
|
|
||||||
|
switch ( label_orientation )
|
||||||
|
{
|
||||||
|
case label_above:
|
||||||
|
gotoxy (xpos+xmin-1, ypos+ymin-2);
|
||||||
|
break;
|
||||||
|
case label_left:
|
||||||
|
gotoxy (xpos+xmin-int(lable_Length)-1, ypos+ymin-1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
blank = new char[lable_Length+1];
|
||||||
|
memset(blank, ' ', uLong(size));
|
||||||
|
blank[lable_Length] = '\0';
|
||||||
|
print (blank);
|
||||||
|
delete[] blank;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLineEdit::setEnable (bool on)
|
||||||
|
{
|
||||||
|
FWidget::setEnable(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= ACTIVE;
|
||||||
|
if ( hasFocus() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_focus_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_focus_bg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~ACTIVE;
|
||||||
|
foregroundColor = wc.inputfield_inactive_fg;
|
||||||
|
backgroundColor = wc.inputfield_inactive_bg;
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLineEdit::setFocus (bool on)
|
||||||
|
{
|
||||||
|
FWidget::setFocus(on);
|
||||||
|
|
||||||
|
if ( on )
|
||||||
|
{
|
||||||
|
this->flags |= FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_focus_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_focus_bg;
|
||||||
|
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
FString msg = getStatusbarMessage();
|
||||||
|
FString curMsg = statusBar()->getMessage();
|
||||||
|
if ( curMsg != msg )
|
||||||
|
statusBar()->setMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->flags &= ~FOCUS;
|
||||||
|
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
foregroundColor = wc.inputfield_active_fg;
|
||||||
|
backgroundColor = wc.inputfield_active_bg;
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->clearMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FLineEdit::setShadow (bool on)
|
||||||
|
{
|
||||||
|
if ( on )
|
||||||
|
this->flags |= SHADOW;
|
||||||
|
else
|
||||||
|
this->flags &= ~SHADOW;
|
||||||
|
return on;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onKeyPress (FKeyEvent* event)
|
||||||
|
{
|
||||||
|
int len = int(text.getLength());
|
||||||
|
int key = event->key();
|
||||||
|
|
||||||
|
switch ( key )
|
||||||
|
{
|
||||||
|
case fc::Fkey_left:
|
||||||
|
cursor_pos--;
|
||||||
|
if ( cursor_pos < 0 )
|
||||||
|
cursor_pos=0;
|
||||||
|
if ( cursor_pos < offset )
|
||||||
|
offset--;
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_right:
|
||||||
|
cursor_pos++;
|
||||||
|
if ( cursor_pos >= len )
|
||||||
|
cursor_pos=len;
|
||||||
|
if ( cursor_pos-offset >= width-2 && offset < len-width+2 )
|
||||||
|
offset++;
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_home:
|
||||||
|
cursor_pos=0;
|
||||||
|
offset=0;
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_end:
|
||||||
|
cursor_pos=len;
|
||||||
|
if ( cursor_pos > width-2 )
|
||||||
|
offset=len-width+2;
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_dc: // del key
|
||||||
|
if ( len > 0 && cursor_pos < len )
|
||||||
|
{
|
||||||
|
text.remove(uInt(cursor_pos), 1);
|
||||||
|
processChanged();
|
||||||
|
}
|
||||||
|
if ( cursor_pos >= len )
|
||||||
|
cursor_pos=len;
|
||||||
|
if ( cursor_pos < 0 )
|
||||||
|
cursor_pos=0;
|
||||||
|
if ( offset > 0 && len-offset <= width-2 )
|
||||||
|
offset--;
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_erase:
|
||||||
|
case fc::Fkey_backspace:
|
||||||
|
if ( len > 0 && cursor_pos > 0 )
|
||||||
|
{
|
||||||
|
text.remove(uInt(cursor_pos-1), 1);
|
||||||
|
processChanged();
|
||||||
|
cursor_pos--;
|
||||||
|
if ( offset > 0 )
|
||||||
|
offset--;
|
||||||
|
}
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_ic: // insert key
|
||||||
|
insert_mode = not insert_mode;
|
||||||
|
if ( insert_mode )
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
setKDECursor(fc::UnderlineCursor);
|
||||||
|
setConsoleCursor(fc::underscore_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:ffff/ffff/ffff");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::steady_block);
|
||||||
|
setKDECursor(fc::BlockCursor);
|
||||||
|
setConsoleCursor(fc::full_block_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:0000/0000/0000");
|
||||||
|
}
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_return:
|
||||||
|
case fc::Fkey_enter:
|
||||||
|
processActivate();
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case fc::Fkey_tab:
|
||||||
|
event->ignore();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if ( key >= 0x20 && key <= 0x10fff )
|
||||||
|
{
|
||||||
|
if ( cursor_pos == len )
|
||||||
|
{
|
||||||
|
text += wchar_t(key);
|
||||||
|
processChanged();
|
||||||
|
}
|
||||||
|
else if ( len > 0 )
|
||||||
|
{
|
||||||
|
if ( insert_mode )
|
||||||
|
text.insert(wchar_t(key), uInt(cursor_pos));
|
||||||
|
else
|
||||||
|
text.overwrite(wchar_t(key), uInt(cursor_pos));
|
||||||
|
processChanged();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text = wchar_t(key);
|
||||||
|
processChanged();
|
||||||
|
}
|
||||||
|
cursor_pos++;
|
||||||
|
if ( cursor_pos > width-2 )
|
||||||
|
offset++;
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
// end of switch
|
||||||
|
|
||||||
|
if ( event->isAccepted()
|
||||||
|
&& key != fc::Fkey_return
|
||||||
|
&& key != fc::Fkey_enter )
|
||||||
|
{
|
||||||
|
drawInputField();
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onMouseDown (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int mouse_x, mouse_y;
|
||||||
|
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = getFocusWidget();
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
this->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
this->redraw();
|
||||||
|
if ( statusBar() )
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse_x = event->getX();
|
||||||
|
mouse_y = event->getY();
|
||||||
|
|
||||||
|
if ( mouse_x >= 2 && mouse_x <= width && mouse_y == 1 )
|
||||||
|
{
|
||||||
|
int len = int(text.getLength());
|
||||||
|
cursor_pos = offset + mouse_x - 2;
|
||||||
|
if ( cursor_pos >= len )
|
||||||
|
cursor_pos = len;
|
||||||
|
drawInputField();
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onMouseUp (FMouseEvent*)
|
||||||
|
{
|
||||||
|
if ( dragScroll != FLineEdit::noScroll )
|
||||||
|
{
|
||||||
|
delAllTimer();
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
scrollTimer = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onMouseMove (FMouseEvent* event)
|
||||||
|
{
|
||||||
|
int len, mouse_x, mouse_y;
|
||||||
|
|
||||||
|
if ( event->getButton() != LeftButton )
|
||||||
|
return;
|
||||||
|
|
||||||
|
len = int(text.getLength());
|
||||||
|
mouse_x = event->getX();
|
||||||
|
mouse_y = event->getY();
|
||||||
|
|
||||||
|
if ( mouse_x >= 2 && mouse_x <= width && mouse_y == 1 )
|
||||||
|
{
|
||||||
|
|
||||||
|
cursor_pos = offset + mouse_x - 2;
|
||||||
|
if ( cursor_pos >= len )
|
||||||
|
cursor_pos=len;
|
||||||
|
drawInputField();
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
|
||||||
|
// auto-scrolling when dragging mouse outside the widget
|
||||||
|
if ( mouse_x < 2 )
|
||||||
|
{
|
||||||
|
// drag left
|
||||||
|
if ( ! scrollTimer && offset > 0 )
|
||||||
|
{
|
||||||
|
scrollTimer = true;
|
||||||
|
addTimer(scrollRepeat);
|
||||||
|
dragScroll = FLineEdit::scrollLeft;
|
||||||
|
}
|
||||||
|
if ( offset == 0 )
|
||||||
|
{
|
||||||
|
delAllTimer();
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( mouse_x >= width )
|
||||||
|
{
|
||||||
|
// drag right
|
||||||
|
if ( ! scrollTimer && offset < len-width+2 )
|
||||||
|
{
|
||||||
|
scrollTimer = true;
|
||||||
|
addTimer(scrollRepeat);
|
||||||
|
dragScroll = FLineEdit::scrollRight;
|
||||||
|
}
|
||||||
|
if ( offset == len-width+2 )
|
||||||
|
{
|
||||||
|
delAllTimer();
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// no dragging
|
||||||
|
delAllTimer();
|
||||||
|
scrollTimer = false;
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onTimer (FTimerEvent*)
|
||||||
|
{
|
||||||
|
int len = int(text.getLength());
|
||||||
|
|
||||||
|
switch ( dragScroll )
|
||||||
|
{
|
||||||
|
case FLineEdit::noScroll:
|
||||||
|
return;
|
||||||
|
|
||||||
|
case FLineEdit::scrollLeft:
|
||||||
|
|
||||||
|
if ( offset == 0)
|
||||||
|
{
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
offset--;
|
||||||
|
if ( offset < 0 )
|
||||||
|
offset = 0;
|
||||||
|
cursor_pos--;
|
||||||
|
if ( cursor_pos < 0 )
|
||||||
|
cursor_pos = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FLineEdit::scrollRight:
|
||||||
|
if ( offset == len-width+2 )
|
||||||
|
{
|
||||||
|
dragScroll = FLineEdit::noScroll;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
offset++;
|
||||||
|
if ( offset > len-width+2 )
|
||||||
|
offset = len-width+2;
|
||||||
|
cursor_pos++;
|
||||||
|
if ( cursor_pos > len )
|
||||||
|
cursor_pos = len;
|
||||||
|
}
|
||||||
|
|
||||||
|
drawInputField();
|
||||||
|
updateTerminal();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onAccel (FAccelEvent* event)
|
||||||
|
{
|
||||||
|
if ( isEnabled() )
|
||||||
|
{
|
||||||
|
if ( ! hasFocus() )
|
||||||
|
{
|
||||||
|
FWidget* focused_widget = static_cast<FWidget*>(event->focusedWidget());
|
||||||
|
FFocusEvent out (FocusOut_Event);
|
||||||
|
FApplication::queueEvent(focused_widget, &out);
|
||||||
|
this->setFocus();
|
||||||
|
if ( focused_widget )
|
||||||
|
focused_widget->redraw();
|
||||||
|
this->redraw();
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onHide (FHideEvent*)
|
||||||
|
{
|
||||||
|
if ( ! insert_mode )
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
setKDECursor(fc::UnderlineCursor);
|
||||||
|
setConsoleCursor(fc::underscore_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:ffff/ffff/ffff");
|
||||||
|
}
|
||||||
|
if ( hasFocus() )
|
||||||
|
hideCursor();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onFocusIn (FFocusEvent*)
|
||||||
|
{
|
||||||
|
if ( isCursorInside() )
|
||||||
|
showCursor();
|
||||||
|
|
||||||
|
if ( insert_mode )
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
setKDECursor(fc::UnderlineCursor);
|
||||||
|
setConsoleCursor(fc::underscore_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:ffff/ffff/ffff");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::steady_block);
|
||||||
|
setKDECursor(fc::BlockCursor);
|
||||||
|
setConsoleCursor(fc::full_block_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:0000/0000/0000");
|
||||||
|
}
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
updateTerminal();
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::onFocusOut (FFocusEvent*)
|
||||||
|
{
|
||||||
|
if ( statusBar() )
|
||||||
|
{
|
||||||
|
statusBar()->clearMessage();
|
||||||
|
statusBar()->drawMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! insert_mode )
|
||||||
|
{
|
||||||
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
setKDECursor(fc::UnderlineCursor);
|
||||||
|
setConsoleCursor(fc::underscore_cursor);
|
||||||
|
if ( isUrxvtTerminal() )
|
||||||
|
setXTermCursor("rgb:ffff/ffff/ffff");
|
||||||
|
}
|
||||||
|
|
||||||
|
hideCursor();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::setText (FString txt)
|
||||||
|
{
|
||||||
|
offset = 0;
|
||||||
|
cursor_pos = 0;
|
||||||
|
this->text = txt;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::setLabelText (FString ltxt)
|
||||||
|
{
|
||||||
|
label_text = ltxt;
|
||||||
|
label->setText(label_text);
|
||||||
|
adjustLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FLineEdit::setLabelOrientation(label_o o)
|
||||||
|
{
|
||||||
|
label_orientation = o;
|
||||||
|
adjustLabel();
|
||||||
|
}
|
|
@ -0,0 +1,142 @@
|
||||||
|
// flineedit.h
|
||||||
|
// class FLineEdit
|
||||||
|
|
||||||
|
#ifndef _FLINEEDIT_H
|
||||||
|
#define _FLINEEDIT_H
|
||||||
|
|
||||||
|
#include "fwidget.h"
|
||||||
|
#include "flabel.h"
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FLineEdit
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FLineEdit : public FWidget
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
FString label_text;
|
||||||
|
FLabel* label;
|
||||||
|
enum drag_scroll
|
||||||
|
{
|
||||||
|
noScroll = 0,
|
||||||
|
scrollLeft = 1,
|
||||||
|
scrollRight = 2
|
||||||
|
};
|
||||||
|
int dragScroll;
|
||||||
|
bool scrollTimer;
|
||||||
|
int scrollRepeat;
|
||||||
|
bool insert_mode;
|
||||||
|
int cursor_pos;
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum label_o
|
||||||
|
{
|
||||||
|
label_above = 0,
|
||||||
|
label_left = 1
|
||||||
|
};
|
||||||
|
label_o label_orientation;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FLineEdit (const FLineEdit&);
|
||||||
|
FLineEdit& operator = (const FLineEdit&);
|
||||||
|
void init();
|
||||||
|
bool hasHotkey();
|
||||||
|
void draw();
|
||||||
|
void drawInputField();
|
||||||
|
void processActivate();
|
||||||
|
void processChanged();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void adjustLabel();
|
||||||
|
void adjustSize();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FLineEdit (FWidget* parent=0); // constructor
|
||||||
|
FLineEdit (const FString&, FWidget* parent=0); // constructor
|
||||||
|
virtual ~FLineEdit(); // destructor
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void hide();
|
||||||
|
|
||||||
|
bool setEnable(bool);
|
||||||
|
bool setEnable();
|
||||||
|
bool unsetEnable();
|
||||||
|
bool setDisable();
|
||||||
|
bool setFocus(bool);
|
||||||
|
bool setFocus();
|
||||||
|
bool unsetFocus();
|
||||||
|
bool setShadow(bool);
|
||||||
|
bool setShadow();
|
||||||
|
bool unsetShadow();
|
||||||
|
bool hasShadow();
|
||||||
|
|
||||||
|
void onKeyPress (FKeyEvent*);
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onMouseUp (FMouseEvent*);
|
||||||
|
void onMouseMove (FMouseEvent*);
|
||||||
|
void onTimer (FTimerEvent*);
|
||||||
|
void onAccel (FAccelEvent*);
|
||||||
|
void onHide (FHideEvent*);
|
||||||
|
void onFocusIn (FFocusEvent*);
|
||||||
|
void onFocusOut (FFocusEvent*);
|
||||||
|
|
||||||
|
void setText (FString);
|
||||||
|
FString getText() const;
|
||||||
|
void setLabelText (FString);
|
||||||
|
void setLabelOrientation(label_o);
|
||||||
|
int getLabelOrientation();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FLineEdit inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FLineEdit::getClassName() const
|
||||||
|
{ return "FLineEdit"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::setEnable()
|
||||||
|
{ return setEnable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::unsetEnable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::setDisable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::setFocus()
|
||||||
|
{ return setFocus(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::unsetFocus()
|
||||||
|
{ return setFocus(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::setShadow()
|
||||||
|
{ return setShadow(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::unsetShadow()
|
||||||
|
{ return setShadow(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FLineEdit::hasShadow()
|
||||||
|
{ return ((flags & SHADOW) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString FLineEdit::getText() const
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline int FLineEdit::getLabelOrientation()
|
||||||
|
{ return int(label_orientation); }
|
||||||
|
|
||||||
|
#endif // _FLINEEDIT_H
|
|
@ -0,0 +1,264 @@
|
||||||
|
// flistbox.h
|
||||||
|
// class FListBoxItem
|
||||||
|
// class FListBox
|
||||||
|
|
||||||
|
#ifndef _FLISTBOX_H
|
||||||
|
#define _FLISTBOX_H
|
||||||
|
|
||||||
|
#include "fscrollbar.h"
|
||||||
|
#include "fstring.h"
|
||||||
|
#include "fwidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FListBoxItem
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FListBoxItem
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
FString text;
|
||||||
|
fc::brackets_type brackets;
|
||||||
|
bool selected;
|
||||||
|
public:
|
||||||
|
FListBoxItem ();
|
||||||
|
FListBoxItem (FString&);
|
||||||
|
FListBoxItem (const std::string&);
|
||||||
|
FListBoxItem (const char*);
|
||||||
|
virtual ~FListBoxItem();
|
||||||
|
virtual FString getText() const;
|
||||||
|
protected:
|
||||||
|
void setText (FString&);
|
||||||
|
void setText (const std::string&);
|
||||||
|
void setText (const char*);
|
||||||
|
private:
|
||||||
|
friend class FListBox;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
// FListBoxItem inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString FListBoxItem::getText() const
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBoxItem::setText (FString& txt)
|
||||||
|
{ this->text = txt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBoxItem::setText (const std::string& txt)
|
||||||
|
{ this->text = txt; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBoxItem::setText (const char* txt)
|
||||||
|
{ this->text = txt; }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FListBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FListBox : public FWidget
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::vector<FListBoxItem> data;
|
||||||
|
FScrollbar* VBar;
|
||||||
|
FScrollbar* HBar;
|
||||||
|
FString text;
|
||||||
|
FString inc_search;
|
||||||
|
bool multiSelect;
|
||||||
|
bool mouseSelect;
|
||||||
|
enum drag_scroll
|
||||||
|
{
|
||||||
|
noScroll = 0,
|
||||||
|
scrollUp = 1,
|
||||||
|
scrollDown = 2,
|
||||||
|
scrollUpSelect = 3,
|
||||||
|
scrollDownSelect = 4
|
||||||
|
};
|
||||||
|
int dragScroll;
|
||||||
|
bool scrollTimer;
|
||||||
|
int scrollRepeat;
|
||||||
|
int scrollDistance;
|
||||||
|
int current;
|
||||||
|
int last_current;
|
||||||
|
int secect_from_item;
|
||||||
|
int xoffset;
|
||||||
|
int yoffset;
|
||||||
|
int last_yoffset;
|
||||||
|
int nf_offset;
|
||||||
|
int maxLineWidth;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FListBox (const FListBox&);
|
||||||
|
FListBox& operator = (const FListBox&);
|
||||||
|
void init();
|
||||||
|
void draw();
|
||||||
|
void drawLabel();
|
||||||
|
void drawList();
|
||||||
|
void processClick();
|
||||||
|
void processSelect();
|
||||||
|
void processChanged();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void adjustYOffset();
|
||||||
|
void adjustSize();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FListBox (FWidget* parent=0); // constructor
|
||||||
|
~FListBox(); // destructor
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
void hide();
|
||||||
|
|
||||||
|
void onKeyPress (FKeyEvent*);
|
||||||
|
void onMouseDown (FMouseEvent*);
|
||||||
|
void onMouseUp (FMouseEvent*);
|
||||||
|
void onMouseMove (FMouseEvent*);
|
||||||
|
void onMouseDoubleClick (FMouseEvent*);
|
||||||
|
void onWheel (FWheelEvent*);
|
||||||
|
void onTimer (FTimerEvent*);
|
||||||
|
void onFocusIn (FFocusEvent*);
|
||||||
|
void onFocusOut (FFocusEvent*);
|
||||||
|
|
||||||
|
void cb_VBarChange (FWidget*, void*);
|
||||||
|
void cb_HBarChange (FWidget*, void*);
|
||||||
|
uInt count() const;
|
||||||
|
FListBoxItem Item(int) const;
|
||||||
|
int currentItem() const;
|
||||||
|
void setCurrentItem(int);
|
||||||
|
void selectItem(int);
|
||||||
|
void unselectItem(int);
|
||||||
|
bool isSelected(int) const;
|
||||||
|
void showInsideBrackets(int, fc::brackets_type);
|
||||||
|
void showNoBrackets(int);
|
||||||
|
bool hasBrackets(int) const;
|
||||||
|
void setGeometry (int, int, int, int, bool adjust=true);
|
||||||
|
|
||||||
|
void setMultiSelection (bool);
|
||||||
|
void setMultiSelection ();
|
||||||
|
void unsetMultiSelection ();
|
||||||
|
bool isMultiSelection() const;
|
||||||
|
bool setEnable(bool);
|
||||||
|
bool setEnable();
|
||||||
|
bool unsetEnable();
|
||||||
|
bool setDisable();
|
||||||
|
bool setFocus(bool);
|
||||||
|
bool setFocus();
|
||||||
|
bool unsetFocus();
|
||||||
|
bool setShadow(bool);
|
||||||
|
bool setShadow();
|
||||||
|
bool unsetShadow();
|
||||||
|
bool hasShadow();
|
||||||
|
|
||||||
|
void insert ( FString,
|
||||||
|
fc::brackets_type b = fc::NoBrackets,
|
||||||
|
bool s = false );
|
||||||
|
void insert ( long,
|
||||||
|
fc::brackets_type b = fc::NoBrackets,
|
||||||
|
bool s = false );
|
||||||
|
void remove ( int);
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
void setText (const FString);
|
||||||
|
FString& getText();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FListBox inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FListBox::getClassName() const
|
||||||
|
{ return "FListBox"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline uInt FListBox::count() const
|
||||||
|
{ return uInt(data.size()); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FListBoxItem FListBox::Item(int index) const
|
||||||
|
{ return data[uInt(index-1)]; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline int FListBox::currentItem() const
|
||||||
|
{ return current; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::selectItem (int index)
|
||||||
|
{ data[uInt(index-1)].selected = true; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::unselectItem (int index)
|
||||||
|
{ data[uInt(index-1)].selected = false; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::isSelected(int index) const
|
||||||
|
{ return data[uInt(index-1)].selected; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::showNoBrackets(int index)
|
||||||
|
{ data[uInt(index-1)].brackets = fc::NoBrackets; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::hasBrackets(int index) const
|
||||||
|
{ return bool(data[uInt(index-1)].brackets > 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::setMultiSelection (bool on)
|
||||||
|
{ this->multiSelect = on; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::setMultiSelection()
|
||||||
|
{ setMultiSelection(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FListBox::unsetMultiSelection()
|
||||||
|
{ setMultiSelection(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::isMultiSelection() const
|
||||||
|
{ return multiSelect; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::setEnable()
|
||||||
|
{ return setEnable(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::unsetEnable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::setDisable()
|
||||||
|
{ return setEnable(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::setFocus()
|
||||||
|
{ return setFocus(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::unsetFocus()
|
||||||
|
{ return setFocus(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::setShadow()
|
||||||
|
{ return setShadow(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::unsetShadow()
|
||||||
|
{ return setShadow(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FListBox::hasShadow()
|
||||||
|
{ return ((flags & SHADOW) != 0); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FString& FListBox::getText()
|
||||||
|
{ return this->text; }
|
||||||
|
|
||||||
|
#endif // _FLISTBOX_H
|
|
@ -0,0 +1,409 @@
|
||||||
|
// fmessagebox.cpp
|
||||||
|
// class FMessageBox
|
||||||
|
|
||||||
|
#include "fapp.h"
|
||||||
|
#include "fmessagebox.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const char* button_text[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
"&OK",
|
||||||
|
"&Cancel",
|
||||||
|
"&Yes",
|
||||||
|
"&No",
|
||||||
|
"&Abort",
|
||||||
|
"&Retry",
|
||||||
|
"&Ignore",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FMessageBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructors and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FMessageBox::FMessageBox(FWidget* parent) : FDialog(parent)
|
||||||
|
{
|
||||||
|
FDialog::setText ("Message for you");
|
||||||
|
this->init(FMessageBox::Ok, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FMessageBox::FMessageBox(const FString& caption,
|
||||||
|
const FString& message,
|
||||||
|
int button0,
|
||||||
|
int button1,
|
||||||
|
int button2,
|
||||||
|
FWidget* parent) : FDialog(parent)
|
||||||
|
{
|
||||||
|
FDialog::setText(caption);
|
||||||
|
this->text = message;
|
||||||
|
this->init(button0, button1, button2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FMessageBox::~FMessageBox() // destructor
|
||||||
|
{
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
delete button[n];
|
||||||
|
|
||||||
|
delete button_digit[2];
|
||||||
|
delete button_digit[1];
|
||||||
|
delete button_digit[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private methods of FMessageBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::init(int button0, int button1, int button2)
|
||||||
|
{
|
||||||
|
emphasis_color = wc.dialog_emphasis_fg;
|
||||||
|
|
||||||
|
msg_dimension();
|
||||||
|
|
||||||
|
if ( (button2 && ! button1) || (button1 && ! button0) )
|
||||||
|
{
|
||||||
|
button0 = button1 = button2 = 0;
|
||||||
|
}
|
||||||
|
if ( button0 == 0 )
|
||||||
|
button0 = FMessageBox::Ok;
|
||||||
|
if ( button1 == 0 && button2 == 0 )
|
||||||
|
numButtons = 1;
|
||||||
|
else if ( button2 == 0 )
|
||||||
|
numButtons = 2;
|
||||||
|
else
|
||||||
|
numButtons = 3;
|
||||||
|
|
||||||
|
button_digit[0] = new int(button0);
|
||||||
|
button_digit[1] = new int(button1);
|
||||||
|
button_digit[2] = new int(button2);
|
||||||
|
|
||||||
|
button[0] = new FButton (this);
|
||||||
|
button[0]->setText(button_text[button0]);
|
||||||
|
button[0]->setX(3, false);
|
||||||
|
button[0]->setY(height-4, false);
|
||||||
|
button[0]->setWidth(1, false);
|
||||||
|
button[0]->setHeight(1, false);
|
||||||
|
button[0]->setFocus();
|
||||||
|
button[0]->setShadow();
|
||||||
|
|
||||||
|
if ( button1 > 0 )
|
||||||
|
{
|
||||||
|
button[1] = new FButton(this);
|
||||||
|
button[1]->setText(button_text[button1]);
|
||||||
|
button[1]->setX(17, false);
|
||||||
|
button[1]->setY(height-4, false);
|
||||||
|
button[1]->setWidth(0, false);
|
||||||
|
button[1]->setHeight(1, false);
|
||||||
|
button[1]->setShadow();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( button2 > 0 )
|
||||||
|
{
|
||||||
|
button[2] = new FButton(this);
|
||||||
|
button[2]->setText(button_text[button2]);
|
||||||
|
button[2]->setX(32, false);
|
||||||
|
button[2]->setY(height-4, false);
|
||||||
|
button[2]->setWidth(0, false);
|
||||||
|
button[2]->setHeight(1, false);
|
||||||
|
button[2]->setShadow();
|
||||||
|
}
|
||||||
|
|
||||||
|
resizeButtons();
|
||||||
|
adjustButtons();
|
||||||
|
|
||||||
|
if ( *button_digit[0] != 0 )
|
||||||
|
button[0]->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FMessageBox::cb_processClick),
|
||||||
|
static_cast<FWidget::data_ptr>(button_digit[0])
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
if ( *button_digit[1] != 0 )
|
||||||
|
button[1]->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FMessageBox::cb_processClick),
|
||||||
|
static_cast<FWidget::data_ptr>(button_digit[1])
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( *button_digit[2] != 0 )
|
||||||
|
button[2]->addCallback
|
||||||
|
(
|
||||||
|
"clicked",
|
||||||
|
this,
|
||||||
|
reinterpret_cast<FWidget::FMemberCallback>(&FMessageBox::cb_processClick),
|
||||||
|
static_cast<FWidget::data_ptr>(button_digit[2])
|
||||||
|
);
|
||||||
|
|
||||||
|
setModal();
|
||||||
|
setTransparentShadow();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::msg_dimension()
|
||||||
|
{
|
||||||
|
int x, y, w, h;
|
||||||
|
int headline_height = 0;
|
||||||
|
text_split = text.split("\n");
|
||||||
|
text_num_lines = uInt(text_split.size());
|
||||||
|
text_components = &text_split[0];
|
||||||
|
maxLineWidth = 0;
|
||||||
|
center_text = false;
|
||||||
|
|
||||||
|
if ( ! headline_text.isNull() )
|
||||||
|
headline_height = 2;
|
||||||
|
|
||||||
|
for (uInt i=0; i < text_num_lines; i++)
|
||||||
|
{
|
||||||
|
uInt len = text_components[i].getLength();
|
||||||
|
if ( len > maxLineWidth )
|
||||||
|
maxLineWidth = len;
|
||||||
|
}
|
||||||
|
h = int(text_num_lines) + 8 + headline_height;
|
||||||
|
w = int(maxLineWidth + 4);
|
||||||
|
if ( w < 20 )
|
||||||
|
w = 20;
|
||||||
|
x = 1 + int((parentWidget()->getWidth()-w)/2);
|
||||||
|
y = 1 + int((parentWidget()->getHeight()-h)/3);
|
||||||
|
setGeometry (x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::draw()
|
||||||
|
{
|
||||||
|
FDialog::draw();
|
||||||
|
|
||||||
|
if ( Encoding == fc::VT100 )
|
||||||
|
unsetVT100altChar();
|
||||||
|
|
||||||
|
int head_offset = 0;
|
||||||
|
int center_x = 0;
|
||||||
|
int msg_x = int((width - int(maxLineWidth)) / 2); // center the whole block
|
||||||
|
|
||||||
|
setUpdateVTerm(false);
|
||||||
|
if ( ! headline_text.isNull() )
|
||||||
|
{
|
||||||
|
setColor(emphasis_color, backgroundColor);
|
||||||
|
uInt headline_length = headline_text.getLength();
|
||||||
|
if ( center_text ) // center one line
|
||||||
|
center_x = int((maxLineWidth - headline_length) / 2);
|
||||||
|
gotoxy (xpos+xmin-1+msg_x+center_x, ypos+ymin+2);
|
||||||
|
print (headline_text);
|
||||||
|
head_offset = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
setColor(foregroundColor, backgroundColor);
|
||||||
|
|
||||||
|
for (int i=0; i < int(text_num_lines); i++)
|
||||||
|
{
|
||||||
|
uInt line_length = text_components[i].getLength();
|
||||||
|
if ( center_text ) // center one line
|
||||||
|
center_x = int((maxLineWidth - line_length) / 2);
|
||||||
|
gotoxy (xpos+xmin-1+msg_x+center_x, ypos+ymin+2+head_offset+i);
|
||||||
|
print(text_components[i]);
|
||||||
|
}
|
||||||
|
setUpdateVTerm(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::resizeButtons()
|
||||||
|
{
|
||||||
|
uInt len[3], max_size;
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
{
|
||||||
|
len[n] = button[n]->getText().getLength();
|
||||||
|
if ( button[n]->getText().includes('&') )
|
||||||
|
len[n]--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( numButtons == 1 )
|
||||||
|
max_size = len[0];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
max_size = std::max(len[0], len[1]);
|
||||||
|
if ( numButtons == 3 )
|
||||||
|
max_size = std::max(max_size, len[2]);
|
||||||
|
}
|
||||||
|
if ( max_size < 7 )
|
||||||
|
max_size = 7;
|
||||||
|
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
button[n]->setWidth(int(max_size + 3), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::adjustButtons()
|
||||||
|
{
|
||||||
|
int btn_width=0;
|
||||||
|
int gap = 4;
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
{
|
||||||
|
if ( n == numButtons-1 )
|
||||||
|
btn_width += button[n]->getWidth();
|
||||||
|
else
|
||||||
|
btn_width += button[n]->getWidth() + gap;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( btn_width > width-5 )
|
||||||
|
{
|
||||||
|
setWidth(btn_width + 5);
|
||||||
|
int max_width = getRootWidget()->getClientWidth();
|
||||||
|
setX(int((max_width-width)/2));
|
||||||
|
}
|
||||||
|
|
||||||
|
int btn_x = int((width-btn_width) / 2);
|
||||||
|
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
{
|
||||||
|
if ( n == 0 )
|
||||||
|
button[n]->setX(btn_x);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int btn_size = button[n]->getWidth();
|
||||||
|
button[n]->setX( btn_x + int(n) * (btn_size + gap) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::cb_processClick (FWidget*, void* data_ptr)
|
||||||
|
{
|
||||||
|
int* reply = static_cast<int*>(data_ptr);
|
||||||
|
done (*reply);
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected methods of FMessageBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::adjustSize()
|
||||||
|
{
|
||||||
|
int X, Y, max_width, max_height;
|
||||||
|
max_height = getRootWidget()->getClientHeight();
|
||||||
|
max_width = getRootWidget()->getClientWidth();
|
||||||
|
X = 1 + int((max_width-width)/2);
|
||||||
|
Y = 1 + int((max_height-height)/3);
|
||||||
|
setX(X, false);
|
||||||
|
setY(Y, false);
|
||||||
|
FDialog::adjustSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
// public methods of FMessageBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setHeadline (const FString& headline)
|
||||||
|
{
|
||||||
|
int old_height = height;
|
||||||
|
this->headline_text = headline;
|
||||||
|
setHeight(height + 2, true);
|
||||||
|
for (uInt n=0; n < numButtons; n++)
|
||||||
|
button[n]->setY(height-4, false);
|
||||||
|
uInt len = headline_text.getLength();
|
||||||
|
if ( len > maxLineWidth )
|
||||||
|
maxLineWidth = len;
|
||||||
|
if ( vwin && height != old_height )
|
||||||
|
resizeArea (vwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setHeadline (const std::string& headline)
|
||||||
|
{
|
||||||
|
FString headline_txt(headline);
|
||||||
|
setHeadline( headline_txt );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setHeadline (const char* headline)
|
||||||
|
{
|
||||||
|
FString headline_txt(headline);
|
||||||
|
setHeadline( headline_txt );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setText (const FString& txt)
|
||||||
|
{
|
||||||
|
this->text = txt;
|
||||||
|
msg_dimension();
|
||||||
|
button[0]->setY(height-4, false);
|
||||||
|
if ( *button_digit[1] != 0 )
|
||||||
|
button[1]->setY(height-4, false);
|
||||||
|
if ( *button_digit[2] != 0 )
|
||||||
|
button[2]->setY(height-4, false);
|
||||||
|
adjustButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setText (const std::string& txt)
|
||||||
|
{
|
||||||
|
FString message_text(txt);
|
||||||
|
setText( message_text );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FMessageBox::setText (const char* txt)
|
||||||
|
{
|
||||||
|
FString message_text(txt);
|
||||||
|
setText( message_text );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMessageBox::info ( FWidget* parent,
|
||||||
|
const FString& caption,
|
||||||
|
const FString& message,
|
||||||
|
int button0,
|
||||||
|
int button1,
|
||||||
|
int button2 )
|
||||||
|
{
|
||||||
|
int reply;
|
||||||
|
FMessageBox* mbox = new FMessageBox ( caption, message,
|
||||||
|
button0, button1, button2,
|
||||||
|
parent );
|
||||||
|
reply = mbox->exec();
|
||||||
|
delete mbox;
|
||||||
|
return reply;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMessageBox::info ( FWidget* parent,
|
||||||
|
const FString& caption,
|
||||||
|
int num,
|
||||||
|
int button0,
|
||||||
|
int button1,
|
||||||
|
int button2 )
|
||||||
|
{
|
||||||
|
int reply;
|
||||||
|
FMessageBox* mbox = new FMessageBox ( caption,
|
||||||
|
FString().setNumber(num),
|
||||||
|
button0, button1, button2,
|
||||||
|
parent );
|
||||||
|
reply = mbox->exec();
|
||||||
|
delete mbox;
|
||||||
|
return reply;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FMessageBox::error ( FWidget* parent,
|
||||||
|
const FString& message,
|
||||||
|
int button0,
|
||||||
|
int button1,
|
||||||
|
int button2 )
|
||||||
|
{
|
||||||
|
int reply;
|
||||||
|
const FString caption = "Error message";
|
||||||
|
FMessageBox* mbox = new FMessageBox ( caption, message,
|
||||||
|
button0, button1, button2,
|
||||||
|
parent );
|
||||||
|
mbox->beep();
|
||||||
|
mbox->setHeadline("Warning:");
|
||||||
|
mbox->setCenterText();
|
||||||
|
mbox->foregroundColor = mbox->wc.error_box_fg;
|
||||||
|
mbox->backgroundColor = mbox->wc.error_box_bg;
|
||||||
|
mbox->emphasis_color = mbox->wc.error_box_emphasis_fg;
|
||||||
|
reply = mbox->exec();
|
||||||
|
delete mbox;
|
||||||
|
return reply;
|
||||||
|
}
|
|
@ -0,0 +1,130 @@
|
||||||
|
// fmessagebox.h
|
||||||
|
// class FMessageBox
|
||||||
|
|
||||||
|
#ifndef _FMESSAGEBOX_H
|
||||||
|
#define _FMESSAGEBOX_H
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
#include "fbutton.h"
|
||||||
|
#include "fdialog.h"
|
||||||
|
#include "fterm.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FMessageBox
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FMessageBox : public FDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
Reject = 0,
|
||||||
|
Ok = 1,
|
||||||
|
Cancel = 2,
|
||||||
|
Yes = 3,
|
||||||
|
No = 4,
|
||||||
|
Abort = 5,
|
||||||
|
Retry = 6,
|
||||||
|
Ignore = 7
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
FString headline_text;
|
||||||
|
FString text;
|
||||||
|
FString* text_components;
|
||||||
|
std::vector<FString> text_split;
|
||||||
|
uInt maxLineWidth;
|
||||||
|
bool center_text;
|
||||||
|
uChar emphasis_color;
|
||||||
|
uInt numButtons;
|
||||||
|
uInt text_num_lines;
|
||||||
|
int* button_digit[3];
|
||||||
|
FButton* button[3];
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void adjustSize();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void init(int, int, int);
|
||||||
|
void msg_dimension();
|
||||||
|
virtual void draw();
|
||||||
|
void resizeButtons();
|
||||||
|
void adjustButtons();
|
||||||
|
void cb_processClick (FWidget*, void*);
|
||||||
|
|
||||||
|
public:
|
||||||
|
FMessageBox (FWidget* parent=0);
|
||||||
|
FMessageBox (const FString&, const FString&,
|
||||||
|
int, int, int,
|
||||||
|
FWidget* parent=0);
|
||||||
|
~FMessageBox();
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
|
const FString getHeadline() const;
|
||||||
|
void setHeadline (const FString&);
|
||||||
|
void setHeadline (const std::string&);
|
||||||
|
void setHeadline (const char*);
|
||||||
|
|
||||||
|
const FString getText() const;
|
||||||
|
void setText (const FString&);
|
||||||
|
void setText (const std::string&);
|
||||||
|
void setText (const char*);
|
||||||
|
|
||||||
|
bool setCenterText(bool);
|
||||||
|
bool setCenterText();
|
||||||
|
bool unsetCenterText();
|
||||||
|
|
||||||
|
static int info ( FWidget*,
|
||||||
|
const FString&,
|
||||||
|
const FString&,
|
||||||
|
int button0 = FMessageBox::Ok,
|
||||||
|
int button1=0,
|
||||||
|
int button2=0 );
|
||||||
|
|
||||||
|
static int info ( FWidget*,
|
||||||
|
const FString&,
|
||||||
|
int,
|
||||||
|
int button0 = FMessageBox::Ok,
|
||||||
|
int button1=0,
|
||||||
|
int button2=0 );
|
||||||
|
|
||||||
|
static int error ( FWidget*,
|
||||||
|
const FString&,
|
||||||
|
int button0 = FMessageBox::Ok,
|
||||||
|
int button1=0,
|
||||||
|
int button2=0 );
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
// FMessageBox inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FMessageBox::getClassName() const
|
||||||
|
{ return "FMessageBox"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const FString FMessageBox::getHeadline() const
|
||||||
|
{ return headline_text; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const FString FMessageBox::getText() const
|
||||||
|
{ return text; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FMessageBox::setCenterText(bool on)
|
||||||
|
{ return this->center_text = on; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FMessageBox::setCenterText()
|
||||||
|
{ return setCenterText(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FMessageBox::unsetCenterText()
|
||||||
|
{ return setCenterText(false); }
|
||||||
|
|
||||||
|
#endif // _FMESSAGEBOX_H
|
|
@ -0,0 +1,216 @@
|
||||||
|
// fobject.cpp
|
||||||
|
// class FObject
|
||||||
|
|
||||||
|
#include "fobject.h"
|
||||||
|
|
||||||
|
// static class attributes
|
||||||
|
bool FObject::modify_timer;
|
||||||
|
FObject::TimerList* FObject::timer_list = 0;
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FObject
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// constructors and destructor
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FObject::FObject (FObject* parent)
|
||||||
|
{
|
||||||
|
parentObj = parent;
|
||||||
|
children_list.clear(); // no children yet
|
||||||
|
|
||||||
|
if ( parentObj ) // add object to parent
|
||||||
|
parentObj->addChild(this);
|
||||||
|
|
||||||
|
if ( parent == 0 )
|
||||||
|
{
|
||||||
|
has_parent = false;
|
||||||
|
modify_timer = false;
|
||||||
|
timer_list = new TimerList;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
has_parent = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FObject::~FObject() // destructor
|
||||||
|
{
|
||||||
|
if ( parentObj )
|
||||||
|
parentObj->delChild(this);
|
||||||
|
|
||||||
|
delAllTimer(); // delete all timers of this object
|
||||||
|
|
||||||
|
if ( ! has_parent && timer_list )
|
||||||
|
delete timer_list;
|
||||||
|
|
||||||
|
// delete children objects
|
||||||
|
FObject::object_list children = this->children();
|
||||||
|
if ( ! children.empty() )
|
||||||
|
{
|
||||||
|
FObject::object_list::const_iterator iter;
|
||||||
|
iter = children.begin();
|
||||||
|
|
||||||
|
while ( iter != children.end() )
|
||||||
|
{
|
||||||
|
delete (*iter);
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// public methods of FObject
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FObject::addChild (FObject* obj)
|
||||||
|
{
|
||||||
|
if ( obj->parentObj )
|
||||||
|
obj->parentObj->delChild(obj);
|
||||||
|
|
||||||
|
obj->parentObj = this;
|
||||||
|
|
||||||
|
this->children_list.push_back(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FObject::delChild (FObject* obj)
|
||||||
|
{
|
||||||
|
if ( ! children_list.empty() )
|
||||||
|
{
|
||||||
|
obj->removeParent();
|
||||||
|
this->children_list.remove(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FObject::event (FEvent* ev)
|
||||||
|
{
|
||||||
|
if ( ev->type() == Timer_Event )
|
||||||
|
{
|
||||||
|
onTimer ( static_cast<FTimerEvent*>(ev) );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FObject::getCurrentTime (timeval &time)
|
||||||
|
{
|
||||||
|
gettimeofday(&time, 0);
|
||||||
|
|
||||||
|
// NTP fix
|
||||||
|
while ( time.tv_usec >= 1000000 )
|
||||||
|
{
|
||||||
|
time.tv_usec -= 1000000;
|
||||||
|
time.tv_sec++;
|
||||||
|
}
|
||||||
|
while ( time.tv_usec < 0 )
|
||||||
|
{
|
||||||
|
if ( time.tv_sec > 0 )
|
||||||
|
{
|
||||||
|
time.tv_usec += 1000000;
|
||||||
|
time.tv_sec--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
time.tv_usec = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int FObject::addTimer (int interval)
|
||||||
|
{
|
||||||
|
FObject::TimerList::iterator iter, end;
|
||||||
|
timeval time_interval;
|
||||||
|
timeval currentTime;
|
||||||
|
int id = 1;
|
||||||
|
|
||||||
|
modify_timer = true;
|
||||||
|
|
||||||
|
// find an unused timer id
|
||||||
|
if ( timer_list && ! timer_list->empty() )
|
||||||
|
{
|
||||||
|
iter = timer_list->begin();
|
||||||
|
end = timer_list->end();
|
||||||
|
|
||||||
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter).id == id )
|
||||||
|
{
|
||||||
|
iter = timer_list->begin();
|
||||||
|
id++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( id <= 0 || id > int(timer_list->size() + 1) )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
|
time_interval.tv_sec = interval / 1000;
|
||||||
|
time_interval.tv_usec = (interval % 1000) * 1000;
|
||||||
|
getCurrentTime (currentTime);
|
||||||
|
timeval timeout = currentTime + time_interval;
|
||||||
|
timer_data t = { id, time_interval, timeout, this };
|
||||||
|
|
||||||
|
// insert in list sorted by timeout
|
||||||
|
iter = timer_list->begin();
|
||||||
|
end = timer_list->end();
|
||||||
|
|
||||||
|
while ( iter != end && (*iter).timeout < t.timeout )
|
||||||
|
++iter;
|
||||||
|
|
||||||
|
timer_list->insert (iter, t);
|
||||||
|
modify_timer = false;
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FObject::delTimer (int id)
|
||||||
|
{
|
||||||
|
FObject::TimerList::iterator iter, end;
|
||||||
|
|
||||||
|
if ( id <= 0 || id > int(timer_list->size()) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
modify_timer = true;
|
||||||
|
iter = timer_list->begin();
|
||||||
|
end = timer_list->end();
|
||||||
|
|
||||||
|
while ( iter != end && (*iter).id != id )
|
||||||
|
++iter;
|
||||||
|
|
||||||
|
if ( iter != end )
|
||||||
|
{
|
||||||
|
timer_list->erase(iter);
|
||||||
|
modify_timer = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
modify_timer = false;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
bool FObject::delAllTimer()
|
||||||
|
{
|
||||||
|
if ( ! timer_list )
|
||||||
|
return false;
|
||||||
|
if ( timer_list->empty() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
modify_timer = true;
|
||||||
|
timer_list->clear();
|
||||||
|
modify_timer = false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected methods of FObject
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FObject::onTimer (FTimerEvent*)
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,166 @@
|
||||||
|
// fobject.h
|
||||||
|
// class FObject
|
||||||
|
|
||||||
|
#ifndef _FOBJECT_H
|
||||||
|
#define _FOBJECT_H
|
||||||
|
|
||||||
|
#include <sys/time.h> // need for gettimeofday
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
#include "fevent.h"
|
||||||
|
|
||||||
|
#define null NULL
|
||||||
|
|
||||||
|
typedef unsigned char uChar;
|
||||||
|
typedef unsigned int uInt;
|
||||||
|
typedef unsigned long uLong;
|
||||||
|
typedef unsigned char uInt8;
|
||||||
|
typedef unsigned short uInt16;
|
||||||
|
typedef unsigned int uInt32;
|
||||||
|
typedef u_int64_t uInt64;
|
||||||
|
|
||||||
|
typedef signed int sInt;
|
||||||
|
typedef signed long sLong;
|
||||||
|
typedef signed char sInt8;
|
||||||
|
typedef signed short sInt16;
|
||||||
|
typedef signed int sInt32;
|
||||||
|
typedef int64_t sInt64;
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FObject
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef std::list<FObject*> object_list;
|
||||||
|
|
||||||
|
struct timer_data
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
timeval interval;
|
||||||
|
timeval timeout;
|
||||||
|
FObject* object;
|
||||||
|
};
|
||||||
|
typedef std::vector<timer_data> TimerList;
|
||||||
|
static TimerList* timer_list;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FObject* parentObj;
|
||||||
|
object_list children_list;
|
||||||
|
bool has_parent;
|
||||||
|
static bool modify_timer;
|
||||||
|
friend class FApplication;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FObject (FObject* parent=0);
|
||||||
|
virtual ~FObject();
|
||||||
|
virtual const char* getClassName() const;
|
||||||
|
|
||||||
|
FObject* parent() const;
|
||||||
|
bool hasParent() const;
|
||||||
|
void removeParent();
|
||||||
|
object_list children() const;
|
||||||
|
bool hasChildren() const;
|
||||||
|
void addChild (FObject*);
|
||||||
|
void delChild (FObject*);
|
||||||
|
int numOfChildren() const;
|
||||||
|
static void getCurrentTime (timeval&);
|
||||||
|
int addTimer (int interval);
|
||||||
|
bool delTimer (int id);
|
||||||
|
bool delAllTimer();
|
||||||
|
virtual bool event (FEvent*);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void onTimer (FTimerEvent*);
|
||||||
|
|
||||||
|
private:
|
||||||
|
FObject (const FObject&);
|
||||||
|
FObject& operator = (const FObject&);
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FObject::getClassName() const
|
||||||
|
{ return "FObject"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FObject* FObject::parent() const
|
||||||
|
{ return parentObj; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FObject::hasParent() const
|
||||||
|
{ return has_parent; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FObject::removeParent()
|
||||||
|
{ parentObj = 0; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FObject::object_list FObject::children() const
|
||||||
|
{ return children_list; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FObject::hasChildren() const
|
||||||
|
{ return bool( ! children_list.empty() ); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline int FObject::numOfChildren() const
|
||||||
|
{ return int(children_list.size()); }
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// Operator functions for timeval
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
static inline timeval operator + (const timeval& t1, const timeval& t2)
|
||||||
|
{
|
||||||
|
timeval tmp;
|
||||||
|
tmp.tv_sec = t1.tv_sec + t2.tv_sec;
|
||||||
|
if ( (tmp.tv_usec = t1.tv_usec + t2.tv_usec) >= 1000000 )
|
||||||
|
{
|
||||||
|
tmp.tv_sec++;
|
||||||
|
tmp.tv_usec -= 1000000;
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
static inline timeval operator - (const timeval& t1, const timeval& t2)
|
||||||
|
{
|
||||||
|
timeval tmp;
|
||||||
|
tmp.tv_sec = t1.tv_sec - t2.tv_sec;
|
||||||
|
if ( (tmp.tv_usec = t1.tv_usec - t2.tv_usec) < 0 )
|
||||||
|
{
|
||||||
|
tmp.tv_sec--;
|
||||||
|
tmp.tv_usec += 1000000;
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
static inline timeval& operator += (timeval& t1, const timeval& t2)
|
||||||
|
{
|
||||||
|
t1.tv_sec += t2.tv_sec;
|
||||||
|
if ( (t1.tv_usec += t2.tv_usec) >= 1000000 )
|
||||||
|
{
|
||||||
|
t1.tv_sec++;
|
||||||
|
t1.tv_usec -= 1000000;
|
||||||
|
}
|
||||||
|
return t1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
static inline bool operator < (const timeval& t1, const timeval& t2)
|
||||||
|
{
|
||||||
|
return (t1.tv_sec < t2.tv_sec)
|
||||||
|
|| (t1.tv_sec == t2.tv_sec && t1.tv_usec < t2.tv_usec);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _FOBJECT_H
|
|
@ -0,0 +1,17 @@
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
8x16graph.bdf \
|
||||||
|
8x16graph.pcf.gz \
|
||||||
|
8x16std \
|
||||||
|
bdf2c.sh \
|
||||||
|
bdf2pcf.sh \
|
||||||
|
font2c.sh \
|
||||||
|
fonts.alias \
|
||||||
|
fonts.dir \
|
||||||
|
Makefile.am \
|
||||||
|
newfont.h \
|
||||||
|
unicodemap.h \
|
||||||
|
vgafont.h
|
|
@ -0,0 +1,445 @@
|
||||||
|
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2013 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@
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Makefile.am - the Final Cut library
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
|
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 = src/fonts
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||||
|
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)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
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)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
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@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
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@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
SO_VERSION = @SO_VERSION@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
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@
|
||||||
|
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 = \
|
||||||
|
8x16graph.bdf \
|
||||||
|
8x16graph.pcf.gz \
|
||||||
|
8x16std \
|
||||||
|
bdf2c.sh \
|
||||||
|
bdf2pcf.sh \
|
||||||
|
font2c.sh \
|
||||||
|
fonts.alias \
|
||||||
|
fonts.dir \
|
||||||
|
Makefile.am \
|
||||||
|
newfont.h \
|
||||||
|
unicodemap.h \
|
||||||
|
vgafont.h
|
||||||
|
|
||||||
|
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 src/fonts/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu src/fonts/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
tags TAGS:
|
||||||
|
|
||||||
|
ctags CTAGS:
|
||||||
|
|
||||||
|
cscope cscopelist:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(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
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
N=0
|
||||||
|
HEIGHT=16
|
||||||
|
FONTFILE="8x16graph.bdf"
|
||||||
|
|
||||||
|
(
|
||||||
|
echo -e "// newfont.h\n"
|
||||||
|
echo -e "#ifndef _FNEWFONT_H"
|
||||||
|
echo -e "#define _FNEWFONT_H\n"
|
||||||
|
echo -e "\nstatic unsigned char __8x16graph[] =\n{"
|
||||||
|
|
||||||
|
grep -A${HEIGHT} ^BITMAP "$FONTFILE" \
|
||||||
|
| tr '\n' ',' \
|
||||||
|
| sed -e 's/BITMAP,//g' \
|
||||||
|
| sed -e 's/--,/\n/g' \
|
||||||
|
| tr '[A-Z]' '[a-z]' \
|
||||||
|
| sed -e 's/,/, /g' \
|
||||||
|
| sed -e 's/\([0-9a-f][0-9a-f]\)/0x\1/g' \
|
||||||
|
| sed -e 's/^0/ 0/g' \
|
||||||
|
| sed -e '$s/, $/ \n/' \
|
||||||
|
| while IFS=$'\n'; read LINE
|
||||||
|
do
|
||||||
|
echo "$LINE /* $N */"
|
||||||
|
let N++
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "};"
|
||||||
|
echo -e "\n#endif // _FNEWFONT_H"
|
||||||
|
) > newfont.h
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
bdftopcf -o 8x16graph.pcf 8x16graph.bdf
|
||||||
|
gzip -9 8x16graph.pcf
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
N=0
|
||||||
|
HEIGHT=16
|
||||||
|
FONTFILE="8x16std"
|
||||||
|
|
||||||
|
(
|
||||||
|
echo -e "// vgafont.h\n"
|
||||||
|
echo -e "#ifndef _FVGAFONT_H"
|
||||||
|
echo -e "#define _FVGAFONT_H\n"
|
||||||
|
|
||||||
|
xxd -g 1 -i -c $HEIGHT $FONTFILE \
|
||||||
|
| sed -e 's/ {$/\n{/' \
|
||||||
|
| sed -e 's/^unsigned/static unsigned/' \
|
||||||
|
| sed -e '/len = /d' \
|
||||||
|
| while IFS=$'\n'; read LINE
|
||||||
|
do
|
||||||
|
if [ "${LINE:0:1}" != " " ]
|
||||||
|
then
|
||||||
|
echo "$LINE"
|
||||||
|
else
|
||||||
|
echo "$LINE /* $N */" | sed -e 's/\([0-9]\) \/\*/\1 \/*/'
|
||||||
|
let N++
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "\n#endif // _FVGAFONT_H"
|
||||||
|
) > vgafont.h
|