SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Sponsored Links

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

Calcoo - Scientific calculator (GTK+)

Copyright (C) 2001 - 2005 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.


Sponsored Links

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.