From: Mapi B. <ma...@us...> - 2009-10-17 13:53:28
|
Update of /cvsroot/easycalc/PPCport/system - UI In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv31998 Modified Files: EasyCalc.cpp EasyCalc.gif EasyCalc.h EasyCalc.layout EasyCalcppc.aps EasyCalcppc.rc resourceppc.h Skin.cpp Skin.h StateManager.cpp StateManager.h Removed Files: core_display.cpp core_display.h Log Message: 1.25a Compiling, linking, running, limited function set, with bugs Index: EasyCalc.layout =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.layout,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EasyCalc.layout 24 Sep 2009 21:19:19 -0000 1.2 --- EasyCalc.layout 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 4,8 **** Skin: 0,0,240,268 # Description of the display area: x1,y1 ? ? fg_color bg_color ! Display: 10,13 0 3 a3b39d 0b2327 # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) --- 4,8 ---- Skin: 0,0,240,268 # Description of the display area: x1,y1 ? ? fg_color bg_color ! Display: 7,13 0 3 a3b39d 0b2327 # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) *************** *** 19,208 **** Annunciator: 11 219,6,6,7 10,268 10,275 # Skin 3 indicator Annunciator: 12 226,6,6,7 15,268 15,275 # Graph indicator ! Annunciator: 13 226,26,7,7 127,268 127,275 # Result Menu indicator ! Annunciator: 14 226,34,7,7 133,268 133,275 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: ! # 1 -> 0,"0" ! # 2 -> 1,"1" ! # 3 -> 2,"2" ! # 4 -> 3,"3" ! # 5 -> 4,"4" ! # 6 -> 5,"5" ! # 7 -> 6,"6" ! # 8 -> 7,"7" ! # 9 -> 8,"8" ! # 10 -> 9,"9" ! # 11 -> A,"A" ! # 12 -> B,"B" ! # 13 -> C,"C" ! # 14 -> D,"D" ! # 15 -> E,"E" ! # 16 -> F,"F" ! # 17 -> And,"&" ! # 18 -> Or,"|" ! # 19 -> Xor,"^" ! # 20 -> Shl,"<<" ! # 21 -> Shr,">>" ! # 22 -> Plus,"+" ! # 23 -> Minus,"-" ! # 24 -> Neg,"-" ! # 25 -> Mult,"*" ! # 26 -> Divide,"/" ! # 27 -> Ans,"ans" ! # 28 -> OpBr,"" ! # 29 -> Pow,"^" ! # 30 -> Log,"log" ! # 31 -> Ln,"ln" ! # 32 -> Inv,"^(-1)" ! # 33 -> Sq1,"^(1/" ! # 34 -> Sqr,"^2" ! # 35 -> Sqrt,"sqrt" ! # 36 -> Sin,"sin" ! # 37 -> Cos,"cos" ! # 38 -> Tan,"tan" ! # 39 -> Exp,"exp" ! # 40 -> Fact,"fact" ! # 41 -> Pi,"pi" ! # 42 -> Degrees,"°" ! # 43 -> Minutes,"'" ! # 44 -> Magnitude,"abs" ! # 45 -> Angle,"angle" ! # 46 -> complex_i,"i" ! # 47 -> Coln,":" ! # 48 -> ClBr,")" ! # 49 -> EE,"E" ! # 50 -> asin ! # 51 -> acos ! # 52 -> atan ! # 53 -> sinh ! # 54 -> cosh ! # 55 -> tanh ! # 56 -> asinh ! # 57 -> acosh ! # 58 -> atanh ! # 59 -> log ! # 60 -> 10^ ! # 61 -> log2 ! # 62 -> 2^ ! # 63 -> fact ! # 64 -> ncr ! # 65 -> npr ! # 66 -> round ! # 67 -> trunc ! # 68 -> floor ! # 69 -> gamma ! # 70 -> beta ! # 71 -> rand ! # 72 -> rNorm ! # 73 -> real ! # 74 -> imag ! # 75 -> conj ! # 76 -> exp(i* ! # 77 -> fzero ! # 78 -> fvalue ! # 79 -> fmin ! # 80 -> fmax ! # 81 -> fd_dx // d/dx ! # 82 -> fromberg // integ ! # 83 -> fd2_dx // d2/dx ! # 84 -> ()=" ! # 85 -> " ! # 86 -> x ! # 87 -> list ! # 88 -> median ! # 89 -> mean ! # 90 -> sum ! # 91 -> lmin // min ! # 92 -> lmax // max ! # 93 -> prod ! # 94 -> variance ! # 95 -> stddev ! # 96 -> dim ! # 97 -> [ ! # 98 -> matrix ! # 99 -> identity ! # 100 -> det ! # 101 -> qrs ! # 102 -> rref ! # 103 -> qrq ! # 104 -> qrr ! # 105 -> [ // x[] ! # 106 -> ] ! # 107 -> qBinomial ! # 108 -> qBeta ! # 109 -> qChiSq ! # 110 -> qF ! # 111 -> qPoisson ! # 112 -> qStudentt ! # 113 -> qWeibull ! # 114 -> qNormal ! # 115 -> range ! # 116 -> rNorm ! # 117 -> find ! # 118 -> sample ! # 119 -> filter ! # 120 -> conv ! # 121 -> fft ! # 122 -> ifft ! # 123 -> prevprime ! # 124 -> isprime ! # 125 -> nextprime ! # 126 -> gcd ! # 127 -> lcm ! # 128 -> phi ! # 129 -> gcdex ! # 130 -> chinese ! # 131 -> modinv ! # 132 -> modpow ! # 133 -> factor ! # 134 -> besseli ! # 135 -> besselj ! # 136 -> besselk ! # 137 -> bessely ! # 138 -> ellc1 ! # 139 -> ellc2 ! # 140 -> elli1 ! # 141 -> elli2 ! # 142 -> euler ! # 143 -> cn ! # 144 -> dn ! # 145 -> sn ! # 146 -> igamma ! # 147 -> ibeta ! # 148 -> erf ! # 149 -> erfc # ! key: 1 6,70,32,22 11,75,22,12 11,74 ! key: 2 45,70,32,22 50,75,22,12 50,74 ! key: 3 84,70,32,22 89,75,22,12 89,74 ! Key: 4 123,70,32,22 128,75,22,12 128,74 ! Key: 5 162,70,32,22 167,75,22,12 167,74 ! Key: 6 201,70,32,22 206,75,22,12 206,74 ! Key: 7 6,97,32,22 11,102,22,12 11,101 ! Key: 8 45,97,32,22 50,102,22,12 50,101 ! Key: 9 84,97,32,22 89,102,22,12 89,101 ! Key: 10 123,97,32,22 128,102,22,12 128,101 ! Key: 11 162,97,32,22 167,102,22,12 167,101 ! Key: 12 201,97,32,22 206,102,22,12 206,101 ! Key: 13 6,127,40,29 11,132,30,19 11,131 ! Key: 14 53,127,40,29 58,132,30,19 58,131 ! Key: 15 101,127,40,29 106,132,30,19 106,131 ! Key: 16 148,127,40,29 153,132,30,19 153,131 ! Key: 17 196,127,40,29 201,132,30,19 201,131 ! Key: 18 6,163,40,29 11,168,30,19 11,167 ! Key: 14 53,163,40,29 58,168,30,19 58,167 ! Key: 15 101,163,40,29 106,168,30,19 106,167 ! Key: 16 148,163,40,29 153,168,30,19 153,167 ! Key: 17 196,163,40,29 201,168,30,19 201,167 ! Key: 19 6,199,40,29 11,204,30,19 11,203 ! Key: 20 53,199,40,29 58,204,30,19 58,203 ! Key: 21 101,199,40,29 106,204,30,19 106,203 Key: 22 148,199,40,29 153,204,30,19 153,203 ! Key: 23 196,199,40,29 201,204,30,19 201,203 ! Key: 24 6,236,40,29 11,241,30,19 11,240 ! Key: 25 53,236,40,29 58,241,30,19 58,240 ! Key: 26 101,236,40,29 106,241,30,19 106,240 ! Key: 27 148,236,40,29 153,241,30,19 153,240 ! Key: 28 196,236,40,29 201,241,30,19 201,240 --- 19,216 ---- Annunciator: 11 219,6,6,7 10,268 10,275 # Skin 3 indicator Annunciator: 12 226,6,6,7 15,268 15,275 # Graph indicator ! Annunciator: 13 170,6,7,7 139,268 139,275 # Var list indicator ! Annunciator: 14 178,6,6,7 145,268 145,275 # User fct list indicator ! Annunciator: 15 185,6,6,7 150,268 150,275 # Calc fct list indicator ! Annunciator: 16 226,26,7,7 127,268 127,275 # Result Menu indicator ! Annunciator: 17 226,34,7,7 133,268 133,275 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: ! # -5 -> shift // Note: practice is to put -4,-4 to ensure the same shift key can toggle on/off the shift state ! # -4 -> dot // decimal dot ! # -3 -> EXE // run evaluation ! # -2 -> bckspc // back space ! # -1 -> clr // clear input and result fields ! # 0 -> 0,"0" ! # 1 -> 1,"1" ! # 2 -> 2,"2" ! # 3 -> 3,"3" ! # 4 -> 4,"4" ! # 5 -> 5,"5" ! # 6 -> 6,"6" ! # 7 -> 7,"7" ! # 8 -> 8,"8" ! # 9 -> 9,"9" ! # 10 -> A,"A" ! # 11 -> B,"B" ! # 12 -> C,"C" ! # 13 -> D,"D" ! # 14 -> E,"E" ! # 15 -> F,"F" ! # 16 -> And,"&" ! # 17 -> Or,"|" ! # 18 -> Xor,"^" ! # 19 -> Shl,"<<" ! # 20 -> Shr,">>" ! # 21 -> Plus,"+" ! # 22 -> Minus,"-" ! # 23 -> Neg,"-" ! # 24 -> Mult,"*" ! # 25 -> Divide,"/" ! # 26 -> Ans,"ans" ! # 27 -> OpBr,"(" ! # 28 -> Pow,"^" ! # 29 -> Log,"log" ! # 30 -> Ln,"ln" ! # 31 -> Inv,"^(-1)" ! # 32 -> Sq1,"^(1/" ! # 33 -> Sqr,"^2" ! # 34 -> Sqrt,"sqrt" ! # 35 -> Sin,"sin" ! # 36 -> Cos,"cos" ! # 37 -> Tan,"tan" ! # 38 -> Exp,"exp" ! # 39 -> Fact,"fact" ! # 40 -> Pi,"pi" ! # 41 -> Degrees,"°" ! # 42 -> Minutes,"'" ! # 43 -> Magnitude,"abs" ! # 44 -> Angle,"angle" ! # 45 -> complex_i,"i" ! # 46 -> Coln,":" ! # 47 -> ClBr,")" ! # 48 -> EE,"E" ! # 49 -> asin ! # 50 -> acos ! # 51 -> atan ! # 52 -> sinh ! # 53 -> cosh ! # 54 -> tanh ! # 55 -> asinh ! # 56 -> acosh ! # 57 -> atanh ! # 58 -> log ! # 59 -> 10^ ! # 60 -> log2 ! # 61 -> 2^ ! # 62 -> fact ! # 63 -> ncr ! # 64 -> npr ! # 65 -> round ! # 66 -> trunc ! # 67 -> floor ! # 68 -> gamma ! # 69 -> beta ! # 70 -> rand ! # 71 -> rNorm ! # 72 -> real ! # 73 -> imag ! # 74 -> conj ! # 75 -> exp(i* ! # 76 -> fzero ! # 77 -> fvalue ! # 78 -> fmin ! # 79 -> fmax ! # 80 -> fd_dx // d/dx ! # 81 -> fromberg // integ ! # 82 -> fd2_dx // d2/dx ! # 83 -> ()=" ! # 84 -> " ! # 85 -> x ! # 86 -> list ! # 87 -> median ! # 88 -> mean ! # 89 -> sum ! # 90 -> lmin // min ! # 91 -> lmax // max ! # 92 -> prod ! # 93 -> variance ! # 94 -> stddev ! # 95 -> dim ! # 96 -> [ ! # 97 -> matrix ! # 98 -> identity ! # 99 -> det ! # 100 -> qrs ! # 101 -> rref ! # 102 -> qrq ! # 103 -> qrr ! # 104 -> [ // x[] ! # 105 -> ] ! # 106 -> qBinomial ! # 107 -> qBeta ! # 108 -> qChiSq ! # 109 -> qF ! # 110 -> qPoisson ! # 111 -> qStudentt ! # 112 -> qWeibull ! # 113 -> qNormal ! # 114 -> range ! # 115 -> rNorm ! # 116 -> find ! # 117 -> sample ! # 118 -> filter ! # 119 -> conv ! # 120 -> fft ! # 121 -> ifft ! # 122 -> prevprime ! # 123 -> isprime ! # 124 -> nextprime ! # 125 -> gcd ! # 126 -> lcm ! # 127 -> phi ! # 128 -> gcdex ! # 129 -> chinese ! # 130 -> modinv ! # 131 -> modpow ! # 132 -> factor ! # 133 -> besseli ! # 134 -> besselj ! # 135 -> besselk ! # 136 -> bessely ! # 137 -> ellc1 ! # 138 -> ellc2 ! # 139 -> elli1 ! # 140 -> elli2 ! # 141 -> euler ! # 142 -> cn ! # 143 -> dn ! # 144 -> sn ! # 145 -> igamma ! # 146 -> ibeta ! # 147 -> erf ! # 148 -> erfc # ! key: -5,-5 6,70,32,22 11,75,22,12 11,74 ! key: 34 45,70,32,22 50,75,22,12 50,74 ! key: 33 84,70,32,22 89,75,22,12 89,74 ! Key: 28 123,70,32,22 128,75,22,12 128,74 ! Key: -2 162,70,32,22 167,75,22,12 167,74 ! Key: -1 201,70,32,22 206,75,22,12 206,74 ! Key: 38 6,97,32,22 11,102,22,12 11,101 ! Key: 31 45,97,32,22 50,102,22,12 50,101 ! Key: 30 84,97,32,22 89,102,22,12 89,101 ! Key: 29 123,97,32,22 128,102,22,12 128,101 ! Key: 27 162,97,32,22 167,102,22,12 167,101 ! Key: 47 201,97,32,22 206,102,22,12 206,101 ! Key: 7 6,127,40,29 11,132,30,19 11,131 ! Key: 8 53,127,40,29 58,132,30,19 58,131 ! Key: 9 101,127,40,29 106,132,30,19 106,131 ! Key: 25 148,127,40,29 153,132,30,19 153,131 ! Key: 35 196,127,40,29 201,132,30,19 201,131 ! Key: 4 6,163,40,29 11,168,30,19 11,167 ! Key: 5 53,163,40,29 58,168,30,19 58,167 ! Key: 6 101,163,40,29 106,168,30,19 106,167 ! Key: 24 148,163,40,29 153,168,30,19 153,167 ! Key: 26 196,163,40,29 201,168,30,19 201,167 ! Key: 1 6,199,40,29 11,204,30,19 11,203 ! Key: 2 53,199,40,29 58,204,30,19 58,203 ! Key: 3 101,199,40,29 106,204,30,19 106,203 Key: 22 148,199,40,29 153,204,30,19 153,203 ! Key: 36 196,199,40,29 201,204,30,19 201,203 ! Key: 0 6,236,40,29 11,241,30,19 11,240 ! Key: 23 53,236,40,29 58,241,30,19 58,240 ! Key: -4 101,236,40,29 106,241,30,19 106,240 ! Key: 21 148,236,40,29 153,241,30,19 153,240 ! Key: -3 196,236,40,29 201,241,30,19 201,240 Index: EasyCalc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EasyCalc.h 24 Sep 2009 21:19:19 -0000 1.2 --- EasyCalc.h 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 133,136 **** --- 133,140 ---- #define altCompute 8 #define altBadParameter 9 + #define altNoStateFile 10 + #define altNoLayoutFile 11 + #define altErrorGifFile 12 + #define altWriteStateFile 13 #define FrmAlert FrmPopupForm int FrmPopupForm(int formNb, void *hWnd_p); *************** *** 144,147 **** --- 148,153 ---- #include "compat/PalmOS.h" #include "core/mlib/konvert.h" + void read_state (void); + void save_state (void); void shell_beeper(int frequency, int duration); void shell_annunciators(int skin, int shf, int angle_mode, int int_mode, int run) SHELL1_SECT; Index: EasyCalcppc.aps =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.aps,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsIFrPzI and /tmp/cvsRocgfa differ Index: EasyCalc.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EasyCalc.cpp 24 Sep 2009 21:19:19 -0000 1.2 --- EasyCalc.cpp 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 42,45 **** --- 42,48 ---- #include "core/varmgr.h" #include "core/defmgr.h" + #include "core/calc.h" + #include "core/mlib/fp.h" + #include "core/ansops.h" *************** *** 50,53 **** [...2747 lines suppressed...] timer = SetTimer(NULL, 0, 1750, timeout2); --- 3273,3277 ---- static VOID CALLBACK timeout1(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime) { KillTimer(NULL, timer); ! if (ckey != KEY_NONE) { core_keytimeout1(); timer = SetTimer(NULL, 0, 1750, timeout2); *************** *** 2598,2602 **** static VOID CALLBACK timeout2(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime) { KillTimer(NULL, timer); ! if (ckey != 0) core_keytimeout2(); timer = 0; --- 3285,3289 ---- static VOID CALLBACK timeout2(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime) { KillTimer(NULL, timer); ! if (ckey != KEY_NONE) core_keytimeout2(); timer = 0; Index: Skin.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Skin.h 24 Sep 2009 21:19:19 -0000 1.4 --- Skin.h 17 Oct 2009 13:53:14 -0000 1.5 *************** *** 148,152 **** Skin(); // Constructor ! void load(TCHAR *skinname, const TCHAR *basedir, int width, int height); int getchar(); void rewind(); --- 148,152 ---- Skin(); // Constructor ! int load(TCHAR *skinname, const TCHAR *basedir, int width, int height); int getchar(); void rewind(); *************** *** 174,177 **** --- 174,178 ---- unsigned long get_insert_pos(void *hwnd); void set_insert_pos(void *hwnd, unsigned long pos); + void back_delete(void *hwnd); void insert_input_text(void *hwnd, const TCHAR *text); void set_input_text(void *hwnd, const TCHAR *text); *************** *** 179,182 **** --- 180,184 ---- void print_result(void *hWnd_p, TCHAR *res_text); void print_result(HDC hdc); + void paint_result(HDC hdc); void print_resultpowInit(void *hdc, TCHAR *res_text); void print_resultpowNext(bool smallf, TCHAR *res_piece, int len); *************** *** 187,190 **** --- 189,193 ---- void varSavePopup(TCHAR *choices[], int length, void *hWnd); void varMgrPopup(TCHAR *choices[], int length, void *hWnd); + void varDefReset(void *hWnd); void varDefList(TCHAR *name, TCHAR *deftext, int itemNum, void *hWnd); void display_set_enabled(bool enable); Index: StateManager.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StateManager.cpp 22 Jun 2009 22:13:35 -0000 1.1 --- StateManager.cpp 17 Oct 2009 13:53:14 -0000 1.2 *************** *** 1,4 **** #include "StdAfx.h" ! #include "StateManager.h" StateManager::StateManager(void) { --- 1,9 ---- #include "StdAfx.h" ! ! #include "system - UI/StateManager.h" ! #include "core/mlib/calcDB.h" ! #include "core/mlib/fp.h" ! #include "core/mlib/history.h" ! StateManager::StateManager(void) { *************** *** 18,43 **** } ! t_state *StateManager::init(TCHAR *fn) { stateFilename = fn; stateFile = _tfopen(fn, _T("rb")); if (stateFile != NULL) { ! if (read_shell_state(&version)) init_mode = 1; ! else { // Incorrect version/contents, create the state contents init_shell_state(-1); init_mode = 2; } ! } else { // No state file, create the state contents init_shell_state(-1); init_mode = 0; } ! // Close the file if was open if (stateFile != NULL) { fclose(stateFile); stateFile = NULL; } - - return (&state); } --- 23,111 ---- } ! void StateManager::initCalcPrefs() { ! /* Coming from prefs.c */ ! state.calcPrefs.version = PREF_VERSION; ! state.calcPrefs.input[0]=_T('\0'); ! state.calcPrefs.skin = 0; ! state.calcPrefs.btnRow = 0; ! state.calcPrefs.insertPos = 0; ! state.calcPrefs.selPosStart=calcPrefs.selPosEnd = 0; ! state.calcPrefs.solverWorksheet = -1; ! ! state.calcPrefs.finBegin = false; ! state.calcPrefs.matchParenth = false; ! state.calcPrefs.trigo_mode = radian; ! ! state.calcPrefs.dispPrefs.forceInteger = false; ! state.calcPrefs.dispPrefs.decPoints = 9; ! state.calcPrefs.dispPrefs.stripZeros = true; ! state.calcPrefs.reducePrecision = false; ! state.calcPrefs.dispPrefs.base = disp_decimal; ! state.calcPrefs.dispPrefs.mode = disp_normal; ! state.calcPrefs.dispPrefs.cvtUnits = true; ! state.calcPrefs.insertHelp = true; ! state.calcPrefs.acceptOSPref = false; ! state.calcPrefs.dispScien = false; ! ! // Publish calcPrefs and dispPrefs for old core modules ! calcPrefs = state.calcPrefs; ! dispPrefs = state.calcPrefs.dispPrefs; /* db_recompile needs dispPrefs */ ! db_recompile_all(); ! } ! ! t_state *StateManager::init(TCHAR *fn, void *hWnd_p) { stateFilename = fn; stateFile = _tfopen(fn, _T("rb")); if (stateFile != NULL) { ! if (read_shell_state(&version)) { init_mode = 1; ! if (state.calcPrefs.version != PREF_VERSION) { ! // Incorrect version/contents, create the state contents ! FrmPopupForm(altNoStateFile, hWnd_p); ! initCalcPrefs(); ! } else { ! // Publish calcPrefs and dispPrefs for old core modules ! calcPrefs = state.calcPrefs; ! dispPrefs = state.calcPrefs.dispPrefs; ! } ! } else { // Could not read state file ! FrmPopupForm(altNoStateFile, hWnd_p); init_shell_state(-1); init_mode = 2; } ! ! fclose(stateFile); ! stateFile = NULL; ! } else { // No state file, create default bases and create state contents ! FrmPopupForm(altNoStateFile, hWnd_p); ! Err error = db_open(); ! ErrFatalDisplayIf(error, _T("Can't open CalcDB")); ! error = history_open(); ! ErrFatalDisplayIf(error, _T("Can't open History DB")); init_shell_state(-1); init_mode = 0; } ! /* Coming from prefs.c, after preferences are loaded or initialized */ ! fp_set_prefs(calcPrefs.dispPrefs); ! ! return (&state); ! } ! ! void StateManager::save(TCHAR *fn, void *hWnd_p) { ! state.calcPrefs = calcPrefs; ! ! stateFilename = fn; ! stateFile = _tfopen(fn, _T("wb")); if (stateFile != NULL) { + if (!write_shell_state()) { // Error ... + FrmPopupForm(altWriteStateFile, hWnd_p); + } + fclose(stateFile); stateFile = NULL; + } else { // Error ... + FrmPopupForm(altWriteStateFile, hWnd_p); } } *************** *** 51,57 **** case -1: // Set interface and calculator options to their defaults // fall through ! case 0: // current version, // so nothing to do here since everything --- 119,126 ---- case -1: // Set interface and calculator options to their defaults + initCalcPrefs(); // fall through ! case SHELL_VERSION: // current version, // so nothing to do here since everything *************** *** 113,116 **** --- 182,187 ---- int4 state_size; int4 state_version; + DataManager *dm, *dmHist; + Err error; if (shell_read_saved_state(&magic, sizeof(int4)) != sizeof(int4)) *************** *** 135,138 **** --- 206,242 ---- if (shell_read_saved_state(&state, state_size) != state_size) return (false); + if (shell_read_saved_state(&dm, sizeof(DataManager *)) != sizeof(DataManager *)) + return (false); + if (shell_read_saved_state(&dmHist, sizeof(DataManager *)) != sizeof(DataManager *)) + return (false); + + if (dm != NULL) { + dm = new DataManager (); + if (dm->deSerialize(stateFile)) { + delete dm; + return (false); + } + // Overwrite previously initialized object + if (stateMgrDB != NULL) + delete stateMgrDB; + stateMgrDB = dm; + } + error = db_open(); + ErrFatalDisplayIf(error, _T("Can't open CalcDB")); + + if (dmHist != NULL) { + dmHist = new DataManager (); + if (dmHist->deSerialize(stateFile)) { + delete dmHist; + return (false); + } + // Overwrite previously initialized object + if (stateMgrHistDB != NULL) + delete stateMgrHistDB; + stateMgrHistDB = dmHist; + } + error = history_open(); + ErrFatalDisplayIf(error, _T("Can't open History DB")); + // Initialize the parts of the shell state // that were NOT read from the state file *************** *** 167,170 **** --- 271,282 ---- if (!shell_write_saved_state(&state, sizeof(t_state))) return (false); + if (!shell_write_saved_state(&stateMgrDB, sizeof(DataManager *))) + return (false); + if (!shell_write_saved_state(&stateMgrHistDB, sizeof(DataManager *))) + return (false); + if ((stateMgrDB != NULL) && stateMgrDB->serialize(stateFile)) + return (false); + if ((stateMgrHistDB != NULL) && stateMgrHistDB->serialize(stateFile)) + return (false); return (true); Index: EasyCalcppc.rc =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.rc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EasyCalcppc.rc 24 Sep 2009 21:19:19 -0000 1.2 --- EasyCalcppc.rc 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 30,117 **** // ! IDD_OPT_GENERAL DIALOG 0, 0, 139, 181 ! STYLE DS_SETFONT | WS_POPUP | WS_CAPTION ! CAPTION "General" ! FONT 8, "System" ! BEGIN ! LTEXT "General",IDC_TITLE,4,3,63,8 ! CONTROL "Dynamic mouse",IDC_CHECK_MOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,42,83,10 ! END ! ! IDD_RES_MENU DIALOG 30, 10, 81, 108 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_RESM,0,0,81,108,NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_DLGMODALFRAME END ! IDD_VARENTRY DIALOG 0, 0, 230, 79 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Save variable as" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,7,58,50,14 ! PUSHBUTTON "Cancel",IDCANCEL,173,58,50,14 ! COMBOBOX IDC_VARCOMBO,7,19,216,34,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Name:",IDC_VARNAME,7,7,216,12 END ! IDD_EDITVAR DIALOG 0, 0, 230, 92 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit variable" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,7,71,50,14 ! PUSHBUTTON "V",IDC_VAR,175,71,16,14 ! PUSHBUTTON "F",IDC_USERF,191,71,16,14 ! PUSHBUTTON "f",IDC_CALCF,207,71,16,14 ! LTEXT "Name:",IDC_VARNAME,7,9,25,8 ! EDITTEXT IDC_EDIT1,34,7,95,14,ES_AUTOHSCROLL ! EDITTEXT IDC_EDIT2,7,24,216,43,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL ! PUSHBUTTON "Cancel",IDCANCEL,61,71,50,14 END ! IDD_DATAMGR DIALOG 0, 0, 230, 231 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Data manager" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,7,210,50,14 ! CONTROL "",IDC_DATALIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,7,216,196 ! PUSHBUTTON "New",IDC_NEW,63,210,50,14 ! PUSHBUTTON "Modify",IDC_MODIFY,118,210,50,14 ! PUSHBUTTON "Delete",IDC_DELETE,173,210,50,14 ! LISTBOX IDC_LIST_FV,63,190,50,20,NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_DLGMODALFRAME END ! IDD_EDITFCT DIALOG 0, 0, 230, 92 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit function" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,7,71,50,14 ! PUSHBUTTON "V",IDC_VAR,175,71,16,14 ! PUSHBUTTON "F",IDC_USERF,191,71,16,14 ! PUSHBUTTON "f",IDC_CALCF,207,71,16,14 ! LTEXT "Name:",IDC_VARNAME,7,9,25,8 ! EDITTEXT IDC_EDIT1,34,7,95,14,ES_AUTOHSCROLL ! EDITTEXT IDC_EDIT2,7,24,216,43,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL ! PUSHBUTTON "Cancel",IDCANCEL,61,71,50,14 ! LTEXT "Param:",IDC_PARAM,140,9,24,8 ! EDITTEXT IDC_EDIT3,169,7,54,14,ES_AUTOHSCROLL END ! IDD_LARGE_MENU DIALOG 30, 10, 144, 116 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_LARGE,0,0,144,116,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_DLGMODALFRAME END ! IDD_SLIM_MENU DIALOG 30, 10, 72, 244 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_SLIM,0,0,72,244,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_DLGMODALFRAME END --- 30,166 ---- // ! IDD_RES_MENU DIALOG 70, 10, 82, 100 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_RESM,0,0,82,100,NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP END ! IDD_VARENTRY DIALOG 0, 0, 115, 55 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Save variable as" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,0,41,32,14 ! PUSHBUTTON "Cancel",IDCANCEL,73,41,41,14 ! COMBOBOX IDC_VARCOMBO,43,7,71,47,CBS_DROPDOWN | CBS_SORT | CBS_LOWERCASE | WS_VSCROLL | WS_GROUP | WS_TABSTOP ! LTEXT "Name:",IDC_VARNAME,0,7,35,12 ! CONTROL "SIP1",IDC_SIP1,"SIPPREF",NOT WS_VISIBLE | WS_TABSTOP,47,41,14,14 END ! IDD_EDITVAR DIALOG 0, 0, 160, 85 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit variable" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,0,70,30,14 ! PUSHBUTTON "V",IDC_VAR,111,70,16,14 ! PUSHBUTTON "F",IDC_USERF,127,70,16,14 ! PUSHBUTTON "f",IDC_CALCF,143,70,16,14 ! LTEXT "Name:",IDC_VARNAME,0,9,25,8 ! EDITTEXT IDC_EDIT1,32,7,60,14,ES_LOWERCASE | ES_AUTOHSCROLL | WS_GROUP ! EDITTEXT IDC_EDIT2,0,24,159,43,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL ! PUSHBUTTON "Cancel",IDCANCEL,33,70,50,14 ! CONTROL "SIP1",IDC_SIP1,"SIPPREF",NOT WS_VISIBLE,91,70,14,14 END ! IDD_DATAMGR DIALOG 0, 0, 160, 165 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Data manager" FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_FV,33,132,40,27,NOT WS_VISIBLE | NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_DLGMODALFRAME ! CONTROL "",IDC_DATALIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,1,1,158,147 ! DEFPUSHBUTTON "OK",IDOK,0,150,30,14 ! PUSHBUTTON "New",IDC_NEW,33,150,40,14 ! PUSHBUTTON "Modify",IDC_MODIFY,76,150,40,14 ! PUSHBUTTON "Delete",IDC_DELETE,119,150,40,14 END ! IDD_EDITFCT DIALOG 0, 0, 160, 85 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit function" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,0,70,30,14 ! PUSHBUTTON "V",IDC_VAR,111,70,16,14 ! PUSHBUTTON "F",IDC_USERF,127,70,16,14 ! PUSHBUTTON "f",IDC_CALCF,143,70,16,14 ! LTEXT "Name:",IDC_VARNAME,0,9,25,8 ! EDITTEXT IDC_EDIT1,32,7,60,14,ES_LOWERCASE | ES_AUTOHSCROLL | WS_GROUP ! EDITTEXT IDC_EDIT2,0,24,159,43,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL ! PUSHBUTTON "Cancel",IDCANCEL,33,70,50,14 ! LTEXT "Param:",IDC_PARAM,97,9,30,8 ! EDITTEXT IDC_EDIT3,129,7,30,14,ES_AUTOHSCROLL ! CONTROL "SIP1",IDC_SIP1,"SIPPREF",NOT WS_VISIBLE,91,70,14,14 END ! IDD_LARGE_MENU DIALOG 30, 10, 102, 116 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_LARGE,0,0,102,116,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP,WS_EX_DLGMODALFRAME END ! IDD_OPT_GENERAL DIALOG 0, 0, 161, 153 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION ! CAPTION "General" FONT 8, "MS Shell Dlg" BEGIN ! LTEXT "General",IDC_TITLE,4,3,63,8 ! CONTROL "Dynamic mouse",IDC_CHECK_MOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,42,83,10 ! END ! ! IDD_OPT_SKINS DIALOG 0, 0, 161, 153 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION ! CAPTION "Default skin" ! FONT 8, "MS Shell Dlg" ! BEGIN ! LTEXT "Skins",IDC_TITLE,4,3,63,8 ! COMBOBOX IDC_COMBO_SKIN1,9,32,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN2,9,51,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN3,9,70,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Skin 1",IDC_SKIN1,62,34,39,10 ! LTEXT "Skin 2",IDC_SKIN2,62,53,39,10 ! LTEXT "Skin 3",IDC_SKIN3,62,72,39,10 ! COMBOBOX IDC_SKINVAL,72,87,21,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Default skin",IDC_SKIN,10,90,58,8 ! CONTROL "SIP1",IDC_SIP1,"SIPPREF",NOT WS_VISIBLE,121,85,14,14 ! END ! ! IDD_OPT_PREFS DIALOG 0, 0, 161, 153 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION ! CAPTION "Calc Preferences" ! FONT 8, "MS Shell Dlg" ! BEGIN ! LTEXT "Calc Preferences",IDC_TITLE,4,3,149,8 ! CONTROL "Degree",IDC_DEGREE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,5,15,40,10 ! CONTROL "Radian",IDC_RADIAN,"Button",BS_AUTORADIOBUTTON,57,15,39,10 ! CONTROL "Grad",IDC_GRAD,"Button",BS_AUTORADIOBUTTON,110,15,48,10 ! CONTROL "Decimal",IDC_DECIMAL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,27,60,10 ! CONTROL "Binary",IDC_BINARY,"Button",BS_AUTORADIOBUTTON,15,37,59,10 ! CONTROL "Octal",IDC_OCTAL,"Button",BS_AUTORADIOBUTTON,88,37,64,10 ! CONTROL "Hexadecimal",IDC_HEXADECIMAL,"Button",BS_AUTORADIOBUTTON,88,27,64,10 ! COMBOBOX IDC_FORMATNUM,5,88,68,39,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "Precision",IDC_PRECISION,81,91,45,8 ! COMBOBOX IDC_PRECVAL,130,88,24,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! CONTROL "Reduce precision",IDC_TRUNCPREC,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,5,56,69,19 ! CONTROL "Force Integer Nums",IDC_INTEGERS,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,80,56,73,19 ! CONTROL "Strip zeros",IDC_STRIP_0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,104,70,10 ! CONTROL "Show Units",IDC_SHOW_UNITS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,104,73,10 ! CONTROL "System Num Prefs",IDC_OS_NUMPREFS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,116,76,10 ! GROUPBOX "Format Numbers",IDC_FORMATGROUP,0,78,160,51 ! GROUPBOX "Calculations",IDC_CALCGROUP,0,48,160,29 ! CONTROL "Match ()'s",IDC_MATCH_BKT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,139,70,10 ! CONTROL "Insert Help",IDC_INS_HELP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,139,78,10 ! GROUPBOX "Edit Assistance",IDC_ASSISTGROUP,0,130,160,22 ! CONTROL "SIP1",IDC_SIP1,"SIPPREF",NOT WS_VISIBLE,145,114,14,14 ! END ! ! IDD_SLIM_MENU DIALOG 30, 10, 72, 116 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE ! FONT 8, "MS Shell Dlg" ! BEGIN ! LISTBOX IDC_LIST_SLIM,0,0,72,116,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP,WS_EX_DLGMODALFRAME END *************** *** 127,164 **** IDD_VARENTRY, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 223 TOPMARGIN, 7 - BOTTOMMARGIN, 72 END IDD_EDITVAR, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 223 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 85 END IDD_DATAMGR, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 223 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 224 END IDD_EDITFCT, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 223 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 85 END ! IDD_LARGE_MENU, DIALOG BEGIN ! RIGHTMARGIN, 81 ! BOTTOMMARGIN, 108 END END --- 176,221 ---- IDD_VARENTRY, DIALOG BEGIN ! RIGHTMARGIN, 114 TOPMARGIN, 7 END IDD_EDITVAR, DIALOG BEGIN ! RIGHTMARGIN, 159 ! TOPMARGIN, 2 ! BOTTOMMARGIN, 84 END IDD_DATAMGR, DIALOG BEGIN ! LEFTMARGIN, 1 ! RIGHTMARGIN, 159 ! TOPMARGIN, 1 ! BOTTOMMARGIN, 164 END IDD_EDITFCT, DIALOG BEGIN ! RIGHTMARGIN, 159 ! TOPMARGIN, 2 ! BOTTOMMARGIN, 84 END ! IDD_OPT_GENERAL, DIALOG BEGIN ! RIGHTMARGIN, 159 ! BOTTOMMARGIN, 152 ! END ! ! IDD_OPT_SKINS, DIALOG ! BEGIN ! RIGHTMARGIN, 159 ! BOTTOMMARGIN, 152 ! END ! ! IDD_OPT_PREFS, DIALOG ! BEGIN ! RIGHTMARGIN, 159 ! BOTTOMMARGIN, 152 END END *************** *** 189,194 **** FONT 8, "MS Sans Serif" BEGIN ! ICON IDI_EASYCALC,IDC_STATIC_1,12,12,21,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25 PPC",IDC_STATIC_2,12,36,100,8,SS_NOPREFIX LTEXT "Copyright (C) 2009",IDC_STATIC_3,12,48,66,8 END --- 246,251 ---- FONT 8, "MS Sans Serif" BEGIN ! ICON IDI_EASYCALC,IDC_STATIC_1,12,12,20,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25a PPC",IDC_STATIC_2,12,36,100,8,SS_NOPREFIX LTEXT "Copyright (C) 2009",IDC_STATIC_3,12,48,66,8 END *************** *** 205,222 **** END - IDD_OPT_SKINS DIALOG 0, 0, 139, 181 - STYLE DS_SETFONT | WS_POPUP | WS_CAPTION - CAPTION "Skins" - FONT 8, "System" - BEGIN - LTEXT "Skins",IDC_TITLE,4,3,63,8 - COMBOBOX IDC_COMBO_SKIN1,9,40,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_SKIN2,9,59,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_SKIN3,9,78,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "Skin 1",IDC_SKIN1,62,42,39,10 - LTEXT "Skin 2",IDC_SKIN2,62,61,39,10 - LTEXT "Skin 3",IDC_SKIN3,62,80,39,10 - END - ///////////////////////////////////////////////////////////////////////////// --- 262,265 ---- Index: StateManager.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** StateManager.h 6 Aug 2009 21:42:06 -0000 1.2 --- StateManager.h 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 6,15 **** #include "EasyCalc.h" #include "compat/DataManager.h" typedef struct { ! TCHAR skinName[3][FILENAMELEN]; ! TCHAR langName[FILENAMELEN]; ! int cur_skin_nb; ! bool mouse_cont; } t_state; --- 6,17 ---- #include "EasyCalc.h" #include "compat/DataManager.h" + #include "core/prefs.h" typedef struct { ! TCHAR skinName[3][FILENAMELEN]; ! TCHAR langName[FILENAMELEN]; ! int cur_skin_nb; ! bool mouse_cont; ! tPrefs calcPrefs; } t_state; *************** *** 19,23 **** FILE *stateFile; int init_mode; - t_state state; void init_shell_state(int4 version); --- 21,24 ---- *************** *** 26,31 **** --- 27,34 ---- bool read_shell_state(int4 *ver); bool write_shell_state(); + void initCalcPrefs(); public: + t_state state; int4 version; DataManager historyDB; *************** *** 35,39 **** ~StateManager(void); ! t_state *init(TCHAR *fn); }; --- 38,43 ---- ~StateManager(void); ! t_state *init(TCHAR *fn, void *hWnd_p); ! void save(TCHAR *fn, void *hWnd_p); }; Index: EasyCalc.gif =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.gif,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvs5gHanJ and /tmp/cvsoyze9a differ Index: resourceppc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/resourceppc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** resourceppc.h 24 Sep 2009 21:19:19 -0000 1.2 --- resourceppc.h 17 Oct 2009 13:53:14 -0000 1.3 *************** *** 22,25 **** --- 22,26 ---- #define IDD_LARGE_MENU 141 #define IDD_SLIM_MENU 142 + #define IDD_OPT_PREFS 145 #define IDC_STATIC_1 201 #define IDC_STATIC_2 202 *************** *** 50,53 **** --- 51,78 ---- #define IDC_LIST_SLIM 1059 #define IDC_VAR 1060 + #define IDC_RADIAN 1061 + #define IDC_DEGREE 1062 + #define IDC_GRAD 1063 + #define IDC_DECIMAL 1064 + #define IDC_BINARY 1065 + #define IDC_OCTAL 1066 + #define IDC_HEXADECIMAL 1067 + #define IDC_SKINVAL 1068 + #define IDC_SKIN 1069 + #define IDC_PRECISION 1070 + #define IDC_PRECVAL 1071 + #define IDC_TRUNCPREC 1072 + #define IDC_INTEGERS 1073 + #define IDC_PRECVAL2 1074 + #define IDC_FORMATNUM 1074 + #define IDC_STRIP_0 1075 + #define IDC_SHOW_UNITS 1076 + #define IDC_OS_NUMPREFS 1077 + #define IDC_CALCGROUP 1080 + #define IDC_FORMATGROUP 1081 + #define IDC_MATCH_BKT 1083 + #define IDC_INS_HELP 1084 + #define IDC_ASSISTGROUP 1085 + #define IDC_SIP1 1086 #define ID_TEST_TEST 32771 #define ID_EDIT_CANCEL 32772 *************** *** 69,75 **** #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 ! #define _APS_NEXT_RESOURCE_VALUE 138 #define _APS_NEXT_COMMAND_VALUE 32778 ! #define _APS_NEXT_CONTROL_VALUE 1061 #define _APS_NEXT_SYMED_VALUE 112 #endif --- 94,100 ---- #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 ! #define _APS_NEXT_RESOURCE_VALUE 148 #define _APS_NEXT_COMMAND_VALUE 32778 ! #define _APS_NEXT_CONTROL_VALUE 1087 #define _APS_NEXT_SYMED_VALUE 112 #endif --- core_display.h DELETED --- --- core_display.cpp DELETED --- Index: Skin.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Skin.cpp 24 Sep 2009 21:19:19 -0000 1.4 --- Skin.cpp 17 Oct 2009 13:53:14 -0000 1.5 *************** *** 30,34 **** #include "shell_loadimage.h" #include "core/core_display.h" ! /*------------------------------------------------------------------------------- --- 30,34 ---- #include "shell_loadimage.h" #include "core/core_display.h" ! #include "core/Main.h" /*------------------------------------------------------------------------------- *************** *** 271,276 **** /******************************************************************************** * Load skin descriptions in the object. * ********************************************************************************/ ! void Skin::load(TCHAR *skinname, const TCHAR *basedir, int width, int height) { char line[1024]; int success; --- 271,279 ---- /******************************************************************************** * Load skin descriptions in the object. * + * Return: 0 if all ok. * + * -1 if could not find the layout file. * + * -2 if could not load the gif file. * ********************************************************************************/ ! int Skin::load(TCHAR *skinname, const TCHAR *basedir, int width, int height) { char line[1024]; int success; *************** *** 292,296 **** if (!this->open(skinname, basedir, OPEN_LAYOUT)) { // goto fallback_on_1st_builtin_skin; ! return; } --- 295,299 ---- if (!this->open(skinname, basedir, OPEN_LAYOUT)) { // goto fallback_on_1st_builtin_skin; ! return (-1); } *************** *** 355,378 **** if (n == 1) shifted_keynum = keynum; ! SkinKey *key; ! if (nkeys == keys_cap) { ! keys_cap += 50; ! keylist = (SkinKey *) realloc(keylist, keys_cap * sizeof(SkinKey)); ! // TODO - handle memory allocation failure } - key = keylist + nkeys; - key->code = keynum; - key->shifted_code = shifted_keynum; - key->sens_rect.x = sens_x; - key->sens_rect.y = sens_y; - key->sens_rect.width = sens_width; - key->sens_rect.height = sens_height; - key->disp_rect.x = disp_x; - key->disp_rect.y = disp_y; - key->disp_rect.width = disp_width; - key->disp_rect.height = disp_height; - key->src.x = act_x; - key->src.y = act_y; - nkeys++; } } --- 358,385 ---- if (n == 1) shifted_keynum = keynum; ! // Special code for 'shift' key = -1 ! if ((keynum >= KEY_SHIFT) && (keynum < BUTTON_COUNT) ! && (shifted_keynum >= KEY_SHIFT) && (shifted_keynum < BUTTON_COUNT)) { ! SkinKey *key; ! if (nkeys == keys_cap) { ! keys_cap += 50; ! keylist = (SkinKey *) realloc(keylist, keys_cap * sizeof(SkinKey)); ! // TODO - handle memory allocation failure ! } ! key = keylist + nkeys; ! key->code = keynum; ! key->shifted_code = shifted_keynum; ! key->sens_rect.x = sens_x; ! key->sens_rect.y = sens_y; ! key->sens_rect.width = sens_width; ! key->sens_rect.height = sens_height; ! key->disp_rect.x = disp_x; ! key->disp_rect.y = disp_y; ! key->disp_rect.width = disp_width; ! key->disp_rect.height = disp_height; ! key->src.x = act_x; ! key->src.y = act_y; ! nkeys++; } } } *************** *** 529,533 **** if (!this->open(skinname, basedir, OPEN_IMAGE)) { // goto fallback_on_1st_builtin_skin; ! return; } --- 536,540 ---- if (!this->open(skinname, basedir, OPEN_IMAGE)) { // goto fallback_on_1st_builtin_skin; ! return (-2); } *************** *** 542,546 **** if (!success) { // goto fallback_on_1st_builtin_skin; ! return; } --- 549,553 ---- if (!success) { // goto fallback_on_1st_builtin_skin; ! return (-2); } *************** *** 567,570 **** --- 574,579 ---- // TODO - handle memory allocation failure memset(disp_bitmap, 255, size); + + return (0); } *************** *** 1094,1098 **** COLORREF old_fg = SetTextColor(hdc, display_fg); BitBlt(hdc, display_loc.x, display_loc.y, display_w, display_h, memdc, 0, 0, SRCCOPY); ! if (*dispResult != 0) print_result(hdc); // SetBkColor(hdc, old_bg); // SetTextColor(hdc, old_fg); --- 1103,1109 ---- COLORREF old_fg = SetTextColor(hdc, display_fg); BitBlt(hdc, display_loc.x, display_loc.y, display_w, display_h, memdc, 0, 0, SRCCOPY); ! if (*dispResult != 0) ! // print_result(hdc); ! paint_result(hdc); // SetBkColor(hdc, old_bg); // SetTextColor(hdc, old_fg); *************** *** 1136,1142 **** // No softline break character when getting the text. res = SendMessage (hwndE, EM_FMTLINES, FALSE, 0); ! TCHAR buf[100]; ! int nchar = GetClassName(hwndE, buf, 100); ! print_result(hWnd_p, buf); // return (hwndE); --- 1147,1155 ---- // No softline break character when getting the text. res = SendMessage (hwndE, EM_FMTLINES, FALSE, 0); ! ! //TCHAR buf[100]; ! //int nchar = GetClassName(hwndE, buf, 100); ! //print_result(hWnd_p, buf); ! SetFocus(hwndE); // return (hwndE); *************** *** 1180,1185 **** /******************************************************************************** ! * OS specific: get boundaries of selected text in the Edit Control passed as * ! * parameter. * * If parameter is NULL, this is the input area Edit Control. * ********************************************************************************/ --- 1193,1197 ---- /******************************************************************************** ! * OS specific: get insert position in the Edit Control passed as parameter. * * If parameter is NULL, this is the input area Edit Control. * ********************************************************************************/ *************** *** 1207,1210 **** --- 1219,1242 ---- /******************************************************************************** + * OS specific: remove selection, or remove character at left of cursor in * + * the Edit Control passed as parameter. * + * If parameter is NULL, this is the input area Edit Control. * + ********************************************************************************/ + void Skin::back_delete(void *hwnd) { + HWND hwnd_edit = (HWND) hwnd; + if (hwnd_edit == NULL) + hwnd_edit = hwndE; + + unsigned long start, end; + long res = SendMessage (hwnd_edit, EM_GETSEL, (WPARAM) &start, (LPARAM) &end); + if (start != end) { + res = SendMessage (hwnd_edit, WM_CLEAR, (WPARAM) 0, (LPARAM) 0); + } else if (start > 0) { + res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) start, (LPARAM) (start-1)); + res = SendMessage (hwnd_edit, WM_CLEAR, (WPARAM) 0, (LPARAM) 0); + } + } + + /******************************************************************************** * OS specific: inserts text in the Edit Control passed as parameter, at the * * cursor (replacing selected text if any). * *************** *** 1248,1254 **** /******************************************************************************** ! * OS specific: display the saved result text in the display area. * ********************************************************************************/ void Skin::print_result(HDC hdc) { RECT rc = {display_loc.x, display_loc.y, display_loc.x + display_w, display_loc.y + 18}; --- 1280,1302 ---- /******************************************************************************** ! * OS specific: erase and display the saved result text in the display area. * ********************************************************************************/ void Skin::print_result(HDC hdc) { + HBITMAP bitmap = CreateBitmap(display_w, 18, 1, 1, disp_bitmap); + HDC memdc = CreateCompatibleDC(hdc); + + SelectObject(memdc, bitmap); + + COLORREF old_bg = SetBkColor(hdc, display_bg); + COLORREF old_fg = SetTextColor(hdc, display_fg); + BitBlt(hdc, display_loc.x, display_loc.y, display_w, 18, memdc, 0, 0, SRCCOPY); + + paint_result(hdc); + } + + /******************************************************************************** + * OS specific: overlay saved result text in the display area. * + ********************************************************************************/ + void Skin::paint_result(HDC hdc) { RECT rc = {display_loc.x, display_loc.y, display_loc.x + display_w, display_loc.y + 18}; *************** *** 1257,1260 **** --- 1305,1310 ---- COLORREF oldFg = SetTextColor(hdc, display_fg); int oldBg = SetBkMode(hdc, TRANSPARENT); + // COLORREF oldColor = SetBkColor(hdc, display_bg); + // int oldBg = SetBkMode(hdc, OPAQUE); LOGFONT lf; HFONT hFontNew; *************** *** 1350,1357 **** void Skin::clipCopy_result() { if (*dispResult != 0) { // Get the clipboard and put data in there EmptyClipboard(); ! HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, strlen((char *) dispResult)+1); // Using classical form to get real size in bytes ! SetClipboardData(CF_UNICODETEXT ,h); } } --- 1400,1413 ---- void Skin::clipCopy_result() { if (*dispResult != 0) { + int len = (_tcslen(dispResult) + 1)*sizeof(TCHAR); // Number of bytes + 1 // Get the clipboard and put data in there + HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, len); + void *p = GlobalLock(h); + memcpy(p, dispResult, len); + GlobalUnlock(h); + OpenClipboard(NULL); EmptyClipboard(); ! SetClipboardData(CF_UNICODETEXT, h); ! CloseClipboard(); } } *************** *** 1396,1399 **** --- 1452,1462 ---- /******************************************************************************** + * OS specific: reset the varDef list of values. * + ********************************************************************************/ + void Skin::varDefReset(void *hWnd) { + SendMessage((HWND) hWnd, LVM_DELETEALLITEMS, (WPARAM) 0, (LPARAM) 0); + } + + /******************************************************************************** * OS specific: displays the varDef list of values. * ********************************************************************************/ *************** *** 1404,1408 **** lvi.iSubItem = 0; lvi.pszText = name; ! int i = SendMessage((HWND) hWnd, LVM_INSERTITEM, 0, (LPARAM) &lvi); lvi.mask = LVIF_TEXT; --- 1467,1471 ---- lvi.iSubItem = 0; lvi.pszText = name; ! int i = SendMessage((HWND) hWnd, LVM_INSERTITEM, (WPARAM) 0, (LPARAM) &lvi); lvi.mask = LVIF_TEXT; *************** *** 1410,1414 **** lvi.iSubItem = 1; lvi.pszText = deftext; ! SendMessage((HWND) hWnd, LVM_SETITEM, 0, (LPARAM) &lvi); } --- 1473,1477 ---- lvi.iSubItem = 1; lvi.pszText = deftext; ! SendMessage((HWND) hWnd, LVM_SETITEM, (WPARAM) 0, (LPARAM) &lvi); } |