/* * WineCfg main entry point * * Copyright 2002 Jaco Greeff * Copyright 2003 Dimitrie O. Paun * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #define NONAMELESSUNION #define NONAMELESSSTRUCT #include #include #include #include #include "properties.h" #include "resource.h" #include "winecfg.h" WINECFG_DESC sCfg; void CALLBACK PropSheetCallback (HWND hWnd, UINT uMsg, LPARAM lParam) { switch (uMsg) { /* * hWnd = NULL, lParam == dialog resource */ case PSCB_PRECREATE: break; case PSCB_INITIALIZED: break; default: break; } } void initGeneralDlg (HWND hDlg) { int i; const VERSION_DESC *pVer = NULL; if ((pVer = getWinVersions ())) { for (i = 0; *pVer->szVersion; i++, pVer++) { SendDlgItemMessage (hDlg, IDC_WINVER, CB_ADDSTRING, 0, (LPARAM) pVer->szDescription); if (!strcmp (pVer->szVersion, sCfg.szWinVer)) SendDlgItemMessage (hDlg, IDC_WINVER, CB_SETCURSEL, (WPARAM) i, 0); } } if ((pVer = getDOSVersions ())) { for (i = 0; *pVer->szVersion; i++, pVer++) { SendDlgItemMessage (hDlg, IDC_DOSVER, CB_ADDSTRING, 0, (LPARAM) pVer->szDescription); if (!strcmp (pVer->szVersion, sCfg.szDOSVer)) SendDlgItemMessage (hDlg, IDC_DOSVER, CB_SETCURSEL, (WPARAM) i, 0); } } if ((pVer = getWinelook ())) { for (i = 0; *pVer->szVersion; i++, pVer++) { SendDlgItemMessage (hDlg, IDC_WINELOOK, CB_ADDSTRING, 0, (LPARAM) pVer->szDescription); if (!strcmp (pVer->szVersion, sCfg.szWinLook)) SendDlgItemMessage (hDlg, IDC_WINELOOK, CB_SETCURSEL, (WPARAM) i, 0); } } } INT_PTR CALLBACK GeneralDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: initGeneralDlg (hDlg); break; case WM_COMMAND: break; default: break; } return FALSE; } INT_PTR CALLBACK DllDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: break; default: break; } return FALSE; } INT_PTR CALLBACK AppDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: break; default: break; } return FALSE; } void initX11DrvDlg (HWND hDlg) { char szBuf[20]; sprintf (szBuf, "%d", sCfg.sX11Drv.nSysColors); SendDlgItemMessage (hDlg, IDC_SYSCOLORS, WM_SETTEXT, 0, (LPARAM) szBuf); sprintf (szBuf, "%d", sCfg.sX11Drv.nDesktopSizeX); SendDlgItemMessage (hDlg, IDC_DESKTOP_WIDTH, WM_SETTEXT, 0, (LPARAM) szBuf); sprintf (szBuf, "%d", sCfg.sX11Drv.nDesktopSizeY); SendDlgItemMessage (hDlg, IDC_DESKTOP_HEIGHT, WM_SETTEXT, 0, (LPARAM) szBuf); } INT_PTR CALLBACK X11DrvDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: initX11DrvDlg (hDlg); break; case WM_COMMAND: break; default: break; } return FALSE; } #define NUM_PROPERTY_PAGES 4 INT_PTR doPropertySheet (HINSTANCE hInstance, HWND hOwner) { PROPSHEETPAGE psp[NUM_PROPERTY_PAGES]; PROPSHEETHEADER psh; /* * Fill out the (General) PROPSHEETPAGE data structure * for the property sheet */ psp[0].dwSize = sizeof (PROPSHEETPAGE); psp[0].dwFlags = PSP_USETITLE; psp[0].hInstance = hInstance; psp[0].u.pszTemplate = MAKEINTRESOURCE (IDD_GENERALCFG); psp[0].u2.pszIcon = NULL; psp[0].pfnDlgProc = GeneralDlgProc; psp[0].pszTitle = "General"; psp[0].lParam = 0; /* * Fill out the (Libraries) PROPSHEETPAGE data structure * for the property sheet */ psp[1].dwSize = sizeof (PROPSHEETPAGE); psp[1].dwFlags = PSP_USETITLE; psp[1].hInstance = hInstance; psp[1].u.pszTemplate = MAKEINTRESOURCE (IDD_DLLCFG); psp[1].u2.pszIcon = NULL; psp[1].pfnDlgProc = DllDlgProc; psp[1].pszTitle = "Libraries"; psp[1].lParam = 0; /* * Fill out the (Applications) PROPSHEETPAGE data structure * for the property sheet */ psp[2].dwSize = sizeof (PROPSHEETPAGE); psp[2].dwFlags = PSP_USETITLE; psp[2].hInstance = hInstance; psp[2].u.pszTemplate = MAKEINTRESOURCE (IDD_APPCFG); psp[2].u2.pszIcon = NULL; psp[2].pfnDlgProc = AppDlgProc; psp[2].pszTitle = "Applications"; psp[2].lParam = 0; /* * Fill out the (X11Drv) PROPSHEETPAGE data structure * for the property sheet */ psp[3].dwSize = sizeof (PROPSHEETPAGE); psp[3].dwFlags = PSP_USETITLE; psp[3].hInstance = hInstance; psp[3].u.pszTemplate = MAKEINTRESOURCE (IDD_X11DRVCFG); psp[3].u2.pszIcon = NULL; psp[3].pfnDlgProc = X11DrvDlgProc; psp[3].pszTitle = "X11 Driver"; psp[3].lParam = 0; /* * Fill out the PROPSHEETHEADER */ psh.dwSize = sizeof (PROPSHEETHEADER); psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_USECALLBACK; psh.hwndParent = hOwner; psh.hInstance = hInstance; psh.u.pszIcon = NULL; psh.pszCaption = "Wine Configuration"; psh.nPages = NUM_PROPERTY_PAGES; psh.u3.ppsp = (LPCPROPSHEETPAGE) & psp; psh.pfnCallback = (PFNPROPSHEETCALLBACK) PropSheetCallback; /* * Display the modal property sheet */ return PropertySheet (&psh); } /***************************************************************************** * Name : WinMain * Description: Main windows entry point * Paramaters : hInstance * hPrev * szCmdLine * nShow * Returns : Program exit code */ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrev, LPSTR szCmdLine, int nShow) { /* * Load the configuration from registry */ loadConfig (&sCfg); /* * The next 3 lines should be all that is needed * for the Wine Configuration property sheet */ InitCommonControls (); doPropertySheet (hInstance, NULL); ExitProcess (0); return 0; }