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
					
				
					 31 changed files with 4311 additions and 0 deletions
				
			
		
							
								
								
									
										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