From 038cca4d581d811d1ea31308fb7e9fd1c05ba593 Mon Sep 17 00:00:00 2001 From: Gero Kuehn Date: Fri, 18 Jun 2004 20:43:44 +0000 Subject: [PATCH] initial checkin of the non-shell-namespace-based control panel and software add/remove cpl svn path=/trunk/; revision=9715 --- reactos/lib/cpl/Makefile | 2 +- reactos/lib/cpl/appwiz/.cvsignore | 14 + reactos/lib/cpl/appwiz/Makefile | 47 ++++ reactos/lib/cpl/appwiz/appwiz.c | 263 ++++++++++++++++++ reactos/lib/cpl/appwiz/appwiz.def | 6 + reactos/lib/cpl/appwiz/appwiz.dsp | 124 +++++++++ reactos/lib/cpl/appwiz/appwiz.dsw | 29 ++ reactos/lib/cpl/appwiz/appwiz.edf | 6 + reactos/lib/cpl/appwiz/appwiz.h | 20 ++ reactos/lib/cpl/appwiz/appwiz.rc | 77 ++++++ reactos/lib/cpl/appwiz/resource.h | 31 +++ reactos/lib/cpl/appwiz/resources/applet.ico | Bin 0 -> 1398 bytes reactos/lib/cpl/control/.cvsignore | 15 ++ reactos/lib/cpl/control/Makefile | 38 +++ reactos/lib/cpl/control/control.cpp | 267 +++++++++++++++++++ reactos/lib/cpl/control/control.dsp | 137 ++++++++++ reactos/lib/cpl/control/control.dsw | 29 ++ reactos/lib/cpl/control/control.rc | 86 ++++++ reactos/lib/cpl/control/resource.h | 27 ++ reactos/lib/cpl/control/resources/config.ico | Bin 0 -> 9062 bytes 20 files changed, 1217 insertions(+), 1 deletion(-) create mode 100644 reactos/lib/cpl/appwiz/.cvsignore create mode 100644 reactos/lib/cpl/appwiz/Makefile create mode 100644 reactos/lib/cpl/appwiz/appwiz.c create mode 100644 reactos/lib/cpl/appwiz/appwiz.def create mode 100644 reactos/lib/cpl/appwiz/appwiz.dsp create mode 100644 reactos/lib/cpl/appwiz/appwiz.dsw create mode 100644 reactos/lib/cpl/appwiz/appwiz.edf create mode 100644 reactos/lib/cpl/appwiz/appwiz.h create mode 100644 reactos/lib/cpl/appwiz/appwiz.rc create mode 100644 reactos/lib/cpl/appwiz/resource.h create mode 100644 reactos/lib/cpl/appwiz/resources/applet.ico create mode 100644 reactos/lib/cpl/control/.cvsignore create mode 100644 reactos/lib/cpl/control/Makefile create mode 100644 reactos/lib/cpl/control/control.cpp create mode 100644 reactos/lib/cpl/control/control.dsp create mode 100644 reactos/lib/cpl/control/control.dsw create mode 100644 reactos/lib/cpl/control/control.rc create mode 100644 reactos/lib/cpl/control/resource.h create mode 100644 reactos/lib/cpl/control/resources/config.ico diff --git a/reactos/lib/cpl/Makefile b/reactos/lib/cpl/Makefile index 2356eca12a6..21e4b0b27f9 100644 --- a/reactos/lib/cpl/Makefile +++ b/reactos/lib/cpl/Makefile @@ -6,7 +6,7 @@ PATH_TO_TOP = ../.. include $(PATH_TO_TOP)/rules.mak -CONTROL_PANELS = sysdm +CONTROL_PANELS = sysdm appwiz control all: $(CONTROL_PANELS) diff --git a/reactos/lib/cpl/appwiz/.cvsignore b/reactos/lib/cpl/appwiz/.cvsignore new file mode 100644 index 00000000000..e569704df95 --- /dev/null +++ b/reactos/lib/cpl/appwiz/.cvsignore @@ -0,0 +1,14 @@ +*.coff +*.cpl +*.d +*.a +*.o +*.sym +*.map +*.tmp + +*.ncb +*.opt +*.plg +Debug +Release \ No newline at end of file diff --git a/reactos/lib/cpl/appwiz/Makefile b/reactos/lib/cpl/appwiz/Makefile new file mode 100644 index 00000000000..dead14f0e90 --- /dev/null +++ b/reactos/lib/cpl/appwiz/Makefile @@ -0,0 +1,47 @@ +# $Id: Makefile,v 1.1 2004/06/18 20:43:44 kuehng Exp $ + +PATH_TO_TOP = ../../.. + +TARGET_TYPE = dynlink + +TARGET_EXTENSION = .cpl + +TARGET_NAME = appwiz + +TARGET_INSTALLDIR = system32 + +TARGET_BASE = $(TARGET_BASE_LIB_CPL_SYSDM) + +TARGET_CFLAGS = \ + -I./include \ + -DUNICODE \ + -D_UNICODE \ + -D__REACTOS__ \ + -Wall \ + -Werror \ + -fno-builtin + +TARGET_LFLAGS = -nostartfiles + +TARGET_SDKLIBS = kernel32.a user32.a comctl32.a + +TARGET_GCCLIBS = gcc + +TARGET_PCH = + +TARGET_CLEAN = + +TARGET_OBJECTS = appwiz.o + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk + +%/TAGS: + etags -o $(@D)/TAGS $(@D)/\*.c + +etags: ./TAGS diff --git a/reactos/lib/cpl/appwiz/appwiz.c b/reactos/lib/cpl/appwiz/appwiz.c new file mode 100644 index 00000000000..72ccb8315f8 --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.c @@ -0,0 +1,263 @@ +/* + * ReactOS + * Copyright (C) 2004 ReactOS Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/* $Id: appwiz.c,v 1.1 2004/06/18 20:43:44 kuehng Exp $ + * + * PROJECT: ReactOS Software Control Panel + * FILE: lib/cpl/system/appwiz.c + * PURPOSE: ReactOS Software Control Panel + * PROGRAMMER: Gero Kuehn (reactos.filter@gkware.com) + * UPDATE HISTORY: + * 06-17-2004 Created + */ + +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#include +#include +#endif + +#include +#include +#include +#include + +#include "resource.h" +#include "appwiz.h" + +#define NUM_APPLETS (1) + +LONG CALLBACK SystemApplet(VOID); +BOOL CALLBACK GeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK ComputerPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +HINSTANCE hApplet = 0; + +/* Applets */ +APPLET Applets[NUM_APPLETS] = +{ + {IDI_CPLSYSTEM, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet} +}; + +void CallUninstall(HWND hwndDlg) +{ + int nIndex; + nIndex = SendDlgItemMessage(hwndDlg,IDC_SOFTWARELIST,LB_GETCURSEL,0,0); + if(nIndex == -1) + MessageBox(hwndDlg,L"No item selected",L"Error",MB_ICONSTOP); + else { + HKEY hKey; + DWORD dwType = REG_SZ; + TCHAR pszUninstallString[MAX_PATH]; + DWORD dwSize = MAX_PATH; + hKey = (HKEY)SendDlgItemMessage(hwndDlg,IDC_SOFTWARELIST,LB_GETITEMDATA,(WPARAM)nIndex,0); + if(RegQueryValueEx(hKey,L"UninstallString",NULL,&dwType,(BYTE*)pszUninstallString,&dwSize)==ERROR_SUCCESS) + { + STARTUPINFO si; + PROCESS_INFORMATION pi; + memset(&si,0x00,sizeof(si)); + si.cb = sizeof(si); + si.wShowWindow = SW_SHOW; + if(CreateProcess(NULL,pszUninstallString,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } else { + MessageBox(hwndDlg,L"Unable to read UninstallString. This entry is invalid or has been created by an MSI installer.",L"Error",MB_ICONSTOP); + } + } +} + +/* Property page dialog callback */ +BOOL CALLBACK InstallPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch(uMsg) + { + case WM_INITDIALOG: + { + HKEY hKey; + int i=0; + TCHAR pszName[MAX_PATH]; + FILETIME FileTime; + DWORD dwSize = MAX_PATH; + EnableWindow(GetDlgItem(hwndDlg,IDC_INSTALL),FALSE); + if(RegOpenKey(HKEY_LOCAL_MACHINE,L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall",&hKey)!=ERROR_SUCCESS) { + MessageBox(hwndDlg,L"Unable to open Uninstall Key",L"Error",MB_ICONSTOP); + return FALSE; + } + while(RegEnumKeyEx(hKey,i,pszName,&dwSize,NULL,NULL,NULL,&FileTime)==ERROR_SUCCESS) + { + HKEY hSubKey; + if(RegOpenKey(hKey,pszName,&hSubKey)==ERROR_SUCCESS) + { + DWORD dwType = REG_SZ; + TCHAR pszDisplayName[MAX_PATH]; + DWORD dwSize = MAX_PATH; + ULONG index; + if(RegQueryValueEx(hSubKey,L"DisplayName",NULL,&dwType,(BYTE*)pszDisplayName,&dwSize)==ERROR_SUCCESS) + { + index = SendDlgItemMessage(hwndDlg,IDC_SOFTWARELIST,LB_ADDSTRING,0,(LPARAM)pszDisplayName); + SendDlgItemMessage(hwndDlg,IDC_SOFTWARELIST,LB_SETITEMDATA,index,(LPARAM)hSubKey); + } + } + + dwSize = MAX_PATH; + i++; + } + RegCloseKey(hKey); + break; + } + break; + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDC_SOFTWARELIST: + if(HIWORD(wParam)==LBN_DBLCLK) + { + CallUninstall(hwndDlg); + } + break; + + case IDC_ADDREMOVE: + CallUninstall(hwndDlg); + break; + } + break; + } + return FALSE; +} + +/* Property page dialog callback */ +BOOL CALLBACK RosPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch(uMsg) + { + case WM_INITDIALOG: + { + + break; + } + } + return FALSE; +} + +static void InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc) +{ + ZeroMemory(psp, sizeof(PROPSHEETPAGE)); + psp->dwSize = sizeof(PROPSHEETPAGE); + psp->dwFlags = PSP_DEFAULT; + psp->hInstance = hApplet; +#ifdef _MSC_VER + psp->pszTemplate = MAKEINTRESOURCE(idDlg); +#else + psp->u1.pszTemplate = MAKEINTRESOURCE(idDlg); +#endif + psp->pfnDlgProc = DlgProc; +} + + +/* First Applet */ + +LONG CALLBACK +SystemApplet(VOID) +{ + PROPSHEETPAGE psp[2]; + PROPSHEETHEADER psh; + TCHAR Caption[1024]; + + LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR)); + + ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); + psh.dwSize = sizeof(PROPSHEETHEADER); + psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE; + psh.hwndParent = NULL; + psh.hInstance = hApplet; +#ifdef _MSC_VER + psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM)); +#else + psh.u1.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM)); +#endif + psh.pszCaption = Caption; + psh.nPages = sizeof(psp) / sizeof(PROPSHEETHEADER); +#ifdef _MSC_VER + psh.nStartPage = 0; + psh.ppsp = psp; +#else + psh.u2.nStartPage = 0; + psh.u3.ppsp = psp; +#endif + psh.pfnCallback = NULL; + + + InitPropSheetPage(&psp[0], IDD_PROPPAGEINSTALL, InstallPageProc); + InitPropSheetPage(&psp[1], IDD_PROPPAGEROSSETUP, RosPageProc); + + return (LONG)(PropertySheet(&psh) != -1); +} + +/* Control Panel Callback */ +LONG CALLBACK CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2) +{ + int i = (int)lParam1; + + switch(uMsg) + { + case CPL_INIT: + { + return TRUE; + } + case CPL_GETCOUNT: + { + return NUM_APPLETS; + } + case CPL_INQUIRE: + { + CPLINFO *CPlInfo = (CPLINFO*)lParam2; + CPlInfo->lData = 0; + CPlInfo->idIcon = Applets[i].idIcon; + CPlInfo->idName = Applets[i].idName; + CPlInfo->idInfo = Applets[i].idDescription; + break; + } + case CPL_DBLCLK: + { + Applets[i].AppletProc(); + break; + } + } + return FALSE; +} + + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved) +{ + switch(dwReason) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + hApplet = hinstDLL; + break; + } + return TRUE; +} + diff --git a/reactos/lib/cpl/appwiz/appwiz.def b/reactos/lib/cpl/appwiz/appwiz.def new file mode 100644 index 00000000000..0f56c708737 --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.def @@ -0,0 +1,6 @@ +LIBRARY appwiz.cpl + +EXPORTS +CPlApplet + +; EOF diff --git a/reactos/lib/cpl/appwiz/appwiz.dsp b/reactos/lib/cpl/appwiz/appwiz.dsp new file mode 100644 index 00000000000..e1afdb7b74e --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.dsp @@ -0,0 +1,124 @@ +# Microsoft Developer Studio Project File - Name="appwiz" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=appwiz - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "appwiz.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "appwiz.mak" CFG="appwiz - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "appwiz - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "appwiz - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "appwiz - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APPWIZ_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "APPWIZ_EXPORTS" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_MSC_VER" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /dll /machine:I386 /out:"Release/appwiz.cpl" + +!ELSEIF "$(CFG)" == "appwiz - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APPWIZ_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "APPWIZ_EXPORTS" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_MSC_VER" +# SUBTRACT RSC /x +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /dll /debug /machine:I386 /out:"Debug/appwiz.cpl" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "appwiz - Win32 Release" +# Name "appwiz - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\appwiz.c +# End Source File +# Begin Source File + +SOURCE=.\appwiz.h +# End Source File +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\appwiz.def +# End Source File +# Begin Source File + +SOURCE=.\appwiz.rc +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/reactos/lib/cpl/appwiz/appwiz.dsw b/reactos/lib/cpl/appwiz/appwiz.dsw new file mode 100644 index 00000000000..52023fddfa2 --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "appwiz"=.\appwiz.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/reactos/lib/cpl/appwiz/appwiz.edf b/reactos/lib/cpl/appwiz/appwiz.edf new file mode 100644 index 00000000000..07b4ddf9efc --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.edf @@ -0,0 +1,6 @@ +LIBRARY appwiz.cpl + +EXPORTS +CPlApplet=CPlApplet@16 + +; EOF diff --git a/reactos/lib/cpl/appwiz/appwiz.h b/reactos/lib/cpl/appwiz/appwiz.h new file mode 100644 index 00000000000..c4bb7b71243 --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.h @@ -0,0 +1,20 @@ +#ifndef __CPL_APPWIZ_H +#define __CPL_APPWIZ_H + +typedef LONG (CALLBACK *CPLAPPLET_PROC)(VOID); + +typedef struct +{ + int idIcon; + int idName; + int idDescription; + CPLAPPLET_PROC AppletProc; +} APPLET, *PAPPLET; + +extern HINSTANCE hApplet; + +void ShowLastWin32Error(HWND hWndOwner); + +#endif /* __CPL_APPWIZ_H */ + +/* EOF */ diff --git a/reactos/lib/cpl/appwiz/appwiz.rc b/reactos/lib/cpl/appwiz/appwiz.rc new file mode 100644 index 00000000000..4eec9a01551 --- /dev/null +++ b/reactos/lib/cpl/appwiz/appwiz.rc @@ -0,0 +1,77 @@ +#include "resource.h" +#ifdef _MSC_VER +#include <../../../include/reactos/resource.h> +#include <../../../include/defines.h> +#else +#include +#include +#endif + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +VS_VERSION_INFO VERSIONINFO + FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD + PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", RES_STR_COMPANY_NAME + VALUE "FileDescription", "ReactOS Software Control Panel\0" + VALUE "FileVersion", RES_STR_FILE_VERSION + VALUE "InternalName", "appwiz\0" + VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT + VALUE "OriginalFilename", "appwiz.cpl\0" + VALUE "ProductName", RES_STR_PRODUCT_NAME + VALUE "ProductVersion", RES_STR_PRODUCT_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +IDI_CPLSYSTEM ICON "resources/applet.ico" + +IDD_PROPPAGEINSTALL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Install/Uninstall" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + + ICON IDI_CPLSYSTEM,-1,PROPSHEETPADDING,18,16,16 + LTEXT "To install a new program, click Install",-1,36,18,PROPSHEETWIDTH-48,8 + PUSHBUTTON "&Install...", IDC_INSTALL, PROPSHEETWIDTH-(72), 36, 60, 14 + LTEXT "", -1, PROPSHEETPADDING, 63, PROPSHEETWIDTH-12, 1, NOT WS_GROUP | SS_SUNKEN + + ICON IDI_CPLSYSTEM,-1,PROPSHEETPADDING,76,16,16 + LTEXT "The following Software can be automatically removed. To remove a program or to modify its installed components, select it from the list and click Add/Remove.",-1,36,72,PROPSHEETWIDTH-48,32 + LISTBOX IDC_SOFTWARELIST, PROPSHEETPADDING, 105, PROPSHEETWIDTH-12, 88, LBS_STANDARD | WS_TABSTOP + PUSHBUTTON "Add/&Remove", IDC_ADDREMOVE, PROPSHEETWIDTH-72, 198, 60, 14 +END + +IDD_PROPPAGEROSSETUP DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Reactos Setup" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + +END + + +STRINGTABLE +BEGIN + IDS_CPLSYSTEMNAME "Add/Remove Programs" + IDS_CPLSYSTEMDESCRIPTION "Sets up programs and creates shortcuts." +END diff --git a/reactos/lib/cpl/appwiz/resource.h b/reactos/lib/cpl/appwiz/resource.h new file mode 100644 index 00000000000..361158b509c --- /dev/null +++ b/reactos/lib/cpl/appwiz/resource.h @@ -0,0 +1,31 @@ +#ifndef __CPL_RESOURCE_H +#define __CPL_RESOURCE_H + +/* metrics */ +#define PROPSHEETWIDTH 246 +#define PROPSHEETHEIGHT 228 +#define PROPSHEETPADDING 6 +#define SYSTEM_COLUMN (0 * PROPSHEETPADDING) +// this is not supported by the MS Resource compiler: +//#define LABELLINE(x) 0 //(((PROPSHEETPADDING + 2) * x) + (x + 2)) + +#define ICONSIZE 16 + +/* ids */ + +#define IDI_CPLSYSTEM 100 + +#define IDD_PROPPAGEINSTALL 100 +#define IDD_PROPPAGEROSSETUP 101 + +#define IDS_CPLSYSTEMNAME 1001 +#define IDS_CPLSYSTEMDESCRIPTION 2001 + +/* controls */ +#define IDC_INSTALL 101 +#define IDC_SOFTWARELIST 102 +#define IDC_ADDREMOVE 103 + +#endif /* __CPL_RESOURCE_H */ + +/* EOF */ diff --git a/reactos/lib/cpl/appwiz/resources/applet.ico b/reactos/lib/cpl/appwiz/resources/applet.ico new file mode 100644 index 0000000000000000000000000000000000000000..3eae16df58c7f5b9a6b80827d788f7416afccbda GIT binary patch literal 1398 zcmds1v2MaJ5Pcy?>6oosVPx#onJ?g5x|yL8-r%#mb?JxX50cHi7sup4K?uN%Pj@Bxs|$P2s|z*`B_b@H#sH*;X6HIy|)ae`;;G(4U3c%KwU zng}6K%Mtq*G0LLw(UgYY#`a*~ft@q>4}8aK8_?=J=D_=@^L_oC@Gbu>Zm!E|ecnu( z+`8Q-9);RO1DVO`5*Ex${7*rzT$k>q>YY}5t123;JHup-7leVI7nk`P|W&Ys_ z_r*N>-jMqObGQP}oF-9>st~smS_|yFs$V?oA+Ep34wa~LO!6G5 MKQVRI!ab7Xj@&-27XSbN literal 0 HcmV?d00001 diff --git a/reactos/lib/cpl/control/.cvsignore b/reactos/lib/cpl/control/.cvsignore new file mode 100644 index 00000000000..01eba0dad2e --- /dev/null +++ b/reactos/lib/cpl/control/.cvsignore @@ -0,0 +1,15 @@ +*.coff +*.exe +*.d +*.a +*.o +*.sym +*.map +*.tmp + +*.ncb +*.opt +*.plg +*.aps +Debug +Release \ No newline at end of file diff --git a/reactos/lib/cpl/control/Makefile b/reactos/lib/cpl/control/Makefile new file mode 100644 index 00000000000..e804c38e468 --- /dev/null +++ b/reactos/lib/cpl/control/Makefile @@ -0,0 +1,38 @@ +# $Id: Makefile,v 1.1 2004/06/18 20:43:44 kuehng Exp $ + +PATH_TO_TOP = ../../.. + +TARGET_TYPE = program + +TARGET_NAME = control + +TARGET_INSTALLDIR = system32 + +TARGET_APPTYPE = windows + +MK_CFLAGS = -D_UNICODE -DUNICODE +MK_CPPFLAGS = -D_UNICODE -DUNICODE +MK_RCFLAGS = -D_UNICODE -DUNICODE + +TARGET_SDKLIBS = kernel32.a user32.a comctl32.a + +# TARGET_GCCLIBS = gcc + +TARGET_PCH = + +TARGET_CLEAN = + +TARGET_OBJECTS = control.o + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk + +%/TAGS: + etags -o $(@D)/TAGS $(@D)/\*.c + +etags: ./TAGS diff --git a/reactos/lib/cpl/control/control.cpp b/reactos/lib/cpl/control/control.cpp new file mode 100644 index 00000000000..ea5335c5af0 --- /dev/null +++ b/reactos/lib/cpl/control/control.cpp @@ -0,0 +1,267 @@ +/* + * ReactOS + * Copyright (C) 2004 ReactOS Team + * Copyright (C) 2004 GkWare e.K. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/* $Id: control.cpp,v 1.1 2004/06/18 20:43:44 kuehng Exp $ + * + * PROJECT: ReactOS System Control Panel + * FILE: lib/cpl/system/control.cpp + * PURPOSE: ReactOS System Control Panel + * PROGRAMMER: Gero Kuehn (reactos.filter@gkware.com) + * UPDATE HISTORY: + * 06-13-2004 Created + */ +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#include +#include +#endif + +#include "resource.h" + +//#define CONTROL_DEBUG_ENABLE + +#ifdef CONTROL_DEBUG_ENABLE +#define CTL_DEBUG(x) dbgprint x +#else +#define CTL_DEBUG(x) +#endif + +HINSTANCE hInst; +HWND hMainWnd; + +void dbgprint(TCHAR *format,...) +{ + TCHAR buf[1000]; + va_list va; + va_start(va,format); + _vstprintf(buf,format,va); + OutputDebugString(buf); + va_end(va); +} + +#define MYWNDCLASS _T("CTLPANELCLASS") +HWND hListView; + +typedef LONG (CALLBACK *CPLAPPLETFUNC)(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2); + +typedef struct CPLLISTENTRY{ + TCHAR pszPath[MAX_PATH]; + HMODULE hDLL; + CPLAPPLETFUNC pFunc; + CPLINFO CPLInfo; + int nIndex; +} CPLLISTENTRY; + +void PopulateCPLList(HWND hLisCtrl) +{ + WIN32_FIND_DATA fd; + HANDLE hFind; + TCHAR pszSearchPath[MAX_PATH]; + GetSystemDirectory(pszSearchPath,MAX_PATH); + _tcscat(pszSearchPath,_T("\\*.cpl")); + hFind = FindFirstFile(pszSearchPath,&fd); + HIMAGELIST hImgListSmall; + HIMAGELIST hImgListLarge; + hImgListSmall = ImageList_Create(16,16,ILC_COLOR,256,1000); + hImgListLarge = ImageList_Create(32,32,ILC_COLOR,256,1000); + while(hFind != INVALID_HANDLE_VALUE) + { + CTL_DEBUG((_T("Found %s\r\n"),fd.cFileName)); + CPLLISTENTRY *pEntry; + pEntry = (CPLLISTENTRY*)malloc(sizeof(CPLLISTENTRY)); + if(!pEntry) + break; + _tcscpy(pEntry->pszPath,pszSearchPath); + *_tcsrchr(pEntry->pszPath,'\\')=0; + _tcscat(pEntry->pszPath,_T("\\")); + _tcscat(pEntry->pszPath,fd.cFileName); + + pEntry->hDLL = LoadLibrary(pEntry->pszPath); + CTL_DEBUG((_T("Handle %08X\r\n"),pEntry->hDLL)); + pEntry->pFunc = (CPLAPPLETFUNC)GetProcAddress(pEntry->hDLL,_T("CPlApplet")); + CTL_DEBUG((_T("CPLFunc %08X\r\n"),pEntry->pFunc)); + if(pEntry->pFunc && pEntry->pFunc(hLisCtrl,CPL_INIT,0,0)) + { + for(int i=0;ipFunc(hLisCtrl,CPL_GETCOUNT,0,0);i++) + { + pEntry->pFunc(hLisCtrl,CPL_INQUIRE,0,(LPARAM)&pEntry->CPLInfo); + + HICON hIcon = LoadIcon(pEntry->hDLL,MAKEINTRESOURCE(pEntry->CPLInfo.idIcon)); + int index; + index = ImageList_AddIcon(hImgListSmall,hIcon); + ImageList_AddIcon(hImgListLarge,hIcon); + + + TCHAR Name[MAX_PATH]; + LoadString(pEntry->hDLL,pEntry->CPLInfo.idName,Name,MAX_PATH); + if(_tcslen(Name)) + { + + LV_ITEM lvi; + + memset(&lvi,0x00,sizeof(lvi)); + lvi.mask=LVIF_TEXT|LVIF_PARAM|LVIF_STATE|LVIF_IMAGE; + lvi.pszText = Name; + lvi.state=0; + lvi.iImage=index; + lvi.lParam = (LPARAM)pEntry; + pEntry->nIndex = ListView_InsertItem(hLisCtrl,&lvi); + + LoadString(pEntry->hDLL,pEntry->CPLInfo.idInfo,Name,MAX_PATH); + ListView_SetItemText(hLisCtrl,pEntry->nIndex,1,Name); + + ListView_SetImageList(hLisCtrl,hImgListSmall,LVSIL_SMALL); + ListView_SetImageList(hLisCtrl,hImgListLarge,LVSIL_NORMAL); + } + } + } + + if(!FindNextFile(hFind,&fd)) + hFind = INVALID_HANDLE_VALUE; + } +} + +LRESULT CALLBACK MyWindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch(uMsg) + { + case WM_CREATE: + RECT rect; + GetClientRect(hWnd,&rect); + hListView = CreateWindow(WC_LISTVIEW,_T(""),LVS_REPORT | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP,0,0,rect.right ,rect.bottom,hWnd,NULL,hInst,0); + CTL_DEBUG((_T("Listview Window %08X\r\n"),hListView)); + + LV_COLUMN column; + memset(&column,0x00,sizeof(column)); + column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM|LVCF_TEXT; + column.fmt=LVCFMT_LEFT; + column.cx = 200; + column.iSubItem = 0; + column.pszText = _T("Name"); + ListView_InsertColumn(hListView,0,&column); + column.cx = 200; + column.iSubItem = 1; + column.pszText = _T("Comment"); + ListView_InsertColumn(hListView,1,&column); + PopulateCPLList(hListView); + ListView_SetColumnWidth(hListView,2,LVSCW_AUTOSIZE_USEHEADER); + ListView_Update(hListView,0); + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + case WM_SIZE: + GetClientRect(hWnd,&rect); + MoveWindow(hListView,0,0,rect.right,rect.bottom,TRUE); + break; + case WM_NOTIFY: + NMHDR *phdr; + phdr = (NMHDR*)lParam; + switch(phdr->code) + { + case NM_DBLCLK: + int nSelect; + nSelect=SendMessage(hListView,LVM_GETNEXTITEM,(WPARAM)-1,LVNI_FOCUSED); + + if(nSelect==-1) // no items + { + MessageBox(hWnd,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION); + break; + } + CTL_DEBUG((_T("Select %d\r\n"),nSelect)); + LV_ITEM lvi; + memset(&lvi,0x00,sizeof(lvi)); + lvi.iItem = nSelect; + lvi.mask = LVIF_PARAM; + ListView_GetItem(hListView,&lvi); + CPLLISTENTRY *pEntry; + pEntry = (CPLLISTENTRY *)lvi.lParam; + CTL_DEBUG((_T("Listview DblClk Entry %08X\r\n"),pEntry)); + if(pEntry) { + CTL_DEBUG((_T("Listview DblClk Entry Func %08X\r\n"),pEntry->pFunc)); + } + if(pEntry && pEntry->pFunc) + pEntry->pFunc(hListView,CPL_DBLCLK,pEntry->CPLInfo.lData,0); + } + break; + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case CM_LARGEICONS: + SetWindowLong(hListView,GWL_STYLE,LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); + break; + case CM_SMALLICONS: + SetWindowLong(hListView,GWL_STYLE,LVS_SMALLICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); + break; + case CM_LIST: + SetWindowLong(hListView,GWL_STYLE,LVS_LIST | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); + break; + case CM_DETAILS: + SetWindowLong(hListView,GWL_STYLE,LVS_REPORT | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); + break; + case CM_CLOSE: + DestroyWindow(hWnd); + break; + case CM_ABOUT: + MessageBox(hWnd,_T("Simple Control Panel (not Shell-namespace based)\rCopyright 2004 GkWare e.K.\rhttp://www.gkware.com\rReleased under the GPL"),_T("About the Control Panel"),MB_OK | MB_ICONINFORMATION); + break; + } + break; + default: + return DefWindowProc(hWnd,uMsg,wParam,lParam); + } + return 0; +} + +#ifdef _MSVC +int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,WCHAR *lpCmdLine,int nCmdShow) +#else +int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,char *lpCmdLine,int nCmdShow) +#endif +{ + MSG msg; + hInst = hInstance; + CTL_DEBUG((_T("My Control Panel\r\n"))); + WNDCLASS wc; + memset(&wc,0x00,sizeof(wc)); + wc.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_MAINICON)); + wc.lpszClassName = MYWNDCLASS; + wc.lpszMenuName = _T("MAINMENU"); + wc.lpfnWndProc = MyWindowProc; + RegisterClass(&wc); + InitCommonControls(); + hMainWnd = CreateWindow(MYWNDCLASS,_T("Control Panel"),WS_OVERLAPPEDWINDOW,300,300,500,300,NULL,LoadMenu(hInst,MAKEINTRESOURCE(IDM_MAINMENU)),hInst,0); + if(!hMainWnd) { + CTL_DEBUG((_T("Unable to create window\r\n"))); + return -1; + } + ShowWindow(hMainWnd,nCmdShow); + while(GetMessage(&msg,0,0,0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return 0; +} diff --git a/reactos/lib/cpl/control/control.dsp b/reactos/lib/cpl/control/control.dsp new file mode 100644 index 00000000000..1eee558ee3e --- /dev/null +++ b/reactos/lib/cpl/control/control.dsp @@ -0,0 +1,137 @@ +# Microsoft Developer Studio Project File - Name="control" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=control - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "control.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "control.mak" CFG="control - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "control - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "control - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "control - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" /d "MS_COMPILER" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /subsystem:windows /machine:I386 +# Begin Custom Build +TargetDir=.\Release +TargetName=control +InputPath=.\Release\control.exe +InputName=control +SOURCE="$(InputPath)" + +"C:\reactos\reactos\$(InputName).EXE" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(TargetDir)\$(TargetName).EXE C:\reactos\reactos + +# End Custom Build + +!ELSEIF "$(CFG)" == "control - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "UNICODE" /D "_UNICODE" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" /d "MS_COMPILER" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# Begin Custom Build +TargetDir=.\Debug +TargetName=control +InputPath=.\Debug\control.exe +InputName=control +SOURCE="$(InputPath)" + +"C:\reactos\reactos\$(InputName).EXE" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(TargetDir)\$(TargetName).EXE C:\reactos\reactos + +# End Custom Build + +!ENDIF + +# Begin Target + +# Name "control - Win32 Release" +# Name "control - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\control.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\config.ico +# End Source File +# Begin Source File + +SOURCE=.\control.rc +# End Source File +# End Group +# End Target +# End Project diff --git a/reactos/lib/cpl/control/control.dsw b/reactos/lib/cpl/control/control.dsw new file mode 100644 index 00000000000..1beaf5dbd74 --- /dev/null +++ b/reactos/lib/cpl/control/control.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "control"=.\control.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/reactos/lib/cpl/control/control.rc b/reactos/lib/cpl/control/control.rc new file mode 100644 index 00000000000..dd762d83277 --- /dev/null +++ b/reactos/lib/cpl/control/control.rc @@ -0,0 +1,86 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" +#ifndef MS_COMPILER +#include +#include +#else +#include <../../../include/reactos/resource.h> +#include <../../../include/defines.h> +#endif + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_MAINMENU MENU DISCARDABLE +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Close", CM_CLOSE + END + POPUP "&View" + BEGIN + MENUITEM "Large Icons", CM_LARGEICONS + MENUITEM "Small Icons", CM_SMALLICONS + MENUITEM "List", CM_LIST + MENUITEM "Details", CM_DETAILS + END + POPUP "Help" + BEGIN + MENUITEM "About", CM_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_MAINICON ICON DISCARDABLE "resources\config.ico" +///////////////////////////////////////////////////////////////////////////// + + + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +VS_VERSION_INFO VERSIONINFO + FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD + PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", RES_STR_COMPANY_NAME + VALUE "FileDescription", "ReactOS System Control Panel\0" + VALUE "FileVersion", RES_STR_FILE_VERSION + VALUE "InternalName", "control\0" + VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT + VALUE "OriginalFilename", "control.exe\0" + VALUE "ProductName", RES_STR_PRODUCT_NAME + VALUE "ProductVersion", RES_STR_PRODUCT_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + diff --git a/reactos/lib/cpl/control/resource.h b/reactos/lib/cpl/control/resource.h new file mode 100644 index 00000000000..053c1da5f2c --- /dev/null +++ b/reactos/lib/cpl/control/resource.h @@ -0,0 +1,27 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by control.rc +// +#define IDR_MENU1 101 +#define IDM_MAINMENU 101 +#define IDI_MAINICON 104 +#define ID_VIEW_LARGEICONS 40002 +#define CM_LARGEICONS 40002 +#define ID_VIEW_SMALLICONS 40003 +#define CM_SMALLICONS 40003 +#define ID_HELP_ABOUT 40007 +#define CM_ABOUT 40007 +#define CM_CLOSE 40008 +#define CM_LIST 40009 +#define CM_DETAILS 40010 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_COMMAND_VALUE 40011 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/reactos/lib/cpl/control/resources/config.ico b/reactos/lib/cpl/control/resources/config.ico new file mode 100644 index 0000000000000000000000000000000000000000..0c9c1ee400a34b2e528ef03cfe08caae0237279c GIT binary patch literal 9062 zcmds633QZImVT8ANmY_cWlyTIRHZ5*6{w(W(?C1Yqo6dcWA}{E*v)CN35;8JXg~^1 zqba6Efte$qLgr$XZ=FC0$ z>izG%`|iDO`QQ8AAEk6ET-ohPlZ6JQ9^zA6oG<@$8>LRN>}oyB`^N^=hbz^TrId^6 zcH$?5PO$;S%es~%UJCs`@$vD>p()94Xa03o4u^wDXEl^iorm&ysOr_Lm+IHApBg%J zsPcF`s<^mVmGW5)Eu~5+(<-J!DW6LvtzrtMpbGO<%vUi_382L;YE;pDnqlas<(EAfqh@GzO4V3O zRQ-gDYFM`htq-C*?8OGvV^V`Q$1=|{Ma$B}mQtHoKVWgB+WcP)YII^7^`j{bTKWCd zzgyy8W@@AwrBvM&Werp6k(3fOh;dv_F45v%X)RH`8Gws*G8YGSHmDcN8q~Bu>sZ=G zon?Q$Do%->^mjsrufM_Zmo2YVtEf#AY995ZWf~z8$8mbV_o&YL$HJdgF?^6VIvvM= z@s0FX=$VdHRxM5`l6d*5s83hasz+#V?#fz~Bu;`v?0Eh8|7HxuM}MY%{(yM!iI-); zIu&^(YF)#JT3N3i1J#Hjqt%e%Bh|p+L)74rMQY%P7u1L`BQy;8-9R;Z*z;=mkm1A# zHMr>a>Y4xOpskGoH2>I-w`=R6GtL#Xs?~8vwfT{DDaU@M^*>;50ChwPZ$-il`tq>W6!nH=OR6cXifrnhNd^|Al7p?{);1a(qs+@Cpl!j(i%(i4GJu51*xp9DA2L_o_lb zF_4BQO84ElQO)KiP|MVqm@A{3AKRKjxw);(P;OLEqvns{QPJkusPN{6t>$Wa0u?sE zYvx8CN$3e3!JR{?VxlKugIAeR!GaoQ>XnMTpp^bHx8Wv&3W^F!6hMU_cu}LPK)tR8 z_3AWHj0-e&nP?*5?I}D(&Kx@t;3?W+zqokDsS_WLC&i zv{at&w1n`K;ud%cLU;jp{8? zJDnNfOfvy< z8DM-JFiZukj3Ijskhk;@vY&eWZp1LQO>_dXe!Bq1X+Yd8AmLpgmT@G^2BKJImoZq^ zgmx>AAbZI4I~_xDgeeJ`LzZa%Qx^g8Zv){IftWXe=n|iQ`|3+@u5CoYn(vVPbQxoa zzEkUAKv)|CvirXV;~Q5HN8k5;?TaD)9Uz74KhC4D2Pjd{K z?0r2*o=}ZA&VSN8uKy)K)=D6MJ=fpoKL3`bTo*IXFn+sVzH{;8yt=LLG8_LVEf7dSTVH~wJH8^$r zIL@9vjq?o+xNz5$G9Nb*e+(u#2E7i~@>)3m+6eb2$I*A% z7uddi7j|yhf-l#u)%+jcyBBq}wWzPF!z`oGxNh{g*SwDAx0Us72k|J=R1jKON+ zc0}Ht%{};T&7L?>8-v#TpF4XNM-Lvv$~kjz^w6PT_u85q$9ICZ4&IJ)>dH7A{$qLoRI>$ry23Z$VUU^08j}f;kTOaP+8A}=e z?yXx97=IaWc_*fh9gF1nc(MH#BEZ?@Oqv)S71cC{<1YKauOEM0bT$&VD^u*LshG(* zmAy~i{X^V)4)5Eiy_ffO>Lhj>iM~YOv$gop&RDa_gtEz#VWAC{jggAmlmdNN*p)x@ z>xZ?=mt)^I-)R12|B*d#(X?r}CofNIe@FZa5gdc8-x8fpcZq2=VI^)?e!2U05 z?1Qp0wBwmay;?%f-QXCQ{lRiS$MI};w;R)6dP!RgvftGE&%QG}|CZ05jrO^@54_Z@~N>tOgMsn|}*d^js10J=ji5 zl;AhkR}%PrJR&-NMP!`yGZwr=$Y-lt625d##C7^NSYFwJtg?Nu4w^_V7WqCK-;4`t z_6=ss`lSEd4byzykLU1C{0U$iHUs)_!!6l}wzS)sFy$1I7xPa02Jh9pSLIdG&gfaR z5p`1=ZQ2;hk_+EM8r!9R2sn5rxA9(