Calcoo - Scientific calculator (GTK+) Copyright (C) 2001 - 2003 Alexei Kaminski TABLE OF CONTENTS ***************** 1. What is Calcoo? 2. License 3. Installation 4. Source 5. Bugs and bug reports 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 (but which are useless anyway): * 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= make make install The only file of Calcoo's binary, "calcoo", will be put in /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 1.2. 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 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 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 kaminski@tpi.umn.edu.