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. 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 added: macro TTCALC_CONVERT if not defined there will not be a convert tab (the convert tab is not finished) added: a new icon with following dimensions: '48x48' '32x32' '16x16' removed: parameter for gcc: -mthreads with -mthreads it is possible (on windows) to release some kind of 'destructors' belonging to a thread when the specific thread exists (it prevents some kind of memory leaks) in the TTCalc when the second thread exists then there is the end of the program and we can not use '-mthreads' removed: file TODO (I didn't use the file) git-svn-id: svn://ttmath.org/publicrep/ttcalc/trunk@114 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
2ff2aebbee
commit
ff62d833c9
63
CHANGELOG
63
CHANGELOG
|
@ -1,3 +1,43 @@
|
|||
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
|
||||
|
@ -7,6 +47,7 @@ Version 0.8.2 portable (2007.07.01):
|
|||
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
|
||||
|
@ -19,6 +60,7 @@ Version 0.8.1 (2007.04.17):
|
|||
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)
|
||||
|
@ -28,7 +70,7 @@ Version 0.8.0 (2007.04.02):
|
|||
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
|
||||
* added: help
|
||||
* changed: from TTMath 0.8.0:
|
||||
renamed: CTan() into Cot() or Ctg()
|
||||
renamed: ACTan() into ACot() or ACtg()
|
||||
|
@ -41,6 +83,7 @@ Version 0.8.0 (2007.04.02):
|
|||
* 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
|
||||
|
@ -52,18 +95,20 @@ Version 0.7.3 (2007.03.08):
|
|||
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
|
||||
* 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
|
||||
* 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
|
||||
|
|
|
@ -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
|
||||
|
|
28
README
28
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.
|
||||
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 <t.sowa AnTispam slimaczek.pl>
|
||||
Project page: http://sourceforge.net/projects/ttcalc
|
||||
Project page: http://ttcalc.sourceforge.net/
|
||||
Licence: BSD (open source)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
|
@ -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
|
||||
|
|
|
@ -3,34 +3,39 @@
|
|||
|
||||
[Setup]
|
||||
AppName=TTCalc
|
||||
AppVerName=TTCalc 0.8.1
|
||||
AppVerName=TTCalc 0.8.3
|
||||
AppPublisher=Tomasz Sowa
|
||||
AppPublisherURL=http://sourceforge.net/projects/ttcalc
|
||||
AppSupportURL=http://sourceforge.net/projects/ttcalc
|
||||
AppUpdatesURL=http://sourceforge.net/projects/ttcalc
|
||||
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\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
|
||||
; now we do not use *.ini file in the installer
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
|
||||
[Icons]
|
||||
|
|
|
@ -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]
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
GetWindowRect(hTab, &r_tab);
|
||||
|
||||
int cy_caption = GetSystemMetrics(SM_CYCAPTION);
|
||||
HWND main = GetPrgRes()->GetMainWindow();
|
||||
GetWindowRect(main, &r_main);
|
||||
|
||||
int cy_add = 2 * GetSystemMetrics(SM_CYDLGFRAME) +
|
||||
GetSystemMetrics(SM_CYMENU);
|
||||
HWND output_edit = GetDlgItem(main, IDC_OUTPUT_EDIT);
|
||||
GetWindowRect(output_edit, &r_edit2);
|
||||
|
||||
int cx_add = 2 * GetSystemMetrics(SM_CXDLGFRAME) +
|
||||
r.right - r.left;
|
||||
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 ( 225 + cy_add + cy_caption * 2);
|
||||
GetPrgRes()->SetYSizeCompact( 59 + cy_add + cy_caption );
|
||||
GetPrgRes()->SetXSizeMin ( 4 + cx_add );
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
@ -150,6 +154,7 @@ unsigned int i;
|
|||
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();
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 |
|
||||
|
|
48
src/tabs.cpp
48
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<char*>( GetPrgRes()->GetLanguages()->GuiMessage(Languages::tab_precision) );
|
||||
TabCtrl_SetItem(hTab,tab_precision, &tab);
|
||||
|
||||
#endif
|
||||
|
||||
tab.pszText = const_cast<char*>( GetPrgRes()->GetLanguages()->GuiMessage(Languages::tab_display) );
|
||||
TabCtrl_SetItem(hTab,tab_display, &tab);
|
||||
|
||||
#ifdef TTCALC_CONVERT
|
||||
tab.pszText = const_cast<char*>( 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);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <string>
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
the application starts here
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue