1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
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.
|