Fixed header dependencies to be fully compatible with the Windows
[wine] / programs / winecfg / x11drvdlg.c
1 /*
2  * X11DRV configuration code
3  *
4  * Copyright 2003 Mark Westcott
5  * Copyright 2003 Mike Hearn
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  *
21  */
22
23 #include <stdarg.h>
24 #include <stdlib.h>
25 #include <stdio.h>
26
27 #include <windef.h>
28 #include <winbase.h>
29 #include <winreg.h>
30 #include <wine/debug.h>
31
32 #include "resource.h"
33 #include "winecfg.h"
34
35 WINE_DEFAULT_DEBUG_CHANNEL(winecfg);
36
37 /* pokes the win32 api to setup the dialog from the config struct */
38 void initX11DrvDlg (HWND hDlg)
39 {
40     char szBuf[20];
41
42     /* system colors */
43     sprintf (szBuf, "%d", config.sX11Drv.nSysColors);
44     SendDlgItemMessage (hDlg, IDC_SYSCOLORS, WM_SETTEXT, 0, (LPARAM) szBuf);
45
46     /* private color map */
47     if (config.sX11Drv.nPrivateMap)
48         SendDlgItemMessage( hDlg, IDC_PRIVATEMAP, BM_SETCHECK, BST_CHECKED, 0);
49
50     /* perfect graphics */
51     if (config.sX11Drv.nPerfect)
52         SendDlgItemMessage( hDlg, IDC_PERFECTGRAPH, BM_SETCHECK, BST_CHECKED, 0);
53
54     /* desktop size */
55     sprintf (szBuf, "%d", config.sX11Drv.nDesktopSizeX);
56     SendDlgItemMessage (hDlg, IDC_DESKTOP_WIDTH, WM_SETTEXT, 0, (LPARAM) szBuf);
57     sprintf (szBuf, "%d", config.sX11Drv.nDesktopSizeY);
58     SendDlgItemMessage (hDlg, IDC_DESKTOP_HEIGHT, WM_SETTEXT, 0, (LPARAM) szBuf);
59
60     if (config.sX11Drv.nDGA) SendDlgItemMessage( hDlg, IDC_XDGA, BM_SETCHECK, BST_CHECKED, 0);
61     if (config.sX11Drv.nXShm) SendDlgItemMessage( hDlg, IDC_XSHM, BM_SETCHECK, BST_CHECKED, 0);
62 }
63
64 void
65 saveX11DrvDlgSettings (HWND hDlg)
66 {
67 }
68
69 INT_PTR CALLBACK
70 X11DrvDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
71 {
72     switch (uMsg) {
73         case WM_INITDIALOG:
74             break;
75
76         case WM_COMMAND:
77             switch(HIWORD(wParam)) {
78                 case EN_CHANGE: {
79                     SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
80                     break;
81                 }
82
83                 default:
84                     break;
85             }
86             break;
87
88         case WM_NOTIFY:
89             switch (((LPNMHDR)lParam)->code) {
90                 case PSN_KILLACTIVE: {
91                     /* validate user info.  Lets just assume everything is okay for now */
92                     SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);
93                     break;
94                 }
95                 case PSN_APPLY: {
96                     /* should probably check everything is really all rosy :) */
97                     saveX11DrvDlgSettings (hDlg);
98                     SetWindowLong(hDlg, DWL_MSGRESULT, PSNRET_NOERROR);
99                     break;
100                 }
101                 case PSN_SETACTIVE: {
102                     initX11DrvDlg (hDlg);
103                     break;
104                 }
105             }
106             break;
107
108         default:
109             break;
110     }
111     return FALSE;
112 }