3 /////////////////////////////////////////////////////////////////////////////
5 // Copyright (c) 2002 Iain Murray, Inference Group, Cavendish, Cambridge.
7 /////////////////////////////////////////////////////////////////////////////
13 #include "../../DasherCore/Parameters.h"
15 #include "../resource.h"
16 #include <utility> // for std::pair
17 #include "../Dasher.h"
19 using namespace Dasher
;
23 CPrefs::CPrefs(HWND hParent
, CDasher
*pDasher
, CAppSettings
*pAppSettings
)
24 :m_pDasher(pDasher
), m_pAppSettings(pAppSettings
) {
27 // FIXME - is hParent still needed here?
29 m_pAlphabetBox
= new CAlphabetBox(hParent
, pDasher
);
30 m_pControlPage
= new CControlPage(hParent
, pDasher
, pAppSettings
);
31 m_pViewPage
= new CViewPage(hParent
, pDasher
, pAppSettings
);
32 m_pAdvancedPage
= new CAdvancedPage(hParent
, pDasher
, pAppSettings
);
33 m_pLMPage
= new CLMPage(hParent
, pDasher
, pAppSettings
);
35 // Set up the property sheets which go into the preferences
41 psp
[0].dwSize
= sizeof(PROPSHEETPAGE
);
42 psp
[0].dwFlags
= PSP_USEICONID
| PSP_USETITLE
| PSP_PREMATURE
;
43 psp
[0].hInstance
= WinHelper::hInstApp
;
44 psp
[0].pszTemplate
= MAKEINTRESOURCE(IDD_ALPHABETPAGE
);
45 psp
[0].pszIcon
= NULL
;
46 psp
[0].pfnDlgProc
= (DLGPROC
) WinWrapMap::PSWndProc
;
47 psp
[0].pszTitle
= MAKEINTRESOURCE(IDS_PREFS_ALPHABET
);
48 psp
[0].lParam
= (LPARAM
) m_pAlphabetBox
;
49 psp
[0].pfnCallback
= NULL
;
51 psp
[1].dwSize
= sizeof(PROPSHEETPAGE
);
52 psp
[1].dwFlags
= PSP_USEICONID
| PSP_USETITLE
| PSP_PREMATURE
;
53 psp
[1].hInstance
= WinHelper::hInstApp
;
54 psp
[1].pszTemplate
= MAKEINTRESOURCE(IDD_CONTROLPAGE
);
55 psp
[1].pszIcon
= NULL
;
56 psp
[1].pfnDlgProc
= (DLGPROC
) WinWrapMap::PSWndProc
;
57 psp
[1].pszTitle
= MAKEINTRESOURCE(IDS_PREFS_CONTROL
);
58 psp
[1].lParam
= (LPARAM
) m_pControlPage
;
59 psp
[1].pfnCallback
= NULL
;
61 psp
[2].dwSize
= sizeof(PROPSHEETPAGE
);
62 psp
[2].dwFlags
= PSP_USEICONID
| PSP_USETITLE
| PSP_PREMATURE
;
63 psp
[2].hInstance
= WinHelper::hInstApp
;
64 psp
[2].pszTemplate
= MAKEINTRESOURCE(IDD_VIEWPAGE
);
65 psp
[2].pszIcon
= NULL
;
66 psp
[2].pfnDlgProc
= (DLGPROC
) WinWrapMap::PSWndProc
;
67 psp
[2].pszTitle
= MAKEINTRESOURCE(IDS_PREFS_VIEW
);
68 psp
[2].lParam
= (LPARAM
) m_pViewPage
;
69 psp
[2].pfnCallback
= NULL
;
71 psp
[3].dwSize
= sizeof(PROPSHEETPAGE
);
72 psp
[3].dwFlags
= PSP_USEICONID
| PSP_USETITLE
| PSP_PREMATURE
;
73 psp
[3].hInstance
= WinHelper::hInstApp
;
74 psp
[3].pszTemplate
= MAKEINTRESOURCE(IDD_LMPAGE
);
75 psp
[3].pszIcon
= NULL
;
76 psp
[3].pfnDlgProc
= (DLGPROC
) WinWrapMap::PSWndProc
;
77 psp
[3].pszTitle
= MAKEINTRESOURCE(IDS_PREFS_LM
);
78 psp
[3].lParam
= (LPARAM
) m_pLMPage
;
79 psp
[3].pfnCallback
= NULL
;
81 psp
[4].dwSize
= sizeof(PROPSHEETPAGE
);
82 psp
[4].dwFlags
= PSP_USEICONID
| PSP_USETITLE
| PSP_PREMATURE
;
83 psp
[4].hInstance
= WinHelper::hInstApp
;
84 psp
[4].pszTemplate
= MAKEINTRESOURCE(IDD_MISCPAGE
);
85 psp
[4].pszIcon
= NULL
;
86 psp
[4].pfnDlgProc
= (DLGPROC
) WinWrapMap::PSWndProc
;
87 psp
[4].pszTitle
= MAKEINTRESOURCE(IDS_PREFS_ADVANCED
);
88 psp
[4].lParam
= (LPARAM
) m_pAdvancedPage
;
89 psp
[4].pfnCallback
= NULL
;
91 psh
.dwSize
= sizeof(PROPSHEETHEADER
);
92 psh
.dwFlags
= PSH_USEICONID
| PSH_PROPSHEETPAGE
;
93 psh
.hwndParent
= hParent
;
94 psh
.hInstance
= WinHelper::hInstApp
;
96 psh
.pszCaption
= MAKEINTRESOURCE(IDS_PREFS_TITLE
);
97 psh
.nPages
= sizeof(psp
) / sizeof(PROPSHEETPAGE
);
99 psh
.ppsp
= (LPCPROPSHEETPAGE
) &psp
;
100 psh
.pfnCallback
= NULL
;
108 delete m_pAlphabetBox
;
109 m_pAlphabetBox
= NULL
;
111 delete m_pControlPage
;
112 m_pControlPage
= NULL
;
117 delete m_pAdvancedPage
;
118 m_pAdvancedPage
= NULL
;
126 void CPrefs::PopulateWidgets() {
130 LRESULT
CPrefs::WndProc(HWND Window
, UINT message
, WPARAM wParam
, LPARAM lParam
) {
131 // TODO: How much of this actually does something?
136 if(!m_hwnd
) { // If this is the initial dialog for the first time
144 switch (LOWORD(wParam
)) {
146 if(HIWORD(wParam
) == EN_CHANGE
) {
147 HWND Control
= GetDlgItem(Window
, IDC_DISPLAY
);
148 LRESULT BufferLength
= SendMessage(Control
, WM_GETTEXTLENGTH
, 0, 0) + 1; // +1 to allow for terminator
149 TCHAR
*Buffer
= new TCHAR
[BufferLength
];
150 SendMessage(Control
, WM_GETTEXT
, BufferLength
, (LPARAM
) Buffer
);
152 SendMessage(GetDlgItem(Window
, IDC_TEXT
), WM_SETTEXT
, 0, (LPARAM
) Buffer
);
157 // for(int ii = 0; ii<sizeof(menutable)/sizeof(menuentry); ii++)
159 // if(SendMessage(GetDlgItem(Window, menutable[ii].idcNum), BM_GETCHECK, 0, 0) == BST_CHECKED) {
160 // m_pDasher->SetBoolParameter(menutable[ii].paramNum, true);
163 // m_pDasher->SetBoolParameter(menutable[ii].paramNum, false);
166 EndDialog(Window
, LOWORD(wParam
));
171 EndDialog(Window
, LOWORD(wParam
));
174 case ID_CANCEL_KEYCONT
:
175 EndDialog(Window
, LOWORD(wParam
));