diff --git a/CHANGELOG b/CHANGELOG index ea7ac88..758fb8b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,69 +1,114 @@ +Version 0.8.3 prerelease + * fixed: calculating the size of the main window + now it looks good on MS Vista and when a user changes size of some + widgets such as a border, font size, etc. + * changed: variables and functions are case-sensitive now, e.g. + 'x' is not the same as 'X' + * changed: precision: + small - the same as previous + medium - 288 bits for the mantissa, 64 bits for the exponent + big - 864 bits for the mantissa, 128 bits for the exponent + previous were: + medium - 192 bits for the mantissa, 64 bits for the exponent + big - 288 bits for the mantissa, 96 bits for the exponent + * added: when a user presses CTRL+C then the result will be + copied into the clipboard (if the current control which + has a focus is not an edit control, or if it is an edit + but has no selection) + * added: when a user presses CTRL+V then the text from the clipboard + will be copied into the edit control + (the focus can be anywhere but it cannot be on another edit control) + * added: 'decimal point' option on the display tab + * added: variables and functions can have underline characters + in their names + * added: from TTMath 0.8.3: a short form of multiplication + (without the '*' character) e.g. '5y' + (it's used only if the second parameter is a variable + or function) + * added: 'remove trailing zeroes' option on 'display' tab + * added: new language: spanish + translation made by Alejandro S. Valdezate + alesanval at gmail dot com + * added: spanish language to the setup (installer) + * added: the setup will remove mingwm10.dll if it exists in the program + directory + * added: on display tab: we can select 'deg' 'rad' or 'grad' for calculating + in such functions: sin,cos,tan,cot,asin,acos,atan,acot + * removed: 'cut off last non valid digits' on 'rounding' option + on 'display' tab + + Version 0.8.2 portable (2007.07.01): - * added: the portable version of the program TTCalc - it uses *.ini config file from the same folder where - is the executable file, and it's much smaller in size - (in the portable version there's only one kind - of precision and the program is packed with UPX - - the Ultimate Packer for eXecutables) - there are no other differences between version 0.8.1 and this one - + * added: the portable version of the program TTCalc + it uses *.ini config file from the same folder where + is the executable file, and it's much smaller in size + (in the portable version there's only one kind + of precision and the program is packed with UPX - + the Ultimate Packer for eXecutables) + there are no other differences between version 0.8.1 and this one + + Version 0.8.1 (2007.04.17): - * changed: on win9x the configuration file is in a folder like: - "c:\windows\data application\ttcalc\" now - * changed: the program uses the TTMath 0.8.1 now - * added: from TTMath 0.8.1: - root(x, index), bitand(x,y), bitor(x,y), bitxor(x,y) - /band(x,y), bor(x,y), bxor(x,y)/ - asinh(x), acosh(x), atanh(x), acoth(x) /atgh(x), actgh(x)/ - * changed: from TTMath 0.8.1: calculations are much faster now - especially the factorial() function - * changed: from TTMath 0.8.1: the way of parsing operators - + * changed: on win9x the configuration file is in a folder like: + "c:\windows\data application\ttcalc\" now + * changed: the program uses the TTMath 0.8.1 now + * added: from TTMath 0.8.1: + root(x, index), bitand(x,y), bitor(x,y), bitxor(x,y) + /band(x,y), bor(x,y), bxor(x,y)/ + asinh(x), acosh(x), atanh(x), acoth(x) /atgh(x), actgh(x)/ + * changed: from TTMath 0.8.1: calculations are much faster now + especially the factorial() function + * changed: from TTMath 0.8.1: the way of parsing operators + + Version 0.8.0 (2007.04.02): - * added: the del key deletes a variable or a function now - (if the focus is on the list) - * added: a user can change the names of variables or functions now - * changed: the program uses TTMath 0.8.0 now - * added: functions: from TTMath 0.8.0: - DegToDeg(deg, min, sec), DegToRad(deg), DegToRad(deg, min, sec), - RadToDeg(rad), Ceil(x), Floor(x), Sqrt(x), Sinh(x), Cosh(x), - Tanh(x) /Tgh(x)/, Coth(x) /Ctgh(x)/ - * added: a help - * changed: from TTMath 0.8.0: - renamed: CTan() into Cot() or Ctg() - renamed: ACTan() into ACot() or ACtg() - Factorial() has a history log now (it can remember last - 10 calculated values) - * fixed: the vertical size of the main window when a user uses a different - size of the window caption (especially under the Windows XP Luna) - * fixed: on Windows 9x: the program hung when a user clicks on a control - on the first tab - * fixed: when a user started navigating from the keyboard the program showed - a wrong variable or a funtion in the edit dialog + * added: the del key deletes a variable or a function now + (if the focus is on the list) + * added: a user can change the names of variables or functions now + * changed: the program uses TTMath 0.8.0 now + * added: functions: from TTMath 0.8.0: + DegToDeg(deg, min, sec), DegToRad(deg), DegToRad(deg, min, sec), + RadToDeg(rad), Ceil(x), Floor(x), Sqrt(x), Sinh(x), Cosh(x), + Tanh(x) /Tgh(x)/, Coth(x) /Ctgh(x)/ + * added: help + * changed: from TTMath 0.8.0: + renamed: CTan() into Cot() or Ctg() + renamed: ACTan() into ACot() or ACtg() + Factorial() has a history log now (it can remember last + 10 calculated values) + * fixed: the vertical size of the main window when a user uses a different + size of the window caption (especially under the Windows XP Luna) + * fixed: on Windows 9x: the program hung when a user clicks on a control + on the first tab + * fixed: when a user started navigating from the keyboard the program showed + a wrong variable or a funtion in the edit dialog + Version 0.7.3 (2007.03.08): - * added: the program shows some kind of errors itself - * added: checking whether an user has inserted a correct value of a variable - or a function - * fixed: navigation from the keyboard - * changed: the esc key selects the entire input text now (in the input edit) - * added: a test when the program is being starded which checks if the - coordinates of the main window actually pointing at the valid area (for - example when someone took his configuration file into a new computer and - the new computer has a smaller screen) + * added: the program shows some kind of errors itself + * added: checking whether an user has inserted a correct value of a variable + or a function + * fixed: navigation from the keyboard + * changed: the esc key selects the entire input text now (in the input edit) + * added: a test when the program is being starded which checks if the + coordinates of the main window actually pointing at the valid area (for + example when someone took his configuration file into a new computer and + the new computer has a smaller screen) + Version 0.7.2 (2007.02.28): - * added buttons Sgn and Mod - * the button 'err' is active when there's actually an error now - * added buttons: ASin, ACos, ATan, ACTan - * fixed: the program didn't save the current language into the configuration file - * fixed: the second thread didn't read the main window correctly and it caused - small problems when an user was typing into the first edit control + * added: buttons Sgn and Mod + * changed: the button 'err' is active when there's actually an error now + * added: buttons: ASin, ACos, ATan, ACTan + * fixed: the program didn't save the current language into the configuration file + * fixed: the second thread didn't read the main window correctly and it caused + small problems when an user was typing into the first edit control + Version 0.7.1 (2007.02.08): - * added a button 'err' (error) on the first tab - * the input edit can have 2048 characters now - * added remembering the vertical size into the config file - * fixed a problem with the 'tab' key - * added a message 'Calculating...' when an user clicks on the 'err' button - during calculating something + * added: button 'err' (error) on the first tab + * changed: the input edit can have 2048 characters now + * added: remembering the vertical size into the config file + * fixed: a problem with the 'tab' key + * added: a message 'Calculating...' when an user clicks on the 'err' button + during calculating something diff --git a/COPYRIGHT b/COPYRIGHT index a99db80..0e1660a 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,4 +1,4 @@ -Copyright (c) 2006-2007, Tomasz Sowa +Copyright (c) 2006-2009, Tomasz Sowa All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README b/README index 21f9eaa..2055703 100644 --- a/README +++ b/README @@ -1,19 +1,19 @@ -TTCalc - -TTCalc is a mathematical calculator. It has a nice user interface, -formulas for calculating can be inserted by using a keyboard or a mouse. -The result is automatically shown in a second window without using any -additional keys such as 'equal'. The program possess trigonometric -functions, inverse trigonometric functions, hyperbolic functions, -logical operators, logarithms, functions for converting between degrees -and radians and so on. Additionally the program allows the user to -define his own variables and functions. Calculations are performed by -using floating point numbers with three kind of precision, the biggest -has 288 bits for its mantissa and 96 bits for its exponent that is -about 2.551...e+11925026709067095507636213441 with 85 valid decimal -digits. The program independently allows to insert and display values -with the base (radix) from two to sixteen. - -Author: Tomasz Sowa -Project page: http://sourceforge.net/projects/ttcalc -Licence: BSD (open source) +TTCalc + +TTCalc is an open source mathematical calculator. It features arithmetical +functions, trigonometric functions, inverse trigonometric functions, +hyperbolic functions, inverse hyperbolic functions, logical operators, +logarithms, functions for converting between degrees and radians and +so on. Additionally the program allows a user to define his own +variables and functions. + +The program possess an easy to use interface. Calculations are performed +by using floating point numbers with three kind of precision, the biggest +has 864 bits for its mantissa and 128 bits for its exponent that is about +6.7....e+51217599719369681875006054625051616609 with 258 valid decimal digits. +TTCalc independently allows to insert and display values with the base +(radix) from two to sixteen. + +Author: Tomasz Sowa +Project page: http://ttcalc.sourceforge.net/ +Licence: BSD (open source) diff --git a/TODO b/TODO deleted file mode 100644 index cd23d1b..0000000 --- a/TODO +++ /dev/null @@ -1,6 +0,0 @@ -TODO TTCalc -=========== - - - - diff --git a/help/arithmetic_functions.html b/help/arithmetic_functions.html index 0f8e0c7..78bd8dc 100644 --- a/help/arithmetic_functions.html +++ b/help/arithmetic_functions.html @@ -1,208 +1,208 @@ - - - - - - TTCalc - arithmetic functions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Arithmetic functions

- -

Note: If a function takes more than one argument, the arguments are separated with semicolon ';'.

- -
-
ln(x)
-
This function calculates the natural logarithm of x,
e.g. ln(123)=4.812...
- -
log(x; base)
-
This function calculates the logarithm of x with a base equal 'base'
log(123; 4)=3.471...
- -
exp(x)
-
This function calculates the exponent of x
exp(20)=e^20=485165195.409...
- -
sin(x)
-
This function returns the sine of x.
For example sin(0.8)=0.717...
The argument x is in radians, if you want to calculate -with degrees use the degtorad(x) function first e.g. sin(degtorad(30))=0.5 calculates the sine of 30 degrees.
- -
cos(x)
-
Cosine of x
cos(1.3)=0.267...
The argument x is in radians.
- -
tan(x) or tg(x)
-
Tangent of x
tan(3.6)=0.493...
The argument x is in radians.
- -
cot(x) or ctg(x)
-
Cotangent of x
cot(2.3)=-0.893...
The argument x is in radians.
- -
asin(x)
-
Inverse sine (arc sine) of x
e.g. asin(0.7)=0.775...
The result is in radians. If you want the result to be in degrees use -radtodeg function e.g. radtodeg(asin(0,5))=30
- -
acos(x)
-
Inverse cosine (arc cosine) of x
acos(0.9)=0.451...
The result is in radians.
- -
atan(x) or atg(x)
-
Inverse tangent (arc tangent) of x
atan(3.3)=1.276...
The result is in radians.
- -
acot(x) or actg(x)
-
Inverse cotangent (arc cotangent) of x
acot(10)=0.099...
The result is in radians.
- -
sinh(x)
-
This function returns hyperbolic sine of x
sinh(12)=81377.395...
- -
cosh(x)
-
Hyperbolic cosine of x
cosh(8.5)=2457.384...
- -
tanh(x) or tgh(x)
-
Hyperbolic tangent of x
tanh(0.67)=0.584...
- -
coth(x) or ctgh(x)
-
Hyperbolic cotangent of x
coth(1.67)=1.073...
- -
asinh(x)
-
This function returns inverse hyperbolic sine of x
asinh(3.6)=1.992...
- -
acosh(x)
-
This function returns inverse hyperbolic cosine of x
acosh(2.23)=1.440...
- -
atanh(x) or atgh(x)
-
This function returns inverse hyperbolic tangent of x
atanh(0.67)=0.810...
- -
acoth(x) or actgh(x)
-
This function returns inverse hyperbolic cotangent of x
acoth(1.23)=1.135...
- -
DegToDeg(deg; min; sec)
-
This function converts degrees from the long format with degres, minutes and seconds into only degrees.
-For example degtodeg(12; 30; 0)=12.5
- -
DegToRad(deg)
-
This function converts degrees into radians
degtorad(12.5)=0.218166...
- -
DegToRad(deg; min; sec)
-
This function converts degrees in the long format (degrees, minutes, seconds) to radians.
For example -degtorad(12; 30; 0)=0.218166...
- -
RadToDeg(rad)
-
This function converts radians into degrees
radtodeg(pi)=180
- -
sqrt(x)
-
Sqrt returns the square root of x
sqrt(9)=3
- -
root(x ; n)
-
The nth root of a 'x', 'n' must be integer and not negative, if 'n' is zero the result is one, -if 'x' is zero the result is zero and we assume that the root(0;0) is not defined, e.g.
-root(8;3)=2
-root(-8;3)=-2 -
- -
factorial(x)
-
The factorial function
factorial(6)=1*2*3*4*5*6=720
- -
abs(x)
-
The absolute value of x
abs(-10)=10
- -
sgn(x)
-
This function returns the sign of x that means when the x is positive the result is 1, when the x is negative -the result is -1 and when the x is zero the result is zero too
-sgn(-10)=-1
-sgn(0)=0
-sgn(5)=1
- -
mod(x,y)
-
Mod returns the remainder from the division x by y
mod(10; 2.2)=1.2 because 10=2.2*4 + 1.2
- -
int(x)
-
This method returns only the integer part of x.
int(2.7)=2
- -
round(x)
-
This method rounds the value of x to the nearest integer
-round(2.8)=3
-round(2.2)=2
-round(2)=2
-round(-4.8)=-5
-round(-4.1)=-4
- -
ceil(x)
-
This function returns a value representing the smallest integer that is greater than or equal to x
-ceil(2.8)=3
-ceil(2.2)=3
-ceil(2)=2
-ceil(-4.8)=-4
-ceil(-4.1)=-4
- -
floor(x)
-
This function returns a value representing the largest integer that is less than or equal to x
-floor(2.8)=2
-floor(2.2)=2
-floor(2)=2
-floor(-4.8)=-5
-floor(-4.1)=-5
- -
max(x1; x2; ...)
-
This functions takes any number of arguments. It returns the max value of them. If there aren't arguments -the function returns the max value which can be held in this precision.
- -
min(x1; x2; ...)
-
This functions takes any number of arguments. It returns the min value of them. If there aren't arguments -the function returns the min value which can be held in this precision.
- -
sum(x1; x2; ...)
-
This functions takes one or more arguments. It returns the sum of them.
- -
avg(x1; x2; ...)
-
This functions takes one or more arguments. It returns the arithmetic mean. (The sum divided by -the number of arguments)
- -
- - - + + + + + + TTCalc - arithmetic functions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Arithmetic functions

+ +

Note: If a function takes more than one argument, the arguments are separated with semicolon ';'.

+ +
+
ln(x)
+
This function calculates the natural logarithm of x,
e.g. ln(123)=4.812...
+ +
log(x; base)
+
This function calculates the logarithm of x with a base equal 'base'
log(123; 4)=3.471...
+ +
exp(x)
+
This function calculates the exponent of x
exp(20)=e^20=485165195.409...
+ +
sin(x)
+
This function returns the sine of x.
For example sin(0.8)=0.717...
The argument x is in radians, if you want to calculate +with degrees use the degtorad(x) function first e.g. sin(degtorad(30))=0.5 calculates the sine of 30 degrees.
+ +
cos(x)
+
Cosine of x
cos(1.3)=0.267...
The argument x is in radians.
+ +
tan(x) or tg(x)
+
Tangent of x
tan(3.6)=0.493...
The argument x is in radians.
+ +
cot(x) or ctg(x)
+
Cotangent of x
cot(2.3)=-0.893...
The argument x is in radians.
+ +
asin(x)
+
Inverse sine (arc sine) of x
e.g. asin(0.7)=0.775...
The result is in radians. If you want the result to be in degrees use +radtodeg function e.g. radtodeg(asin(0,5))=30
+ +
acos(x)
+
Inverse cosine (arc cosine) of x
acos(0.9)=0.451...
The result is in radians.
+ +
atan(x) or atg(x)
+
Inverse tangent (arc tangent) of x
atan(3.3)=1.276...
The result is in radians.
+ +
acot(x) or actg(x)
+
Inverse cotangent (arc cotangent) of x
acot(10)=0.099...
The result is in radians.
+ +
sinh(x)
+
This function returns hyperbolic sine of x
sinh(12)=81377.395...
+ +
cosh(x)
+
Hyperbolic cosine of x
cosh(8.5)=2457.384...
+ +
tanh(x) or tgh(x)
+
Hyperbolic tangent of x
tanh(0.67)=0.584...
+ +
coth(x) or ctgh(x)
+
Hyperbolic cotangent of x
coth(1.67)=1.073...
+ +
asinh(x)
+
This function returns inverse hyperbolic sine of x
asinh(3.6)=1.992...
+ +
acosh(x)
+
This function returns inverse hyperbolic cosine of x
acosh(2.23)=1.440...
+ +
atanh(x) or atgh(x)
+
This function returns inverse hyperbolic tangent of x
atanh(0.67)=0.810...
+ +
acoth(x) or actgh(x)
+
This function returns inverse hyperbolic cotangent of x
acoth(1.23)=1.135...
+ +
DegToDeg(deg; min; sec)
+
This function converts degrees from the long format with degres, minutes and seconds into only degrees.
+For example degtodeg(12; 30; 0)=12.5
+ +
DegToRad(deg)
+
This function converts degrees into radians
degtorad(12.5)=0.218166...
+ +
DegToRad(deg; min; sec)
+
This function converts degrees in the long format (degrees, minutes, seconds) to radians.
For example +degtorad(12; 30; 0)=0.218166...
+ +
RadToDeg(rad)
+
This function converts radians into degrees
radtodeg(pi)=180
+ +
sqrt(x)
+
Sqrt returns the square root of x
sqrt(9)=3
+ +
root(x ; n)
+
The nth root of a 'x', 'n' must be integer and not negative, if 'n' is zero the result is one, +if 'x' is zero the result is zero and we assume that the root(0;0) is not defined, e.g.
+root(8;3)=2
+root(-8;3)=-2 +
+ +
factorial(x)
+
The factorial function
factorial(6)=1*2*3*4*5*6=720
+ +
abs(x)
+
The absolute value of x
abs(-10)=10
+ +
sgn(x)
+
This function returns the sign of x that means when the x is positive the result is 1, when the x is negative +the result is -1 and when the x is zero the result is zero too
+sgn(-10)=-1
+sgn(0)=0
+sgn(5)=1
+ +
mod(x,y)
+
Mod returns the remainder from the division x by y
mod(10; 2.2)=1.2 because 10=2.2*4 + 1.2
+ +
int(x)
+
This method returns only the integer part of x.
int(2.7)=2
+ +
round(x)
+
This method rounds the value of x to the nearest integer
+round(2.8)=3
+round(2.2)=2
+round(2)=2
+round(-4.8)=-5
+round(-4.1)=-4
+ +
ceil(x)
+
This function returns a value representing the smallest integer that is greater than or equal to x
+ceil(2.8)=3
+ceil(2.2)=3
+ceil(2)=2
+ceil(-4.8)=-4
+ceil(-4.1)=-4
+ +
floor(x)
+
This function returns a value representing the largest integer that is less than or equal to x
+floor(2.8)=2
+floor(2.2)=2
+floor(2)=2
+floor(-4.8)=-5
+floor(-4.1)=-5
+ +
max(x1; x2; ...)
+
This functions takes any number of arguments. It returns the max value of them. If there aren't arguments +the function returns the max value which can be held in this precision.
+ +
min(x1; x2; ...)
+
This functions takes any number of arguments. It returns the min value of them. If there aren't arguments +the function returns the min value which can be held in this precision.
+ +
sum(x1; x2; ...)
+
This functions takes one or more arguments. It returns the sum of them.
+ +
avg(x1; x2; ...)
+
This functions takes one or more arguments. It returns the arithmetic mean. (The sum divided by +the number of arguments)
+ +
+ + + diff --git a/help/bitwise_functions.html b/help/bitwise_functions.html index f656f45..87d09d8 100644 --- a/help/bitwise_functions.html +++ b/help/bitwise_functions.html @@ -1,49 +1,49 @@ - - - - - - TTCalc - bitwise functions - - - - - - - - - - - - - - -

Bitwise functions

- -

-There are bitwise functions in the program but they can operate only on non-negative values. -We don't define the BitNot() function too. -

- - -
- -
BitAnd(x ; y) or band(x ; y)
-
Bitwise AND. For example:
-bitand(6; 2) = bitand(&110 ; &10) = &10 = 2
-bitand(6.5; 2.5) = bitand(&110.1 ; &10.1) = &10.1 = 2.5
- -
BitOr(x ; y) or bor(x ; y)
-
Bitwise OR. For example:
-bitor(6; 1) = bitor(&110 ; &1) = &111 = 7
-bitor(6.5; 1.5) = bitor(&110.1 ; &1.1) = &111.1 = 7.5
- -
BitXor(x ; y) or bxor(x ; y)
-
Bitwise XOR. For example:
-bitxor(6; 3) = bitxor(&110 ; &11) = &101 = 5
-bitxor(6.5; 3.5) = bitxor(&110.1 ; &11.1) = &101.0 = 5
- -
- - - + + + + + + TTCalc - bitwise functions + + + + + + + + + + + + + + +

Bitwise functions

+ +

+There are bitwise functions in the program but they can operate only on non-negative values. +We don't define the BitNot() function too. +

+ + +
+ +
BitAnd(x ; y) or band(x ; y)
+
Bitwise AND. For example:
+bitand(6; 2) = bitand(&110 ; &10) = &10 = 2
+bitand(6.5; 2.5) = bitand(&110.1 ; &10.1) = &10.1 = 2.5
+ +
BitOr(x ; y) or bor(x ; y)
+
Bitwise OR. For example:
+bitor(6; 1) = bitor(&110 ; &1) = &111 = 7
+bitor(6.5; 1.5) = bitor(&110.1 ; &1.1) = &111.1 = 7.5
+ +
BitXor(x ; y) or bxor(x ; y)
+
Bitwise XOR. For example:
+bitxor(6; 3) = bitxor(&110 ; &11) = &101 = 5
+bitxor(6.5; 3.5) = bitxor(&110.1 ; &11.1) = &101.0 = 5
+ +
+ + + diff --git a/help/help.hhp b/help/help.hhp index 98e4330..52d8aa4 100644 --- a/help/help.hhp +++ b/help/help.hhp @@ -1,24 +1,24 @@ -[OPTIONS] -Auto Index=Yes -Compatibility=1.1 or later -Compiled file=..\..\output\ttcalc.chm -Contents file=toc.hhc -Default topic=index.html -Display compile progress=No -Index file=index.hhk -Language=0x809 Angielski (Wielka Brytania) -Title=TTCalc - - -[FILES] -values_and_std_operators.html -arithmetic_functions.html -logical_functions.html -operators_priority.html -userfunctions.html -index.html -tips.html -bitwise_functions.html - -[INFOTYPES] - +[OPTIONS] +Auto Index=Yes +Compatibility=1.1 or later +Compiled file=..\..\output\ttcalc.chm +Contents file=toc.hhc +Default topic=index.html +Display compile progress=No +Index file=index.hhk +Language=0x809 Angielski (Wielka Brytania) +Title=TTCalc + + +[FILES] +values_and_std_operators.html +arithmetic_functions.html +logical_functions.html +operators_priority.html +userfunctions.html +index.html +tips.html +bitwise_functions.html + +[INFOTYPES] + diff --git a/help/index.hhk b/help/index.hhk index 2e24f6f..c0ba08a 100644 --- a/help/index.hhk +++ b/help/index.hhk @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/help/index.html b/help/index.html index 134b753..db87aa0 100644 --- a/help/index.html +++ b/help/index.html @@ -1,47 +1,47 @@ - - - - - - TTCalc - - - - - - - - - - - - - -

TTCalc

- -

-TTCalc is a mathematical calculator. It has a nice user interface, formulas for -calculating can be inserted by using a keyboard or a mouse. The result is automatically -shown in a second window without using any additional keys such as 'equal'. The -program possess trigonometric functions, inverse trigonometric functions, hyperbolic -functions, logical operators, logarithms, functions for converting between degrees and -radians and so on. Additionally the program allows the user to define his own -variables and functions. Calculations are performed by using floating point numbers -with three kind of precision, the biggest has 288 bits for its mantissa and 96 bits -for its exponent that is about 2.551...e+11925026709067095507636213441 with 85 valid -decimal digits. The program independently allows to insert and display values with -the base (radix) from two to sixteen. -

- - - - - - - - -
Author:Tomasz Sowa
Contact:t.sowa@slimaczek.pl
Licence:BSD (open source)
Operating systems:Microsoft Windows 9x/Me/NT/2000/XP (Vista was not tested)
Interface:English, Polish
Project page:http://sourceforge.net/projects/ttcalc
- - - + + + + + + TTCalc + + + + + + + + + + + + + +

TTCalc

+ +

+TTCalc is a mathematical calculator. It has a nice user interface, formulas for +calculating can be inserted by using a keyboard or a mouse. The result is automatically +shown in a second window without using any additional keys such as 'equal'. The +program possess trigonometric functions, inverse trigonometric functions, hyperbolic +functions, logical operators, logarithms, functions for converting between degrees and +radians and so on. Additionally the program allows the user to define his own +variables and functions. Calculations are performed by using floating point numbers +with three kind of precision, the biggest has 288 bits for its mantissa and 96 bits +for its exponent that is about 2.551...e+11925026709067095507636213441 with 85 valid +decimal digits. The program independently allows to insert and display values with +the base (radix) from two to sixteen. +

+ + + + + + + + +
Author:Tomasz Sowa
Contact:t.sowa@slimaczek.pl
Licence:BSD (open source)
Operating systems:Microsoft Windows 9x/Me/NT/2000/XP (Vista was not tested)
Interface:English, Polish
Project page:http://sourceforge.net/projects/ttcalc
+ + + \ No newline at end of file diff --git a/help/logical_functions.html b/help/logical_functions.html index dd28307..a72daaa 100644 --- a/help/logical_functions.html +++ b/help/logical_functions.html @@ -1,103 +1,103 @@ - - - - - - TTCalc - comparative and logical operators and functions - - - - - - - - - - - - - - - - - - - - - - -

Comparative and logical operators and functions

- -

-We assume that the logical false is represented by zero and the logical true is represented by the -value different from zero. Note: If a function takes more than one argument, the arguments are separated with semicolon ';'. -

- - -
- -
x < y
-
This operator returns one if x is lower than y else it returns zero. For example:
-4 < 10 = 1
-6 < 2 = 0
- -
x > y
-
This operator returns one if x is greater than y else it returns zero. For example:
-5 > 2 = 1
-5 > 8 = 0
- -
x <= y
-
This operator returns one if x is lower than or equal to y else it returns zero. For example:
-4 <= 4 = 1
-7 <= 2 = 0
- -
x >= y
-
This operator returns one if x is greater than or equal to y else it returns zero. For example:
-5 >= 5 = 1
-3 >= 4 = 0
- -
x == y
-
This operator returns one if x is equal y else it returns zero. For example:
-4 == 4 = 1
-6 == 2 = 0
- -
x != y
-
This operator returns one if x is different from y else it returns zero. For example:
-5 != 2 = 1
-5 != 5 = 0
- -
x && y (logical and)
-
This operator returns one if both x and y are different from zero else it returns zero. For example:
-4 && 10 = 1
-6 && 0 = 0
-0 && 0 = 0
- -
x || y (logical or)
-
This operator returns one either if x or y are different from zero else it returns zero. For example:
-5 || 2 = 1
-0 || 3 = 1
-0 || 0 = 0
- -
if(condition; if_true; if_false)
-
If the 'condition' is true (different from zero) the function returns 'if_true' else it returns 'if_false', e.g.
-if( 0 ; 20 ; 30) = 30
-if( 1 ; 20 ; 30) = 20
-if( 4<5 ; 10 ; 50) = 10
-if( 6>10 ; 200 ; 100) = 100
- -
and(x ; y)
-
This function does the same thing as the logical operator 'and' (&&)
- -
or(x ; y)
-
This function does the same thing as the logical operator 'or' (||)
- -
not(x)
-
If the x is true (different from zero) this function returns zero, otherwise it returns one, e.g.
-not(15)=0
-not(0)=1
- -
- - - + + + + + + TTCalc - comparative and logical operators and functions + + + + + + + + + + + + + + + + + + + + + + +

Comparative and logical operators and functions

+ +

+We assume that the logical false is represented by zero and the logical true is represented by the +value different from zero. Note: If a function takes more than one argument, the arguments are separated with semicolon ';'. +

+ + +
+ +
x < y
+
This operator returns one if x is lower than y else it returns zero. For example:
+4 < 10 = 1
+6 < 2 = 0
+ +
x > y
+
This operator returns one if x is greater than y else it returns zero. For example:
+5 > 2 = 1
+5 > 8 = 0
+ +
x <= y
+
This operator returns one if x is lower than or equal to y else it returns zero. For example:
+4 <= 4 = 1
+7 <= 2 = 0
+ +
x >= y
+
This operator returns one if x is greater than or equal to y else it returns zero. For example:
+5 >= 5 = 1
+3 >= 4 = 0
+ +
x == y
+
This operator returns one if x is equal y else it returns zero. For example:
+4 == 4 = 1
+6 == 2 = 0
+ +
x != y
+
This operator returns one if x is different from y else it returns zero. For example:
+5 != 2 = 1
+5 != 5 = 0
+ +
x && y (logical and)
+
This operator returns one if both x and y are different from zero else it returns zero. For example:
+4 && 10 = 1
+6 && 0 = 0
+0 && 0 = 0
+ +
x || y (logical or)
+
This operator returns one either if x or y are different from zero else it returns zero. For example:
+5 || 2 = 1
+0 || 3 = 1
+0 || 0 = 0
+ +
if(condition; if_true; if_false)
+
If the 'condition' is true (different from zero) the function returns 'if_true' else it returns 'if_false', e.g.
+if( 0 ; 20 ; 30) = 30
+if( 1 ; 20 ; 30) = 20
+if( 4<5 ; 10 ; 50) = 10
+if( 6>10 ; 200 ; 100) = 100
+ +
and(x ; y)
+
This function does the same thing as the logical operator 'and' (&&)
+ +
or(x ; y)
+
This function does the same thing as the logical operator 'or' (||)
+ +
not(x)
+
If the x is true (different from zero) this function returns zero, otherwise it returns one, e.g.
+not(15)=0
+not(0)=1
+ +
+ + + \ No newline at end of file diff --git a/help/operators_priority.html b/help/operators_priority.html index f0f1ae7..f074353 100644 --- a/help/operators_priority.html +++ b/help/operators_priority.html @@ -1,35 +1,35 @@ - - - - - - TTCalc - operators priority - - - - - - - - -

Operators Priority

- -

Below is a list of operators priority. At the top are operators with higher precedence.

- - - - - - - - - - - - - - -
OperatorDescriptionSample
( )parentheses for grouping an expression(1+3)*4
- + # &unary minus and plus, and operators for changing the base (radix)-10
without an operatorshort form of multiplicating (only if the second argument is a variable or function)3y
^powering3^2
* /multiplication and division10*20
+ -addition and subtraction10-30
== != < > <= >=comparative operators4<5
&&logical and3>2 && 3<10
||logical or3>2 || 3<10
- - - + + + + + + TTCalc - operators priority + + + + + + + + +

Operators Priority

+ +

Below is a list of operators priority. At the top are operators with higher precedence.

+ + + + + + + + + + + + + + +
OperatorDescriptionSample
( )parentheses for grouping an expression(1+3)*4
- + # &unary minus and plus, and operators for changing the base (radix)-10
without an operatorshort form of multiplicating (only if the second argument is a variable or function)3y
^powering3^2
* /multiplication and division10*20
+ -addition and subtraction10-30
== != < > <= >=comparative operators4<5
&&logical and3>2 && 3<10
||logical or3>2 || 3<10
+ + + diff --git a/help/styles.css b/help/styles.css index 434e079..93a6dd1 100644 --- a/help/styles.css +++ b/help/styles.css @@ -1,48 +1,48 @@ -html * { -margin: 0; -border: 0; -padding: 0; -} - - -html, body { -font-size: 14px; -font-family: Tahoma, Arial, Sans-serif; -} - -body { -margin: 0 0 20px 20px; -} - -h1 { -font-size: 2em; -font-family: Arial, Tahoma, Sans-serif; -margin: 1.4em 0 1em 0; -} - -p { -margin: 1em 0 1em 0; -} - -dt { -font-size: 1.4em; -margin-top: 1em; -} - - -dd { -padding: 0.3em 0 0 2em; -} - -thead { -font-size: 1.2em; -} - -td { -padding: 0 2em 0 0; -} - - - - - +html * { +margin: 0; +border: 0; +padding: 0; +} + + +html, body { +font-size: 14px; +font-family: Tahoma, Arial, Sans-serif; +} + +body { +margin: 0 0 20px 20px; +} + +h1 { +font-size: 2em; +font-family: Arial, Tahoma, Sans-serif; +margin: 1.4em 0 1em 0; +} + +p { +margin: 1em 0 1em 0; +} + +dt { +font-size: 1.4em; +margin-top: 1em; +} + + +dd { +padding: 0.3em 0 0 2em; +} + +thead { +font-size: 1.2em; +} + +td { +padding: 0 2em 0 0; +} + + + + + diff --git a/help/tips.html b/help/tips.html index 3c20e36..e82efc0 100644 --- a/help/tips.html +++ b/help/tips.html @@ -1,53 +1,53 @@ - - - - - - TTCalc - tips - - - - - - - - - - - - - - -

Tips

- -

-If you want to clear the input edit or if you want to put something in and the focus is -somewhere on the tabs just type ESC, the entire edit will be selected and have a focus. -

- -

-If you want to insert a value with a base (radix) 2 or 16 use the unary operator & (for the base 2) -or # (for the base 16). -For example &10=2 (decimal), #10=16 (decimal). When you're using these operators -then 'input' mode on the 'display' tab is ignored. -

- -

-You can calculate more than one formula at the same time. To achive this use a semicolon -in the global space, for example type '2+4 ; 5*10' and the result will be '6   50'. -

- -

-You can use CTRL+C to copy the result from the output edit into the clipboard -(if a control which has a focus is not an edit control, or if it is an edit but -has no selection) -

- -

-Also you can use CTRL+V to paste a text from the clipboard into the input control -(if a focus is not on another edit control) -

- - - + + + + + + TTCalc - tips + + + + + + + + + + + + + + +

Tips

+ +

+If you want to clear the input edit or if you want to put something in and the focus is +somewhere on the tabs just type ESC, the entire edit will be selected and have a focus. +

+ +

+If you want to insert a value with a base (radix) 2 or 16 use the unary operator & (for the base 2) +or # (for the base 16). +For example &10=2 (decimal), #10=16 (decimal). When you're using these operators +then 'input' mode on the 'display' tab is ignored. +

+ +

+You can calculate more than one formula at the same time. To achive this use a semicolon +in the global space, for example type '2+4 ; 5*10' and the result will be '6   50'. +

+ +

+You can use CTRL+C to copy the result from the output edit into the clipboard +(if a control which has a focus is not an edit control, or if it is an edit but +has no selection) +

+ +

+Also you can use CTRL+V to paste a text from the clipboard into the input control +(if a focus is not on another edit control) +

+ + + \ No newline at end of file diff --git a/help/toc.hhc b/help/toc.hhc index 39860e3..d930afb 100644 --- a/help/toc.hhc +++ b/help/toc.hhc @@ -1,46 +1,46 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/help/userfunctions.html b/help/userfunctions.html index 53c7f17..fa7c7e8 100644 --- a/help/userfunctions.html +++ b/help/userfunctions.html @@ -1,36 +1,36 @@ - - - - - - TTCalc - user defined variables and functions - - - - - - - - - -

User defined variables and functions

- -

-You are allowed to define your own variables and functions. As a name of a variable or a function -can be a name consists of letters, digits or an underline character but the first character must be a letter. -From version 0.8.3 names are case-sensitive that means 'name' is not the same as 'NaMe'. For example these -are correct names: a, b, c3, MyName, etc. During defining variables and functions you can call another -variables and functions but you cannot call a variable or a function twice. Recurrence calling are not allowed. -

- -

-Functions can get maximum 9 parameters. You have to specify how many parameters your function takes and -you can refer to them by using the variable 'x' with a number from 1 to 9 ('x' without a number means 'x1'). -For example you can define a function 'xy' as 'x1*x2' (of course without apostrophes), set the 'parameters' on 2 -and then put into the edit box an expression 'xy(10;20)', the result will be 200. Note that we use a semicolon -to separate arguments in a function. -

- - - + + + + + + TTCalc - user defined variables and functions + + + + + + + + + +

User defined variables and functions

+ +

+You are allowed to define your own variables and functions. As a name of a variable or a function +can be a name consists of letters, digits or an underline character but the first character must be a letter. +From version 0.8.3 names are case-sensitive that means 'name' is not the same as 'NaMe'. For example these +are correct names: a, b, c3, MyName, etc. During defining variables and functions you can call another +variables and functions but you cannot call a variable or a function twice. Recurrence calling are not allowed. +

+ +

+Functions can get maximum 9 parameters. You have to specify how many parameters your function takes and +you can refer to them by using the variable 'x' with a number from 1 to 9 ('x' without a number means 'x1'). +For example you can define a function 'xy' as 'x1*x2' (of course without apostrophes), set the 'parameters' on 2 +and then put into the edit box an expression 'xy(10;20)', the result will be 200. Note that we use a semicolon +to separate arguments in a function. +

+ + + \ No newline at end of file diff --git a/help/values_and_std_operators.html b/help/values_and_std_operators.html index 3e90621..a8f6a40 100644 --- a/help/values_and_std_operators.html +++ b/help/values_and_std_operators.html @@ -1,65 +1,65 @@ - - - - - - TTCalc - numbers, standard operators and built-in variables - - - - - - - - - - - - - - - - - - -

Numbers

- -You can type numbers directly using a keyboard or insert them by a mouse. This is a simple edit window, -you can use arrow keys etc. and copy&paste a text by using standard shortcuts such as CTRL+C and CTRL+V. -As the decimal point can be either a comma or a dot that means 1,234 is the same as 1.234. - -

Standard operators

- -
-
^
-
Powering
- -
*
-
Multiplication
- -
/
-
Division
- -
+
-
Addition
- -
-
-
Subtraction
- -
- -

Of course you can use the parentheses ( and ). Look at the operators priority as well.

- -

Built-in variables

- -

You can use following variables, just type its name into the edit window.

-
-
e
-
The base of the natural logarithm.
e = 2.718...
- -
pi
-
The ratio of a circle's circumference to its diameter.
pi=3.141...
-
- - - + + + + + + TTCalc - numbers, standard operators and built-in variables + + + + + + + + + + + + + + + + + + +

Numbers

+ +You can type numbers directly using a keyboard or insert them by a mouse. This is a simple edit window, +you can use arrow keys etc. and copy&paste a text by using standard shortcuts such as CTRL+C and CTRL+V. +As the decimal point can be either a comma or a dot that means 1,234 is the same as 1.234. + +

Standard operators

+ +
+
^
+
Powering
+ +
*
+
Multiplication
+ +
/
+
Division
+ +
+
+
Addition
+ +
-
+
Subtraction
+ +
+ +

Of course you can use the parentheses ( and ). Look at the operators priority as well.

+ +

Built-in variables

+ +

You can use following variables, just type its name into the edit window.

+
+
e
+
The base of the natural logarithm.
e = 2.718...
+ +
pi
+
The ratio of a circle's circumference to its diameter.
pi=3.141...
+
+ + + diff --git a/res/icon02.ico b/res/icon02.ico new file mode 100644 index 0000000..efa8fd2 Binary files /dev/null and b/res/icon02.ico differ diff --git a/setup/COPYRIGHT b/setup/COPYRIGHT index 3c550cd..ab48235 100644 --- a/setup/COPYRIGHT +++ b/setup/COPYRIGHT @@ -1,4 +1,4 @@ -Copyright (c) 2006-2007, Tomasz Sowa +Copyright (c) 2006-2009, Tomasz Sowa All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/setup/innosetup.iss b/setup/innosetup.iss index 89042e4..32d12db 100644 --- a/setup/innosetup.iss +++ b/setup/innosetup.iss @@ -1,44 +1,49 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -[Setup] -AppName=TTCalc -AppVerName=TTCalc 0.8.1 -AppPublisher=Tomasz Sowa -AppPublisherURL=http://sourceforge.net/projects/ttcalc -AppSupportURL=http://sourceforge.net/projects/ttcalc -AppUpdatesURL=http://sourceforge.net/projects/ttcalc -DefaultDirName={pf}\TTCalc -DefaultGroupName=TTCalc -AllowNoIcons=yes -LicenseFile=COPYRIGHT -OutputDir=..\..\output -OutputBaseFilename=ttcalc-setup -Compression=lzma -SolidCompression=yes - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" -Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl" - - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "..\..\output\ttcalc.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\..\output\mingwm10.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\..\output\ttcalc.chm"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\COPYRIGHT"; DestDir: "{app}"; Flags: ignoreversion -Source: "ttcalc.ini"; DestDir: "{userappdata}\TTCalc"; Flags: onlyifdoesntexist -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\TTCalc"; Filename: "{app}\ttcalc.exe"; WorkingDir: "{app}" -Name: "{group}\Help"; Filename: "{app}\ttcalc.chm"; WorkingDir: "{app}" -Name: "{group}\{cm:UninstallProgram,TTCalc}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\TTCalc"; Filename: "{app}\ttcalc.exe"; WorkingDir: "{app}"; Tasks: desktopicon - -[Run] -Filename: "{app}\ttcalc.exe"; Description: "{cm:LaunchProgram,TTCalc}"; Flags: nowait postinstall skipifsilent - +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +[Setup] +AppName=TTCalc +AppVerName=TTCalc 0.8.3 +AppPublisher=Tomasz Sowa +AppPublisherURL=http://ttcalc.sourceforge.net +AppSupportURL=http://ttcalc.sourceforge.net +AppUpdatesURL=http://ttcalc.sourceforge.net +DefaultDirName={pf}\TTCalc +DefaultGroupName=TTCalc +AllowNoIcons=yes +; special COPYRIGHT version (without a new line characters in the clause -- it is better displayed in the setup window) +LicenseFile=COPYRIGHT +OutputDir=..\..\output +OutputBaseFilename=ttcalc-setup +Compression=lzma +SolidCompression=yes +ShowUndisplayableLanguages=yes + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" +Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl" +Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" + +[InstallDelete] +; prior to 0.8.3 we were using mingwm10.dll (now it is not needed and will be deleted if exists) +Type: files; Name: "{app}\mingwm10.dll" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "..\..\output\ttcalc.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\output\ttcalc.chm"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\COPYRIGHT"; DestDir: "{app}"; Flags: ignoreversion +; now we do not use *.ini file in the installer +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{group}\TTCalc"; Filename: "{app}\ttcalc.exe"; WorkingDir: "{app}" +Name: "{group}\Help"; Filename: "{app}\ttcalc.chm"; WorkingDir: "{app}" +Name: "{group}\{cm:UninstallProgram,TTCalc}"; Filename: "{uninstallexe}" +Name: "{commondesktop}\TTCalc"; Filename: "{app}\ttcalc.exe"; WorkingDir: "{app}"; Tasks: desktopicon + +[Run] +Filename: "{app}\ttcalc.exe"; Description: "{cm:LaunchProgram,TTCalc}"; Flags: nowait postinstall skipifsilent + diff --git a/setup/ttcalc.ini b/setup/ttcalc.ini deleted file mode 100644 index 492e99e..0000000 --- a/setup/ttcalc.ini +++ /dev/null @@ -1,21 +0,0 @@ -# the configuration file of the program ttcalc - -[GLOBAL] -always.on.top = 0 -view = 0 -maximized = 0 -x = 0 -y = 0 -size.x = 402 -size.y = 288 -precision = 0 -disp.input = 10 -disp.output = 10 -language = 0 -disp.alw.scientific = 0 -disp.when.scientific = 15 -disp.rounding = -2 - -[variables] - -[functions] diff --git a/src/Makefile b/src/Makefile index b57e487..474fe0e 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,6 @@ CC = g++ -CFLAGS = -Wall -pedantic -s -O2 -mwindows -mthreads -I../../../ttmath +#CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../../ttmath -DTTCALC_CONVERT +CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../../ttmath name = ttcalc.exe # the name of the help is also set in the html help workshop project file @@ -21,6 +22,7 @@ $(dir_output)/$(name): $(o) ttcalc: $(dir_output)/$(name) resource.o: resource.rc + #windres -DTTCALC_CONVERT resource.rc resource.o windres resource.rc resource.o $(dir_output)/$(helpname): $(helpdep) diff --git a/src/Makefile.dep b/src/Makefile.dep index 044ba12..43c9f25 100644 --- a/src/Makefile.dep +++ b/src/Makefile.dep @@ -1,5 +1,6 @@ o = resource.o calculation.o convert.o functions.o iniparser.o languages.o mainwindow.o parsermanager.o programresources.o tabs.o variables.o winmain.o + calculation.o: calculation.cpp compileconfig.h parsermanager.h resource.h programresources.h iniparser.h languages.h bigtypes.h threadcontroller.h stopcalculating.h convert.h tabs.h messages.h convert.o: convert.cpp convert.h compileconfig.h bigtypes.h functions.o: functions.cpp compileconfig.h tabs.h resource.h messages.h programresources.h iniparser.h languages.h bigtypes.h threadcontroller.h stopcalculating.h convert.h @@ -11,7 +12,7 @@ programresources.o: programresources.cpp compileconfig.h programresources.h inip tabs.o: tabs.cpp compileconfig.h tabs.h resource.h messages.h programresources.h iniparser.h languages.h bigtypes.h threadcontroller.h stopcalculating.h convert.h variables.o: variables.cpp compileconfig.h tabs.h resource.h messages.h programresources.h iniparser.h languages.h bigtypes.h threadcontroller.h stopcalculating.h convert.h winmain.o: winmain.cpp compileconfig.h winmain.h programresources.h iniparser.h languages.h bigtypes.h threadcontroller.h stopcalculating.h convert.h resource.h messages.h tabs.h - + .SUFFIXES: .cpp .o @@ -32,4 +33,4 @@ helpdep = ../help/arithmetic_functions.html \ ../help/toc.hhc \ ../help/help.hhp -setupdep = ttcalc help ../setup/innosetup.iss ../setup/COPYRIGHT ../setup/ttcalc.ini +setupdep = ttcalc help ../setup/innosetup.iss ../setup/COPYRIGHT diff --git a/src/Makefileportable b/src/Makefileportable index 82ff173..601d4c6 100644 --- a/src/Makefileportable +++ b/src/Makefileportable @@ -1,5 +1,5 @@ CC = g++ -CFLAGS = -Wall -pedantic -s -Os -fno-default-inline -mwindows -mthreads -I../../../ttmath -DTTCALC_PORTABLE +CFLAGS = -Wall -pedantic -s -Os -fno-default-inline -mwindows -I../../../ttmath -DTTCALC_PORTABLE name = ttcalcp.exe dir_output = ../../output compressor = upx diff --git a/src/convert.cpp b/src/convert.cpp index 7cccb81..30e05db 100644 --- a/src/convert.cpp +++ b/src/convert.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2006-2008, Tomasz Sowa + * Copyright (c) 2006-2009, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/languages.cpp b/src/languages.cpp index 512a43e..3461cd2 100644 --- a/src/languages.cpp +++ b/src/languages.cpp @@ -274,7 +274,7 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(combo_rounding_integer,"to integer"); InsertGuiPair(combo_rounding_to_number,"to"); InsertGuiPair(combo_rounding_after_comma,"digit(s)"); - InsertGuiPair(check_remove_zeroes,"Remove trailing zeroes"); + InsertGuiPair(check_remove_zeroes,"Remove last trailing zeroes"); InsertGuiPair(display_input, "Input"); InsertGuiPair(display_output, "Output"); @@ -283,6 +283,7 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(display_not_always_scientific,"When the exponent is greater than:"); InsertGuiPair(display_group_scientific, "Print the result as the scientific value"); InsertGuiPair(display_decimal_point, "Decimal point"); + InsertGuiPair(display_deg_red_grad, "sin/cos asin/acos"); InsertGuiPair(convert_type, "Type"); InsertGuiPair(convert_input, "Input"); InsertGuiPair(convert_output, "Output"); @@ -407,6 +408,7 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(display_not_always_scientific,"Jeśli eksponent jest większy niż:"); InsertGuiPair(display_group_scientific, "Wyświetl wynik w postaci naukowej"); InsertGuiPair(display_decimal_point, "Przecinek dziesiętny"); + InsertGuiPair(display_deg_red_grad, "sin/cos asin/acos"); InsertGuiPair(convert_type, "Typ"); InsertGuiPair(convert_input, "Wejście"); InsertGuiPair(convert_output, "Wyjście"); @@ -522,7 +524,9 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(combo_rounding_none,"Ninguno"); InsertGuiPair(combo_rounding_integer,"a entero"); - InsertGuiPair(combo_rounding_to_number,"a numero"); + //InsertGuiPair(combo_rounding_to_number,"a numero"); + // this text was too long (the combobox is shorter now) -- I'm not sure whether this is correct now... (I don't know spanish at all) + InsertGuiPair(combo_rounding_to_number,"a"); InsertGuiPair(combo_rounding_after_comma,"digito(s)"); InsertGuiPair(check_remove_zeroes,"Eliminar ceros no-significativos"); @@ -533,6 +537,7 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(display_not_always_scientific,"Cuando el exponente es mas grande que:"); InsertGuiPair(display_group_scientific, "Imprimir el resultado como valor cientifico"); InsertGuiPair(display_decimal_point, "Decimal point"); + InsertGuiPair(display_deg_red_grad, "sin/cos asin/acos"); InsertGuiPair(convert_type, "Tipo"); InsertGuiPair(convert_input, "Entrada"); InsertGuiPair(convert_output, "Salida"); diff --git a/src/languages.h b/src/languages.h index 2e76edf..b0681c5 100644 --- a/src/languages.h +++ b/src/languages.h @@ -102,6 +102,7 @@ public: display_always_scientific, display_not_always_scientific, display_decimal_point, + display_deg_red_grad, convert_type, convert_input, convert_output, diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index eb1ac2d..deb86b9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2006-2008, Tomasz Sowa + * Copyright (c) 2006-2009, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -419,21 +419,23 @@ HMENU menu = GetMenu(hWnd); void WmInitDialogCalculateMainWindowSize(HWND hTab) { -RECT r; +RECT r_tab, r_main, r_edit2; - GetWindowRect(hTab, &r); - - int cy_caption = GetSystemMetrics(SM_CYCAPTION); - - int cy_add = 2 * GetSystemMetrics(SM_CYDLGFRAME) + - GetSystemMetrics(SM_CYMENU); + GetWindowRect(hTab, &r_tab); - int cx_add = 2 * GetSystemMetrics(SM_CXDLGFRAME) + - r.right - r.left; + HWND main = GetPrgRes()->GetMainWindow(); + GetWindowRect(main, &r_main); - GetPrgRes()->SetYSizeNormal ( 225 + cy_add + cy_caption * 2); - GetPrgRes()->SetYSizeCompact( 59 + cy_add + cy_caption ); - GetPrgRes()->SetXSizeMin ( 4 + cx_add ); + HWND output_edit = GetDlgItem(main, IDC_OUTPUT_EDIT); + GetWindowRect(output_edit, &r_edit2); + + int cy_compact = (r_edit2.bottom - r_main.top) + GetSystemMetrics(SM_CYSIZEFRAME); + int cy_normal = (r_tab.bottom - r_tab.top) + (r_tab.top - r_main.top) + GetSystemMetrics(SM_CYSIZEFRAME) + 8; + int cx = r_tab.right - r_tab.left + 2 * GetSystemMetrics(SM_CXSIZEFRAME); + + GetPrgRes()->SetYSizeNormal ( cy_normal ); + GetPrgRes()->SetYSizeCompact( cy_compact ); + GetPrgRes()->SetXSizeMin ( cx ); } @@ -456,14 +458,18 @@ DLGTEMPLATE * tab1template = (DLGTEMPLATE*)LockResource(tab1global); int frame_cx = GetSystemMetrics(SM_CXEDGE); int frame_cy = GetSystemMetrics(SM_CYEDGE); - int caption_cy = GetSystemMetrics(SM_CYCAPTION)+10; // the caption plus some white space + int space = 10; // some more space between the tab items and child tabs + + RECT tab_item_r; + TabCtrl_GetItemRect(hTab, 0, &tab_item_r); + int tab_item = tab_item_r.bottom; RECT r; GetWindowRect(hTab, &r); - SetWindowPos(hDialog, HWND_TOP, frame_cx, frame_cy + caption_cy, + SetWindowPos(hDialog, HWND_TOP, frame_cx, frame_cy + tab_item + space, r.right-r.left- 2*frame_cx, - r.bottom-r.top- 2*frame_cy - caption_cy, 0); + r.bottom-r.top- 2*frame_cy - tab_item - space, 0); return hDialog; } @@ -492,18 +498,24 @@ TCITEM tab_item; // the name of a tab we'll set when we call the 'SetLanguage()' function tab_item.mask = 0; - tab_standard = 0; - tab_variables = 1; - tab_functions = 2; + int tab_inc = 0; + + tab_standard = tab_inc++; + tab_variables = tab_inc++; + tab_functions = tab_inc++; #ifndef TTCALC_PORTABLE - tab_precision = 3; - tab_display = 4; - tab_convert = 5; + tab_precision = tab_inc++; #else tab_precision = -1; // this one will not be used - tab_display = 3; - tab_convert = 4; + #endif + + tab_display = tab_inc++; + + #ifdef TTCALC_CONVERT + tab_convert = tab_inc++; + #else + tab_convert = -1; #endif // this insertion must be in the ascending order @@ -517,7 +529,10 @@ TCITEM tab_item; #endif TabCtrl_InsertItem(hTab, tab_display, &tab_item); + + #ifdef TTCALC_CONVERT TabCtrl_InsertItem(hTab, tab_convert, &tab_item); + #endif WmInitDialogCreateTab(hTab, tab_standard, IDD_DIALOG_STANDARD, TabWindowProc); WmInitDialogCreateTab(hTab, tab_variables, IDD_DIALOG_VARIABLES, TabWindowProc); @@ -528,7 +543,10 @@ TCITEM tab_item; #endif WmInitDialogCreateTab(hTab, tab_display, IDD_DIALOG_DISPLAY, TabWindowProc); + + #ifdef TTCALC_CONVERT WmInitDialogCreateTab(hTab, tab_convert, IDD_DIALOG_CONVERT, TabWindowProc); + #endif SetSizeOfDialogs(); @@ -540,7 +558,10 @@ TCITEM tab_item; #endif SendMessage(GetPrgRes()->GetTabWindow(tab_display), WM_INIT_TAB_DISPLAY, 0,0); + + #ifdef TTCALC_CONVERT SendMessage(GetPrgRes()->GetTabWindow(tab_convert), WM_INIT_TAB_CONVERT, 0,0); + #endif TabWindowFunctions::SetLanguage(hTab); @@ -559,7 +580,7 @@ HWND hTab = GetDlgItem(hWnd,IDC_TAB); WmInitDialogCalculateMainWindowSize(hTab); WmInitDialogCreateAndInitTabs(hTab); - HICON program_icon = LoadIcon(GetPrgRes()->GetInstance(),MAKEINTRESOURCE(IDI_ICON1)); + HICON program_icon = LoadIcon(GetPrgRes()->GetInstance(),MAKEINTRESOURCE(IDI_ICON2)); if( program_icon ) SendMessage(hWnd,WM_SETICON,ICON_BIG,(LPARAM)program_icon); @@ -616,7 +637,6 @@ MINMAXINFO * lpmmi = (LPMINMAXINFO) lParam; if( GetPrgRes()->GetView() == ProgramResources::view_normal ) { lpmmi->ptMinTrackSize.y = GetPrgRes()->GetYSizeNormal(); - //lpmmi->ptMaxTrackSize.y = cy_normalny; } else {// kompaktowy diff --git a/src/parsermanager.cpp b/src/parsermanager.cpp index 3d8158d..dd71f54 100644 --- a/src/parsermanager.cpp +++ b/src/parsermanager.cpp @@ -95,16 +95,19 @@ ttmath::ErrorCode ParserManager::Parse() { case 0: parser1.SetBase(base_input); + parser1.SetDegRadGrad(angle_deg_rad_grad); code = parser1.Parse(buffer); break; case 1: parser2.SetBase(base_input); + parser2.SetDegRadGrad(angle_deg_rad_grad); code = parser2.Parse(buffer); break; default: parser3.SetBase(base_input); + parser3.SetDegRadGrad(angle_deg_rad_grad); code = parser3.Parse(buffer); break; } @@ -112,6 +115,7 @@ ttmath::ErrorCode ParserManager::Parse() #else parser1.SetBase(base_input); + parser1.SetDegRadGrad(angle_deg_rad_grad); code = parser1.Parse(buffer); #endif @@ -145,12 +149,13 @@ unsigned int i; base_input = GetPrgRes()->GetBaseInput(); base_output = GetPrgRes()->GetBaseOutput(); - always_scientific = GetPrgRes()->GetDisplayAlwaysScientific(); - when_scientific = GetPrgRes()->GetDisplayWhenScientific(); - rounding = GetPrgRes()->GetDisplayRounding(); - precision = GetPrgRes()->GetPrecision(); - remove_zeroes = GetPrgRes()->GetRemovingZeroes(); - country = GetPrgRes()->GetLanguages()->GetCurrentLanguage(); + always_scientific = GetPrgRes()->GetDisplayAlwaysScientific(); + when_scientific = GetPrgRes()->GetDisplayWhenScientific(); + rounding = GetPrgRes()->GetDisplayRounding(); + precision = GetPrgRes()->GetPrecision(); + remove_zeroes = GetPrgRes()->GetRemovingZeroes(); + angle_deg_rad_grad = GetPrgRes()->GetDegRadGrad(); + country = GetPrgRes()->GetLanguages()->GetCurrentLanguage(); conv_type = GetPrgRes()->GetConvert()->GetCurrentType(); GetPrgRes()->GetConvert()->GetCurrentUnit(conv_type, conv_input_unit, conv_output_unit); diff --git a/src/parsermanager.h b/src/parsermanager.h index 073e60e..b48b9f3 100644 --- a/src/parsermanager.h +++ b/src/parsermanager.h @@ -136,7 +136,7 @@ private: Languages::Country country; ttmath::ErrorCode code; char decimal_point; - + int angle_deg_rad_grad; /* some buffers which we use in some method in the second thread, diff --git a/src/programresources.cpp b/src/programresources.cpp index 098aa77..b7edf56 100644 --- a/src/programresources.cpp +++ b/src/programresources.cpp @@ -208,6 +208,25 @@ bool ProgramResources::GetRemovingZeroes() return remove_zeroes; } + +void ProgramResources::SetDegRadGrad(int angle) +{ + if( angle < 0 || angle > 2 ) + angle = 1; + + angle_deg_rad_grad = angle; +} + + + +int ProgramResources::GetDegRadGrad() +{ + return angle_deg_rad_grad; +} + + + + void ProgramResources::SetDisplayAlwaysScientific(bool a) { display_always_scientific = a; @@ -426,13 +445,14 @@ ProgramResources::ProgramResources() y_size_compact = 0; x_size_min = 0; - // !!! wrzucic do kontruktora Convert + // !!! put into Convert constructor + #ifdef TTCALC_CONVERT convert.Init(); + #endif decimal_point = 0; - - + angle_deg_rad_grad = 1; // rad is default } @@ -649,6 +669,7 @@ std::string ini_value[20]; iparser.Associate( "global|language", &ini_value[13] ); iparser.Associate( "global|disp.dec.point", &ini_value[14] ); iparser.Associate( "global|disp.remove.zeroes", &ini_value[15] ); + iparser.Associate( "global|disp.deg_rad_grad", &ini_value[16] ); iparser.Associate( "variables", &temp_variables ); iparser.Associate( "functions", &temp_functions ); @@ -704,7 +725,7 @@ std::string ini_value[20]; languages.SetCurrentLanguage(Languages::en); SetDecimalPoint( atoi(ini_value[14].c_str()) ); - + SetDegRadGrad( atoi(ini_value[16].c_str()) ); if( err != IniParser::err_ok ) bad_line = iparser.GetBadLine(); @@ -742,6 +763,8 @@ std::ofstream file( configuration_file.c_str() ); file << "disp.rounding = " << display_rounding << std::endl; file << "disp.remove.zeroes = " << (int)remove_zeroes << std::endl; file << "disp.dec.point = " << decimal_point << std::endl; + file << "disp.deg_rad_grad = " << angle_deg_rad_grad << std::endl; + file << "\n[variables]\n"; diff --git a/src/programresources.h b/src/programresources.h index d67684c..0c3a376 100644 --- a/src/programresources.h +++ b/src/programresources.h @@ -293,6 +293,14 @@ public: bool GetRemovingZeroes(); + /*! + setting and returning the unit of angle in which sin/cos/tan/ctg (arc sin...) operate + 0 - deg + 1 - red + 2 - grad + */ + void SetDegRadGrad(int angle); + int GetDegRadGrad(); private: @@ -340,6 +348,7 @@ private: int display_when_scientific; int display_rounding; bool remove_zeroes; + int angle_deg_rad_grad; int bad_line; diff --git a/src/resource.h b/src/resource.h index a22a907..50156ee 100644 --- a/src/resource.h +++ b/src/resource.h @@ -62,7 +62,8 @@ #define IDR_MENU 200 #define IDC_TAB 1010 -#define IDI_ICON1 104 +#define IDI_ICON2 104 +#define IDI_ICON1 105 #define IDC_INPUT_EDIT 1000 #define IDC_OUTPUT_EDIT 1001 @@ -165,6 +166,8 @@ #define IDC_LABEL_DECIMAL_POINT 1169 #define IDC_COMBO_DECIMAL_POINT 1170 #define IDC_CHECK_REMOVE_ZEROES 1171 +#define IDC_LABEL_DISPLAY_DEG_RAD_GRAD 1172 +#define IDC_COMBO_DEG_RAD_GRAD 1173 // convert tab diff --git a/src/resource.rc b/src/resource.rc index 7672f8d..0154d33 100644 --- a/src/resource.rc +++ b/src/resource.rc @@ -4,7 +4,10 @@ LANGUAGE LANG_POLISH, 1 -104 ICON "..\\res\\icon01.ico" +104 ICON "..\\res\\icon02.ico" + +LANGUAGE LANG_POLISH, 2 +105 ICON "..\\res\\icon01.ico" #include "resource.h" @@ -56,10 +59,11 @@ FONT 8, "Ms Shell Dlg" BEGIN CONTROL "",1000,"EDIT",ES_AUTOHSCROLL |ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,0,6,260,14 CONTROL "",1001,"EDIT",ES_READONLY |ES_AUTOHSCROLL |ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,0,21,260,14 - CONTROL "",1010,"SysTabControl32",WS_CHILD |WS_TABSTOP |WS_GROUP| WS_VISIBLE ,0,39,261,110, WS_EX_CONTROLPARENT + CONTROL "",1010,"SysTabControl32",WS_CHILD |WS_TABSTOP |WS_GROUP| WS_VISIBLE ,0,39,261,106, WS_EX_CONTROLPARENT END + 102 DIALOG DISCARDABLE 0, 0, 358, 61 STYLE DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU @@ -181,22 +185,29 @@ STYLE DS_3DLOOK | DS_FIXEDSYS | WS_CHILD | WS_CAPTION | WS_GROUP | CAPTION "tab5" FONT 8, "Ms Shell Dlg" BEGIN - COMBOBOX 1156,58,5,69,200,CBS_DROPDOWNLIST | WS_GROUP | + COMBOBOX 1156,58,5,58,200,CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP - COMBOBOX 1157,58,19,69,200,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "Input",1162,11,7,27,8 - LTEXT "Output",1163,11,22,29,8 - LTEXT "Rounding",1164,11,36,43,8 - LTEXT "Decimal point",1169,178,21,68,8 - COMBOBOX 1170,143,19,29,62,CBS_DROPDOWNLIST | WS_TABSTOP + COMBOBOX 1157,58,19,58,200,CBS_DROPDOWNLIST | WS_TABSTOP + CONTROL "Input",1162,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,11,7, + 43,8 + CONTROL "Output",1163,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,11, + 22,43,8 + COMBOBOX 1159,58,33,58,200,CBS_DROPDOWNLIST | WS_TABSTOP + CONTROL "Rounding",1164,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,11, + 36,43,8 + COMBOBOX 1173,213,5,38,54,CBS_DROPDOWNLIST | WS_TABSTOP + CONTROL "sin/cos asin/acos",1172,"Static",SS_LEFTNOWORDWRAP | + WS_GROUP,137,7,73,8 + COMBOBOX 1170,213,19,38,62,CBS_DROPDOWNLIST | WS_TABSTOP + CONTROL "Decimal point",1169,"Static",SS_LEFTNOWORDWRAP | + WS_GROUP,137,22,73,8 CONTROL "remove trailing zeroes",1171,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,143,35,111,10 - COMBOBOX 1159,58,33,69,200,CBS_DROPDOWNLIST | WS_TABSTOP + BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,136,36,115,10 CONTROL "Always",1160,"Button",BS_AUTORADIOBUTTON | BS_LEFT | - WS_GROUP | WS_TABSTOP,19,65,44,10 + WS_GROUP | WS_TABSTOP,19,65,54,10 CONTROL "When the exponent is greater than:",1161,"Button", - BS_AUTORADIOBUTTON | BS_LEFT,77,65,130,10 - EDITTEXT 1166,211,63,29,14,ES_NUMBER | WS_GROUP + BS_AUTORADIOBUTTON | BS_LEFT,77,65,138,10 + EDITTEXT 1166,217,63,29,14,ES_NUMBER | WS_GROUP CONTROL "",1165,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS,201,73,11,14 GROUPBOX "Print scientific value",1168,11,51,240,31 @@ -204,6 +215,9 @@ END + +#ifdef TTCALC_CONVERT + 115 DIALOG DISCARDABLE 0, 0, 260, 90 STYLE DS_3DLOOK | DS_FIXEDSYS | WS_CHILD | WS_CAPTION | WS_GROUP | WS_TABSTOP @@ -234,6 +248,8 @@ BEGIN BS_AUTOCHECKBOX | WS_TABSTOP,162,74,88,10 END +#endif + #ifndef TTCALC_PORTABLE 200 DIALOG DISCARDABLE 0, 0, 349, 202 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | diff --git a/src/tabs.cpp b/src/tabs.cpp index 1626297..5b00c43 100644 --- a/src/tabs.cpp +++ b/src/tabs.cpp @@ -413,7 +413,6 @@ int i; SendDlgItemMessage(hWnd, IDC_COMBO_DISPLAY_ROUNDING, CB_RESETCONTENT, 0, 0); -// SendDlgItemMessage(hWnd, IDC_COMBO_DISPLAY_ROUNDING, CB_ADDSTRING, 0, (LPARAM)GetPrgRes()->GetLanguages()->GuiMessage(Languages::combo_rounding_cut_last_digits) ); SendDlgItemMessage(hWnd, IDC_COMBO_DISPLAY_ROUNDING, CB_ADDSTRING, 0, (LPARAM)GetPrgRes()->GetLanguages()->GuiMessage(Languages::combo_rounding_none) ); SendDlgItemMessage(hWnd, IDC_COMBO_DISPLAY_ROUNDING, CB_ADDSTRING, 0, (LPARAM)GetPrgRes()->GetLanguages()->GuiMessage(Languages::combo_rounding_integer) ); @@ -447,6 +446,8 @@ int i; SetDlgItemText(hWnd, IDC_LABEL_DECIMAL_POINT, GetPrgRes()->GetLanguages()->GuiMessage(Languages::display_decimal_point)); SetDlgItemText(hWnd, IDC_CHECK_REMOVE_ZEROES, GetPrgRes()->GetLanguages()->GuiMessage(Languages::check_remove_zeroes)); + + SetDlgItemText(hWnd, IDC_LABEL_DISPLAY_DEG_RAD_GRAD, GetPrgRes()->GetLanguages()->GuiMessage(Languages::display_deg_red_grad)); } @@ -669,17 +670,17 @@ TCITEM tab; TabCtrl_SetItem(hTab,tab_functions, &tab); #ifndef TTCALC_PORTABLE - tab.pszText = const_cast( GetPrgRes()->GetLanguages()->GuiMessage(Languages::tab_precision) ); TabCtrl_SetItem(hTab,tab_precision, &tab); - #endif tab.pszText = const_cast( GetPrgRes()->GetLanguages()->GuiMessage(Languages::tab_display) ); TabCtrl_SetItem(hTab,tab_display, &tab); + #ifdef TTCALC_CONVERT tab.pszText = const_cast( GetPrgRes()->GetLanguages()->GuiMessage(Languages::tab_convert) ); TabCtrl_SetItem(hTab,tab_convert, &tab); + #endif SetLanguageTabStandard( GetPrgRes()->GetTabWindow(tab_standard) ); SetLanguageTabVariables( GetPrgRes()->GetTabWindow(tab_variables) ); @@ -690,7 +691,10 @@ TCITEM tab; #endif SetLanguageTabDisplay( GetPrgRes()->GetTabWindow(tab_display) ); + + #ifdef TTCALC_CONVERT SetLanguageTabConvert( GetPrgRes()->GetTabWindow(tab_convert) ); + #endif InvalidateRect(hTab, 0, false); } @@ -818,6 +822,18 @@ BOOL WmTabCommand_RemoveZeroesChanged(HWND hWnd, UINT message, WPARAM wParam, LP return true; } +BOOL WmTabCommand_DisplayDegRadGradChanged(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + if( HIWORD(wParam) != CBN_SELCHANGE ) + return false; + + GetPrgRes()->GetThreadController()->StopCalculating(); + GetPrgRes()->SetDegRadGrad( (int)SendDlgItemMessage(hWnd, IDC_COMBO_DEG_RAD_GRAD, CB_GETCURSEL, 0, 0) ); + GetPrgRes()->GetThreadController()->StartCalculating(); + +return true; +} + void SetDisablingDisplayWhenScientific(HWND hWnd) { @@ -981,8 +997,7 @@ void CreateTabCommandMessagesTable(Messages & cmessages) cmessages.Associate(IDC_RADIO_DISPLAY_NOT_ALWAYS_SCIENTIFIC, WmTabCommand_SetDisplayNotAlwaysScientific); cmessages.Associate(IDC_EDIT_DISPLAY_WHEN_SCIENTIFIC, WmTabCommand_SetDisplayWhenScientific); cmessages.Associate(IDC_COMBO_DECIMAL_POINT, WmTabCommand_DisplayDecimalPointChanged); - - + cmessages.Associate(IDC_COMBO_DEG_RAD_GRAD, WmTabCommand_DisplayDegRadGradChanged); } @@ -1245,6 +1260,15 @@ char buffer[20]; if( GetPrgRes()->GetRemovingZeroes() ) CheckDlgButton(hWnd, IDC_CHECK_REMOVE_ZEROES, BST_CHECKED); + + + SendDlgItemMessage(hWnd, IDC_COMBO_DEG_RAD_GRAD, CB_ADDSTRING, 0, (LPARAM)"deg"); + SendDlgItemMessage(hWnd, IDC_COMBO_DEG_RAD_GRAD, CB_ADDSTRING, 0, (LPARAM)"rad"); + SendDlgItemMessage(hWnd, IDC_COMBO_DEG_RAD_GRAD, CB_ADDSTRING, 0, (LPARAM)"grad"); + + SendDlgItemMessage(hWnd, IDC_COMBO_DEG_RAD_GRAD, CB_SETCURSEL, GetPrgRes()->GetDegRadGrad(), 0); + + return true; } @@ -1283,10 +1307,6 @@ BOOL WmNotify(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) NMHDR * pnmh = (LPNMHDR) lParam; HWND var_list = GetDlgItem(hWnd,IDC_VARIABLES_LIST); HWND fun_list = GetDlgItem(hWnd,IDC_FUNCTIONS_LIST); -HWND conv_list1 = GetDlgItem(hWnd,IDC_LIST_UNIT_TYPE); -HWND conv_list2b = GetDlgItem(hWnd,IDC_LIST_UNIT_INPUT2); -HWND conv_list3b = GetDlgItem(hWnd,IDC_LIST_UNIT_OUTPUT2); - if( pnmh->hwndFrom == var_list ) @@ -1337,6 +1357,11 @@ HWND conv_list3b = GetDlgItem(hWnd,IDC_LIST_UNIT_OUTPUT2); } +#ifdef TTCALC_CONVERT +HWND conv_list1 = GetDlgItem(hWnd,IDC_LIST_UNIT_TYPE); +HWND conv_list2b = GetDlgItem(hWnd,IDC_LIST_UNIT_INPUT2); +HWND conv_list3b = GetDlgItem(hWnd,IDC_LIST_UNIT_OUTPUT2); + if( pnmh->hwndFrom==conv_list1 || pnmh->hwndFrom==conv_list2b || pnmh->hwndFrom==conv_list3b ) { if( pnmh->code == LVN_ITEMCHANGED ) @@ -1355,7 +1380,7 @@ HWND conv_list3b = GetDlgItem(hWnd,IDC_LIST_UNIT_OUTPUT2); } } } - +#endif return false; } @@ -1375,7 +1400,10 @@ void CreateTabMessagesTable(Messages & messages) #endif messages.Associate(WM_INIT_TAB_DISPLAY, WmInitTabDisplay); + + #ifdef TTCALC_CONVERT messages.Associate(WM_INIT_TAB_CONVERT, WmInitTabConvert); + #endif messages.Associate(WM_NOTIFY, WmNotify); } diff --git a/src/winmain.cpp b/src/winmain.cpp index faa763f..5961da1 100644 --- a/src/winmain.cpp +++ b/src/winmain.cpp @@ -46,7 +46,6 @@ #include - /*! the application starts here */ @@ -72,7 +71,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) if( !GetPrgRes()->GetThreadController()->Init() ) return ShowError( Languages::cant_init_calculations ); - unsigned int thread_id; + unsigned int thread_id; uintptr_t thread_handle; if( (thread_handle = _beginthreadex(0,0,CalculationsProcedure, 0, 0, &thread_id)) == 0 ) return ShowError( Languages::cant_create_thread );