wmcalc: Add version 0.4 to repository.
Source obtained from: ftp://ftp.afterstep.org/stable/rpms/misc-tarballs/wmcalc-0.4.tar.gz
This commit is contained in:
parent
4b9666e97d
commit
a50001bbe9
35
wmcalc/.wmcalc
Normal file
35
wmcalc/.wmcalc
Normal file
|
@ -0,0 +1,35 @@
|
|||
# wmcalc Configuration File
|
||||
# Last Manual Update: 10/29/00
|
||||
|
||||
# General Notes:
|
||||
# * There must be a tab character '\t' between the variable name and
|
||||
# the value, not a series of spaces.
|
||||
# * wmcalc is case sensitive when reading these variables. Examine the
|
||||
# wmcalc_g.h file for currently defined variables.
|
||||
|
||||
#Calculator Memory Locations
|
||||
#Note: These must all exist, though they may be in any order
|
||||
Mem0 0.000000
|
||||
Mem1 0.000000
|
||||
MEM2 2.718282
|
||||
MEM3 3.141593
|
||||
Mem4 0.000000
|
||||
Mem5 0.000000
|
||||
Mem6 0.000000
|
||||
Mem7 0.000000
|
||||
Mem8 0.000000
|
||||
Mem9 0.000000
|
||||
|
||||
# The CalcStart variable is intended to allow the user to start a larger
|
||||
# calculator for more complicated needs. Everything after the tab '\t'
|
||||
# character is sent unmodified in a system() call, so anything you can type
|
||||
# at the command prompt may be put here.
|
||||
#CalcStart xterm -T "Basic Calculator" -e bc &
|
||||
#CalcStart xterm -T "gnuplot" -sb -sl 500 -e gnuplot &
|
||||
CalcStart xcalc &
|
||||
|
||||
# The ImagChar variable allows the user to choose between 'i' and 'j' to
|
||||
# represent the sqrt(-1). (Electrical Engineers (such as myself) use 'j'
|
||||
# rather than 'i.')
|
||||
#ImagChar i
|
||||
ImagChar j
|
35
wmcalc/.wmcalc.bk
Normal file
35
wmcalc/.wmcalc.bk
Normal file
|
@ -0,0 +1,35 @@
|
|||
# wmcalc Configuration File
|
||||
# Last Manual Update: 10/29/00
|
||||
|
||||
# General Notes:
|
||||
# * There must be a tab character '\t' between the variable name and
|
||||
# the value, not a series of spaces.
|
||||
# * wmcalc is case sensitive when reading these variables. Examine the
|
||||
# wmcalc_g.h file for currently defined variables.
|
||||
|
||||
#Calculator Memory Locations
|
||||
#Note: These must all exist, though they may be in any order
|
||||
Mem0 0.000000
|
||||
Mem1 0.000000
|
||||
MEM2 2.718282
|
||||
MEM3 3.1415926535
|
||||
Mem4 0.000000
|
||||
Mem5 0.000000
|
||||
Mem6 0.000000
|
||||
Mem7 0.000000
|
||||
Mem8 0.000000
|
||||
Mem9 0.000000
|
||||
|
||||
# The CalcStart variable is intended to allow the user to start a larger
|
||||
# calculator for more complicated needs. Everything after the tab '\t'
|
||||
# character is sent unmodified in a system() call, so anything you can type
|
||||
# at the command prompt may be put here.
|
||||
#CalcStart xterm -T "Basic Calculator" -e bc &
|
||||
#CalcStart xterm -T "gnuplot" -sb -sl 500 -e gnuplot &
|
||||
CalcStart xcalc &
|
||||
|
||||
# The ImagChar variable allows the user to choose between 'i' and 'j' to
|
||||
# represent the sqrt(-1). (Electrical Engineers (such as myself) use 'j'
|
||||
# rather than 'i.')
|
||||
#ImagChar i
|
||||
ImagChar j
|
35
wmcalc/.wmcalc.bkp
Normal file
35
wmcalc/.wmcalc.bkp
Normal file
|
@ -0,0 +1,35 @@
|
|||
# wmcalc Configuration File
|
||||
# Last Manual Update: 10/29/00
|
||||
|
||||
# General Notes:
|
||||
# * There must be a tab character '\t' between the variable name and
|
||||
# the value, not a series of spaces.
|
||||
# * wmcalc is case sensitive when reading these variables. Examine the
|
||||
# wmcalc_g.h file for currently defined variables.
|
||||
|
||||
#Calculator Memory Locations
|
||||
#Note: These must all exist, though they may be in any order
|
||||
Mem0 0.000000
|
||||
Mem1 0.000000
|
||||
MEM2 2.718282
|
||||
MEM3 3.1415926535
|
||||
Mem4 0.000000
|
||||
Mem5 0.000000
|
||||
Mem6 0.000000
|
||||
Mem7 0.000000
|
||||
Mem8 0.000000
|
||||
Mem9 0.000000
|
||||
|
||||
# The CalcStart variable is intended to allow the user to start a larger
|
||||
# calculator for more complicated needs. Everything after the tab '\t'
|
||||
# character is sent unmodified in a system() call, so anything you can type
|
||||
# at the command prompt may be put here.
|
||||
#CalcStart xterm -T "Basic Calculator" -e bc &
|
||||
#CalcStart xterm -T "gnuplot" -sb -sl 500 -e gnuplot &
|
||||
CalcStart xcalc &
|
||||
|
||||
# The ImagChar variable allows the user to choose between 'i' and 'j' to
|
||||
# represent the sqrt(-1). (Electrical Engineers (such as myself) use 'j'
|
||||
# rather than 'i.')
|
||||
#ImagChar i
|
||||
ImagChar j
|
339
wmcalc/COPYING
Normal file
339
wmcalc/COPYING
Normal file
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
28
wmcalc/Makefile
Normal file
28
wmcalc/Makefile
Normal file
|
@ -0,0 +1,28 @@
|
|||
INCLUDES =-I/usr/X11R6/include/X11 -I/usr/local/include
|
||||
LIBINC =-L/usr/X11R6/lib
|
||||
LIBS = -lX11 -lXpm -lXext -lm
|
||||
|
||||
TARGET = wmcalc
|
||||
OBJECTS = wmcalc.o readln.o wmcalcswitch.o wmcalcfunc.o
|
||||
DESTDIR =
|
||||
PREFIX = /usr/local
|
||||
BINDIR = ${PREFIX}/bin
|
||||
MANDIR = ${PREFIX}/share/man
|
||||
CONF = /etc
|
||||
INSTALL = /usr/bin/install
|
||||
INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
|
||||
INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
|
||||
|
||||
.c.o:
|
||||
gcc -O2 -c -Wall ${INCLUDES} ${FLAGS} $< -o $*.o
|
||||
|
||||
${TARGET}: ${OBJECTS}
|
||||
gcc -O2 -o ${TARGET} ${OBJECTS} ${LIBINC} ${LIBS}
|
||||
|
||||
clean::
|
||||
for i in ${OBJECTS}; do if [ -e $$i ] ; then rm $$i; fi; done
|
||||
if [ -e ${TARGET} ] ; then rm ${TARGET}; fi
|
||||
|
||||
install::
|
||||
${INSTALL_PROGRAM} wmcalc ${DESTDIR}${BINDIR}
|
||||
${INSTALL_FILE} wmcalc.conf ${DESTDIR}${CONF}
|
212
wmcalc/README
Normal file
212
wmcalc/README
Normal file
|
@ -0,0 +1,212 @@
|
|||
wmcalc Ver. 0 Rel 4
|
||||
-------------------------------------------------------------
|
||||
Code is loosely based on wmppp, wmload, wmtime, wmcp, and asbutton
|
||||
Original Author: Edward H. Flora <ehflora@access1.net>
|
||||
Current Maintainer: Gordon Fraser <gordon@debian.org>
|
||||
Ver 0 Rel 4 May 25, 2002
|
||||
|
||||
DESCRIPTION:
|
||||
------------
|
||||
wmcalc is a program designed to act as a simple four-function
|
||||
calculator. It is different from other calculator programs, however
|
||||
in that it is designed to take up very little desktop space. As such,
|
||||
it can be left running on the desktop at all times. It is intended to
|
||||
placed in the WindowMaker dock, or in Wharf under Afterstep, though it
|
||||
should run as well under any window manager.
|
||||
|
||||
LICENSING:
|
||||
----------
|
||||
This program is released under the GPL license. A copy (in case you
|
||||
don't already have hundreds of them floating around) can be found in
|
||||
this distribution in the file COPYING.
|
||||
|
||||
CONTRIBUTORS:
|
||||
-------------
|
||||
Co-Developers:
|
||||
Rick Stuart <stuart@xnet.com>
|
||||
Philippe Trbich <philippe.trbich@free.fr>
|
||||
Original Web Page Designs:
|
||||
Jon Bruno <bruno@ksu.edu>
|
||||
Thanks to:
|
||||
Ben Cohen <buddog@aztec.asu.edu>
|
||||
original author of wmcp (et al.)
|
||||
The contributors listed above are not involved with the development of
|
||||
wmcalc. I'm listing them here as thanks for helping out, catching
|
||||
bugs in the code, etc.
|
||||
|
||||
INSTALLATION:
|
||||
-------------
|
||||
Untar the file:
|
||||
tar xvzf wmcalc-0.3.tar.gz
|
||||
|
||||
CD to source directory:
|
||||
cd wmcalc-0.3
|
||||
|
||||
Compile it:
|
||||
make clean; make
|
||||
|
||||
Copy the config file:
|
||||
cp .wmcalc ~
|
||||
|
||||
Put the executable somewhere in your path:
|
||||
mv wmcalc /usr/local/bin (or anyhere in your path)
|
||||
|
||||
Run it:
|
||||
wmcalc &
|
||||
|
||||
Grab the appicon and move it to the dock.
|
||||
Change the settings to start with Windowmaker
|
||||
|
||||
Afterstep Wharf 1.6.??: (I don't use Afterstep anymore, so...)
|
||||
*Wharf wmcalc -Swallow "wmcalc" wmcalc &
|
||||
|
||||
***Note***:
|
||||
The appicon only has a two pixel border where you can grab
|
||||
and move it. It is easiest to grab along the bottom edge.
|
||||
|
||||
If make doesn't work, you may need to fiddle with the settings in
|
||||
the Makefile.
|
||||
|
||||
Tested on: (Well, it runs, I don't know if 'Tested' is quite right...)
|
||||
WindowMaker-0.62.1
|
||||
X Clients: Red Hat 6.0, Kernel 2.2.8
|
||||
|
||||
USAGE:
|
||||
------
|
||||
usage: wmcalc [-g geometry] [-d dpy] [-v] [-f configfilename] [-h]
|
||||
|
||||
-g <geometry> Window Geometry - ie: 64x64+10+10
|
||||
-d <display> Display - ie: 127.0.0.1:0.0
|
||||
-v Verbose Mode.
|
||||
-h Help. This message.
|
||||
-f <filename> Full path to configuration file to use.
|
||||
|
||||
Buttons are defined as:
|
||||
____________________
|
||||
| x00 | where: x = 1 for Left Mouse Button
|
||||
| 0 1 2 3 4 5 6 7 8 9| x = 2 for Middle Mouse Button
|
||||
|--------------------| x = 3 for Right Mouse Button
|
||||
|x01 x02 x03 x04 x05 |
|
||||
|x06 x07 x08 x09 x10 | Note: the numbers 0..9 are the indicators
|
||||
|x11 x12 x13 x14 x15 | for memory cells 0..9 respectively
|
||||
|x16 x17 x18 x19 x20 |
|
||||
--------------------
|
||||
|
||||
Button Functions:
|
||||
100 Reinitialize the calculator, and both Registers
|
||||
(Clear All)
|
||||
200 Clear all the memory registers (0..10)
|
||||
300 Clear the current number being entered only
|
||||
x11 Start a program defined by CalcStart variable in config file
|
||||
1yy Perform function shown on button
|
||||
2yy Recall number from memory location [0-9] to display
|
||||
for calculation
|
||||
if yy = 2,3,4, 7,8,9, 12, 13, 14, 17
|
||||
otherwise, can run a user-defined function (not implemented)
|
||||
3yy Store Displayed number in memory location [0-9]
|
||||
if yy = 2,3,4, 7,8,9, 12,13,14, 17
|
||||
otherwise, can run a user-defined function (not implemented)
|
||||
1xx Hopefully the other functions are obvious from their
|
||||
button graphics.
|
||||
|
||||
|
||||
NOTES:
|
||||
------
|
||||
I am sure that there are better ways to do some of the things that are
|
||||
done in wmcalc. In fact, wmcalc is basically a series of hacks, but appears
|
||||
to be stable...
|
||||
|
||||
The configuration file (.wmcalc) is written by wmcalc whenever the user
|
||||
requests to store a number to memory. As a part of this process, a file
|
||||
is written to /tmp. If /tmp is not accessible, it tries in the user's home
|
||||
directory, as defined by the environment variable HOME. This file is
|
||||
erased as soon as it is written over the main configuration file.
|
||||
|
||||
Changes made to the configuration file (other than memory stores) will not
|
||||
take effect until the next time wmcalc is started.
|
||||
|
||||
Although one can only "Clear" all unlocked memory locations, one may clear the
|
||||
display and then "store" a '0' in the memory location, providing the
|
||||
ability to clear individual cells.
|
||||
|
||||
The fonts are stored in charmap.xpm. This file may be edited to
|
||||
change colors or fonts, but the app must be recompiled for the changes
|
||||
to take effect. The buttons are located in calcbuttons.xpm. This
|
||||
file may be edited, though the borders should stay where they are
|
||||
unless you want to change the button regions that are hard coded.
|
||||
The background border is defined in backdrop.xpm.
|
||||
|
||||
"C code. C code run. Run, code, run.
|
||||
PLEASE!?!?!?!?!?!?"
|
||||
|
||||
CHANGE LOG:
|
||||
-----------
|
||||
0.3 Added "Locked" memory capabilities via config file
|
||||
General Code clean-up
|
||||
Keyboard Support - may not be platform independent
|
||||
|
||||
0.21 Added Display of memory locations containing non-zero data
|
||||
|
||||
0.2 First psuedo-major enhancements
|
||||
Added Memories, Config File, CalcStart button
|
||||
Bug Fix - Squared imaginary number is now negative
|
||||
|
||||
0.1 First real version.
|
||||
Limited functionality.
|
||||
|
||||
0.0 Original version. Very limited distribution, as it was not a
|
||||
functional calculator, but just tested the display. It was more
|
||||
of a proof of concept.
|
||||
|
||||
TODO:
|
||||
-----
|
||||
These are partially a dream list. I don't know when they'll get done,
|
||||
as I'm pretty busy at work. Anyone want to tackle these??
|
||||
|
||||
* Re-implement the register/display design to allow full double precision.
|
||||
|
||||
* Add keyboard support (I've tried to do this, with no luck. Probably a
|
||||
'focus' problem.
|
||||
|
||||
* Add button press animation.
|
||||
|
||||
* Add a log file, either as a paper tape implementation, or a file
|
||||
that one can intentionally write data to. (This could grow to a pipe to
|
||||
plotting programs, etc, though this is a bit extreme...)
|
||||
|
||||
RPN:
|
||||
I have no intention at this time to add in an RPN format, as I
|
||||
personally do not like it. It should be noted that I have NOT used it
|
||||
extensively, and I've heard that I would like it. But, until then...
|
||||
|
||||
BUGS:
|
||||
-----
|
||||
Remember, they're just undocumented FEATURES!!!
|
||||
|
||||
* The display can lose the last digit of a three character exponential
|
||||
notation number.
|
||||
|
||||
* Due to an implementation fault, at every step of calculations, precision
|
||||
is lost, as the number is only as accurate at that displayed.
|
||||
|
||||
* Order of operations: 1 + 2 * 5 = 15, not 11, as it should.
|
||||
|
||||
* Changing sign when the display is blank results in "-0". Further entry
|
||||
yields "-05...," but this does not affect calculations.
|
||||
|
||||
* Changes to the configuration file do not take effect until wmcalc is
|
||||
restarted. (Note that file is written whenever a "store memory
|
||||
location" is requested)
|
||||
|
||||
Probably many more. Send comments (preferably with fixes) to
|
||||
<ehflora@access1.net>
|
||||
I will happily include your name in the documentation for the program
|
||||
if you send me a bug report and the correction. This can be in the
|
||||
form of a patch file, or ASCII text to exchange, or an equivalent.
|
||||
Note, this program is written in C. Not C++. I'm not a computer
|
||||
science person, I don't do objects. Therefore, bug fixes that convert
|
||||
this to C++ don't count, since I would no longer be able to support
|
||||
the program. Of course, you can modify the code and release a new
|
||||
application.
|
||||
|
||||
Thanks, and Good Luck.
|
126
wmcalc/backdrop.xpm
Normal file
126
wmcalc/backdrop.xpm
Normal file
|
@ -0,0 +1,126 @@
|
|||
/* XPM */
|
||||
static char * backdrop_xpm[] = {
|
||||
"64 64 59 1",
|
||||
" c None",
|
||||
". c #F3F3F3",
|
||||
"+ c #000000",
|
||||
"@ c #E0E0E0",
|
||||
"# c #516161",
|
||||
"$ c #A2A2B2",
|
||||
"% c #A2A2A2",
|
||||
"& c #A292B2",
|
||||
"* c #92A2A2",
|
||||
"= c #A292A2",
|
||||
"- c #9292A2",
|
||||
"; c #929292",
|
||||
"> c #9282A2",
|
||||
", c #829292",
|
||||
"' c #928292",
|
||||
") c #828292",
|
||||
"! c #828282",
|
||||
"~ c #827192",
|
||||
"{ c #615161",
|
||||
"] c #92A2B2",
|
||||
"^ c #9292B2",
|
||||
"/ c #8292A2",
|
||||
"( c #8282A2",
|
||||
"_ c #718292",
|
||||
": c #718282",
|
||||
"< c #C7C7C7",
|
||||
"[ c #003F18",
|
||||
"} c #C7C3C7",
|
||||
"| c #717182",
|
||||
"1 c #514151",
|
||||
"2 c #415151",
|
||||
"3 c #717171",
|
||||
"4 c #414151",
|
||||
"5 c #617182",
|
||||
"6 c #415141",
|
||||
"7 c #716182",
|
||||
"8 c #414141",
|
||||
"9 c #617171",
|
||||
"0 c #413041",
|
||||
"a c #304141",
|
||||
"b c #716171",
|
||||
"c c #616171",
|
||||
"d c #616182",
|
||||
"e c #303030",
|
||||
"f c #616161",
|
||||
"g c #303041",
|
||||
"h c #516171",
|
||||
"i c #304130",
|
||||
"j c #615171",
|
||||
"k c #203030",
|
||||
"l c #302030",
|
||||
"m c #515171",
|
||||
"n c #515161",
|
||||
"o c #827182",
|
||||
"p c #202030",
|
||||
"q c #717192",
|
||||
"r c #202020",
|
||||
"s c #515151",
|
||||
"t c #413051",
|
||||
"...............................................................+",
|
||||
".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+",
|
||||
".@$%$%&%&%&%&*=-&*=-=-=---=--;>;>;>;>,>,>,')',')')'))!)))!~!~!{+",
|
||||
".@$$*$]$*$*$*&*&*^*-*-*-*-*-/---,-,-,>,>,(,>,(,),),)))))_)_):)#+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".++[[[+++[[[+++[[[+++[[[+++[[[+++[[[+++[[[+++[[[+++[[[+++[[[++<+",
|
||||
".+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+[[[[[+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+",
|
||||
".@=<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}||1+",
|
||||
".@*<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}||2+",
|
||||
".@=<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}|31+",
|
||||
".@-<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}||4+",
|
||||
".@=<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}|31+",
|
||||
".@*<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}5|6+",
|
||||
".@-<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}734+",
|
||||
".@-<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}5|8+",
|
||||
".@><+++++++++++++++++++++++++++++++++++++++++++++++++++++++}790+",
|
||||
".@-<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}978+",
|
||||
".@-<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}738+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}97a+",
|
||||
".@><+++++++++++++++++++++++++++++++++++++++++++++++++++++++}790+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}97a+",
|
||||
".@><+++++++++++++++++++++++++++++++++++++++++++++++++++++++}b90+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}97a+",
|
||||
".@'<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}7c0+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}9da+",
|
||||
".@><+++++++++++++++++++++++++++++++++++++++++++++++++++++++}bc0+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}9ca+",
|
||||
".@'<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}cc0+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}9ca+",
|
||||
".@'<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}bc0+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}cce+",
|
||||
".@'<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}cfg+",
|
||||
".@,<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}hci+",
|
||||
".@'<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}jfg+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}cck+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}jfl+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}#ck+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}jfe+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}hck+",
|
||||
".@~<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}j#l+",
|
||||
".@_<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}#jk+",
|
||||
".@)<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}jfl+",
|
||||
".@:<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}#jk+",
|
||||
".@~<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}j#l+",
|
||||
".@:<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}#mk+",
|
||||
".@~<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}{nl+",
|
||||
".@:<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}#jk+",
|
||||
".@~<+++++++++++++++++++++++++++++++++++++++++++++++++++++++}{nl+",
|
||||
".@:<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}#mk+",
|
||||
".@~:o|o|o|o|o||373|373797379b9b9bcbcbccfcccfjfjfjfj#j#j#{n{n{np+",
|
||||
".@:q:~:q:|||||||||9|5|979797979d9ccc9ccccchchc#jhj#j#j#m#mnm#nr+",
|
||||
".@{snsnsns1s12121614181848t848080a0a0i0egegegelelelelklplrlrprp+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
47
wmcalc/calcbuttons.xpm
Normal file
47
wmcalc/calcbuttons.xpm
Normal file
|
@ -0,0 +1,47 @@
|
|||
/* XPM */
|
||||
static char * calcbuttons_xpm[] = {
|
||||
"53 40 4 1",
|
||||
" c None",
|
||||
". c #FFFFFF",
|
||||
"+ c #D5D6D5",
|
||||
"@ c #000000",
|
||||
"...........+.........+.........+.........+..........+",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++@+++@",
|
||||
".++++@@@@++@.+@@@@@++@.++@@@+++@.++@@@+++@++++++@+++@",
|
||||
".++++@+++++@.+++++@++@.+@+++@++@.+@+++@++@+++++@++++@",
|
||||
".++++@+++++@.++++@+++@.++@@@+++@.+@+++@++@++++@+++++@",
|
||||
".++@+@+++++@.+++@++++@.+@+++@++@.++@@@@++@+++@++++++@",
|
||||
".+++@@+++++@.+++@++++@.+@+++@++@.+++++@++@++@+++++++@",
|
||||
".++++@+++++@.+++@++++@.++@@@+++@.++@@@+++@++@+++++++@",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
"+@@@@@@@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@",
|
||||
"...........+.........+.........+.........+..........+",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
".++++++@+++@.++++@+++@.+@@@@@++@.++@@@+++@++@+++@+++@",
|
||||
".+++++++@++@.+@++@+++@.+@++++++@.+@++++++@+++@+@++++@",
|
||||
".++++++@+++@.+@++@+++@.+@@@@+++@.+@@@@+++@++++@+++++@",
|
||||
".++@+@+@@++@.+@@@@@++@.+++++@++@.+@+++@++@+++@+@++++@",
|
||||
".+++@++++++@.++++@+++@.+@+++@++@.+@+++@++@++@+++@+++@",
|
||||
".++@+@+++++@.++++@+++@.++@@@+++@.++@@@+++@++++++++++@",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
"+@@@@@@@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@",
|
||||
"...........+.........+.........+.........+..........+",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
".+@@@@@@@@+@.++++@+++@.++@@@+++@.+@@@@+++@++++++++++@",
|
||||
".+@++++++@+@.+++@@+++@.+@+++@++@.+++++@++@++++++++++@",
|
||||
".+@@@@@@@@+@.++++@+++@.+++++@++@.++@@@+++@++@@@@@+++@",
|
||||
".+@+@+@+@@+@.++++@+++@.++@@@+++@.+++++@++@++++++++++@",
|
||||
".+@@+@+@+@+@.++++@+++@.+@++++++@.+@+++@++@++++++++++@",
|
||||
".+@@@@@@@@+@.+++@@@++@.+@@@@@++@.++@@@+++@++++++++++@",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
"+@@@@@@@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@",
|
||||
"...........+.........+.........+.........+..........+",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
".+++@+++@++@.++@@@+++@.++++++++@.++++++++@++++@+++++@",
|
||||
".++@@@+@+++@.+@+++@++@.++++++++@.++@@@@++@++++@+++++@",
|
||||
".+++@+@++++@.+@+++@++@.++++++++@.++++++++@++@@@@@+++@",
|
||||
".++++@+++++@.+@+++@++@.++++++++@.++@@@@++@++++@+++++@",
|
||||
".+++@++++++@.+@+++@++@.+++@@+++@.++++++++@++++@+++++@",
|
||||
".++@++@@@++@.++@@@+++@.+++@@+++@.++++++++@++++++++++@",
|
||||
".++++++++++@.++++++++@.++++++++@.++++++++@++++++++++@",
|
||||
"+@@@@@@@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@"};
|
79
wmcalc/charmap-colors.xpm
Normal file
79
wmcalc/charmap-colors.xpm
Normal file
|
@ -0,0 +1,79 @@
|
|||
/* XPM */
|
||||
static char * charmap_colors_xpm[] = {
|
||||
"61 64 12 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #003F18",
|
||||
"@ c #00FF00",
|
||||
"# c #481814",
|
||||
"$ c #FF0000",
|
||||
"% c #000064",
|
||||
"& c #0048FC",
|
||||
"* c #474700",
|
||||
"= c #FFFF00",
|
||||
"- c #38184C",
|
||||
"; c #BA55D3",
|
||||
".............................................................",
|
||||
".+@@@+.++@++.+@@@+.@@@@@.+++@+.@@@@@.++@@+.@@@@@.+@@@+.+@@@+.",
|
||||
".@+++@.+@@++.@+++@.+++@+.++@@+.@++++.+@+++.++++@.@+++@.@+++@.",
|
||||
".@+++@.++@++.++++@.++@++.+@+@+.@@@@+.@++++.+++@+.@+++@.@+++@.",
|
||||
".@+++@.++@++.+++@+.+++@+.@++@+.++++@.@@@@+.++@++.+@@@+.+@@@@.",
|
||||
".@+++@.++@++.++@++.++++@.@@@@@.++++@.@+++@.+@+++.@+++@.++++@.",
|
||||
".@+++@.++@++.+@+++.@+++@.+++@+.@+++@.@+++@.+@+++.@+++@.+++@+.",
|
||||
".+@@@+.+@@@+.@@@@@.+@@@+.+++@+.+@@@+.+@@@+.+@+++.+@@@+.+@@++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+@@@+.@@@@+.+@@@+.@@@@+.@@@@@.@@@@@.+@@@+.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@++++.@+++@.",
|
||||
".+++++.+++++.@@@@@.@@@@+.@++++.@+++@.@@@@+.@@@@+.@+@@@.@@@@@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@@@@+.+@@@+.@@@@+.@@@@@.@++++.+@@@@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@+.++@@@.@+++@.@++++.@+++@.@+++@.++@++.@@@@+.+@@@+.@@@@+.",
|
||||
".++@++.+++@+.@++@+.@++++.@@+@@.@+++@.+@+@+.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@+@++.@++++.@+@+@.@@++@.@+++@.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@@+++.@++++.@+@+@.@+@+@.@+++@.@@@@+.@+++@.@@@@+.",
|
||||
".++@++.+++@+.@+@++.@++++.@+++@.@++@@.@+++@.@++++.@+@+@.@+@++.",
|
||||
".++@++.@++@+.@++@+.@++++.@+++@.@+++@.+@+@+.@++++.@++@+.@++@+.",
|
||||
".+@@@+.+@@++.@+++@.@@@@@.@+++@.@+++@.++@++.@++++.+@@+@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@@.@@@@@.@+++@.@+++@.@+++@.@+++@.@+++@.@@@@@.+++++.+++++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.@+++@.@+++@.++++@.+++++.++@++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.+@+@+.@+++@.+++@+.+++++.++@++.",
|
||||
".+@@@+.++@++.@+++@.@+++@.@+@+@.++@++.+@+@+.++@++.@@@@@.@@@@@.",
|
||||
".++++@.++@++.@+++@.@+++@.@+@+@.+@+@+.++@++.+@+++.+++++.++@++.",
|
||||
".++++@.++@++.@+++@.+@+@+.@+@+@.@+++@.++@++.@++++.+++++.++@++.",
|
||||
".@@@@+.++@++.+@@@+.++@++.+@+@+.@+++@.++@++.@@@@@.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++@+.+++++.+++++.++@@+.+++++.+++++.+++++.+++++.",
|
||||
".+++++.++@++.+++++.+++++.+++++.+@++@.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+++++.++@@+.@+@@+.+@@@+.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.+@@++.+++@+.@@++@.++++@.@@@++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@+.++@++.+++@+.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.++@++.@++@+.@+++@.@+++@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+@@@+.+@@++.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".#$$$#.%&&&%.*===*.+@@@+.-;;;-.+++++.+++++.+++++.+++++.......",
|
||||
".$###$.&%%%&.=***=.@+++@.;---;.+++++.+++++.+++++.+++++..@@@..",
|
||||
".$###$.&%%%&.=***=.@+++@.;---;.+++++.+++++.+++++.+++++.@@@@@.",
|
||||
".#$$$#.%&&&%.*===*.+@@@+.-;;;-.+++++.+++++.+++++.+++++.......",
|
||||
".$###$.&%%%&.=***=.@+++@.;---;.+++++.+++++.+++++.+++++..+++..",
|
||||
".$###$.&%%%&.=***=.@+++@.;---;.+++++.+++++.+++++.+++++.+++++.",
|
||||
".#$$$#.%&&&%.*===*.+@@@+.-;;;-.+++++.+++++.+++++.+++++.......",
|
||||
".............................................................",
|
||||
".$$$$$.&&&&&.=====.@@@@@.;;;;;.#####.%%%%%.*****.+++++.------"};
|
71
wmcalc/charmap.xpm
Normal file
71
wmcalc/charmap.xpm
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* XPM */
|
||||
static char * charmap_xpm[] = {
|
||||
"61 63 5 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #003F18",
|
||||
"@ c #00FF00",
|
||||
"# c #D30000",
|
||||
".............................................................",
|
||||
".+@@@+.++@++.+@@@+.@@@@@.+++@+.@@@@@.++@@+.@@@@@.+@@@+.+@@@+.",
|
||||
".@+++@.+@@++.@+++@.+++@+.++@@+.@++++.+@+++.++++@.@+++@.@+++@.",
|
||||
".@+++@.++@++.++++@.++@++.+@+@+.@@@@+.@++++.+++@+.@+++@.@+++@.",
|
||||
".@+++@.++@++.+++@+.+++@+.@++@+.++++@.@@@@+.++@++.+@@@+.+@@@@.",
|
||||
".@+++@.++@++.++@++.++++@.@@@@@.++++@.@+++@.+@+++.@+++@.++++@.",
|
||||
".@+++@.++@++.+@+++.@+++@.+++@+.@+++@.@+++@.+@+++.@+++@.+++@+.",
|
||||
".+@@@+.+@@@+.@@@@@.+@@@+.+++@+.+@@@+.+@@@+.+@+++.+@@@+.+@@++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+@@@+.@@@@+.+@@@+.@@@@+.@@@@@.@@@@@.+@@@+.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@++++.@+++@.",
|
||||
".+++++.+++++.@@@@@.@@@@+.@++++.@+++@.@@@@+.@@@@+.@+@@@.@@@@@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@@@@+.+@@@+.@@@@+.@@@@@.@++++.+@@@@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@+.++@@@.@+++@.@++++.@+++@.@+++@.++@++.@@@@+.+@@@+.@@@@+.",
|
||||
".++@++.+++@+.@++@+.@++++.@@+@@.@+++@.+@+@+.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@+@++.@++++.@+@+@.@@++@.@+++@.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@@+++.@++++.@+@+@.@+@+@.@+++@.@@@@+.@+++@.@@@@+.",
|
||||
".++@++.+++@+.@+@++.@++++.@+++@.@++@@.@+++@.@++++.@+@+@.@+@++.",
|
||||
".++@++.@++@+.@++@+.@++++.@+++@.@+++@.+@+@+.@++++.@++@+.@++@+.",
|
||||
".+@@@+.+@@++.@+++@.@@@@@.@+++@.@+++@.++@++.@++++.+@@+@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@@.@@@@@.@+++@.@+++@.@+++@.@+++@.@+++@.@@@@@.+++++.+++++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.@+++@.@+++@.++++@.+++++.++@++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.+@+@+.@+++@.+++@+.+++++.++@++.",
|
||||
".+@@@+.++@++.@+++@.@+++@.@+@+@.++@++.+@+@+.++@++.@@@@@.@@@@@.",
|
||||
".++++@.++@++.@+++@.@+++@.@+@+@.+@+@+.++@++.+@+++.+++++.++@++.",
|
||||
".++++@.++@++.@+++@.+@+@+.@+@+@.@+++@.++@++.@++++.+++++.++@++.",
|
||||
".@@@@+.++@++.+@@@+.++@++.+@+@+.@+++@.++@++.@@@@@.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++@+.+++++.+++++.++@@+.+++++.+++++.+++++.+++++.",
|
||||
".+++++.++@++.+++++.+++++.+++++.+@++@.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+++++.++@@+.@+@@+.+@@@+.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.+@@++.+++@+.@@++@.++++@.@@@++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@+.++@++.+++@+.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.++@++.@++@+.@+++@.@+++@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+@@@+.+@@++.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++..@@@..",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.@@@@@.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++..###..",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.#####.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.......",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++..@@@..",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.@@@@@.",
|
||||
"............................................................."};
|
70
wmcalc/charmap_old.xpm
Normal file
70
wmcalc/charmap_old.xpm
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* XPM */
|
||||
static char * charmap_xpm[] = {
|
||||
"61 63 4 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #003F18",
|
||||
"@ c #00FF00",
|
||||
".............................................................",
|
||||
".+@@@+.++@++.+@@@+.@@@@@.+++@+.@@@@@.++@@+.@@@@@.+@@@+.+@@@+.",
|
||||
".@+++@.+@@++.@+++@.+++@+.++@@+.@++++.+@+++.++++@.@+++@.@+++@.",
|
||||
".@+++@.++@++.++++@.++@++.+@+@+.@@@@+.@++++.+++@+.@+++@.@+++@.",
|
||||
".@+++@.++@++.+++@+.+++@+.@++@+.++++@.@@@@+.++@++.+@@@+.+@@@@.",
|
||||
".@+++@.++@++.++@++.++++@.@@@@@.++++@.@+++@.+@+++.@+++@.++++@.",
|
||||
".@+++@.++@++.+@+++.@+++@.+++@+.@+++@.@+++@.+@+++.@+++@.+++@+.",
|
||||
".+@@@+.+@@@+.@@@@@.+@@@+.+++@+.+@@@+.+@@@+.+@+++.+@@@+.+@@++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+@@@+.@@@@+.+@@@+.@@@@+.@@@@@.@@@@@.+@@@+.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@++++.@+++@.",
|
||||
".+++++.+++++.@@@@@.@@@@+.@++++.@+++@.@@@@+.@@@@+.@+@@@.@@@@@.",
|
||||
".+++++.+++++.@+++@.@+++@.@++++.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@+++@.@+++@.@+++@.@++++.@++++.@+++@.@+++@.",
|
||||
".+++++.++@@+.@+++@.@@@@+.+@@@+.@@@@+.@@@@@.@++++.+@@@@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@+.++@@@.@+++@.@++++.@+++@.@+++@.++@++.@@@@+.+@@@+.@@@@+.",
|
||||
".++@++.+++@+.@++@+.@++++.@@+@@.@+++@.+@+@+.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@+@++.@++++.@+@+@.@@++@.@+++@.@+++@.@+++@.@+++@.",
|
||||
".++@++.+++@+.@@+++.@++++.@+@+@.@+@+@.@+++@.@@@@+.@+++@.@@@@+.",
|
||||
".++@++.+++@+.@+@++.@++++.@+++@.@++@@.@+++@.@++++.@+@+@.@+@++.",
|
||||
".++@++.@++@+.@++@+.@++++.@+++@.@+++@.+@+@+.@++++.@++@+.@++@+.",
|
||||
".+@@@+.+@@++.@+++@.@@@@@.@+++@.@+++@.++@++.@++++.+@@+@.@+++@.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+@@@@.@@@@@.@+++@.@+++@.@+++@.@+++@.@+++@.@@@@@.+++++.+++++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.@+++@.@+++@.++++@.+++++.++@++.",
|
||||
".@++++.++@++.@+++@.@+++@.@+++@.+@+@+.@+++@.+++@+.+++++.++@++.",
|
||||
".+@@@+.++@++.@+++@.@+++@.@+@+@.++@++.+@+@+.++@++.@@@@@.@@@@@.",
|
||||
".++++@.++@++.@+++@.@+++@.@+@+@.+@+@+.++@++.+@+++.+++++.++@++.",
|
||||
".++++@.++@++.@+++@.+@+@+.@+@+@.@+++@.++@++.@++++.+++++.++@++.",
|
||||
".@@@@+.++@++.+@@@+.++@++.+@+@+.@+++@.++@++.@@@@@.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++@+.+++++.+++++.++@@+.+++++.+++++.+++++.+++++.",
|
||||
".+++++.++@++.+++++.+++++.+++++.+@++@.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+++++.++@@+.@+@@+.+@@@+.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.+@@++.+++@+.@@++@.++++@.@@@++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@+.++@++.+++@+.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@+++.++@++.@++@+.@+++@.@+++@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".+@@@@.+@@@+.+@@++.@+++@.+@@@@.+@+++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".............................................................",
|
||||
".............................................................",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.......",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++..@@@..",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.@@@@@.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.......",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++..+++..",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.",
|
||||
".+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.+++++.......",
|
||||
"............................................................."};
|
73
wmcalc/main.xpm
Normal file
73
wmcalc/main.xpm
Normal file
|
@ -0,0 +1,73 @@
|
|||
/* XPM */
|
||||
static char * main_xpm[] = {
|
||||
"64 64 6 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #C7C7C7",
|
||||
"@ c #003F18",
|
||||
"# c #FFFFFF",
|
||||
"$ c #D5D6D5",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ..............................................................",
|
||||
" .............................................................+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .............................................................+",
|
||||
" ..@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@..+",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+",
|
||||
" .............................................................+",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
" .###########$#########$#########$#########$##########$.+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$.$$$..+ ",
|
||||
" .#$$$$....$$.#$.....$$.#$$...$$$.#$$...$$$.$$$$$$.$$$..+ ",
|
||||
" .#$$$$.$$$$$.#$$$$$.$$.#$.$$$.$$.#$.$$$.$$.$$$$$.$$$$..+ ",
|
||||
" .#$$$$.$$$$$.#$$$$.$$$.#$$...$$$.#$.$$$.$$.$$$$.$$$$$..+ ",
|
||||
" .#$$.$.$$$$$.#$$$.$$$$.#$.$$$.$$.#$$....$$.$$$.$$$$$$..+ ",
|
||||
" .#$$$..$$$$$.#$$$.$$$$.#$.$$$.$$.#$$$$$.$$.$$.$$$$$$$..+ ",
|
||||
" .#$$$$.$$$$$.#$$$.$$$$.#$$...$$$.#$$...$$$.$$.$$$$$$$..+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .$...........$.........$.........$.....................+ ",
|
||||
" .###########$#########$#########$#########$##########$.+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$$$$.$$$.#$$$$.$$$.#$.....$$.#$$...$$$.$$.$$$.$$$..+ ",
|
||||
" .#$$$$$$$.$$.#$.$$.$$$.#$.$$$$$$.#$.$$$$$$.$$$.$.$$$$..+ ",
|
||||
" .#$$$$$$.$$$.#$.$$.$$$.#$....$$$.#$....$$$.$$$$.$$$$$..+ ",
|
||||
" .#$$.$.$..$$.#$.....$$.#$$$$$.$$.#$.$$$.$$.$$$.$.$$$$..+ ",
|
||||
" .#$$$.$$$$$$.#$$$$.$$$.#$.$$$.$$.#$.$$$.$$.$$.$$$.$$$..+ ",
|
||||
" .#$$.$.$$$$$.#$$$$.$$$.#$$...$$$.#$$...$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .$...........$.........$.........$.....................+ ",
|
||||
" .###########$#########$#########$#########$##########$.+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$$$$$$$$.#$$$$.$$$.#$$...$$$.#$....$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$....$$$$.#$$$..$$$.#$.$$$.$$.#$$$$$.$$.$$$$$$$$$$..+ ",
|
||||
" .#$$.$$$$$$$.#$$$$.$$$.#$$$$$.$$.#$$...$$$.$$.....$$$..+ ",
|
||||
" .#$$...$$$$$.#$$$$.$$$.#$$...$$$.#$$$$$.$$.$$$$$$$$$$..+ ",
|
||||
" .#$$.$$$$$$$.#$$$$.$$$.#$.$$$$$$.#$.$$$.$$.$$$$$$$$$$..+ ",
|
||||
" .#$$....$$$$.#$$$...$$.#$.....$$.#$$...$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .$...........$.........$.........$.....................+ ",
|
||||
" .###########$#########$#########$#########$##########$.+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$.$$$.$$.#$$...$$$.#$$$$$$$$.#$$$$$$$$.$$$$.$$$$$..+ ",
|
||||
" .#$$...$.$$$.#$.$$$.$$.#$$$$$$$$.#$$....$$.$$$$.$$$$$..+ ",
|
||||
" .#$$$.$.$$$$.#$.$$$.$$.#$$$$$$$$.#$$$$$$$$.$$.....$$$..+ ",
|
||||
" .#$$$$.$$$$$.#$.$$$.$$.#$$$$$$$$.#$$....$$.$$$$.$$$$$..+ ",
|
||||
" .#$$$.$$$$$$.#$.$$$.$$.#$$$..$$$.#$$$$$$$$.$$$$.$$$$$..+ ",
|
||||
" .#$$.$$...$$.#$$...$$$.#$$$..$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .#$$$$$$$$$$.#$$$$$$$$.#$$$$$$$$.#$$$$$$$$.$$$$$$$$$$..+ ",
|
||||
" .$...........$.........$.........$.....................+ ",
|
||||
" .......................................................+ ",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
67
wmcalc/mask.xbm
Normal file
67
wmcalc/mask.xbm
Normal file
|
@ -0,0 +1,67 @@
|
|||
#define mask_width 64
|
||||
#define mask_height 64
|
||||
|
||||
static char mask_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
59
wmcalc/readln.c
Normal file
59
wmcalc/readln.c
Normal file
|
@ -0,0 +1,59 @@
|
|||
/* readln.c - Edward H. Flora - ehflora@ksu.edu */
|
||||
/* Last Modified: 2/24/98 */
|
||||
/*
|
||||
* This function reads a string from a file pointed to by fp until a
|
||||
* new line (EOLN) or an end of file is encountered. It returns a pointer
|
||||
* to the string. The new line character is included in the string returned
|
||||
* by the function.
|
||||
*/
|
||||
|
||||
/* EXTERNALS:
|
||||
******************
|
||||
* Functions Called:
|
||||
* Standard Libraries.
|
||||
*
|
||||
* Header Files Included:
|
||||
* Standard Includes only.
|
||||
*/
|
||||
|
||||
/* PORTABILITY:
|
||||
******************
|
||||
* Coded in ANSI C, using ANSI prototypes.
|
||||
*/
|
||||
|
||||
/****** Include Files *************************************************/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define EOLN '\n' /* Defines the new line character */
|
||||
#define SIZE1 10 /* Defines the increment to increase the */
|
||||
/* string by until a newline of EOF is found */
|
||||
|
||||
/****** Function to Read a Line from fp *******************************/
|
||||
char *readln(FILE *fp){
|
||||
char *tmp, *t1, *t2;
|
||||
int count = 0, s1 = SIZE1;
|
||||
|
||||
if((tmp = malloc(SIZE1*sizeof(char))) == NULL)return NULL;
|
||||
/* If cannot allocate memory */
|
||||
if((t1 = fgets(tmp, SIZE1, fp)) == NULL){
|
||||
free(tmp);
|
||||
return NULL;
|
||||
} /* If there is no string to be read */
|
||||
while(strchr(t1,EOLN) == NULL){ /* Loop while EOLN is not in the string */
|
||||
count += strlen(t1);
|
||||
if((s1 - count) > 1)break;
|
||||
s1 +=SIZE1;
|
||||
if((t2 = realloc(tmp, s1*sizeof(char))) == NULL){
|
||||
free(tmp);
|
||||
return NULL;
|
||||
} /* If cannot allocate more memory */
|
||||
else tmp = t2;
|
||||
if((t1 = fgets((tmp+count),((s1 - count)),fp)) == NULL)break;
|
||||
} /* End of While Loop */
|
||||
if((t2 = realloc(tmp,strlen(tmp)+1)) == NULL)free(tmp);
|
||||
return (t2);
|
||||
}
|
||||
/****** End of Function readln ****************************************/
|
||||
|
909
wmcalc/wmcalc.c
Normal file
909
wmcalc/wmcalc.c
Normal file
|
@ -0,0 +1,909 @@
|
|||
/****************************************************************
|
||||
* File: wmcalc.c
|
||||
* Version: 0.3
|
||||
* Date: January 17, 2001
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
*
|
||||
* This file is a part of the wmcalc application. As such, this
|
||||
* file is licensed under the GNU General Public License, version 2.
|
||||
* A copy of this license may be found in the file COPYING that should
|
||||
* have been distributed with this file. If not, please refer to
|
||||
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||
*
|
||||
****************************************************************
|
||||
Description:
|
||||
This file contains the main program code for the wmcalc
|
||||
application. Wmcalc is a dockapp designed for the WindowMaker or
|
||||
Afterstep window managers (although it should run well in most
|
||||
others.) wmcalc is a four-function (and more) calculator that
|
||||
has a small enough footprint that you may leave it open on your
|
||||
desktop at all times, for convenient use.
|
||||
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
01/17/01 Updated to use XLookupString
|
||||
12/10/00 Revised includes, extracting X libs to wmcalc_x.h
|
||||
11/09/00 Added "locked" memory capabilities
|
||||
11/08/00 Added Code to Support Keyboard / focus
|
||||
10/29/00 Implemented memory use, configuration files, and a
|
||||
quickstart button for a larger calculator. Also
|
||||
abstracted some of the macros, global vars, function
|
||||
prototypes, etc out to independent header files, to
|
||||
eliminate some dependency issues between source files.
|
||||
02/10/00 Added keyboard event code, without success
|
||||
12/21/99 Original product release, version 0.1
|
||||
11/26/99 Original file creation
|
||||
|
||||
****************************************************************/
|
||||
|
||||
#include "wmcalc_x.h"
|
||||
#include <XKBlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "wmcalc_c.h"
|
||||
#include "wmcalc_err.h"
|
||||
#include "wmcalc_t.h"
|
||||
#include "wmcalc_g.h"
|
||||
#include "wmcalc_f.h"
|
||||
|
||||
#include "backdrop.xpm" // background graphic
|
||||
#include "calcbuttons.xpm" // graphic of buttons
|
||||
#include "charmap.xpm" // pixmap of characters
|
||||
#include "mask.xbm"
|
||||
|
||||
/* Global Variables */
|
||||
/* Ok, so I didn't get them all extracted. Should look into this
|
||||
further */
|
||||
int N = 1; /* Button number pressed to goto app # */
|
||||
int border = 0;
|
||||
int Verbose = 0; /* Debug flag */
|
||||
int mmouse = 1; /* flag to enable middle mouse (hold
|
||||
over from wmbutton */
|
||||
int button_pressed = -1; /* button to be drawn pressed */
|
||||
char PlusMinusFlag = '+'; /* flag for sign of number in display */
|
||||
char OpFlag = ' '; /* Operation requested */
|
||||
int ExpFlag = 0; /* Flag if in scientific notation */
|
||||
int DecFlag = 0; /* Flag if a decimal is in display */
|
||||
int ImgFlag = 0; /* Flag if a number is imaginary */
|
||||
int StrCnt = 0;
|
||||
double RegisterA = 0.0; /* Main working register, displayed */
|
||||
double RegisterB = 0.0; /* Second register to add to, etc */
|
||||
char DispString[DISPSIZE+1]; /* Pointer to string of display */
|
||||
ButtonArea button_region[NUM_BUTTONS]; /* Array of buttons */
|
||||
|
||||
char *app_name = "wmcalc"; /* Name of app, for window management */
|
||||
|
||||
/****************************************************************
|
||||
* Function: main
|
||||
****************************************************************
|
||||
Description:
|
||||
This is the main Program control function for wmcalc. It
|
||||
contains all the X11 windows function calls, as well as other
|
||||
general operations.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
01/17/01 Updated to use XLookupString to get KeySym
|
||||
11/09/00 Added Events for focus and keyboard work.
|
||||
11/01/00 File Header Added
|
||||
21/09/01 Added global configfile by Gordon Fraser
|
||||
****************************************************************/
|
||||
int main( int argc, char **argv ) {
|
||||
XEvent report;
|
||||
XGCValues xgcValues;
|
||||
XTextProperty app_name_atom;
|
||||
int err_code = OKAY;
|
||||
int dummy = 0;
|
||||
int i;
|
||||
char Geometry_str[64] = "64x64+0+0";
|
||||
char Display_str[64] = "";
|
||||
int KeywithMask = NO_BUTTON;
|
||||
KeySym ksym;
|
||||
XComposeStatus compose;
|
||||
char buffer[20];
|
||||
int bufsize = 20;
|
||||
int chcnt = 0;
|
||||
|
||||
|
||||
strcpy(configfile, getenv("HOME")); // Added to wmbutton by Casey Harkin, 3/6/99
|
||||
strcat(configfile, CONFFILENAME); // Fixed Bug - didn't look in home directory
|
||||
// but startup directory
|
||||
strcat(tempfile, CONFTEMPFILE); // Setup name for temp file
|
||||
|
||||
/* Clear the Calculator Display */
|
||||
for(i=0; i<11; i++) DispString[i] = ' ';
|
||||
DispString[11] = '\0';
|
||||
|
||||
/* Parse Command Line Arguments */
|
||||
for ( i=1; i < argc; i++ ) {
|
||||
if ( *argv[i] == '-' ) {
|
||||
switch ( *(argv[i]+1) ) {
|
||||
case 'v': // Turn on Verbose (debugging) Mode
|
||||
Verbose = 1;
|
||||
break;
|
||||
case 'g': // Set Geometry Options
|
||||
if ( ++i >= argc ) show_usage();
|
||||
sscanf(argv[i], "%s", Geometry_str);
|
||||
if ( Verbose ) printf("Geometry is: %s\n", Geometry_str);
|
||||
break;
|
||||
case 'd': // Set display
|
||||
if ( ++i >= argc ) show_usage();
|
||||
sscanf(argv[i], "%s", Display_str);
|
||||
if ( Verbose ) printf("Display is: %s\n", Display_str);
|
||||
break;
|
||||
case 'h': // Show Help Message
|
||||
show_usage();
|
||||
break;
|
||||
case 'f': // use config file <filename>
|
||||
if ( ++i >= argc ) show_usage();
|
||||
sscanf(argv[i], "%s", configfile);
|
||||
if ( Verbose ) printf("Using Config File: %s\n", configfile);
|
||||
break;
|
||||
default: // other, unknown, parameters
|
||||
show_usage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} /* End of loop to process command line options */
|
||||
|
||||
/* Open display on requested X server */
|
||||
if ( (display = XOpenDisplay(Display_str)) == NULL ) {
|
||||
error_handler(ERR_X_DISPLAY, Display_str);
|
||||
}
|
||||
|
||||
screen = DefaultScreen(display);
|
||||
rootwin = RootWindow(display,screen);
|
||||
depth = DefaultDepth(display, screen);
|
||||
|
||||
bg_pixel = WhitePixel(display, screen );
|
||||
fg_pixel = BlackPixel(display, screen );
|
||||
|
||||
xsizehints.flags = USSize | USPosition;
|
||||
xsizehints.width = APP_WIDTH;
|
||||
xsizehints.height = APP_HEIGHT;
|
||||
|
||||
/* Parse Geometry string and fill in sizehints fields */
|
||||
XWMGeometry(display, screen,
|
||||
Geometry_str,
|
||||
NULL,
|
||||
border,
|
||||
&xsizehints,
|
||||
&xsizehints.x,
|
||||
&xsizehints.y,
|
||||
&xsizehints.width,
|
||||
&xsizehints.height,
|
||||
&dummy);
|
||||
|
||||
if ( (win = XCreateSimpleWindow(display,
|
||||
rootwin,
|
||||
xsizehints.x,
|
||||
xsizehints.y,
|
||||
xsizehints.width,
|
||||
xsizehints.height,
|
||||
border,
|
||||
fg_pixel, bg_pixel) ) == 0 ) {
|
||||
error_handler(ERR_X_CREATE_WINDOW, NULL);
|
||||
}
|
||||
|
||||
if ( (iconwin = XCreateSimpleWindow(display,
|
||||
win,
|
||||
xsizehints.x,
|
||||
xsizehints.y,
|
||||
xsizehints.width,
|
||||
xsizehints.height,
|
||||
border,
|
||||
fg_pixel, bg_pixel) ) == 0 ) {
|
||||
error_handler(ERR_X_CREATE_WINDOW, NULL);
|
||||
}
|
||||
|
||||
/* Set up shaped windows */
|
||||
/*Gives the appicon a border so you can grab and move it. */
|
||||
|
||||
if ( ( pixmask = XCreateBitmapFromData(display,
|
||||
win,
|
||||
mask_bits,
|
||||
mask_width,
|
||||
mask_height) ) == 0 ) {
|
||||
error_handler(ERR_X_CREATE_BITMAP, NULL);
|
||||
}
|
||||
|
||||
XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet );
|
||||
XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
|
||||
|
||||
/* Convert in pixmaps from .xpm includes. */
|
||||
getPixmaps();
|
||||
|
||||
/* Interclient Communication stuff */
|
||||
/* Appicons don't work with out this stuff */
|
||||
xwmhints = XAllocWMHints();
|
||||
xwmhints->flags = WindowGroupHint | IconWindowHint | StateHint;
|
||||
xwmhints->icon_window = iconwin;
|
||||
xwmhints->window_group = win;
|
||||
xwmhints->initial_state = WithdrawnState;
|
||||
XSetWMHints( display, win, xwmhints );
|
||||
|
||||
xclasshint.res_name = app_name;
|
||||
xclasshint.res_class = app_name;
|
||||
XSetClassHint( display, win, &xclasshint );
|
||||
|
||||
XSetWMNormalHints( display, win, &xsizehints );
|
||||
|
||||
/* Tell window manager what the title bar name is. We never see */
|
||||
/* this anyways in the WithdrawnState */
|
||||
if ( XStringListToTextProperty(&app_name, 1, &app_name_atom) == 0 ) {
|
||||
error_handler(ERR_SETUP_WINDOW_NAME, app_name);
|
||||
}
|
||||
XSetWMName( display, win, &app_name_atom );
|
||||
|
||||
/* Create Graphic Context */
|
||||
if (( gc = XCreateGC(display, win,(GCForeground | GCBackground), &xgcValues))
|
||||
== NULL ) {
|
||||
error_handler(ERR_CREATE_GC, NULL);
|
||||
}
|
||||
|
||||
/* XEvent Masks. We want both windows to process X events */
|
||||
XSelectInput(display, win,
|
||||
ExposureMask |
|
||||
ButtonPressMask |
|
||||
ButtonReleaseMask | /* added ButtonReleaseMask *charkins*/
|
||||
PointerMotionMask |
|
||||
FocusChangeMask |
|
||||
LeaveWindowMask |
|
||||
KeyPressMask | /* Try this to get keyboard working */
|
||||
StructureNotifyMask |
|
||||
EnterWindowMask );
|
||||
XSelectInput(display, iconwin,
|
||||
ExposureMask |
|
||||
ButtonPressMask |
|
||||
ButtonReleaseMask | /* added ButtonReleaseMask *charkins*/
|
||||
PointerMotionMask |
|
||||
FocusChangeMask |
|
||||
LeaveWindowMask |
|
||||
KeyPressMask | /* Try this to get keyboard working */
|
||||
StructureNotifyMask |
|
||||
EnterWindowMask );
|
||||
|
||||
/* Store the 'state' of the application for restarting */
|
||||
XSetCommand( display, win, argv, argc );
|
||||
|
||||
/* Window won't ever show up until it is mapped.. then drawn after a */
|
||||
/* ConfigureNotify */
|
||||
XMapWindow( display, win );
|
||||
|
||||
/* Read Configuration File */
|
||||
err_code = read_config();
|
||||
if (err_code) {
|
||||
error_handler(err_code, configfile);
|
||||
}
|
||||
|
||||
/* X Event Loop */
|
||||
while (1) {
|
||||
XNextEvent(display, &report );
|
||||
switch (report.type) {
|
||||
case Expose:
|
||||
if (report.xexpose.count != 0) {
|
||||
break;
|
||||
}
|
||||
if ( Verbose ) printf("Event: Expose\n");
|
||||
redraw();
|
||||
break;
|
||||
case ConfigureNotify:
|
||||
if ( Verbose ) printf("Event: ConfigureNotify\n");
|
||||
// redraw();
|
||||
break;
|
||||
|
||||
case KeyPress:
|
||||
if (Verbose) printf("Event: Key state: 0x%x Key: 0x%x\n",
|
||||
report.xkey.state, report.xkey.keycode);
|
||||
|
||||
// ksym = XLookupKeysym(&(report.xkey), report.xkey.state);
|
||||
/* KeywithMask - this allows Left, middle, and right button functions
|
||||
to be implemented via keyboard */
|
||||
chcnt = XLookupString(&(report.xkey), buffer, bufsize, &ksym, &compose);
|
||||
if (Verbose) printf("Keysym is: 0x%x\n", (int) ksym);
|
||||
KeywithMask = whichKey(ksym);
|
||||
ExecFunc( KeywithMask );
|
||||
redraw();
|
||||
break;
|
||||
|
||||
case ButtonPress: /* draw button pressed, don't launch *charkins*/
|
||||
switch (report.xbutton.button) {
|
||||
case Button1:
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) ) {
|
||||
button_pressed = N + LMASK;
|
||||
// redraw();
|
||||
}
|
||||
if ( Verbose )
|
||||
printf("Button 1:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+LMASK);
|
||||
break;
|
||||
case Button2:
|
||||
if (mmouse) {
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) ) {
|
||||
button_pressed = N + MMASK;
|
||||
// redraw();
|
||||
}
|
||||
if ( Verbose )
|
||||
printf("Button 2:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+MMASK);
|
||||
}
|
||||
break;
|
||||
case Button3:
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) ) {
|
||||
button_pressed = N + RMASK;
|
||||
// redraw();
|
||||
}
|
||||
if ( Verbose )
|
||||
printf("Button 3:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+RMASK);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ButtonRelease: /* If still over button, it was a real button press */
|
||||
switch (report.xbutton.button) {
|
||||
case Button1:
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) && (N == button_pressed - LMASK))
|
||||
ExecFunc(N + LMASK);
|
||||
button_pressed=-1;
|
||||
redraw();
|
||||
if ( Verbose )
|
||||
printf("Button 1:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+LMASK);
|
||||
break;
|
||||
case Button2:
|
||||
if (mmouse) {
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) && (N == button_pressed - MMASK))
|
||||
ExecFunc( N + MMASK);
|
||||
button_pressed=-1;
|
||||
redraw();
|
||||
if ( Verbose )
|
||||
printf("Button 2:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+MMASK);
|
||||
}
|
||||
break;
|
||||
case Button3:
|
||||
N = whichButton(report.xbutton.x, report.xbutton.y );
|
||||
if ( (N >= 0) && (N <= NUM_BUTTONS) && (N == button_pressed - RMASK))
|
||||
ExecFunc( N + RMASK);
|
||||
button_pressed=-1;
|
||||
redraw();
|
||||
if ( Verbose )
|
||||
printf("Button 3:x=%d y=%d N=%d\n",
|
||||
report.xbutton.x, report.xbutton.y, N+RMASK);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case DestroyNotify:
|
||||
if ( Verbose ) printf("Requested Program Quit.\n");
|
||||
XFreeGC(display, gc);
|
||||
XDestroyWindow(display,win);
|
||||
XDestroyWindow(display,iconwin);
|
||||
XCloseDisplay(display);
|
||||
exit(OKAY);
|
||||
break;
|
||||
case EnterNotify:
|
||||
case LeaveNotify:
|
||||
XSetInputFocus(display, PointerRoot, RevertToParent, CurrentTime);
|
||||
if (Verbose) printf("Focus Change\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (OKAY);
|
||||
} /***** End of main program ***********************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: redraw
|
||||
****************************************************************
|
||||
Description:
|
||||
This function maintains the appearance of the application
|
||||
by copying the "visible" pixmap to the two windows (the withdrawn
|
||||
main window, and the icon window which is the main windows's icon
|
||||
image).
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function Header updated
|
||||
****************************************************************/
|
||||
void redraw() {
|
||||
|
||||
XCopyArea(display, template.pixmap, visible.pixmap, gc, 0, 0,
|
||||
template.attributes.width, template.attributes.height, 0, 0 );
|
||||
|
||||
defineButtonRegions();
|
||||
|
||||
/* Copy button to icon */
|
||||
XCopyArea(display, buttons.pixmap, visible.pixmap, gc,
|
||||
1, 1, 53, 40, 6, 20);
|
||||
|
||||
flush_expose( win );
|
||||
XCopyArea(display, visible.pixmap, win, gc, 0, 0,
|
||||
visible.attributes.width, visible.attributes.height, 0, 0 );
|
||||
flush_expose( iconwin );
|
||||
XCopyArea(display, visible.pixmap, iconwin, gc, 0, 0,
|
||||
visible.attributes.width, visible.attributes.height, 0, 0 );
|
||||
// if ( Verbose ) printf("In Redraw()\n");
|
||||
displaystr();
|
||||
} /***** End of function redraw() ********************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: whichButton
|
||||
****************************************************************
|
||||
Description:
|
||||
Return the button at the x,y coordinates. The button need not
|
||||
be visible ( drawn ). Return -1 if no button match.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function Header Updated
|
||||
****************************************************************/
|
||||
int whichButton( int x, int y ) {
|
||||
int index;
|
||||
|
||||
for ( index=0; index < NUM_BUTTONS; index++ ) {
|
||||
if ( (x >= button_region[index].x) && (x <= button_region[index].i) &&
|
||||
(y >= button_region[index].y) && (y <= button_region[index].j) ) {
|
||||
return(index);
|
||||
}
|
||||
}
|
||||
return(NO_BUTTON);
|
||||
} /***** End of function whichButton() **************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: whichKey
|
||||
****************************************************************
|
||||
Description:
|
||||
This function decodes the keycode passed in and converts this to
|
||||
a function number to execute. This is not simply the Button number,
|
||||
but also contains the LMASK, MMASK, or RMASK to pass into ExecFunc to
|
||||
handle expanded functions.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
01/17/01 Updated to take a KeySym, rather than a KeyCode
|
||||
11/09/00 Original Function creation
|
||||
****************************************************************/
|
||||
int whichKey (KeySym keysym) {
|
||||
extern int Verbose;
|
||||
int func = NO_BUTTON;
|
||||
|
||||
if (Verbose) printf("KeySym 0x%x received, decoding...\n", (int) keysym);
|
||||
|
||||
switch(keysym) {
|
||||
case XK_Escape:
|
||||
case XK_space:
|
||||
case XK_KP_Space:
|
||||
func = LMASK + 0;
|
||||
break;
|
||||
case XK_Delete:
|
||||
func = MMASK + 0;
|
||||
break;
|
||||
case XK_BackSpace:
|
||||
func = RMASK + 0;
|
||||
break;
|
||||
case XK_Return:
|
||||
case XK_KP_Equal:
|
||||
case XK_KP_Enter:
|
||||
case XK_equal:
|
||||
func = LMASK + 19;
|
||||
break;
|
||||
case XK_KP_0:
|
||||
case XK_0:
|
||||
func = LMASK + 17;
|
||||
break;
|
||||
case XK_KP_1:
|
||||
case XK_1:
|
||||
func = LMASK + 12;
|
||||
break;
|
||||
case XK_KP_2:
|
||||
case XK_2:
|
||||
func = LMASK + 13;
|
||||
break;
|
||||
case XK_KP_3:
|
||||
case XK_3:
|
||||
func = LMASK + 14;
|
||||
break;
|
||||
case XK_KP_4:
|
||||
case XK_4:
|
||||
func = LMASK + 7;
|
||||
break;
|
||||
case XK_KP_5:
|
||||
case XK_5:
|
||||
func = LMASK + 8;
|
||||
break;
|
||||
case XK_KP_6:
|
||||
case XK_6:
|
||||
func = LMASK + 9;
|
||||
break;
|
||||
case XK_KP_7:
|
||||
case XK_7:
|
||||
func = LMASK + 2;
|
||||
break;
|
||||
case XK_KP_8:
|
||||
case XK_8:
|
||||
func = LMASK + 3;
|
||||
break;
|
||||
case XK_KP_9:
|
||||
case XK_9:
|
||||
func = LMASK + 4;
|
||||
break;
|
||||
case XK_KP_Decimal:
|
||||
case XK_period:
|
||||
func = LMASK + 18;
|
||||
break;
|
||||
case XK_KP_Divide:
|
||||
case XK_slash:
|
||||
func = LMASK + 5;
|
||||
break;
|
||||
case XK_KP_Subtract:
|
||||
case XK_minus:
|
||||
func = LMASK + 15;
|
||||
break;
|
||||
case XK_KP_Multiply:
|
||||
case XK_asterisk:
|
||||
func = LMASK + 10;
|
||||
break;
|
||||
case XK_KP_Add:
|
||||
case XK_plus:
|
||||
func = LMASK + 20;
|
||||
break;
|
||||
case XK_R:
|
||||
case XK_r:
|
||||
func = LMASK + 1;
|
||||
break;
|
||||
case XK_asciicircum:
|
||||
func = LMASK + 6;
|
||||
break;
|
||||
case XK_C:
|
||||
case XK_c:
|
||||
func = LMASK + 11;
|
||||
break;
|
||||
case XK_N:
|
||||
case XK_n:
|
||||
func = LMASK + 16;
|
||||
break;
|
||||
case XK_F1:
|
||||
func = MMASK + 12;
|
||||
break;
|
||||
case XK_F2:
|
||||
func = MMASK + 13;
|
||||
break;
|
||||
case XK_F3:
|
||||
func = MMASK + 14;
|
||||
break;
|
||||
case XK_F4:
|
||||
func = MMASK + 7;
|
||||
break;
|
||||
case XK_F5:
|
||||
func = MMASK + 8;
|
||||
break;
|
||||
case XK_F6:
|
||||
func = MMASK + 9;
|
||||
break;
|
||||
case XK_F7:
|
||||
func = MMASK + 2;
|
||||
break;
|
||||
case XK_F8:
|
||||
func = MMASK + 3;
|
||||
break;
|
||||
case XK_F9:
|
||||
func = MMASK + 4;
|
||||
break;
|
||||
case XK_F10:
|
||||
func = MMASK + 17;
|
||||
break;
|
||||
default:
|
||||
if (Verbose) printf("Unknown Keysym, ignoring.\n");
|
||||
func = NO_BUTTON;
|
||||
break;
|
||||
}
|
||||
return(func);
|
||||
} /***** End of function whichKey() ****************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: getPixmaps
|
||||
****************************************************************
|
||||
Description:
|
||||
Load XPM data into X Pixmaps.
|
||||
|
||||
* Pixmap 'template' contains the untouched window backdrop image.
|
||||
* Pixmap 'visible' is the template pixmap with buttons drawn on it.
|
||||
-- what is seen by the user.
|
||||
* Pixmap 'buttons' holds the images for individual buttons that are
|
||||
later copied onto Pixmap visible.
|
||||
* Pixmap 'charmap' holds the character map for the characters in
|
||||
the display.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function Header Updated
|
||||
****************************************************************/
|
||||
void getPixmaps() {
|
||||
template.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||
visible.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||
buttons.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||
charmap.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
|
||||
|
||||
/* Template Pixmap. Never Drawn To. */
|
||||
if ( XpmCreatePixmapFromData( display, rootwin, backdrop_xpm,
|
||||
&template.pixmap, &template.mask,
|
||||
&template.attributes) != XpmSuccess ) {
|
||||
error_handler(ERR_CREATE_PIXMAP, "template");
|
||||
}
|
||||
|
||||
/* Visible Pixmap. Copied from template Pixmap and then drawn to. */
|
||||
if ( XpmCreatePixmapFromData( display, rootwin, backdrop_xpm,
|
||||
&visible.pixmap, &visible.mask,
|
||||
&visible.attributes) != XpmSuccess ) {
|
||||
error_handler(ERR_CREATE_PIXMAP, "visible");
|
||||
}
|
||||
|
||||
/* Button Pixmap. */
|
||||
if ( XpmCreatePixmapFromData( display, rootwin, calcbuttons_xpm,
|
||||
&buttons.pixmap, &buttons.mask,
|
||||
&buttons.attributes) != XpmSuccess ) {
|
||||
error_handler(ERR_CREATE_PIXMAP, "buttons");
|
||||
}
|
||||
|
||||
/* Character Map Pixmap. */
|
||||
if ( XpmCreatePixmapFromData( display, rootwin, charmap_xpm,
|
||||
&charmap.pixmap, &charmap.mask,
|
||||
&charmap.attributes) != XpmSuccess ) {
|
||||
error_handler(ERR_CREATE_PIXMAP, "charmap");
|
||||
}
|
||||
} /***** End of function getPixmaps() *****************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: flush_expose
|
||||
****************************************************************
|
||||
Description:
|
||||
This function is a hold-over from previous programs (wmcp).
|
||||
The use of this function is not well understood.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function header updated.
|
||||
****************************************************************/
|
||||
int flush_expose(Window w) {
|
||||
XEvent dummy;
|
||||
int i=0;
|
||||
|
||||
while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) i++;
|
||||
return(i);
|
||||
} /***** End of function flush_expose() *************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: defineButtonRegion
|
||||
****************************************************************
|
||||
Description:
|
||||
This function defines the start and end x and y coordinates for
|
||||
the various buttons used in wmcalc.
|
||||
|
||||
There should be a better way to do this, as right now, changing
|
||||
the pixmap calcbuttons.xpm may require the modification of these
|
||||
magic numbers.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function header updated
|
||||
****************************************************************/
|
||||
void defineButtonRegions(void) {
|
||||
int ndx = 0; /* button index */
|
||||
|
||||
button_region[0].x = 1; // Define display region button
|
||||
button_region[0].i = 62;
|
||||
button_region[0].y = 6;
|
||||
button_region[0].j = 17;
|
||||
|
||||
for (ndx = 1; ndx <= 5; ndx++) { // Define y coord's for top row
|
||||
button_region[ndx].y = 20;
|
||||
button_region[ndx].j = 29;
|
||||
}
|
||||
for (ndx = 6; ndx <= 10; ndx++) { // Define y coord's for 2nd row
|
||||
button_region[ndx].y = 30;
|
||||
button_region[ndx].j = 39;
|
||||
}
|
||||
for (ndx = 11; ndx <= 15; ndx++) { // Define y coord's for 3rd row
|
||||
button_region[ndx].y = 40;
|
||||
button_region[ndx].j = 49;
|
||||
}
|
||||
for (ndx = 16; ndx <= 20; ndx++) { // Define y coord's for bottom row
|
||||
button_region[ndx].y = 50;
|
||||
button_region[ndx].j = 59;
|
||||
}
|
||||
for (ndx = 1; ndx <= 16; ndx+=5) { // Define x coord's for Left column
|
||||
button_region[ndx].x = 5;
|
||||
button_region[ndx].i = 16;
|
||||
}
|
||||
for (ndx = 2; ndx <= 17; ndx+=5) { // Define x coord's for 2nd Left column
|
||||
button_region[ndx].x = 17;
|
||||
button_region[ndx].i = 26;
|
||||
}
|
||||
for (ndx = 3; ndx <= 18; ndx+=5) { // Define x coord's for middle column
|
||||
button_region[ndx].x = 27;
|
||||
button_region[ndx].i = 36;
|
||||
}
|
||||
for (ndx = 4; ndx <= 19; ndx+=5) { // Define x coord's for 2nd right column
|
||||
button_region[ndx].x = 37;
|
||||
button_region[ndx].i = 46;
|
||||
}
|
||||
for (ndx = 5; ndx <= 20; ndx+=5) { // Define x coord's for 2nd right column
|
||||
button_region[ndx].x = 47;
|
||||
button_region[ndx].i = 57;
|
||||
}
|
||||
} /***** End of function defineButtonRgions() *************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: displaychar
|
||||
****************************************************************
|
||||
Description:
|
||||
This function displays individual characters to the "display".
|
||||
This function should only be called from displaystr().
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/09/00 Added "Locked" character and capabilities
|
||||
11/01/00 Function header updated
|
||||
10/30/00 Updated to include the memory indicators as well.
|
||||
****************************************************************/
|
||||
void displaychar(char ch, int location) {
|
||||
ButtonArea dispchar;
|
||||
int locatx, locaty;
|
||||
|
||||
dispchar = getboundaries(ch); /* Get the region of the charmap
|
||||
containing the character to
|
||||
display */
|
||||
|
||||
locaty = 6;
|
||||
locatx = 2 + location * 6;
|
||||
|
||||
/* If the character is a memory display character, use the memory
|
||||
location display region. Valid Characters are:
|
||||
'_' - No data in Memory Location
|
||||
'=' - Value in Memory Location, Not Locked
|
||||
'#' - Constant in Memory Location, Locked
|
||||
*/
|
||||
if ((ch == '=') || (ch == '_') || ch == '#') {
|
||||
locaty = 15;
|
||||
}
|
||||
|
||||
XCopyArea(display, charmap.pixmap, win, gc,
|
||||
dispchar.x, dispchar.y,
|
||||
dispchar.i-dispchar.x, dispchar.j-dispchar.y,
|
||||
locatx, locaty);
|
||||
XCopyArea(display, charmap.pixmap, iconwin, gc,
|
||||
dispchar.x, dispchar.y,
|
||||
dispchar.i-dispchar.x, dispchar.j-dispchar.y,
|
||||
locatx, locaty);
|
||||
|
||||
} /***** End of Function displaychar() **************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: displaystr
|
||||
****************************************************************
|
||||
Description:
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/09/00 Added Capabilities for "Locked" memories
|
||||
11/01/00 Function header updated
|
||||
10/30/00 Added memory location indicators
|
||||
****************************************************************/
|
||||
void displaystr(void) {
|
||||
extern char DispString[];
|
||||
extern int MemLock[];
|
||||
extern double MemArray[];
|
||||
extern int Verbose;
|
||||
int i;
|
||||
|
||||
if (Verbose) printf("Displaystr %s\n", DispString);
|
||||
|
||||
/* Update the alphanumeric display */
|
||||
for (i = 0; i < DISPSIZE; i++)
|
||||
displaychar(DispString[i], i);
|
||||
|
||||
/* Update the memory location indicators */
|
||||
for (i = 0; i < NUM_MEM_CELLS; i++) {
|
||||
if (MemArray[i] == 0.0)
|
||||
displaychar('_', i); /* Value NOT stored here */
|
||||
else if (MemLock[i] == 0)
|
||||
displaychar('=', i); /* Value IS stored here */
|
||||
else
|
||||
displaychar('#', i); /* Constant IS stored here */
|
||||
|
||||
}
|
||||
|
||||
} /***** End of function displaystr() ***************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: show_usage
|
||||
****************************************************************
|
||||
Description:
|
||||
This function prints a brief usage message to stdout,
|
||||
and exits.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/01/00 Function header updated
|
||||
****************************************************************/
|
||||
void show_usage(void) {
|
||||
|
||||
printf("\n");
|
||||
printf(" %s: Ver %d Rel %d\n",app_name, VER, REL);
|
||||
printf("\n");
|
||||
printf("usage: %s [-g geometry] [-d display] [-f <filename>] [-v] [-h] \n",
|
||||
app_name);
|
||||
printf("\n");
|
||||
printf("-g <geometry> Window Geometry - ie: 64x64+10+10\n");
|
||||
printf("-d <display> Display - ie: 127.0.0.1:0.0\n");
|
||||
printf("-f <filename> Name of Config file - ie: /home/user/.wmcalc\n");
|
||||
printf("-v Verbose Mode. \n");
|
||||
printf("-h Help. This message.\n");
|
||||
printf("\n");
|
||||
exit(OKAY);
|
||||
} /***** End of function show_usage() ***************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: error_handler
|
||||
****************************************************************
|
||||
Description:
|
||||
This function will handle all fatal error conditions that exist.
|
||||
Error condition codes are kept in wmcalc_err.h
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Function created
|
||||
****************************************************************/
|
||||
void error_handler (int err_code, char *err_string) {
|
||||
extern char tempfile[];
|
||||
|
||||
if (err_code == OKAY) {
|
||||
/* This case should never happen.
|
||||
If it does, somebody screwed up (probably me),
|
||||
but don't kill the program!! */
|
||||
return;
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "Error Code %d: ", err_code);
|
||||
switch (err_code) {
|
||||
case ERR_FILE_NOT_FOUND:
|
||||
fprintf(stderr, "Could not open file %s\n",configfile);
|
||||
break;
|
||||
case ERR_TMP_FILE_FAILED:
|
||||
fprintf(stderr, "Could not open temporary file %s\n", tempfile);
|
||||
break;
|
||||
case ERR_X_CREATE_WINDOW:
|
||||
fprintf(stderr, "Could not create simple window\n");
|
||||
break;
|
||||
case ERR_X_CREATE_BITMAP:
|
||||
fprintf(stderr, "Could not create bitmap from data\n");
|
||||
break;
|
||||
case ERR_SETUP_WINDOW_NAME:
|
||||
fprintf(stderr, "Could not setup window name %s\n", err_string);
|
||||
break;
|
||||
case ERR_CREATE_GC:
|
||||
fprintf(stderr, "XCreateGC\n");
|
||||
break;
|
||||
case ERR_X_DISPLAY:
|
||||
fprintf(stderr, "Could not open display on %s\n", err_string);
|
||||
break;
|
||||
case ERR_CREATE_PIXMAP:
|
||||
fprintf(stderr, "Can't Create %s Pixmap\n", err_string);
|
||||
break;
|
||||
/* case : */
|
||||
/* break; */
|
||||
default:
|
||||
fprintf(stderr, "Unknown Error\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
exit(err_code);
|
||||
} /***** End of Function error_handler **************************/
|
35
wmcalc/wmcalc.conf
Normal file
35
wmcalc/wmcalc.conf
Normal file
|
@ -0,0 +1,35 @@
|
|||
# wmcalc Configuration File
|
||||
# Last Manual Update: 10/29/00
|
||||
|
||||
# General Notes:
|
||||
# * There must be a tab character '\t' between the variable name and
|
||||
# the value, not a series of spaces.
|
||||
# * wmcalc is case sensitive when reading these variables. Examine the
|
||||
# wmcalc_g.h file for currently defined variables.
|
||||
|
||||
#Calculator Memory Locations
|
||||
#Note: These must all exist, though they may be in any order
|
||||
Mem0 0.000000
|
||||
Mem1 0.000000
|
||||
MEM2 2.718282
|
||||
MEM3 3.141593
|
||||
Mem4 0.000000
|
||||
Mem5 0.000000
|
||||
Mem6 0.000000
|
||||
Mem7 0.000000
|
||||
Mem8 0.000000
|
||||
Mem9 0.000000
|
||||
|
||||
# The CalcStart variable is intended to allow the user to start a larger
|
||||
# calculator for more complicated needs. Everything after the tab '\t'
|
||||
# character is sent unmodified in a system() call, so anything you can type
|
||||
# at the command prompt may be put here.
|
||||
#CalcStart xterm -T "Basic Calculator" -e bc &
|
||||
#CalcStart xterm -T "gnuplot" -sb -sl 500 -e gnuplot &
|
||||
CalcStart xcalc &
|
||||
|
||||
# The ImagChar variable allows the user to choose between 'i' and 'j' to
|
||||
# represent the sqrt(-1). (Electrical Engineers (such as myself) use 'j'
|
||||
# rather than 'i.')
|
||||
#ImagChar i
|
||||
ImagChar j
|
137
wmcalc/wmcalc1.xpm
Normal file
137
wmcalc/wmcalc1.xpm
Normal file
|
@ -0,0 +1,137 @@
|
|||
/* XPM */
|
||||
static char * wmcalc1_xpm[] = {
|
||||
"128 120 14 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #C7C7C7",
|
||||
"@ c #003F18",
|
||||
"# c #00FF00",
|
||||
"$ c #FFFFFF",
|
||||
"% c #D5D6D5",
|
||||
"& c #EDFF00",
|
||||
"* c #FF0015",
|
||||
"= c #0019FF",
|
||||
"- c #FA00FF",
|
||||
"; c #FFA500",
|
||||
"> c #9B6603",
|
||||
", c #2AE0B5",
|
||||
" . ",
|
||||
" . ",
|
||||
" . ",
|
||||
" . ",
|
||||
" ........................................................ . .......................................................+ ",
|
||||
" .......................................................+ . .......................................................+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#####.####@.####@.@@#@@.####@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.#@@@#.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.####@.####@.####@.#@@@#.####@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#@@@@.#@#@@.#@#@@.#@@@#.#@#@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#@@@@.#@@#@.#@@#@.@#@#@.#@@#@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ . .@@@@@.@@@@@.#####.#@@@#.#@@@#.@@#@@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .......................................................+ . .......................................................+ ",
|
||||
" ..@@@@.@@@@.@@@@.@@@@.@@@@.@@@@.@@@@.@@@@.@@@@.@@@@....+ . .......................................................+ ",
|
||||
" .......................................................+ . ",
|
||||
" .+++++++++++++++++++++++++++++++++++++++++++++++++++++++ . .......................................................+ ",
|
||||
" .$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$$$%.+ . .......................................................+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%.%%%..+ . .@@@@@.#####.@@@@@.@@#@@.@@@#@.@@#@@.#####.@###@.#####.+ ",
|
||||
" .$%%%....%.$%.....%%.$%%...%%%.$%%%..%%%.$%%%%%%%.%%%..+ . .@@@@@.@@@#@.@@@@@.@##@@.@@##@.@##@@.#@@@@.#@@@#.@@@#@.+ ",
|
||||
" .$%%%.%%%%.$%%%%%.%%.$%.%%%.%%.$%%.%%.%%.$%%%%%%.%%%%..+ . .@@@@@.@@#@@.@@@@@.@@#@@.@#@#@.@@#@@.####@.#@@@#.@@#@@.+ ",
|
||||
" .$%%%.%%%%.$%%%%.%%%.$%%...%%%.$%%.%%.%%.$%%%%%.%%%%%..+ . .#####.@@@#@.@@@@@.@@#@@.#@@#@.@@#@@.@@@@#.@####.@@@#@.+ ",
|
||||
" .$%.%.%%%%.$%%%.%%%%.$%.%%%.%%.$%%%...%%.$%%%%.%%%%%%..+ . .@@@@@.@@@@#.@@@@@.@@#@@.#####.@@#@@.@@@@#.@@@@#.@@@@#.+ ",
|
||||
" .$%%..%%%%.$%%%.%%%%.$%.%%%.%%.$%%%%%.%%.$%%%.%%%%%%%..+ . .@@@@@.#@@@#.@@##@.@@#@@.@@@#@.@@#@@.#@@@#.@@@#@.#@@@#.+ ",
|
||||
" .$%%%.%%%%.$%%%.%%%%.$%%...%%%.$%%%..%%%.$%%%.%%%%%%%..+ . .@@@@@.@###@.@@##@.@###@.@@@#@.@###@.@###@.@##@@.@###@.+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .%.........%.........%.........%.........%.............+ . .......................................................+ ",
|
||||
" .$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$$$%.+ . ",
|
||||
" .$%%%%%.%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%%.%.$%%%%.%%%.$%%....%%.$%%%..%%%.$%%%.%%%.%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%.%%.$%.%%.%%%.$%%.%%%%%.$%%.%%%%%.$%%%%.%.%%%%..+ . .#@@@#.#@@@#.@###@.@###@.#@@@@.@###@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%%%%..%.$%.%%.%%%.$%%...%%%.$%%...%%%.$%%%%%.%%%%%..+ . .#@@@#.##@##.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@@@@.@##@@.+ ",
|
||||
" .$%.%.%%%%.$%.....%%.$%%%%%.%%.$%%.%%.%%.$%%%%.%.%%%%..+ . .#@@@#.#@#@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%.%%%%%.$%%%%.%%%.$%%.%%.%%.$%%.%%.%%.$%%%.%%%.%%%..+ . .#@#@#.#@#@#.#@@@@.#####.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%.%.%%%%.$%%%%.%%%.$%%%..%%%.$%%%..%%%.$%%%%%%%%%%%..+ . .#@#@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .#@#@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@##@.@@#@@.+ ",
|
||||
" .%.........%.........%.........%.........%.............+ . .@#@#@.#@@@#.@###@.#@@@#.#####.@###@.@@@@@.@@##@.@###@.+ ",
|
||||
" .$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$$$%.+ . .......................................................+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%%%%.$%%%%.%%%.$%%%..%%%.$%%...%%%.$%%%%%%%%%%%..+ . ",
|
||||
" .$%%....%%.$%%%..%%%.$%%.%%.%%.$%%%%%.%%.$%%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%.%%%%%.$%%%%.%%%.$%%%%%.%%.$%%%..%%%.$%%%.....%%%..+ . .......................................................+ ",
|
||||
" .$%%...%%%.$%%%%.%%%.$%%%..%%%.$%%%%%.%%.$%%%%%%%%%%%..+ . .@@##@.@@@@@.@###@.@###@.@###@.@@@@@.@@@@@.@###@.#####.+ ",
|
||||
" .$%%.%%%%%.$%%%%.%%%.$%%.%%%%%.$%%%%%.%%.$%%%%%%%%%%%..+ . .@#@@@.@@@@@.#@@@#.#@@@#.#@@@#.@@@@@.@@#@@.#@@@#.@@@#@.+ ",
|
||||
" .$%%....%%.$%%%...%%.$%%....%%.$%%...%%%.$%%%%%%%%%%%..+ . .#@@@@.@@@@@.#@@@#.@@@@#.@@@@#.@####.@@#@@.@@@@#.@@#@@.+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .####@.@@@@@.#@@@#.@@@#@.@@@#@.@#@@@.#####.@@@#@.@@@#@.+ ",
|
||||
" .%.........%.........%.........%.........%.............+ . .#@@@#.@@@@@.#@@@#.@@#@@.@@#@@.@###@.@@#@@.@@#@@.@@@@#.+ ",
|
||||
" .$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$$$%.+ . .#@@@#.@@##@.#@@@#.@#@@@.@#@@@.@#@@@.@@#@@.@#@@@.#@@@#.+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .@###@.@@##@.@###@.#####.#####.@####.@@@@@.#####.@###@.+ ",
|
||||
" .$%%.%%%%%.$%%...%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%...%%.%.$%.%%%.%%.$%%%%%%%%.$%%%%%%%%.$%%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%.%%.%%.$%.%%%.%%.$%%%%%%%%.$%%....%%.$%%%%%.%%%%%..+ . ",
|
||||
" .$%%%%.%%%.$%.%%%.%%.$%%%%%%%%.$%%%%%%%%.$%%%.....%%%..+ . ",
|
||||
" .$%%%.%%%%.$%.%%%.%%.$%%%%%%%%.$%%....%%.$%%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%.%%..%.$%.%%%.%%.$%%%..%%%.$%%%%%%%%.$%%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%%%%.$%%...%%%.$%%%..%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .@#@@@.##@@###@@@@#@@####@@##@.####@.##@@@##@@@##@@@@@.+ ",
|
||||
" .$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%%%%..+ . .##@@@#@@#@@.@#@#@#@@#@@.@#@@@.@@@#@#@@#@#.@#@#@.#@@@@.+ ",
|
||||
" .%.........%.........%.........%.........%.............+ . .@#@@@.@@#@@.@#@#@#@@###.@#@@@.@@@#@#@@#@#.@#@#@.#@@@@.+ ",
|
||||
" .......................................................+ . .@#@@@@@#@@@##@@#@#@@@@@#@###@.@@#@@@##@@@###@#@.#@###.+ ",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ . .@#@@@@#@@@@.@#@####@@@@#@#@@#.@#@@@#@@#@@.@#@#@.#@@@@.+ ",
|
||||
" . .@#@@@#@@@@@.@#@@@#@@#@@#@#@@#.@#@@@#@@#@@.@#@#@.#@@@@.+ ",
|
||||
" . .###@@####@###@@@@#@@@##.@@##@.@#@@@.##@@@##@@@##@@@@@.+ ",
|
||||
" . .......................................................+ ",
|
||||
" . .......................................................+ ",
|
||||
"................................................................. ",
|
||||
" ",
|
||||
" ............................................................. .......................................................+ ",
|
||||
" .@@@@@.@###@.@@#@@.@###@.#####.@@@#@.#####.@@##@.#####.@###@. .......................................................+ ",
|
||||
" .@@@@@.#@@@#.@##@@.#@@@#.@@@#@.@@##@.#@@@@.@#@@@.@@@@#.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@@#.@@#@@.@#@#@.####@.#@@@@.@@@#@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@#@.@@@#@.#@@#@.@@@@#.####@.@@#@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@#@@.@@@@#.#####.@@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@##@.#@@@#.@@#@@.@#@@@.#@@@#.@@@#@.#@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@##@.@###@.@###@.#####.@###@.@@@#@.@###@.@###@.@#@@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .......................................................+ ",
|
||||
" .@###@.@@@@@.@###@.####@.@###@.####@.#####.#####.@###@.#@@@#. .......................................................+ ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@@.#@@@#. ",
|
||||
" .@####.#####.#####.####@.#@@@@.#@@@#.####@.####@.#@###.#####. ",
|
||||
" .@@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. .......................................................+ ",
|
||||
" .@@@#@.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. .......................................................+ ",
|
||||
" .@##@@.@@@@@.#@@@#.####@.@###@.####@.#####.#@@@@.@####.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@###@.@@###.#@@@#.#@@@@.#@@@#.#@@@#.@@#@@.####@.@###@.####@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@#@@.@@@#@.#@@#@.#@@@@.##@##.#@@@#.@#@#@.#@@@#.#@@@#.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@#@#.##@@#.#@@@#.#@@@#.#@@@#.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@#@@.@@@#@.##@@@.#@@@@.#@#@#.#@#@#.#@@@#.####@.#@@@#.####@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@@@#.#@@##.#@@@#.#@@@@.#@#@#.#@#@@. .......................................................+ ",
|
||||
" .@@#@@.#@@#@.#@@#@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@@.#@@#@.#@@#@. .......................................................+ ",
|
||||
" .@###@.@##@@.#@@@#.#####.#@@@#.#@@@#.@@#@@.#@@@@.@##@#.#@@@#. ",
|
||||
" ............................................................. ",
|
||||
" ............................................................. ",
|
||||
" .@###@.#####.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#####.@@@@@.@@#@@. .......................................................+ ",
|
||||
" .#@@@#.@@#@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.@@@@#.@@@@@.@@@@@. .......................................................+ ",
|
||||
" .#@@@@.@@#@@.#@@@#.#@@@#.#@@@#.@#@#@.#@@@#.@@@#@.@####.@##@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@###@.@@#@@.#@@@#.#@@@#.#@#@#.@@#@@.@#@#@.@@#@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@#.@@#@@.#@@@#.#@@@#.#@#@#.@#@#@.@@#@@.@#@@@.@###@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .#@@@#.@@#@@.#@@@#.@#@#@.#@#@#.#@@@#.@@#@@.#@@@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@###@.@@#@@.@###@.@@#@@.@#@#@.#@@@#.@@#@@.#####.@####.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. .......................................................+ ",
|
||||
" .@@#@@.@@#@@.@##@@.@##@@.@#@#@.@###@.@@#@@.@###@.@@#@@.@@#@@. .......................................................+ ",
|
||||
" .@@#@@.@##@@.@@@#@.@@@#@.@#@#@.@#@@@.@#@@@.@@@#@.@#@#@.@#@#@. ",
|
||||
" .#####.@@#@@.@@#@@.@@#@@.@###@.@##@@.@##@@.@@#@@.@@#@@.@@##@. ",
|
||||
" .@@#@@.@@#@@.@#@@@.@@@#@.@@@#@.@@@#@.@#@#@.@@#@@.@#@#@.@@@#@. ....................................................... ",
|
||||
" .@@#@@.@###@.@###@.@##@@.@@@#@.@##@@.@@#@@.@@#@@.@@#@@.@@#@@. ..@@@@.####.&&&&.****.====.----.;;;;.>>>>.$$$$.,,,,.... ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ....................................................... ",
|
||||
" ............................................................. ",
|
||||
" ............................................................. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@#@@.@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. "};
|
131
wmcalc/wmcalc2.xpm
Normal file
131
wmcalc/wmcalc2.xpm
Normal file
|
@ -0,0 +1,131 @@
|
|||
/* XPM */
|
||||
static char * wmcalc2_xpm[] = {
|
||||
"128 120 8 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #C7C7C7",
|
||||
"@ c #003F18",
|
||||
"# c #00FF00",
|
||||
"$ c #FFFFFF",
|
||||
"% c #D5D6D5",
|
||||
"& c #000100",
|
||||
" . ",
|
||||
" . ",
|
||||
" . ",
|
||||
" . ",
|
||||
" ............................................................... .......................................................+ ",
|
||||
" .............................................................+. .......................................................+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#####.####@.####@.@@#@@.####@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.#@@@#.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.####@.####@.####@.#@@@#.####@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#@@@@.#@#@@.#@#@@.#@@@#.#@#@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#@@@@.#@@#@.#@@#@.@#@#@.#@@#@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. .@@@@@.@@@@@.#####.#@@@#.#@@@#.@@#@@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .............................................................+. .......................................................+ ",
|
||||
" ..@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@...@@@..+. .......................................................+ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.+. ",
|
||||
" .............................................................+. .......................................................+ ",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. .......................................................+ ",
|
||||
" .$$$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$%.+ . .@@@@@.#####.@@@@@.@@#@@.@@@#@.@@#@@.#####.@###@.#####.+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%.%%%..+ . .@@@@@.@@@#@.@@@@@.@##@@.@@##@.@##@@.#@@@@.#@@@#.@@@#@.+ ",
|
||||
" .$%%%%....%%.$%.....%%.$%%...%%%.$%%...%%%.%%%%%%.%%%..+ . .@@@@@.@@#@@.@@@@@.@@#@@.@#@#@.@@#@@.####@.#@@@#.@@#@@.+ ",
|
||||
" .$%%%%.%%%%%.$%%%%%.%%.$%.%%%.%%.$%.%%%.%%.%%%%%.%%%%..+ . .#####.@@@#@.@@@@@.@@#@@.#@@#@.@@#@@.@@@@#.@####.@@@#@.+ ",
|
||||
" .$%%%%.%%%%%.$%%%%.%%%.$%%...%%%.$%.%%%.%%.%%%%.%%%%%..+ . .@@@@@.@@@@#.@@@@@.@@#@@.#####.@@#@@.@@@@#.@@@@#.@@@@#.+ ",
|
||||
" .$%%.%.%%%%%.$%%%.%%%%.$%.%%%.%%.$%%....%%.%%%.%%%%%%..+ . .@@@@@.#@@@#.@@##@.@@#@@.@@@#@.@@#@@.#@@@#.@@@#@.#@@@#.+ ",
|
||||
" .$%%%..%%%%%.$%%%.%%%%.$%.%%%.%%.$%%%%%.%%.%%.%%%%%%%..+ . .@@@@@.@###@.@@##@.@###@.@@@#@.@###@.@###@.@##@@.@###@.+ ",
|
||||
" .$%%%%.%%%%%.$%%%.%%%%.$%%...%%%.$%%...%%%.%%.%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .%...........%.........%.........%.....................+ . ",
|
||||
" .$$$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$%.+ . .......................................................+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%%%%.%%%.$%%%%.%%%.$%.....%%.$%%...%%%.%%.%%%.%%%..+ . .#@@@#.#@@@#.@###@.@###@.#@@@@.@###@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%%%%%%.%%.$%.%%.%%%.$%.%%%%%%.$%.%%%%%%.%%%.%.%%%%..+ . .#@@@#.##@##.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@@@@.@##@@.+ ",
|
||||
" .$%%%%%%.%%%.$%.%%.%%%.$%....%%%.$%....%%%.%%%%.%%%%%..+ . .#@@@#.#@#@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%.%.%..%%.$%.....%%.$%%%%%.%%.$%.%%%.%%.%%%.%.%%%%..+ . .#@#@#.#@#@#.#@@@@.#####.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%%.%%%%%%.$%%%%.%%%.$%.%%%.%%.$%.%%%.%%.%%.%%%.%%%..+ . .#@#@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" .$%%.%.%%%%%.$%%%%.%%%.$%%...%%%.$%%...%%%.%%%%%%%%%%..+ . .#@#@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@##@.@@#@@.+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .@#@#@.#@@@#.@###@.#@@@#.#####.@###@.@@@@@.@@##@.@###@.+ ",
|
||||
" .%...........%.........%.........%.....................+ . .......................................................+ ",
|
||||
" .$$$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$%.+ . .......................................................+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . ",
|
||||
" .$%%%%%%%%%%.$%%%%.%%%.$%%...%%%.$%....%%%.%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%....%%%%.$%%%..%%%.$%.%%%.%%.$%%%%%.%%.%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%.%%%%%%%.$%%%%.%%%.$%%%%%.%%.$%%...%%%.%%.....%%%..+ . .@@##@.@@@@@.@###@.@###@.@###@.@@@@@.@@@@@.@###@.#####.+ ",
|
||||
" .$%%...%%%%%.$%%%%.%%%.$%%...%%%.$%%%%%.%%.%%%%%%%%%%..+ . .@#@@@.@@@@@.#@@@#.#@@@#.#@@@#.@@@@@.@@#@@.#@@@#.@@@#@.+ ",
|
||||
" .$%%.%%%%%%%.$%%%%.%%%.$%.%%%%%%.$%.%%%.%%.%%%%%%%%%%..+ . .#@@@@.@@@@@.#@@@#.@@@@#.@@@@#.@####.@@#@@.@@@@#.@@#@@.+ ",
|
||||
" .$%%....%%%%.$%%%...%%.$%.....%%.$%%...%%%.%%%%%%%%%%..+ . .####@.@@@@@.#@@@#.@@@#@.@@@#@.@#@@@.#####.@@@#@.@@@#@.+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .#@@@#.@@@@@.#@@@#.@@#@@.@@#@@.@###@.@@#@@.@@#@@.@@@@#.+ ",
|
||||
" .%...........%.........%.........%.....................+ . .#@@@#.@@##@.#@@@#.@#@@@.@#@@@.@#@@@.@@#@@.@#@@@.#@@@#.+ ",
|
||||
" .$$$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$$%.+ . .@###@.@@##@.@###@.#####.#####.@####.@@@@@.#####.@###@.+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%.%%%.%%.$%%...%%%.$%%%%%%%%.$%%%%%%%%.%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%...%.%%%.$%.%%%.%%.$%%%%%%%%.$%%....%%.%%%%.%%%%%..+ . ",
|
||||
" .$%%%.%.%%%%.$%.%%%.%%.$%%%%%%%%.$%%%%%%%%.%%.....%%%..+ . ",
|
||||
" .$%%%%.%%%%%.$%.%%%.%%.$%%%%%%%%.$%%....%%.%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%%.%%%%%%.$%.%%%.%%.$%%%..%%%.$%%%%%%%%.%%%%.%%%%%..+ . .......................................................+ ",
|
||||
" .$%%.%%...%%.$%%...%%%.$%%%..%%%.$%%%%%%%%.%%%%%%%%%%..+ . .@@#@.@##@.###@.@@#@.####.@##@.####.@##@.@##@.@##@.@@@.+ ",
|
||||
" .$%%%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.%%%%%%%%%%..+ . .@##@.#@@#.@@@#.#@#@.#@@@.#@@@.@@@#.#@@#.#@@#.#@@#.@@@.+ ",
|
||||
" .%...........%.........%.........%.....................+ . .@@#@.@@@#.@@@#.#@#@.###@.#@@@.@@@#.#@@#.#@@#.#@@#.@@@.+ ",
|
||||
" .......................................................+ . .@@#@.@@#@.@##@.#@#@.@@@#@###@.@@#@.@##@.@###.#@@#.###.+ ",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ . .@@#@.@#@@.@@@#.####.@@@#@#@@#.@#@@.#@@#.@@@#.#@@#.@@@.+ ",
|
||||
" . .@@#@.#@@@.@@@#.@@#@.#@@#@#@@#.@#@@.#@@#.@@@#.#@@#.@@@.+ ",
|
||||
" . .@###.####.###@.@@#@.@##..@##@.@#@@.@##@.@##@.@##@.@@@.+ ",
|
||||
" . .......................................................+ ",
|
||||
" . .......................................................+ ",
|
||||
"................................................................. ",
|
||||
" ",
|
||||
" ............................................................. ",
|
||||
" .@@@@@.@###@.@@#@@.@###@.#####.@@@#@.#####.@@##@.#####.@###@. ............................................................. ",
|
||||
" .@@@@@.#@@@#.@##@@.#@@@#.@@@#@.@@##@.#@@@@.@#@@@.@@@@#.#@@@#. ............................................................. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@@#.@@#@@.@#@#@.####@.#@@@@.@@@#@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@#@.@@@#@.#@@#@.@@@@#.####@.@@#@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@#@@.@@@@#.#####.@@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@##@.#@@@#.@@#@@.@#@@@.#@@@#.@@@#@.#@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@##@.@###@.@###@.#####.@###@.@@@#@.@###@.@###@.@#@@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@###@.@@@@@.@###@.####@.@###@.####@.#####.#####.@###@.#@@@#. ............................................................. ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@####.#####.#####.####@.#@@@@.#@@@#.####@.####@.#@###.#####. ............................................................. ",
|
||||
" .@@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. ",
|
||||
" .@@@#@.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. ............................................................. ",
|
||||
" .@##@@.@@@@@.#@@@#.####@.@###@.####@.#####.#@@@@.@####.#@@@#. .....................................................@#@.@#@. ",
|
||||
" ............................................................. .@@#@@.@@@@@.@@##@.@###@.@###@.@###@.@###@.@###@.....##@.#@#. ",
|
||||
" ............................................................. .@##@@.@@@@@.@#@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.###.@#@.@##. ",
|
||||
" .@###@.@@###.#@@@#.#@@@@.#@@@#.#@@@#.@@#@@.####@.@###@.####@. .@@#@@.@@@@@.#@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.....@#@.@@#. ",
|
||||
" .@@#@@.@@@#@.#@@#@.#@@@@.##@##.#@@@#.@#@#@.#@@@#.#@@@#.#@@@#. .@@#@@.@@@@@.####@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.....###.@#@. ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@#@#.##@@#.#@@@#.#@@@#.#@@@#.#@@@#. .@@#@@.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#...........&& ",
|
||||
" .@@#@@.@@@#@.##@@@.#@@@@.#@#@#.#@#@#.#@@@#.####@.#@@@#.####@. .@@#@@.@@##@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.@@###@@###@& ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@@@#.#@@##.#@@@#.#@@@@.#@#@#.#@#@@. .@###@.@@##@.@###@.@###@.@###@.@###@.@###@.@###@.@#@@@@#@@@@. ",
|
||||
" .@@#@@.#@@#@.#@@#@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@@.#@@#@.#@@#@. .................................................@@##@@#@@@@. ",
|
||||
" .@###@.@##@@.#@@@#.#####.#@@@#.#@@@#.@@#@@.#@@@@.@##@#.#@@@#. ..###...@@@...###...@@@...###...###...@@@...@@@..@@@@#@#@@@@. ",
|
||||
" ............................................................. .#####.@@@@@.#####.@@@@@.#####.#####.@@@@@.@@@@@.@###@@@###@. ",
|
||||
" ............................................................. ............................................................. ",
|
||||
" .@###@.#####.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#####.@@@@@.@@#@@. ",
|
||||
" .#@@@#.@@#@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.@@@@#.@@@@@.@@@@@. ............................................................. ",
|
||||
" .#@@@@.@@#@@.#@@@#.#@@@#.#@@@#.@#@#@.#@@@#.@@@#@.@####.@##@@. .....................................................@@@.@@@. ",
|
||||
" .@###@.@@#@@.#@@@#.#@@@#.#@#@#.@@#@@.@#@#@.@@#@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" .@@@@#.@@#@@.#@@@#.#@@@#.#@#@#.@#@#@.@@#@@.@#@@@.@###@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@.@@@.@@@. ",
|
||||
" .#@@@#.@@#@@.#@@@#.@#@#@.#@#@#.#@@@#.@@#@@.#@@@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" .@###@.@@#@@.@###@.@@#@@.@#@#@.#@@@#.@@#@@.#####.@####.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@............. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@#@@.@@#@@.@##@@.@##@@.@#@#@.@###@.@@#@@.@###@.@@#@@.@@#@@. .................................................@@@@@@@@@@@. ",
|
||||
" .@@#@@.@##@@.@@@#@.@@@#@.@#@#@.@#@@@.@#@@@.@@@#@.@#@#@.@#@#@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .#####.@@#@@.@@#@@.@@#@@.@###@.@##@@.@##@@.@@#@@.@@#@@.@@##@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@#@@.@@#@@.@#@@@.@@@#@.@@@#@.@@@#@.@#@#@.@@#@@.@#@#@.@@@#@. ............................................................. ",
|
||||
" .@@#@@.@###@.@###@.@##@@.@@@#@.@##@@.@@#@@.@@#@@.@@#@@.@@#@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @@###@@###@ @####@#@@@@ @####@#@@#@ @@@@@@@@@@@ ",
|
||||
" ............................................................. @#@@@@#@@@@ @#@@@@#@@@@ @#@@@@##@#@ @@@@@@@@@@@ ",
|
||||
" ............................................................. @@##@@#@@@@ @###@@#@@@@ @###@@####@ @@@@@@@@@@@ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @@@@#@#@@@@ @#@@@@#@@@@ @#@@@@#@##@ @@@@@@@@@@@ ",
|
||||
" .@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @###@@@###@ @#@@@@####@ @####@#@@#@ @@@@@@@@@@@ ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@#@@.@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. "};
|
131
wmcalc/wmcalc3.xpm
Normal file
131
wmcalc/wmcalc3.xpm
Normal file
|
@ -0,0 +1,131 @@
|
|||
/* XPM */
|
||||
static char * wmcalc3_xpm[] = {
|
||||
"128 120 8 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #C7C7C7",
|
||||
"@ c #003F18",
|
||||
"# c #00FF00",
|
||||
"$ c #FFFFFF",
|
||||
"% c #D5D6D5",
|
||||
"& c #000100",
|
||||
" . ",
|
||||
" . ",
|
||||
" .............................................................+ . ",
|
||||
" .@@@@@.@@##@.@@@@@.@###@.@###@.@###@.@@@@@.@@@@@.@###@.#####.+ . ",
|
||||
" .@@@@@.@#@@@.@@@@@.#@@@#.#@@@#.#@@@#.@@@@@.@@#@@.#@@@#.@@@#@.+ . .......................................................+ ",
|
||||
" .@@@@@.#@@@@.@@@@@.#@@@#.@@@@#.@@@@#.@####.@@#@@.@@@@#.@@#@@.+ . .......................................................+ ",
|
||||
" .@@@@@.####@.@@@@@.#@@@#.@@@#@.@@@#@.@#@@@.#####.@@@#@.@@@#@.+ . .@@@@@.@@@@@.#####.####@.####@.@@#@@.####@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#@@@#.@@@@@.#@@@#.@@#@@.@@#@@.@###@.@@#@@.@@#@@.@@@@#.+ . .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#@@@#.@@##@.#@@@#.@#@@@.@#@@@.@#@@@.@@#@@.@#@@@.#@@@#.+ . .@@@@@.@@@@@.#@@@@.#@@@#.#@@@#.#@@@#.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@###@.@@##@.@###@.#####.#####.@####.@@@@@.#####.@###@.+ . .@@@@@.@@@@@.####@.####@.####@.#@@@#.####@.@@@@@.@@@@@.+ ",
|
||||
" .............................................................+ . .@@@@@.@@@@@.#@@@@.#@#@@.#@#@@.#@@@#.#@#@@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.#####.@@@@@.@@#@@.@@@#@.@@#@@.#####.@###@.@###@.#####.+ . .@@@@@.@@@@@.#@@@@.#@@#@.#@@#@.@#@#@.#@@#@.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@@#@.@@@@@.@##@@.@@##@.@##@@.#@@@@.#@@@#.#@@@#.@@@@#.+ . .@@@@@.@@@@@.#####.#@@@#.#@@@#.@@#@@.#@@@#.@@@@@.@@@@@.+ ",
|
||||
" .@@@@@.@@#@@.@@@@@.@@#@@.@#@#@.@@#@@.####@.#@@@#.@@@@#.@@@#@.+ . .......................................................+ ",
|
||||
" .#####.@@@#@.@@@@@.@@#@@.#@@#@.@@#@@.@@@@#.@####.@@@#@.@@#@@.+ . .......................................................+ ",
|
||||
" .@@@@@.@@@@#.@@@@@.@@#@@.#####.@@#@@.@@@@#.@@@@#.@@#@@.@#@@@.+ . ",
|
||||
" .@@@@@.#@@@#.@@##@.@@#@@.@@@#@.@@#@@.#@@@#.@@@#@.@#@@@.@#@@@.+ . .......................................................+ ",
|
||||
" .@@@@@.@###@.@@##@.@###@.@@@#@.@###@.@###@.@##@@.#####.@#@@@.+ . .......................................................+ ",
|
||||
" .............................................................+ . .@@@@@.#####.@@@@@.@@#@@.@@@#@.@@#@@.#####.@###@.#####.+ ",
|
||||
" ..###...@@@...@@@...###...###...@@@...@@@...###...@@@...###..+ . .@@@@@.@@@#@.@@@@@.@##@@.@@##@.@##@@.#@@@@.#@@@#.@@@#@.+ ",
|
||||
" .............................................................+ . .@@@@@.@@#@@.@@@@@.@@#@@.@#@#@.@@#@@.####@.#@@@#.@@#@@.+ ",
|
||||
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ . .#####.@@@#@.@@@@@.@@#@@.#@@#@.@@#@@.@@@@#.@####.@@@#@.+ ",
|
||||
" $$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$% . .@@@@@.@@@@#.@@@@@.@@#@@.#####.@@#@@.@@@@#.@@@@#.@@@@#.+ ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .@@@@@.#@@@#.@@##@.@@#@@.@@@#@.@@#@@.#@@@#.@@@#@.#@@@#.+ ",
|
||||
" $%%%%%%%%.$%%%....%.$%.....%%.$%%...%%%.$%%...%%%.$%%%%%.%%. . .@@@@@.@###@.@@##@.@###@.@@@#@.@###@.@###@.@##@@.@###@.+ ",
|
||||
" $%......%.$%%%.%%%%.$%%%%%.%%.$%.%%%.%%.$%.%%%.%%.$%%%%%.%%. . .......................................................+ ",
|
||||
" $%%.%%.%%.$%%%.%%%%.$%%%%.%%%.$%%...%%%.$%.%%%.%%.$%%%%.%%%. . .......................................................+ ",
|
||||
" $%%.%%.%%.$%.%.%%%%.$%%%.%%%%.$%.%%%.%%.$%%....%%.$%%%.%%%%. . ",
|
||||
" $%%.%%.%%.$%%..%%%%.$%%%.%%%%.$%.%%%.%%.$%%%%%.%%.$%%.%%%%%. . .......................................................+ ",
|
||||
" $%%.%%.%%.$%%%.%%%%.$%%%.%%%%.$%%...%%%.$%%...%%%.$%%.%%%%%. . .......................................................+ ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .#@@@#.#@@@#.@###@.@###@.#@@@@.@###@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" %.........%.........%.........%.........%.........%......... . .#@@@#.##@##.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@@@@.@##@@.+ ",
|
||||
" $$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$% . .#@@@#.#@#@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" $%%%%%%%%.$%%%%..%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .#@#@#.#@#@#.#@@@@.#####.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" $%%%%%%%%.$%%%%%%.%.$%.%%.%%%.$%.....%%.$%%...%%%.$%.%%%.%%. . .#@#@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.@@@@@.@@@@@.@@#@@.+ ",
|
||||
" $%%%..%%%.$%%%%%.%%.$%.%%.%%%.$%.%%%%%%.$%.%%%%%%.$%%.%.%%%. . .#@#@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@#.@@@@@.@@##@.@@#@@.+ ",
|
||||
" $%%.%%.%%.$%%%%.%%%.$%.%%.%%%.$%....%%%.$%....%%%.$%%%.%%%%. . .@#@#@.#@@@#.@###@.#@@@#.#####.@###@.@@@@@.@@##@.@###@.+ ",
|
||||
" $%%....%%.$.%.%...%.$%.....%%.$%%%%%.%%.$%.%%%.%%.$%%.%.%%%. . .......................................................+ ",
|
||||
" $%%.%%%%%.$%.%%%%%%.$%%%%.%%%.$%.%%%.%%.$%.%%%.%%.$%.%%%.%%. . .......................................................+ ",
|
||||
" $%%%..%%%.$.%.%%%%%.$%%%%.%%%.$%%...%%%.$%%...%%%.$%%%%%%%%. . ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .......................................................+ ",
|
||||
" %.........%.........%.........%.........%.........%......... . .......................................................+ ",
|
||||
" $$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$% . .@@##@.@@@@@.@###@.@###@.@###@.@@@@@.@@@@@.@###@.#####.+ ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .@#@@@.@@@@@.#@@@#.#@@@#.#@@@#.@@@@@.@@#@@.#@@@#.@@@#@.+ ",
|
||||
" $%.%%%%%%.$%%%%%%%%.$%%%.%%%%.$%%...%%%.$%....%%%.$%%%%%%%%. . .#@@@@.@@@@@.#@@@#.@@@@#.@@@@#.@####.@@#@@.@@@@#.@@#@@.+ ",
|
||||
" $%.%%%%%%.$%%....%%.$%%..%%%%.$%.%%%.%%.$%%%%%.%%.$%%%%%%%%. . .####@.@@@@@.#@@@#.@@@#@.@@@#@.@#@@@.#####.@@@#@.@@@#@.+ ",
|
||||
" $%.%.%.%%.$%%.%%%%%.$%%%.%%%%.$%%%%%.%%.$%%...%%%.$%.....%%. . .#@@@#.@@@@@.#@@@#.@@#@@.@@#@@.@###@.@@#@@.@@#@@.@@@@#.+ ",
|
||||
" $%.%..%.%.$%%...%%%.$%%%.%%%%.$%%...%%%.$%%%%%.%%.$%%%%%%%%. . .#@@@#.@@##@.#@@@#.@#@@@.@#@@@.@#@@@.@@#@@.@#@@@.#@@@#.+ ",
|
||||
" $%.%.%%.%.$%%.%%%%%.$%%%.%%%%.$%.%%%%%%.$%.%%%.%%.$%%%%%%%%. . .@###@.@@##@.@###@.#####.#####.@####.@@@@@.#####.@###@.+ ",
|
||||
" $%.%.%%.%.$%%....%%.$%%...%%%.$%.....%%.$%%...%%%.$%%%%%%%%. . .......................................................+ ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .......................................................+ ",
|
||||
" %.........%.........%.........%.........%.........%......... . ",
|
||||
" $$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$%$$$$$$$$$% . ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .......................................................+ ",
|
||||
" $.%%%%.%%.$%%.%%%.%.$%%...%%%.$%%%%%%%%.$%%%%%%%%.$%%%.%%%%. . .......................................................+ ",
|
||||
" $.%.%.%.%.$%...%.%%.$%.%%%.%%.$%%%%%%%%.$%%%%%%%%.$%%%.%%%%. . .@@#@.@##@.###@.@@#@.####.@##@.####.@##@.@##@.@##@.@@@.+ ",
|
||||
" $..%..%.%.$%%.%.%%%.$%.%%%.%%.$%%%%%%%%.$%.....%%.$%.....%%. . .@##@.#@@#.@@@#.#@#@.#@@@.#@@@.@@@#.#@@#.#@@#.#@@#.@@@.+ ",
|
||||
" $..%.%..%.$%%%.%%%%.$%.%%%.%%.$%%%..%%%.$%%%%%%%%.$%%%.%%%%. . .@@#@.@@@#.@@@#.#@#@.###@.#@@@.@@@#.#@@#.#@@#.#@@#.@@@.+ ",
|
||||
" $.%.%%%.%.$%%.%%%%%.$%.%%%.%%.$%%%..%%%.$%.....%%.$%%%.%%%%. . .@@#@.@@#@.@##@.#@#@.@@@#@###@.@@#@.@##@.@###.#@@#.###.+ ",
|
||||
" $.%%%%.%%.$%.%%...%.$%%...%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .@@#@.@#@@.@@@#.####.@@@#@#@@#.@#@@.#@@#.@@@#.#@@#.@@@.+ ",
|
||||
" $%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%.$%%%%%%%%. . .@@#@.#@@@.@@@#.@@#@.#@@#@#@@#.@#@@.#@@#.@@@#.#@@#.@@@.+ ",
|
||||
" %.........%.........%.........%.........%.........%......... . .@###.####.###@.@@#@.@##..@##@.@#@@.@##@.@##@.@##@.@@@.+ ",
|
||||
" . .......................................................+ ",
|
||||
" . .......................................................+ ",
|
||||
"................................................................. ",
|
||||
" ",
|
||||
" ............................................................. ",
|
||||
" .@@@@@.@###@.@@#@@.@###@.#####.@@@#@.#####.@@##@.#####.@###@. ............................................................. ",
|
||||
" .@@@@@.#@@@#.@##@@.#@@@#.@@@#@.@@##@.#@@@@.@#@@@.@@@@#.#@@@#. ............................................................. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@@#.@@#@@.@#@#@.####@.#@@@@.@@@#@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@@#@.@@@#@.#@@#@.@@@@#.####@.@@#@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.#@@@#.@@#@@.@@#@@.@@@@#.#####.@@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@##@.#@@@#.@@#@@.@#@@@.#@@@#.@@@#@.#@@@#.#@@@#.@#@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@##@.@###@.@###@.#####.@###@.@@@#@.@###@.@###@.@#@@@.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@###@.@@@@@.@###@.####@.@###@.####@.#####.#####.@###@.#@@@#. ............................................................. ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .#@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@@.#@@@#. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@####.#####.#####.####@.#@@@@.#@@@#.####@.####@.#@###.#####. ............................................................. ",
|
||||
" .@@@@#.@@@@@.#@@@#.#@@@#.#@@@@.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. ",
|
||||
" .@@@#@.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@@.#@@@@.#@@@#.#@@@#. ............................................................. ",
|
||||
" .@##@@.@@@@@.#@@@#.####@.@###@.####@.#####.#@@@@.@####.#@@@#. .....................................................@#@.@#@. ",
|
||||
" ............................................................. .@@#@@.@@@@@.@@##@.@###@.@###@.@###@.@###@.@###@.....##@.#@#. ",
|
||||
" ............................................................. .@##@@.@@@@@.@#@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.###.@#@.@##. ",
|
||||
" .@###@.@@###.#@@@#.#@@@@.#@@@#.#@@@#.@@#@@.####@.@###@.####@. .@@#@@.@@@@@.#@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.....@#@.@@#. ",
|
||||
" .@@#@@.@@@#@.#@@#@.#@@@@.##@##.#@@@#.@#@#@.#@@@#.#@@@#.#@@@#. .@@#@@.@@@@@.####@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.....###.@#@. ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@#@#.##@@#.#@@@#.#@@@#.#@@@#.#@@@#. .@@#@@.@@@@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#...........&& ",
|
||||
" .@@#@@.@@@#@.##@@@.#@@@@.#@#@#.#@#@#.#@@@#.####@.#@@@#.####@. .@@#@@.@@##@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.@@###@@###@& ",
|
||||
" .@@#@@.@@@#@.#@#@@.#@@@@.#@@@#.#@@##.#@@@#.#@@@@.#@#@#.#@#@@. .@###@.@@##@.@###@.@###@.@###@.@###@.@###@.@###@.@#@@@@#@@@@. ",
|
||||
" .@@#@@.#@@#@.#@@#@.#@@@@.#@@@#.#@@@#.@#@#@.#@@@@.#@@#@.#@@#@. .................................................@@##@@#@@@@. ",
|
||||
" .@###@.@##@@.#@@@#.#####.#@@@#.#@@@#.@@#@@.#@@@@.@##@#.#@@@#. .#####.@@@@@.#####.@@@@@.#####.#####.@@@@@.@@@@@.@@@@#@#@@@@. ",
|
||||
" ............................................................. .#####.@@@@@.#####.@@@@@.#####.#####.@@@@@.@@@@@.@###@@@###@. ",
|
||||
" ............................................................. ............................................................. ",
|
||||
" .@###@.#####.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.#####.@@@@@.@@#@@. ",
|
||||
" .#@@@#.@@#@@.#@@@#.#@@@#.#@@@#.#@@@#.#@@@#.@@@@#.@@@@@.@@@@@. ............................................................. ",
|
||||
" .#@@@@.@@#@@.#@@@#.#@@@#.#@@@#.@#@#@.#@@@#.@@@#@.@####.@##@@. .....................................................@@@.@@@. ",
|
||||
" .@###@.@@#@@.#@@@#.#@@@#.#@#@#.@@#@@.@#@#@.@@#@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" .@@@@#.@@#@@.#@@@#.#@@@#.#@#@#.@#@#@.@@#@@.@#@@@.@###@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@.@@@.@@@. ",
|
||||
" .#@@@#.@@#@@.#@@@#.@#@#@.#@#@#.#@@@#.@@#@@.#@@@@.@#@@@.@@#@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" .@###@.@@#@@.@###@.@@#@@.@#@#@.#@@@#.@@#@@.#####.@####.@###@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.....@@@.@@@. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@............. ",
|
||||
" ............................................................. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@#@@.@@#@@.@##@@.@##@@.@#@#@.@###@.@@#@@.@###@.@@#@@.@@#@@. .................................................@@@@@@@@@@@. ",
|
||||
" .@@#@@.@##@@.@@@#@.@@@#@.@#@#@.@#@@@.@#@@@.@@@#@.@#@#@.@#@#@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .#####.@@#@@.@@#@@.@@#@@.@###@.@##@@.@##@@.@@#@@.@@#@@.@@##@. .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@@@@@@@. ",
|
||||
" .@@#@@.@@#@@.@#@@@.@@@#@.@@@#@.@@@#@.@#@#@.@@#@@.@#@#@.@@@#@. ............................................................. ",
|
||||
" .@@#@@.@###@.@###@.@##@@.@@@#@.@##@@.@@#@@.@@#@@.@@#@@.@@#@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @@###@@###@ @####@#@@@@ @####@#@@#@ @@@@@@@@@@@ ",
|
||||
" ............................................................. @#@@@@#@@@@ @#@@@@#@@@@ @#@@@@##@#@ @@@@@@@@@@@ ",
|
||||
" ............................................................. @@##@@#@@@@ @###@@#@@@@ @###@@####@ @@@@@@@@@@@ ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @@@@#@#@@@@ @#@@@@#@@@@ @#@@@@#@##@ @@@@@@@@@@@ ",
|
||||
" .@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. @###@@@###@ @#@@@@####@ @####@#@@#@ @@@@@@@@@@@ ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@#@#@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@#@@.@@#@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" .@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@.@@@@@. ",
|
||||
" ............................................................. "};
|
38
wmcalc/wmcalc_c.h
Normal file
38
wmcalc/wmcalc_c.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* File: wmcalc_c.h
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
* Version: 0.2
|
||||
*
|
||||
* Description:
|
||||
* This file contains the constants settings for the wmcalc program,
|
||||
* except for the error constants, which are contained in the file wmcalc_err.h
|
||||
*
|
||||
* Change History:
|
||||
* Date Modification
|
||||
* 10/25/00 Original file creation, extracted from wmcalc.h
|
||||
*/
|
||||
#ifndef WMCALC_C_H
|
||||
#define WMCALC_C_H
|
||||
|
||||
#define CONFIGFILEMAX 128
|
||||
#define CALC_CMD_SIZE 128
|
||||
#define CONFFILENAME "/.wmcalc"
|
||||
#define CONFTEMPFILE "/tmp/wmcalc.tmp"
|
||||
#define CONFIGGLOBAL "/etc/wmcalc.conf"
|
||||
#define VER 0
|
||||
#define REL 3
|
||||
|
||||
#define LMASK 100
|
||||
#define MMASK 200
|
||||
#define RMASK 300
|
||||
|
||||
#define CALCDONE 20 // Anything >= 10 should work
|
||||
#define DISPSIZE 10 // Number of characters in display
|
||||
#define NUM_BUTTONS 21
|
||||
#define NUM_MEM_CELLS 10
|
||||
|
||||
#define APP_WIDTH 64
|
||||
#define APP_HEIGHT 64
|
||||
|
||||
#define NO_BUTTON -1
|
||||
|
||||
#endif
|
31
wmcalc/wmcalc_err.h
Normal file
31
wmcalc/wmcalc_err.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* File: wmcalc_err.h
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
* Version: 0.2
|
||||
*
|
||||
* Description:
|
||||
* This file contains the error codes for the wmcalc program.
|
||||
*
|
||||
* Change History:
|
||||
* Date Modification
|
||||
* 10/25/00 Original file creation, extracted from wmcalc.h
|
||||
*/
|
||||
|
||||
#ifndef WMCALC_ERR_H
|
||||
#define WMCALC_ERR_H
|
||||
|
||||
#define OKAY 0
|
||||
|
||||
#define ERR_FILE_NOT_FOUND 1001
|
||||
#define ERR_TMP_FILE_FAILED 1002
|
||||
|
||||
#define ERR_X_CREATE_WINDOW 1101
|
||||
#define ERR_X_CREATE_BITMAP 1102
|
||||
#define ERR_SETUP_WINDOW_NAME 1103
|
||||
#define ERR_CREATE_GC 1104
|
||||
#define ERR_X_DISPLAY 1105
|
||||
|
||||
#define ERR_CREATE_PIXMAP 1201
|
||||
|
||||
|
||||
|
||||
#endif
|
80
wmcalc/wmcalc_f.h
Normal file
80
wmcalc/wmcalc_f.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/* File: wmcalc_f.h
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
* Version: 0.2
|
||||
*
|
||||
* Description:
|
||||
* This file contains the function prototypes for functional
|
||||
* components of the wmcalc program.
|
||||
*
|
||||
* Change History:
|
||||
* Date Modification
|
||||
* 01/17/01 Updated whichKey() function to take a KeySym
|
||||
* 11/09/00 Removed function clrmem() as this was merged into clrallmem()
|
||||
* Also add function whichKey, in wmcalc.c to handle Keyboard
|
||||
* events
|
||||
* 10/25/00 Original file creation, extracted from wmcalc.h
|
||||
*/
|
||||
|
||||
#ifndef WMCALC_F_H
|
||||
#define WMCALC_F_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "wmcalc_x.h"
|
||||
#include "wmcalc_t.h"
|
||||
|
||||
void ExecFunc(int val); // function to run app N as found in conf file
|
||||
void redraw(void);
|
||||
void getPixmaps(void);
|
||||
int whichButton(int x, int y); // determine which button has been pressed
|
||||
int whichKey(KeySym keysym); // determine which key has been pressed
|
||||
int flush_expose(Window w);
|
||||
void show_usage(void); // show usage message to stderr
|
||||
char *readln(FILE *fp); // read line from file, return pointer to it
|
||||
void defineButtonRegions(void); // Define boundaries for each button
|
||||
void displaystr(void);
|
||||
void displaychar(char ch, int location);
|
||||
ButtonArea getboundaries(char ch);
|
||||
int read_config(void);
|
||||
int write_config(void);
|
||||
void error_handler(int err_code, char *err_string);
|
||||
|
||||
/* Calculator Specific functions */
|
||||
|
||||
void clearcalc(void);
|
||||
void clearnum(void);
|
||||
void addnums(void);
|
||||
void subtnums(void);
|
||||
void multnums(void);
|
||||
void divnums(void);
|
||||
void chgsignnum(void);
|
||||
void sqrtnum(void);
|
||||
void sqrnum(void);
|
||||
void charkey(char ch);
|
||||
void equalfunc(void);
|
||||
void stormem(int mem_loc);
|
||||
void clrallmem(void);
|
||||
void startcalc(void);
|
||||
void recallmem(int mem_loc);
|
||||
|
||||
/* Future functions yet to be implemented */
|
||||
|
||||
//void scinotation(void);
|
||||
//void clearmem(void);
|
||||
//void userdef201(void);
|
||||
//void userdef205(void);
|
||||
//void userdef206(void);
|
||||
//void userdef210(void);
|
||||
//void userdef211(void);
|
||||
//void userdef215(void);
|
||||
//void userdef218(void);
|
||||
//void userdef220(void);
|
||||
//void userdef301(void);
|
||||
//void userdef305(void);
|
||||
//void userdef306(void);
|
||||
//void userdef310(void);
|
||||
//void userdef315(void);
|
||||
//void userdef318(void);
|
||||
//void userdef320(void);
|
||||
|
||||
|
||||
#endif
|
73
wmcalc/wmcalc_g.h
Normal file
73
wmcalc/wmcalc_g.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
/* File: wmcalc_g.h
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
* Version: 0.2
|
||||
*
|
||||
* Description:
|
||||
* This file contains the global variables used by the wmcalc program.
|
||||
*
|
||||
* Change History:
|
||||
* Date Modification
|
||||
* 10/25/00 Original file creation, extracted from wmcalc.h
|
||||
* 11/05/00 Added MemLock global array for locking values into Memory
|
||||
* 11/05/00 Added Entries for "Locked" memory values in config CfgVarList
|
||||
*/
|
||||
|
||||
#ifndef WMCALC_G_H
|
||||
#define WMCALC_G_H
|
||||
|
||||
#include "wmcalc_x.h"
|
||||
#include "wmcalc_c.h"
|
||||
|
||||
|
||||
/* X11 Globals */
|
||||
Display *display;
|
||||
int screen;
|
||||
Window rootwin, win, iconwin;
|
||||
GC gc;
|
||||
int depth;
|
||||
Pixel bg_pixel, fg_pixel;
|
||||
|
||||
XSizeHints xsizehints;
|
||||
XWMHints *xwmhints;
|
||||
XClassHint xclasshint;
|
||||
char configfile[CONFIGFILEMAX];
|
||||
char tempfile[CONFIGFILEMAX];
|
||||
|
||||
Pixmap pixmask;
|
||||
|
||||
ButtonArea dispchar;
|
||||
XpmIcon template, visible, buttons, charmap;
|
||||
|
||||
|
||||
/* Configuration File Information */
|
||||
char *CfgVarList[MAX_LABEL] = {"Mem0",
|
||||
"Mem1",
|
||||
"Mem2",
|
||||
"Mem3",
|
||||
"Mem4",
|
||||
"Mem5",
|
||||
"Mem6",
|
||||
"Mem7",
|
||||
"Mem8",
|
||||
"Mem9",
|
||||
"MEM0",
|
||||
"MEM1",
|
||||
"MEM2",
|
||||
"MEM3",
|
||||
"MEM4",
|
||||
"MEM5",
|
||||
"MEM6",
|
||||
"MEM7",
|
||||
"MEM8",
|
||||
"MEM9",
|
||||
"ImagChar",
|
||||
"CalcStart"};
|
||||
|
||||
char ImagChar = 'j';
|
||||
char SysCalcCmd[CALC_CMD_SIZE] = "xcalc &";
|
||||
|
||||
|
||||
double MemArray[NUM_MEM_CELLS];
|
||||
int MemLock [NUM_MEM_CELLS];
|
||||
|
||||
#endif
|
54
wmcalc/wmcalc_t.h
Normal file
54
wmcalc/wmcalc_t.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
/* File: wmcalc_t.h
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
* Version: 0.2
|
||||
*
|
||||
* Description:
|
||||
* This file contains the typedefs for the wmcalc program.
|
||||
*
|
||||
* Change History:
|
||||
* Date Modification
|
||||
* 10/25/00 Original file creation, extracted from wmcalc.h
|
||||
*/
|
||||
|
||||
#ifndef WMCALC_T_H
|
||||
#define WMCALC_T_H
|
||||
|
||||
typedef struct _XpmIcon {
|
||||
Pixmap pixmap;
|
||||
Pixmap mask;
|
||||
XpmAttributes attributes;
|
||||
} XpmIcon;
|
||||
|
||||
typedef struct _button_region {
|
||||
int x,y;
|
||||
int i,j;
|
||||
} ButtonArea;
|
||||
|
||||
typedef enum {
|
||||
MEM_LABEL_0 = 0,
|
||||
MEM_LABEL_1,
|
||||
MEM_LABEL_2,
|
||||
MEM_LABEL_3,
|
||||
MEM_LABEL_4,
|
||||
MEM_LABEL_5,
|
||||
MEM_LABEL_6,
|
||||
MEM_LABEL_7,
|
||||
MEM_LABEL_8,
|
||||
MEM_LABEL_9,
|
||||
MEM_LOCK_0,
|
||||
MEM_LOCK_1,
|
||||
MEM_LOCK_2,
|
||||
MEM_LOCK_3,
|
||||
MEM_LOCK_4,
|
||||
MEM_LOCK_5,
|
||||
MEM_LOCK_6,
|
||||
MEM_LOCK_7,
|
||||
MEM_LOCK_8,
|
||||
MEM_LOCK_9,
|
||||
IMAG_LABEL,
|
||||
CALC_LABEL,
|
||||
MAX_LABEL
|
||||
} cfg_var_label_type;
|
||||
|
||||
|
||||
#endif
|
30
wmcalc/wmcalc_x.h
Normal file
30
wmcalc/wmcalc_x.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
/****************************************************************
|
||||
* File: wmcalc_x.h
|
||||
* Version: 0.3
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
*
|
||||
* This file is a part of the wmcalc application. As such, this
|
||||
* file is licensed under the GNU General Public License, version 2.
|
||||
* A copy of this license may be found in the file COPYING that should
|
||||
* have been distributed with this file. If not, please refer to
|
||||
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||
*
|
||||
****************************************************************
|
||||
Description:
|
||||
This file includes the X libraries.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
12/10/00 Original File Creation, from Peter da Silva <peter@taronga.com>
|
||||
|
||||
****************************************************************/
|
||||
#ifndef WMCALC_X_H
|
||||
#define WMCALC_X_H
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/xpm.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
#include <X11/keysym.h>
|
||||
|
||||
#endif
|
525
wmcalc/wmcalcfunc.c
Normal file
525
wmcalc/wmcalcfunc.c
Normal file
|
@ -0,0 +1,525 @@
|
|||
/****************************************************************
|
||||
* File: wmcalcfunc.c
|
||||
* Version: 0.21
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
*
|
||||
* This file is a part of the wmcalc application. As such, this
|
||||
* file is licensed under the GNU General Public License, version 2.
|
||||
* A copy of this license may be found in the file COPYING that should
|
||||
* have been distributed with this file. If not, please refer to
|
||||
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||
*
|
||||
****************************************************************
|
||||
Description:
|
||||
This file contains the code for the actual calculator functions,
|
||||
such as a add, subt, clear, etc.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 File Header added
|
||||
|
||||
****************************************************************/
|
||||
|
||||
/***** Includes *************************************************/
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <ctype.h>
|
||||
#include "wmcalc_c.h"
|
||||
#include "wmcalc_err.h"
|
||||
#include "wmcalc_f.h"
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: clearcalc
|
||||
****************************************************************
|
||||
Description:
|
||||
This function will clear the calculator display, and internal
|
||||
flags.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Function header added
|
||||
11/04/00 Replaced magic numbers with DISPSIZE
|
||||
****************************************************************/
|
||||
void clearcalc(void) {
|
||||
extern int StrCnt;
|
||||
extern char PlusMinusFlag;
|
||||
extern int ExpFlag;
|
||||
extern int DecFlag;
|
||||
extern double RegisterA;
|
||||
extern double RegisterB;
|
||||
extern char DispString[];
|
||||
extern char OpFlag;
|
||||
int i;
|
||||
|
||||
RegisterA = 0.0;
|
||||
RegisterB = 0.0;
|
||||
ExpFlag = 0;
|
||||
DecFlag = 0;
|
||||
PlusMinusFlag = '+';
|
||||
StrCnt = 0;
|
||||
for (i=0; i < DISPSIZE; i++) {
|
||||
DispString[i] = ' ';
|
||||
}
|
||||
OpFlag = ' ';
|
||||
} /***** End of function clearcalc() *****************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: clearnum
|
||||
****************************************************************
|
||||
Description:
|
||||
Clears the current number being entered.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated function header
|
||||
11/04/00 Replaced magic numbers with DISPSIZE
|
||||
****************************************************************/
|
||||
void clearnum(void) {
|
||||
extern int StrCnt;
|
||||
extern char PlusMinusFlag;
|
||||
extern int ExpFlag;
|
||||
extern int DecFlag;
|
||||
extern double RegisterA;
|
||||
extern char DispString[];
|
||||
int i;
|
||||
|
||||
RegisterA = 0.0;
|
||||
ExpFlag = 0;
|
||||
DecFlag = 0;
|
||||
PlusMinusFlag = '+';
|
||||
StrCnt = 0;
|
||||
for (i=0; i < DISPSIZE; i++) {
|
||||
DispString[i] = ' ';
|
||||
}
|
||||
|
||||
} /***** End of function clearnum() ******************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: charkey
|
||||
****************************************************************
|
||||
Description:
|
||||
Add characters to the number being entered.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated function header
|
||||
11/04/00 Replaced magic numbers with DISPSIZE
|
||||
****************************************************************/
|
||||
void charkey(char ch) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern int DecFlag;
|
||||
extern double RegisterA, RegisterB;
|
||||
extern char DispString[];
|
||||
int i;
|
||||
|
||||
if (Verbose) printf("In function charkey\n");
|
||||
|
||||
if (StrCnt < DISPSIZE) {
|
||||
if (ch == '.') {
|
||||
if (DecFlag == 0) {
|
||||
for (i = 1; i < DISPSIZE; i++)
|
||||
DispString[i-1] = DispString[i];
|
||||
DecFlag = 1;
|
||||
StrCnt++;
|
||||
DispString[DISPSIZE - 1] = ch;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (i = 1; i < DISPSIZE; i++)
|
||||
DispString[i-1] = DispString[i];
|
||||
DispString[9] = ch;
|
||||
StrCnt++;
|
||||
}
|
||||
} /* endif (StrCnt < DISPSIZE) */
|
||||
else if (StrCnt == CALCDONE) {
|
||||
RegisterB = RegisterA;
|
||||
clearnum();
|
||||
if (ch == '.') {
|
||||
for (i = 1; i < DISPSIZE; i++)
|
||||
DispString[i-1] = DispString[i];
|
||||
DecFlag = 1;
|
||||
StrCnt++;
|
||||
DispString[DISPSIZE -1] = ch;
|
||||
}
|
||||
else {
|
||||
for (i = 1; i < DISPSIZE; i++)
|
||||
DispString[i-1] = DispString[i];
|
||||
DispString[DISPSIZE - 1] = ch;
|
||||
StrCnt++;
|
||||
}
|
||||
} /* endif (StrCnt == CALCDONE) */
|
||||
RegisterA = atof(DispString);
|
||||
} /***** End of Function charkey() *******************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: chgsignnum
|
||||
****************************************************************
|
||||
Description:
|
||||
Change the sign of the number currently being entered
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated Function header
|
||||
****************************************************************/
|
||||
void chgsignnum(void) {
|
||||
extern int Verbose;
|
||||
extern double RegisterA;
|
||||
extern char DispString[];
|
||||
|
||||
if (Verbose) printf("In function chgsignnum\n");
|
||||
|
||||
RegisterA = -RegisterA;
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
|
||||
} /***** End of function chgsignnum() *****************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: sqrnum
|
||||
****************************************************************
|
||||
Description:
|
||||
Square the number in RegisterA
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated Function header
|
||||
****************************************************************/
|
||||
void sqrnum(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern double RegisterA;
|
||||
extern char DispString[];
|
||||
extern int ImgFlag;
|
||||
|
||||
if (Verbose) printf("In function sqrnum\n");
|
||||
RegisterA = atof(DispString);
|
||||
RegisterA = pow(RegisterA, 2.0);
|
||||
if (ImgFlag) {
|
||||
RegisterA = -RegisterA;
|
||||
ImgFlag = 0;
|
||||
}
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
StrCnt = CALCDONE;
|
||||
|
||||
} /***** End of Function sqrnum() *******************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: sqrtnum
|
||||
****************************************************************
|
||||
Description:
|
||||
Take the square root of the number in RegisterA
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated function header
|
||||
11/04/00 Replaced magic numbers with DISPSIZE
|
||||
****************************************************************/
|
||||
void sqrtnum(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern double RegisterA;
|
||||
extern int ImgFlag;
|
||||
extern char ImagChar;
|
||||
extern char DispString[];
|
||||
int i;
|
||||
|
||||
if (Verbose) printf("In function sqrtnum\n");
|
||||
RegisterA = atof(DispString);
|
||||
if (RegisterA >= 0) {
|
||||
RegisterA = pow(RegisterA, 0.5);
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
}
|
||||
else {
|
||||
RegisterA = pow(-RegisterA, 0.5);
|
||||
ImgFlag = 1;
|
||||
sprintf(DispString, "%10.4g", RegisterA);
|
||||
for(i=1; i < DISPSIZE - 1; i++)
|
||||
DispString[i] = DispString[i+1];
|
||||
DispString[DISPSIZE - 1] = ImagChar;
|
||||
}
|
||||
StrCnt = CALCDONE;
|
||||
|
||||
} /***** End of function sqrtnum() ********************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: addnums
|
||||
****************************************************************
|
||||
Description:
|
||||
Add the number in Registers A to Register B.
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated Function header
|
||||
****************************************************************/
|
||||
void addnums(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern double RegisterA, RegisterB;
|
||||
extern char OpFlag;
|
||||
|
||||
if(Verbose) printf("In function addnums: ");
|
||||
|
||||
if(OpFlag != ' ') {
|
||||
equalfunc();
|
||||
}
|
||||
else {
|
||||
if(Verbose) printf("%g + ?? = ??\n", RegisterB);
|
||||
RegisterB = RegisterA;
|
||||
}
|
||||
|
||||
StrCnt = CALCDONE;
|
||||
OpFlag = '+';
|
||||
} /***** End of function addnums() *********************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: subtnums
|
||||
****************************************************************
|
||||
Description:
|
||||
Subtract current number (in RegisterA) from accumulated total.
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated Function header
|
||||
****************************************************************/
|
||||
void subtnums(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern double RegisterA, RegisterB;
|
||||
extern char OpFlag;
|
||||
|
||||
if(Verbose) printf("In function subtnums: ");
|
||||
|
||||
if (OpFlag != ' ') {
|
||||
equalfunc();
|
||||
}
|
||||
else {
|
||||
if(Verbose) printf("%g - ?? = ??\n", RegisterB);
|
||||
RegisterB = RegisterA;
|
||||
}
|
||||
|
||||
StrCnt = CALCDONE;
|
||||
OpFlag = '-';
|
||||
|
||||
} /***** End of function subtnums() *****************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: multnums
|
||||
****************************************************************
|
||||
Description:
|
||||
Multiply number in RegisterA by the accumulated total.
|
||||
Change History:
|
||||
Date Modification
|
||||
11/03/00 Updated function header
|
||||
****************************************************************/
|
||||
void multnums(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern char OpFlag;
|
||||
extern double RegisterA, RegisterB;
|
||||
|
||||
if(Verbose) printf("In function multnums: ");
|
||||
|
||||
if(OpFlag != ' ') {
|
||||
equalfunc();
|
||||
}
|
||||
else {
|
||||
if(Verbose) printf("%g * ?? = ??\n", RegisterB);
|
||||
RegisterB = RegisterA;
|
||||
}
|
||||
|
||||
StrCnt = CALCDONE;
|
||||
OpFlag = '*';
|
||||
} /***** End of function multnums() *****************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: divnums
|
||||
****************************************************************
|
||||
Description:
|
||||
Divide the accumulated total by the current number in RegisterA
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated Function Header
|
||||
****************************************************************/
|
||||
void divnums(void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern double RegisterA, RegisterB;
|
||||
extern char OpFlag;
|
||||
|
||||
if(Verbose) printf("In function divnums: ");
|
||||
|
||||
if(OpFlag != ' ') {
|
||||
equalfunc();
|
||||
}
|
||||
else {
|
||||
if(Verbose) printf("%g / ?? = ??\n", RegisterB);
|
||||
RegisterB = RegisterA;
|
||||
}
|
||||
|
||||
StrCnt = CALCDONE;
|
||||
OpFlag = '/';
|
||||
} /* End of Function divnums() ********************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function:
|
||||
****************************************************************
|
||||
Description:
|
||||
Calculate result of entered calculation.
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated Function Header
|
||||
****************************************************************/
|
||||
void equalfunc (void) {
|
||||
extern int Verbose;
|
||||
extern int StrCnt;
|
||||
extern char DispString[];
|
||||
extern double RegisterA, RegisterB;
|
||||
extern char OpFlag;
|
||||
|
||||
if (Verbose) printf("Equal Function: Operation >> %c <<\n", OpFlag);
|
||||
switch (OpFlag) {
|
||||
case '+':
|
||||
RegisterA = RegisterB + RegisterA;
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
break;
|
||||
case '-':
|
||||
RegisterA = RegisterB - RegisterA;
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
break;
|
||||
case '*':
|
||||
RegisterA = RegisterB * RegisterA;
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
break;
|
||||
case '/':
|
||||
RegisterA = RegisterB / RegisterA;
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
OpFlag = ' ';
|
||||
StrCnt = CALCDONE;
|
||||
} /***** End of function equalfunc() ******************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: clrallmem
|
||||
****************************************************************
|
||||
Description:
|
||||
Clear all the values in memory
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated Function Header
|
||||
11/04/00 Incorporated clrmem() function into this one, to
|
||||
optimize code.
|
||||
****************************************************************/
|
||||
void clrallmem(void) {
|
||||
extern int Verbose;
|
||||
extern double MemArray[];
|
||||
extern int MemLock[];
|
||||
int i;
|
||||
|
||||
if (Verbose) printf("Clear All Memory Function\n");
|
||||
|
||||
for (i = 0; i < NUM_MEM_CELLS; i++) {
|
||||
if (MemLock[i] != 1) {
|
||||
MemArray[i] = 0.0;
|
||||
if (Verbose) printf(" %f ", MemArray[i]);
|
||||
}
|
||||
}
|
||||
if (Verbose) printf("\n");
|
||||
|
||||
write_config();
|
||||
} /***** End of function clrallmem() ****************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: stormem
|
||||
****************************************************************
|
||||
Description:
|
||||
Store value to memory cell #N
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated function header
|
||||
11/05/00 Added Locked Memory capabilities
|
||||
****************************************************************/
|
||||
void stormem(int mem_loc) {
|
||||
extern double MemArray[];
|
||||
extern int MemLock[];
|
||||
extern int Verbose;
|
||||
extern double RegisterA;
|
||||
int i;
|
||||
|
||||
if (Verbose)
|
||||
printf("Store Value %f in Memory Cell %d\nMemory:", RegisterA, mem_loc);
|
||||
|
||||
if (MemLock[mem_loc] != 1) {
|
||||
MemArray[mem_loc] = RegisterA;
|
||||
write_config();
|
||||
}
|
||||
else {
|
||||
if (Verbose) printf("Memory location %d Locked at %f\n",
|
||||
mem_loc, MemArray[mem_loc]);
|
||||
}
|
||||
|
||||
if (Verbose) {
|
||||
for (i = 0; i < NUM_MEM_CELLS; i++)
|
||||
printf(" %f ", MemArray[i]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
} /***** End of function stormem() ******************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: recallmem
|
||||
****************************************************************
|
||||
Description:
|
||||
Store value to memory cell #N
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated function header
|
||||
****************************************************************/
|
||||
void recallmem(int mem_loc) {
|
||||
extern double MemArray[];
|
||||
extern int Verbose;
|
||||
extern double RegisterA;
|
||||
extern char DispString[];
|
||||
int i;
|
||||
|
||||
if (Verbose)
|
||||
printf("Recall Value in Memory Cell %d\nMemory:", mem_loc);
|
||||
|
||||
RegisterA = MemArray[mem_loc];
|
||||
|
||||
sprintf(DispString, "%10.5g", RegisterA);
|
||||
|
||||
if (Verbose) {
|
||||
for (i = 0; i < NUM_MEM_CELLS; i++)
|
||||
printf(" %f ", MemArray[i]);
|
||||
printf("\n");
|
||||
}
|
||||
} /***** End of function recallmem() ***************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: startcalc
|
||||
****************************************************************
|
||||
Description:
|
||||
Change the sign of the number currently being entered
|
||||
Change History:
|
||||
Date Modification
|
||||
11/04/00 Updated function header
|
||||
****************************************************************/
|
||||
void startcalc(void) {
|
||||
extern int Verbose;
|
||||
extern char SysCalcCmd[];
|
||||
|
||||
if (Verbose)
|
||||
fprintf(stderr, "Starting external calculator %s\n", SysCalcCmd);
|
||||
|
||||
system(SysCalcCmd);
|
||||
} /***** End of function startcalc *****************************/
|
128
wmcalc/wmcalcscr.xpm
Normal file
128
wmcalc/wmcalcscr.xpm
Normal file
|
@ -0,0 +1,128 @@
|
|||
/* XPM */
|
||||
static char * wmcalcscr_xpm[] = {
|
||||
"64 64 61 1",
|
||||
" c None",
|
||||
". c #F3F3F3",
|
||||
"+ c #000000",
|
||||
"@ c #E0E0E0",
|
||||
"# c #516161",
|
||||
"$ c #A2A2B2",
|
||||
"% c #A2A2A2",
|
||||
"& c #A292B2",
|
||||
"* c #92A2A2",
|
||||
"= c #A292A2",
|
||||
"- c #9292A2",
|
||||
"; c #929292",
|
||||
"> c #9282A2",
|
||||
", c #829292",
|
||||
"' c #928292",
|
||||
") c #828292",
|
||||
"! c #828282",
|
||||
"~ c #827192",
|
||||
"{ c #615161",
|
||||
"] c #92A2B2",
|
||||
"^ c #9292B2",
|
||||
"/ c #8292A2",
|
||||
"( c #8282A2",
|
||||
"_ c #718292",
|
||||
": c #718282",
|
||||
"< c #C7C7C7",
|
||||
"[ c #414141",
|
||||
"} c #003F18",
|
||||
"| c #00FF00",
|
||||
"1 c #FFFFFF",
|
||||
"2 c #D5D6D5",
|
||||
"3 c #717182",
|
||||
"4 c #415151",
|
||||
"5 c #514151",
|
||||
"6 c #717171",
|
||||
"7 c #414151",
|
||||
"8 c #617182",
|
||||
"9 c #415141",
|
||||
"0 c #716182",
|
||||
"a c #617171",
|
||||
"b c #413041",
|
||||
"c c #304141",
|
||||
"d c #716171",
|
||||
"e c #616171",
|
||||
"f c #616182",
|
||||
"g c #303030",
|
||||
"h c #616161",
|
||||
"i c #303041",
|
||||
"j c #516171",
|
||||
"k c #304130",
|
||||
"l c #615171",
|
||||
"m c #203030",
|
||||
"n c #302030",
|
||||
"o c #515171",
|
||||
"p c #515161",
|
||||
"q c #827182",
|
||||
"r c #202030",
|
||||
"s c #717192",
|
||||
"t c #202020",
|
||||
"u c #515151",
|
||||
"v c #413051",
|
||||
"...............................................................+",
|
||||
".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+",
|
||||
".@$%$%&%&%&%&*=-&*=-=-=---=--;>;>;>;>,>,>,')',')')'))!)))!~!~!{+",
|
||||
".@$$*$]$*$*$*&*&*^*-*-*-*-*-/---,-,-,>,>,(,>,(,),),)))))_)_):)#+",
|
||||
".<[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".+}}|}}+}|||}+|||||+}}}|}+|||||+}}||}+|||||+}|||}+}|||}+}|||}+<+",
|
||||
".+}||}}+|}}}|+}}}|}+}}||}+|}}}}+}|}}}+}}}}|+|}}}|+|}}}|+|}}}|+<+",
|
||||
".+}}|}}+}}}}|+}}|}}+}|}|}+||||}+|}}}}+}}}|}+|}}}|+|}}}|+|}}}|+<+",
|
||||
".+}}|}}+}}}|}+}}}|}+|}}|}+}}}}|+||||}+}}|}}+}|||}+}||||+|}}}|+<+",
|
||||
".+}}|}}+}}|}}+}}}}|+|||||+}}}}|+|}}}|+}|}}}+|}}}|+}}}}|+|}}}|+<+",
|
||||
".+}}|}}+}|}}}+|}}}|+}}}|}+|}}}|+|}}}|+}|}}}+|}}}|+}}}|}+|}}}|+<+",
|
||||
".+}|||}+|||||+}|||}+}}}|}+}|||}+}|||}+}|}}}+}|||}+}||}}+}|||}+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".+|||||+}}}}}+|||||+|||||+}}}}}+|||||+}}}}}+|||||+|||||+}}}}}+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+",
|
||||
".@*^+11111111121111111112111111111211111111121111111111112+<:34+",
|
||||
".@=-+122222222+122222222+122222222+122222222+12222222+222++<335+",
|
||||
".@*-+1222++++2+12+++++22+122+++222+1222++222+12222222+222++<334+",
|
||||
".@=-+1222+2222+122222+22+12+222+22+122+22+22+1222222+2222++<365+",
|
||||
".@--+1222+2222+12222+222+122+++222+122+22+22+122222+22222++<337+",
|
||||
".@=-+12+2+2222+1222+2222+12+222+22+1222+++22+12222+222222++<365+",
|
||||
".@*-+122++2222+1222+2222+12+222+22+122222+22+1222+2222222++<839+",
|
||||
".@-;+1222+2222+1222+2222+122+++222+1222++222+1222+2222222++<067+",
|
||||
".@--+122222222+122222222+122222222+122222222+122222222222++<83[+",
|
||||
".@>;+2+++++++++2+++++++++2+++++++++2+++++++++2+++++++++++++<0ab+",
|
||||
".@--+11111111121111111112111111111211111111121111111111112+<a0[+",
|
||||
".@-;+122222+22+122222222+122222222+122222222+122222222222++<06[+",
|
||||
".@,-+1222222+2+12222+222+122++++22+1222++222+1222+222+222++<a0c+",
|
||||
".@>;+122222+22+12+22+222+122+22222+122+22222+12222+2+2222++<0ab+",
|
||||
".@,-+122222++2+12+22+222+122+++222+122+++222+122222+22222++<a0c+",
|
||||
".@>,+12+2+2222+12+++++22+122222+22+122+22+22+12222+2+2222++<dab+",
|
||||
".@,>+122+22222+12222+222+122+22+22+122+22+22+1222+222+222++<a0c+",
|
||||
".@',+12+2+2222+12222+222+1222++222+1222++222+122222222222++<0eb+",
|
||||
".@,>+122222222+122222222+122222222+122222222+122222222222++<afc+",
|
||||
".@>,+2+++++++++2+++++++++2+++++++++2+++++++++2+++++++++++++<deb+",
|
||||
".@,>+11111111121111111112111111111211111111121111111111112+<aec+",
|
||||
".@')+122222222+122222222+122222222+122222222+122222222222++<eeb+",
|
||||
".@,'+122222222+12222+222+1222++222+122+++222+122222222222++<aec+",
|
||||
".@',+122++++22+1222++222+122+22+22+122222+22+122222222222++<deb+",
|
||||
".@,(+122+22222+12222+222+122222+22+1222++222+1222+++++222++<eeg+",
|
||||
".@')+122+++222+12222+222+1222++222+122222+22+122222222222++<ehi+",
|
||||
".@,)+122+22222+12222+222+122+22222+122222+22+122222222222++<jek+",
|
||||
".@'!+122++++22+1222+++22+122++++22+122+++222+122222222222++<lhi+",
|
||||
".@))+122222222+122222222+122222222+122222222+122222222222++<eem+",
|
||||
".@))+2+++++++++2+++++++++2+++++++++2+++++++++2+++++++++++++<lhn+",
|
||||
".@))+11111111121111111112111111111211111111121111111111112+<#em+",
|
||||
".@)!+122222222+122222222+122222222+122222222+122222222222++<lhg+",
|
||||
".@))+122+22222+122+++222+122222222+122222222+122222222222++<jem+",
|
||||
".@~!+12+++22+2+12+222+22+122222222+122222222+122222+22222++<l#n+",
|
||||
".@_)+122+22+22+12+222+22+122222222+122++++22+122222+22222++<#lm+",
|
||||
".@)!+12222+222+12+222+22+122222222+122222222+1222+++++222++<lhn+",
|
||||
".@:~+1222+2222+12+222+22+122222222+122++++22+122222+22222++<#lm+",
|
||||
".@~!+122+22222+12+222+22+1222++222+122222222+122222+22222++<l#n+",
|
||||
".@:)+12+22+++2+122+++222+1222++222+122222222+122222222222++<#om+",
|
||||
".@~:+122222222+122222222+122222222+122222222+122222222222++<{pn+",
|
||||
".@:~+2+++++++++2+++++++++2+++++++++2+++++++++2+++++++++++++<#lm+",
|
||||
".@~:+++++++++++++++++++++++++++++++++++++++++++++++++++++++<{pn+",
|
||||
".@:~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#om+",
|
||||
".@~:q3q3q3q3q3360636060a060adadadededeeheeehlhlhlhl#l#l#{p{p{pr+",
|
||||
".@:s:~:s:333333333a383a0a0a0a0afaeeeaeeeeejeje#ljl#l#l#o#opo#pt+",
|
||||
".@{upupupu5u545459575[5[7[v[7[b[bcbcbkbgigigigngngngnmnrntntrtr+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
BIN
wmcalc/wmcalcscr2.gif
Normal file
BIN
wmcalc/wmcalcscr2.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
128
wmcalc/wmcalcscr2.xpm
Normal file
128
wmcalc/wmcalcscr2.xpm
Normal file
|
@ -0,0 +1,128 @@
|
|||
/* XPM */
|
||||
static char * wmcalcscr2_xpm[] = {
|
||||
"64 64 61 1",
|
||||
" c None",
|
||||
". c #F3F3F3",
|
||||
"+ c #000000",
|
||||
"@ c #E0E0E0",
|
||||
"# c #516161",
|
||||
"$ c #A2A2B2",
|
||||
"% c #A2A2A2",
|
||||
"& c #A292B2",
|
||||
"* c #92A2A2",
|
||||
"= c #A292A2",
|
||||
"- c #9292A2",
|
||||
"; c #929292",
|
||||
"> c #9282A2",
|
||||
", c #829292",
|
||||
"' c #928292",
|
||||
") c #828292",
|
||||
"! c #828282",
|
||||
"~ c #827192",
|
||||
"{ c #615161",
|
||||
"] c #92A2B2",
|
||||
"^ c #9292B2",
|
||||
"/ c #8292A2",
|
||||
"( c #8282A2",
|
||||
"_ c #718292",
|
||||
": c #718282",
|
||||
"< c #C7C7C7",
|
||||
"[ c #00FF00",
|
||||
"} c #003F18",
|
||||
"| c #FFFFFF",
|
||||
"1 c #D5D6D5",
|
||||
"2 c #717182",
|
||||
"3 c #514151",
|
||||
"4 c #415151",
|
||||
"5 c #717171",
|
||||
"6 c #414151",
|
||||
"7 c #617182",
|
||||
"8 c #415141",
|
||||
"9 c #716182",
|
||||
"0 c #414141",
|
||||
"a c #617171",
|
||||
"b c #413041",
|
||||
"c c #304141",
|
||||
"d c #716171",
|
||||
"e c #616171",
|
||||
"f c #616182",
|
||||
"g c #303030",
|
||||
"h c #616161",
|
||||
"i c #303041",
|
||||
"j c #516171",
|
||||
"k c #304130",
|
||||
"l c #615171",
|
||||
"m c #203030",
|
||||
"n c #302030",
|
||||
"o c #515171",
|
||||
"p c #515161",
|
||||
"q c #827182",
|
||||
"r c #202030",
|
||||
"s c #717192",
|
||||
"t c #202020",
|
||||
"u c #515151",
|
||||
"v c #413051",
|
||||
"...............................................................+",
|
||||
".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+",
|
||||
".@$%$%&%&%&%&*=-&*=-=-=---=--;>;>;>;>,>,>,')',')')'))!)))!~!~!{+",
|
||||
".@$$*$]$*$*$*&*&*^*-*-*-*-*-/---,-,-,>,>,(,>,(,),),)))))_)_):)#+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".+[[[[[+}}}}}+}}[}}+}}}[}+}}[}}+[[[[[+}[[[}+}[[[}+}}[[}+[[[[[+<+",
|
||||
".+}}}[}+}}}}}+}[[}}+}}[[}+}[[}}+[}}}}+[}}}[+[}}}[+}[}}}+[}}}}+<+",
|
||||
".+}}[}}+}}}}}+}}[}}+}[}[}+}}[}}+[[[[}+[}}}[+}}}}[+[}}}}+[[[[}+<+",
|
||||
".+}}}[}+}}}}}+}}[}}+[}}[}+}}[}}+}}}}[+}[[[[+}}}[}+[[[[}+}}}}[+<+",
|
||||
".+}}}}[+}}}}}+}}[}}+[[[[[+}}[}}+}}}}[+}}}}[+}}[}}+[}}}[+}}}}[+<+",
|
||||
".+[}}}[+}}[[}+}}[}}+}}}[}+}}[}}+[}}}[+}}}[}+}[}}}+[}}}[+[}}}[+<+",
|
||||
".+}[[[}+}}[[}+}[[[}+}}}[}+}[[[}+}[[[}+}[[}}+[[[[[+}[[[}+}[[[}+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".+[[[[[+}}}}}+[[[[[+[[[[[+}}}}}+}}}}}+[[[[[+}}}}}+}}}}}+[[[[[+<+",
|
||||
".+[[[[[+}}}}}+[[[[[+[[[[[+}}}}}+}}}}}+[[[[[+}}}}}+}}}}}+[[[[[+<+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<+",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+",
|
||||
".@=-+|||||||||1|||||||||1|||||||||1|||||||||1||||||||||||1+<223+",
|
||||
".@*-+|11111111+|11111111+|11111111+|11111111+|1111111+111++<224+",
|
||||
".@=-+|111++++1+|1+++++11+|11+++111+|11+++111+|1111111+111++<253+",
|
||||
".@--+|111+1111+|11111+11+|1+111+11+|1+111+11+|111111+1111++<226+",
|
||||
".@=-+|111+1111+|1111+111+|11+++111+|1+111+11+|11111+11111++<253+",
|
||||
".@*-+|1+1+1111+|111+1111+|1+111+11+|11++++11+|1111+111111++<728+",
|
||||
".@-;+|11++1111+|111+1111+|1+111+11+|11111+11+|111+1111111++<956+",
|
||||
".@--+|111+1111+|111+1111+|11+++111+|11+++111+|111+1111111++<720+",
|
||||
".@>;+|11111111+|11111111+|11111111+|11111111+|11111111111++<9ab+",
|
||||
".@--+1+++++++++1+++++++++1+++++++++1+++++++++1+++++++++++++<a90+",
|
||||
".@-;+|||||||||1|||||||||1|||||||||1|||||||||1||||||||||||1+<950+",
|
||||
".@,-+|11111111+|11111111+|11111111+|11111111+|11111111111++<a9c+",
|
||||
".@>;+|11111+11+|1111+111+|1+++++11+|11+++111+|111+111+111++<9ab+",
|
||||
".@,-+|111111+1+|1+11+111+|1+111111+|1+111111+|1111+1+1111++<a9c+",
|
||||
".@>,+|11111+11+|1+11+111+|1++++111+|1++++111+|11111+11111++<dab+",
|
||||
".@,>+|1+1+1++1+|1+++++11+|11111+11+|1+111+11+|1111+1+1111++<a9c+",
|
||||
".@',+|11+11111+|1111+111+|1+111+11+|1+111+11+|111+111+111++<9eb+",
|
||||
".@,>+|1+1+1111+|1111+111+|11+++111+|11+++111+|11111111111++<afc+",
|
||||
".@>,+|11111111+|11111111+|11111111+|11111111+|11111111111++<deb+",
|
||||
".@,>+1+++++++++1+++++++++1+++++++++1+++++++++1+++++++++++++<aec+",
|
||||
".@')+|||||||||1|||||||||1|||||||||1|||||||||1||||||||||||1+<eeb+",
|
||||
".@,'+|11111111+|11111111+|11111111+|11111111+|11111111111++<aec+",
|
||||
".@',+|11111111+|1111+111+|11+++111+|1++++111+|11111111111++<deb+",
|
||||
".@,(+|11++++11+|111++111+|1+111+11+|11111+11+|11111111111++<eeg+",
|
||||
".@')+|11+11111+|1111+111+|11111+11+|11+++111+|111+++++111++<ehi+",
|
||||
".@,)+|11+++111+|1111+111+|11+++111+|11111+11+|11111111111++<jek+",
|
||||
".@'!+|11+11111+|1111+111+|1+111111+|1+111+11+|11111111111++<lhi+",
|
||||
".@))+|11++++11+|111+++11+|1+++++11+|11+++111+|11111111111++<eem+",
|
||||
".@))+|11111111+|11111111+|11111111+|11111111+|11111111111++<lhn+",
|
||||
".@))+1+++++++++1+++++++++1+++++++++1+++++++++1+++++++++++++<#em+",
|
||||
".@)!+|||||||||1|||||||||1|||||||||1|||||||||1||||||||||||1+<lhg+",
|
||||
".@))+|11111111+|11111111+|11111111+|11111111+|11111111111++<jem+",
|
||||
".@~!+|11+111+1+|11+++111+|11111111+|11111111+|11111+11111++<l#n+",
|
||||
".@_)+|1+++1+11+|1+111+11+|11111111+|11++++11+|11111+11111++<#lm+",
|
||||
".@)!+|11+1+111+|1+111+11+|11111111+|11111111+|111+++++111++<lhn+",
|
||||
".@:~+|111+1111+|1+111+11+|11111111+|11++++11+|11111+11111++<#lm+",
|
||||
".@~!+|11+11111+|1+111+11+|111++111+|11111111+|11111+11111++<l#n+",
|
||||
".@:)+|1+11+++1+|11+++111+|111++111+|11111111+|11111111111++<#om+",
|
||||
".@~:+|11111111+|11111111+|11111111+|11111111+|11111111111++<{pn+",
|
||||
".@:~+1+++++++++1+++++++++1+++++++++1+++++++++1+++++++++++++<#lm+",
|
||||
".@~:+++++++++++++++++++++++++++++++++++++++++++++++++++++++<{pn+",
|
||||
".@:~<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#om+",
|
||||
".@~:q2q2q2q2q2259525959a959adadadededeeheeehlhlhlhl#l#l#{p{p{pr+",
|
||||
".@:s:~:s:222222222a272a9a9a9a9afaeeeaeeeeejeje#ljl#l#l#o#opo#pt+",
|
||||
".@{upupupu3u34343836303060v060b0bcbcbkbgigigigngngngnmnrntntrtr+",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
BIN
wmcalc/wmcalcsrc.jpg
Normal file
BIN
wmcalc/wmcalcsrc.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
605
wmcalc/wmcalcswitch.c
Normal file
605
wmcalc/wmcalcswitch.c
Normal file
|
@ -0,0 +1,605 @@
|
|||
/****************************************************************
|
||||
* File: wmcalcswitch.c
|
||||
* Version: 0.21
|
||||
* Date: November 1, 2000
|
||||
* Author: Edward H. Flora <ehflora@access1.net>
|
||||
*
|
||||
* This file is a part of the wmcalc application. As such, this
|
||||
* file is licensed under the GNU General Public License, version 2.
|
||||
* A copy of this license may be found in the file COPYING that should
|
||||
* have been distributed with this file. If not, please refer to
|
||||
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||
*
|
||||
****************************************************************
|
||||
Description:
|
||||
This file contains system level functions, such as read/write of
|
||||
the config file, character map boundaries, etc.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/1/00 Updated Function headers, cleaned up comments some.
|
||||
|
||||
****************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "wmcalc_err.h"
|
||||
#include "wmcalc_c.h"
|
||||
#include "wmcalc_f.h"
|
||||
|
||||
/****************************************************************
|
||||
* Function: ExecFunc
|
||||
****************************************************************
|
||||
Description:
|
||||
This function determines which button was pressed, and performs
|
||||
the appropriate function.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/01/00 Function header updated
|
||||
****************************************************************/
|
||||
void ExecFunc( int val ) {
|
||||
extern int Verbose;
|
||||
|
||||
if (Verbose) printf("Execute function for button %d\n", val);
|
||||
|
||||
switch(val) {
|
||||
case 100:
|
||||
clearcalc();
|
||||
break;
|
||||
case 101:
|
||||
sqrtnum();
|
||||
break;
|
||||
case 102:
|
||||
charkey('7');
|
||||
break;
|
||||
case 103:
|
||||
charkey('8');
|
||||
break;
|
||||
case 104:
|
||||
charkey('9');
|
||||
break;
|
||||
case 105:
|
||||
divnums();
|
||||
break;
|
||||
case 106:
|
||||
sqrnum();
|
||||
break;
|
||||
case 107:
|
||||
charkey('4');
|
||||
break;
|
||||
case 108:
|
||||
charkey('5');
|
||||
break;
|
||||
case 109:
|
||||
charkey('6');
|
||||
break;
|
||||
case 110:
|
||||
multnums();
|
||||
break;
|
||||
case 111:
|
||||
// scinotation();
|
||||
startcalc();
|
||||
break;
|
||||
case 112:
|
||||
charkey('1');
|
||||
break;
|
||||
case 113:
|
||||
charkey('2');
|
||||
break;
|
||||
case 114:
|
||||
charkey('3');
|
||||
break;
|
||||
case 115:
|
||||
subtnums();
|
||||
break;
|
||||
case 116:
|
||||
chgsignnum();
|
||||
break;
|
||||
case 117:
|
||||
charkey('0');
|
||||
break;
|
||||
case 118:
|
||||
charkey('.');
|
||||
break;
|
||||
case 119:
|
||||
equalfunc();
|
||||
break;
|
||||
case 120:
|
||||
addnums();
|
||||
break;
|
||||
case 200:
|
||||
clrallmem();
|
||||
break;
|
||||
case 201:
|
||||
sqrtnum();
|
||||
// userdef201();
|
||||
break;
|
||||
case 202:
|
||||
recallmem(7);
|
||||
break;
|
||||
case 203:
|
||||
recallmem(8);
|
||||
break;
|
||||
case 204:
|
||||
recallmem(9);
|
||||
break;
|
||||
case 205:
|
||||
divnums();
|
||||
// userdef205();
|
||||
break;
|
||||
case 206:
|
||||
sqrnum();
|
||||
// userdef206();
|
||||
break;
|
||||
case 207:
|
||||
recallmem(4);
|
||||
break;
|
||||
case 208:
|
||||
recallmem(5);
|
||||
break;
|
||||
case 209:
|
||||
recallmem(6);
|
||||
break;
|
||||
case 210:
|
||||
multnums();
|
||||
// userdef210();
|
||||
break;
|
||||
case 211:
|
||||
startcalc();
|
||||
break;
|
||||
case 212:
|
||||
recallmem(1);
|
||||
break;
|
||||
case 213:
|
||||
recallmem(2);
|
||||
break;
|
||||
case 214:
|
||||
recallmem(3);
|
||||
break;
|
||||
case 215:
|
||||
subtnums();
|
||||
// userdef215();
|
||||
break;
|
||||
case 216:
|
||||
chgsignnum();
|
||||
break;
|
||||
case 217:
|
||||
recallmem(0);
|
||||
break;
|
||||
case 218:
|
||||
// userdef218();
|
||||
break;
|
||||
case 219:
|
||||
equalfunc();
|
||||
break;
|
||||
case 220:
|
||||
addnums();
|
||||
// userdef220();
|
||||
break;
|
||||
case 300:
|
||||
clearnum();
|
||||
break;
|
||||
case 301:
|
||||
sqrtnum();
|
||||
// userdef301();
|
||||
break;
|
||||
case 302:
|
||||
stormem(7);
|
||||
break;
|
||||
case 303:
|
||||
stormem(8);
|
||||
break;
|
||||
case 304:
|
||||
stormem(9);
|
||||
break;
|
||||
case 305:
|
||||
divnums();
|
||||
// userdef305();
|
||||
break;
|
||||
case 306:
|
||||
sqrnum();
|
||||
// userdef306();
|
||||
break;
|
||||
case 307:
|
||||
stormem(4);
|
||||
break;
|
||||
case 308:
|
||||
stormem(5);
|
||||
break;
|
||||
case 309:
|
||||
stormem(6);
|
||||
break;
|
||||
case 310:
|
||||
multnums();
|
||||
// userdef310();
|
||||
break;
|
||||
case 311:
|
||||
startcalc();
|
||||
break;
|
||||
case 312:
|
||||
stormem(1);
|
||||
break;
|
||||
case 313:
|
||||
stormem(2);
|
||||
break;
|
||||
case 314:
|
||||
stormem(3);
|
||||
break;
|
||||
case 315:
|
||||
subtnums();
|
||||
// userdef315();
|
||||
break;
|
||||
case 316:
|
||||
chgsignnum();
|
||||
break;
|
||||
case 317:
|
||||
stormem(0);
|
||||
break;
|
||||
case 318:
|
||||
// userdef318();
|
||||
break;
|
||||
case 319:
|
||||
equalfunc();
|
||||
break;
|
||||
case 320:
|
||||
addnums();
|
||||
// userdef320();
|
||||
break;
|
||||
} /* End of switch statement */
|
||||
|
||||
} /* End of function ExecFunc() *********************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: getboundaries
|
||||
****************************************************************
|
||||
Description:
|
||||
This function returns the x,y boundaries for each character
|
||||
that is to be displayed on the display.
|
||||
|
||||
There must be a better way to do this, as by changing the file
|
||||
charmap.xpm, one may have to adjust these constants.
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/01/00 Function header updated
|
||||
10/30/00 Added characters for the Memory indicator bar.
|
||||
****************************************************************/
|
||||
ButtonArea getboundaries(char ch) {
|
||||
ButtonArea xybounds;
|
||||
|
||||
switch (ch) {
|
||||
case '0':
|
||||
xybounds.x = 1; xybounds.i = 6;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '1':
|
||||
xybounds.x = 7; xybounds.i = 12;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '2':
|
||||
xybounds.x = 13; xybounds.i = 18;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '3':
|
||||
xybounds.x = 19; xybounds.i = 24;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '4':
|
||||
xybounds.x = 25; xybounds.i = 30;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '5':
|
||||
xybounds.x = 31; xybounds.i = 36;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '6':
|
||||
xybounds.x = 37; xybounds.i = 42;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '7':
|
||||
xybounds.x = 43; xybounds.i = 48;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '8':
|
||||
xybounds.x = 49; xybounds.i = 54;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '9':
|
||||
xybounds.x = 55; xybounds.i = 60;
|
||||
xybounds.y = 1; xybounds.j = 8;
|
||||
break;
|
||||
case '+':
|
||||
xybounds.x = 55; xybounds.i = 60;
|
||||
xybounds.y = 28; xybounds.j = 35;
|
||||
break;
|
||||
case '-':
|
||||
xybounds.x = 49; xybounds.i = 54;
|
||||
xybounds.y = 28; xybounds.j = 35;
|
||||
break;
|
||||
case '.':
|
||||
xybounds.x = 7; xybounds.i = 12;
|
||||
xybounds.y = 10; xybounds.j = 17;
|
||||
break;
|
||||
case 'e':
|
||||
xybounds.x = 1; xybounds.i = 6;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case 'i':
|
||||
xybounds.x = 7; xybounds.i = 12;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case 'j':
|
||||
xybounds.x = 13; xybounds.i = 18;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case 'n':
|
||||
xybounds.x = 19; xybounds.i = 24;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case 'a':
|
||||
xybounds.x = 25; xybounds.i = 30;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case 'f':
|
||||
xybounds.x = 31; xybounds.i = 36;
|
||||
xybounds.y = 37; xybounds.j = 44;
|
||||
break;
|
||||
case ' ':
|
||||
xybounds.x = 1; xybounds.i = 6;
|
||||
xybounds.y = 10; xybounds.j = 17;
|
||||
break;
|
||||
case '=':
|
||||
xybounds.x = 55; xybounds.i = 60;
|
||||
xybounds.y = 55; xybounds.j = 56;
|
||||
break;
|
||||
case '#':
|
||||
xybounds.x = 55; xybounds.i = 60;
|
||||
xybounds.y = 57; xybounds.j = 58;
|
||||
break;
|
||||
case '_':
|
||||
xybounds.x = 55; xybounds.i = 60;
|
||||
xybounds.y = 59; xybounds.j = 60;
|
||||
break;
|
||||
default:
|
||||
xybounds.x = 1; xybounds.i = 6;
|
||||
xybounds.y = 10; xybounds.j = 17;
|
||||
break;
|
||||
} /* end of switch statement */
|
||||
|
||||
return(xybounds);
|
||||
} /***** End of function getboundaries() ************************/
|
||||
|
||||
/****************************************************************
|
||||
* Function: write_config
|
||||
****************************************************************
|
||||
Description:
|
||||
This function updates the configuration file as memory locations
|
||||
are updated in the program. It re-writes the entire file, but
|
||||
should ignore all lines that do not start with "Mem".
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/01/00 Function Header updated
|
||||
11/05/00 Added Locked Memory Handling
|
||||
****************************************************************/
|
||||
int write_config(void) {
|
||||
extern int Verbose;
|
||||
extern double MemArray[];
|
||||
extern char configfile[];
|
||||
extern char tempfile[];
|
||||
extern char *CfgVarList[];
|
||||
FILE *fp, *fptmp;
|
||||
char *line = NULL;
|
||||
int mem_ndx = 0;
|
||||
int err_code = OKAY;
|
||||
char movefilecmd[2 * CONFIGFILEMAX + 10]; /* make sure enough room in string */
|
||||
|
||||
/* Open current Config file */
|
||||
if ((fp = fopen(configfile, "r")) == NULL) { // Can't find config file
|
||||
printf("%s: Cannot create configuration file\n", configfile);
|
||||
return(ERR_FILE_NOT_FOUND);
|
||||
}
|
||||
|
||||
/* We cannot write to the global config-file... */
|
||||
if(!strcmp(configfile, CONFIGGLOBAL)) {
|
||||
strcpy(configfile, getenv("HOME")); // Added to wmbutton by Gordon Fraser, 9/21/01
|
||||
strcat(configfile, CONFFILENAME);
|
||||
}
|
||||
|
||||
/* Open Temporary File */
|
||||
if ((fptmp = fopen(tempfile, "w")) == NULL) { // Can't open file in /tmp
|
||||
fprintf(stderr, "%s: Temporary File Open Failed\n", tempfile);
|
||||
strcpy(tempfile, getenv("HOME"));
|
||||
strcat(tempfile, "wmcalc.tmp");
|
||||
if ((fptmp = fopen(tempfile, "w")) == NULL) { // Can't open file in HOME
|
||||
fprintf(stderr, "%s: Temporary File Open Failed\n", tempfile);
|
||||
return(ERR_TMP_FILE_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
while ((line = readln(fp)) != NULL) { // Read Lines in config file
|
||||
if (Verbose) printf("line:%s", line);
|
||||
|
||||
if ((strncmp(line, CfgVarList[MEM_LABEL_0],
|
||||
strlen(CfgVarList[MEM_LABEL_0]) - 1) == 0)) {
|
||||
// -1 to generalize to all Mem? strings
|
||||
// If we've found a memory entry
|
||||
mem_ndx = atoi(line+strlen(CfgVarList[MEM_LABEL_0])-1);
|
||||
if ((mem_ndx >= 0) && (mem_ndx <= (NUM_MEM_CELLS - 1))) {
|
||||
fprintf(fptmp, "%s\t%f\n", CfgVarList[mem_ndx],
|
||||
MemArray[mem_ndx]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
fprintf(fptmp, "%s", line);
|
||||
}
|
||||
free(line);
|
||||
} /* End of while loop */
|
||||
|
||||
/* Close open files */
|
||||
fclose(fp);
|
||||
fclose(fptmp);
|
||||
|
||||
/* Copy temp file over original */
|
||||
/* Note: If changing command, make sure to adjust size of string above!! */
|
||||
sprintf(movefilecmd, "mv -f %s %s\n", tempfile, configfile);
|
||||
err_code = system(movefilecmd);
|
||||
|
||||
if(Verbose) printf("New config file written.\n");
|
||||
|
||||
return(err_code);
|
||||
} /***** End of function write_config() *************************/
|
||||
|
||||
|
||||
/****************************************************************
|
||||
* Function: read_config
|
||||
****************************************************************
|
||||
Description:
|
||||
This function reads the configuration file on program startup,
|
||||
and sets the appropriate configuration options.
|
||||
(By default, this is ~/.wmcalc, or a user set value)
|
||||
|
||||
Change History:
|
||||
Date Modification
|
||||
11/01/00 Function header updated.
|
||||
11/05/00 Added Lcoked Memory Capabilities
|
||||
****************************************************************/
|
||||
int read_config(void) {
|
||||
extern int Verbose;
|
||||
extern double MemArray[];
|
||||
extern int MemLock[];
|
||||
extern char *CfgVarList[];
|
||||
extern char ImagChar;
|
||||
extern char configfile[];
|
||||
extern char SysCalcCmd[];
|
||||
FILE *fp;
|
||||
int i = 0;
|
||||
int err_code = OKAY;
|
||||
char *line = NULL;
|
||||
char *sepstr = NULL;
|
||||
char sep_ch = '\t';
|
||||
char *cfg_var_ptr = NULL;
|
||||
|
||||
|
||||
sepstr = &sep_ch;
|
||||
|
||||
if ((fp = fopen(configfile, "r")) == NULL) { // Can't find config file
|
||||
strcpy(configfile, CONFIGGLOBAL); // ...so try to open global config
|
||||
if ((fp = fopen(configfile, "r")) == NULL) { // Can't find global config file
|
||||
fprintf(stderr, "%s: Configuration File not found\n", configfile);
|
||||
return(ERR_FILE_NOT_FOUND);
|
||||
} else {
|
||||
write_config(); // if global config opened, save in homedir
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (Verbose) printf("%s: Found Configuration File\n", configfile);
|
||||
}
|
||||
|
||||
do { // Read Lines in config file
|
||||
line = readln(fp);
|
||||
if (Verbose) printf("Line Read:%s\n", line);
|
||||
if (line == NULL) break; // if end of file, quit
|
||||
if ( (line[0] != '#') && (line[0] != '\n')) { /* Ignore comments and
|
||||
blanks */
|
||||
if (strchr(line, sep_ch) != NULL) { /* The line has a tab, so let's
|
||||
see if the variable is
|
||||
understood */
|
||||
i = 0;
|
||||
/* Loop while we haven't found the variable */
|
||||
while (((strncmp(line, CfgVarList[i], strlen(CfgVarList[i]))) != 0)
|
||||
&& (i < MAX_LABEL)) {
|
||||
i++;
|
||||
}
|
||||
/* If we've found the variable, let's set the appropriate value */
|
||||
if (i <= MAX_LABEL) {
|
||||
if (Verbose) printf("Variable %s found\n", CfgVarList[i]);
|
||||
|
||||
/* Point to the 'tab' character, to read the value */
|
||||
cfg_var_ptr = strchr(line, sep_ch);
|
||||
cfg_var_ptr++; // ++ to avoid tab character itself
|
||||
|
||||
/* Now set the appropriate variable */
|
||||
switch(i) {
|
||||
case MEM_LABEL_0:
|
||||
case MEM_LABEL_1:
|
||||
case MEM_LABEL_2:
|
||||
case MEM_LABEL_3:
|
||||
case MEM_LABEL_4:
|
||||
case MEM_LABEL_5:
|
||||
case MEM_LABEL_6:
|
||||
case MEM_LABEL_7:
|
||||
case MEM_LABEL_8:
|
||||
case MEM_LABEL_9:
|
||||
/* Set Locked Flag */
|
||||
MemLock[i] = 0;
|
||||
/* Set Memory Element */
|
||||
MemArray[i] = atof(cfg_var_ptr);
|
||||
if (Verbose)
|
||||
printf("Assign Memory Element %d to %f\n", i, MemArray[i]);
|
||||
break;
|
||||
|
||||
case MEM_LOCK_0:
|
||||
case MEM_LOCK_1:
|
||||
case MEM_LOCK_2:
|
||||
case MEM_LOCK_3:
|
||||
case MEM_LOCK_4:
|
||||
case MEM_LOCK_5:
|
||||
case MEM_LOCK_6:
|
||||
case MEM_LOCK_7:
|
||||
case MEM_LOCK_8:
|
||||
case MEM_LOCK_9:
|
||||
/* Set Locked Flag */
|
||||
MemLock[i - MEM_LOCK_0] = 1;
|
||||
/* Set Memory Element */
|
||||
MemArray[i - MEM_LOCK_0] = atof(cfg_var_ptr);
|
||||
if (Verbose)
|
||||
printf("Assign Memory Element %d to %f\n", i -
|
||||
MEM_LOCK_0, MemArray[i - MEM_LOCK_0]);
|
||||
break;
|
||||
|
||||
case IMAG_LABEL:
|
||||
/* Get the character that the user wishes to use to
|
||||
represent sqrt(-1) (i or j) */
|
||||
if ((cfg_var_ptr[0] == 'i') || cfg_var_ptr[0] == 'j') {
|
||||
ImagChar = cfg_var_ptr[0];
|
||||
}
|
||||
if (Verbose)
|
||||
printf("Use character '%c' to represent sqrt(-1)\n", ImagChar);
|
||||
break;
|
||||
|
||||
case CALC_LABEL:
|
||||
/* Set external calculator start command */
|
||||
strcpy(SysCalcCmd, cfg_var_ptr);
|
||||
if (Verbose)
|
||||
printf("Assign Calc Command: %s\n", cfg_var_ptr);
|
||||
break;
|
||||
|
||||
default:
|
||||
if (Verbose) printf("Unknown Config Variable: %s\n", line);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
/* Otherwise, we don't recognize the variable */
|
||||
else {
|
||||
if (Verbose) printf("Unknown Config Variable: %s\n", line);
|
||||
}
|
||||
}
|
||||
/* Otherwise, we had a poorly formatted line in the config file. */
|
||||
else {
|
||||
if (Verbose) printf("Poorly formatted config file line\n:%s\n", line);
|
||||
}
|
||||
}
|
||||
free(line);
|
||||
} while (line != NULL);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
|
||||
|
||||
return(err_code);
|
||||
} /***** End of function read_config **************************/
|
Loading…
Reference in a new issue