Calcoo - Scientific calculator (GTK+)

Copyright (C) 2001 - 2007 Alexei Kaminski <alexei.kaminski@gmail.com>

TABLE OF CONTENTS
*****************

1. What is Calcoo?
2. License
3. Installation
4. Source
5. Bugs and bug reports
6. Apologies

1. What is Calcoo?
------------------

Calcoo is a scientific calculator designed to provide maximum
usability.  The features that make Calcoo better than (at least some)
other calculator programs are:

* Bitmapped button labels and display digits to improve readability.

* No double-function buttons. As the result, you need to click only one 
  button for any operation (except for arc-hyp trigonometric
  functions).

* Undo/redo buttons.

* Copy/paste interaction with X the clipboard.

* Both RPN (reverse Polish notation) and algebraic modes are available

* Tick marks to separate thousands.                                  

* Two memory registers with displays.

* Displays for Y, Z, and T registers.

* It is a purely scientific calculator. There are no buttons for the 
  hexadecimal digits (ABCDEF) and logical operations, which take space
  and distract from "scientific" buttons.

Features that Calcoo lacks:

* Statistical mode. Use some other program for it; it is hard to imagine
  any program less suitable for statistical processing of data than a
  calculator emulator.

* HEX mode. Scientific and and hexadecimal operations are hardly compatible.
  Has anyone ever calculated sin(FF)? Or Pi AND Sqrt(5)? If I create a HEX 
  calculator on the base of Calcoo, it will be a separate program.

2. License
----------

    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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA

3. Installation
---------------

To begin with, you may wish to change something in the file defaults.h.
It is perfectly Ok to leave it as it is, though.

For the brave and impatient:

	./configure --prefix=<install_dir>
	make
	make install

The only file of Calcoo's binary, "calcoo", will be put in
<install_dir>/bin/.  If the "--prefix" part is omitted, it will be
/usr/local/bin (you probably have to be root to do it). If you want to
install Calcoo in your home directory, use --prefix=$HOME ; Calcoo
will be put into $HOME/bin/ then. If the compilation works to the end,
but the installation fails for some reason, just copy the executable
file src/calcoo (it is the only file calcoo needs for work) to some
directory from your $PATH).

On FreeBSD, file "gtk-config" used by the configure script may be
"gtk12-config". If configure reports absense of "gtk-config" and you do 
have gtk1.2 installed, create a symlink. 

For the patient:

	Look into INSTALL file.

For the experienced:

	There is nothing non-standard in INSTALL. The installation 
scripts are produced by standard manipulations with autoconf and automake.


4. Source
---------

Calcoo is written in C. It uses GTK+ widget library, version 2.x.

The homepage of Calcoo project is located at http://calcoo.sourceforge.net/.

Now about the source itself. I wanted to make it portable to other
libraries, so I tried to reduce the explicit use of glib, and to
localize the use of GTK+ functions and types. As the result, the
Calcoo source has the following structure:

The front-end (widgets) and back-end (engine) are separated. The names of 
the files related to front-end begin with "b_":

b_accel.c 
b_layout.c
b_displays.c
b_buttons.c
b_info.c
b_settings.c
b_pixmaps.c

The headers of the functions defined in these files (except for "b_accel.c") 
are in "b_headers.h" The file "body.h" defines the type t_calcoo_body, 
which is the structure, which holds all its widgets. The file "gtkaux.c" 
defines a couple of auxiliary functions operating with gtk widgets (the 
headers are in "gtkaux_headers.h").  The file "b_accel_headers.h" defines 
headers for b_accel.c, they are separated since they mention GTK structures 
which were not to be mentioned in "b_headers.h"

The front-end sends signals to the back-end by calling the functions defined in
"input.c". The file "output.c" transmits signals from the back-end to the 
front-end. The file "io_headers.h" holds the headers of these functions.

The functions from "input.c" call the functions of the back-end, which are
defined in files with the names beginning with "c_":

c_input.c
c_output.c
c_mem.c
c_op.c
c_main.c
c_undo.c

Their headers are in "c_headers.h". The file "cpu.h" defines the type 
"t_calcoo_cpu", which is the structure, which holds all information about
the internal state of the calculator.

The file "aux.c" defines some auxiliary functions, like the calculation of the 
factorial; their headers are in "aux_headers.h"

5. Bugs and bug reports
-----------------------

Calcoo has no bugs I know about.
If you find any, please report them to alexei.kaminski@gmail.com.

6. Apologies
------------

Calcoo was originally written for GTK+ 1.2. When I decided to port it to
GTK+ 2.x, I had much less free time than when I was writing it originally.
Therefore, only the things which broke after the transition to GTK+ 2.x,
are (re)written according to the new standards, the things that worked are
left as they were. As the result, you can see this weird mixture of 
gtk_signal_connect and g_signal_connect. Yes, I know it is ugly; no, I do
not have time to fix it. It works, it is good enough.
