Author: dchapyshev Date: Mon Feb 18 20:25:40 2008 New Revision: 32412
URL: http://svn.reactos.org/svn/reactos?rev=32412&view=rev Log: - Implement new appwiz
Added: trunk/reactos/dll/cpl/appwiz-new/ trunk/reactos/dll/cpl/appwiz-new/appwiz.c (with props) trunk/reactos/dll/cpl/appwiz-new/appwiz.def (with props) trunk/reactos/dll/cpl/appwiz-new/appwiz.h (with props) trunk/reactos/dll/cpl/appwiz-new/appwiz.rbuild (with props) trunk/reactos/dll/cpl/appwiz-new/appwiz.rc (with props) trunk/reactos/dll/cpl/appwiz-new/createlink.c (with props) trunk/reactos/dll/cpl/appwiz-new/lang/ trunk/reactos/dll/cpl/appwiz-new/lang/en-US.rc (with props) trunk/reactos/dll/cpl/appwiz-new/resource.h (with props) trunk/reactos/dll/cpl/appwiz-new/resources/ trunk/reactos/dll/cpl/appwiz-new/resources/1501.ico (with props) trunk/reactos/dll/cpl/appwiz-new/resources/1502.ico (with props) trunk/reactos/dll/cpl/appwiz-new/resources/1503.ico (with props) trunk/reactos/dll/cpl/appwiz-new/resources/applet.ico (with props) trunk/reactos/dll/cpl/appwiz-new/resources/icon.bmp (with props) trunk/reactos/dll/cpl/appwiz-new/resources/search.ico (with props) trunk/reactos/dll/cpl/appwiz-new/resources/select.bmp (with props) trunk/reactos/dll/cpl/appwiz-new/resources/underline.bmp (with props) trunk/reactos/dll/cpl/appwiz-new/resources/watermark.bmp (with props) trunk/reactos/dll/cpl/appwiz-new/rsrc.rc (with props) Modified: trunk/reactos/dll/cpl/cpl.rbuild
Added: trunk/reactos/dll/cpl/appwiz-new/appwiz.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/appwiz.c... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/appwiz.c (added) +++ trunk/reactos/dll/cpl/appwiz-new/appwiz.c Mon Feb 18 20:25:40 2008 @@ -1,0 +1,1074 @@ +/* + * + * PROJECT: ReactOS Software Control Panel + * FILE: dll/cpl/appwiz/appwiz.c + * PURPOSE: ReactOS Software Control Panel + * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org) + * UPDATE HISTORY: + * 02-09-2008 Created + */ + +#include "appwiz.h" + +WCHAR* DescriptionHeadline = L""; +WCHAR* DescriptionText = L""; +HBITMAP hUnderline; +WCHAR Strings[2][256]; +HICON hSearchIcon; +HTREEITEM hRootItem; // First item in actions list +HFONT hMainFont; +HIMAGELIST hImageAppList; // Image list for programs list +BOOL bAscending = TRUE; // Sorting programs list + +VOID +ShowMessage(WCHAR* title, WCHAR* message) +{ + DescriptionHeadline = title; + DescriptionText = message; + InvalidateRect(hMainWnd,NULL,TRUE); + UpdateWindow(hMainWnd); +} + +static VOID +DrawBitmap(HDC hdc, int x, int y, HBITMAP hBmp) +{ + BITMAP bm; + HDC hdcMem = CreateCompatibleDC(hdc); + + SelectObject(hdcMem, hBmp); + GetObject(hBmp, sizeof(bm), &bm); + TransparentBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, 0xFFFFFF); + + DeleteDC(hdcMem); +} + +static VOID +DrawDescription(HDC hdc, RECT DescriptionRect) +{ + int i; + HFONT Font; + RECT Rect = {DescriptionRect.left+5, DescriptionRect.top+5, DescriptionRect.right-2, DescriptionRect.top+22}; + + // Backgroud + Rectangle(hdc, DescriptionRect.left, DescriptionRect.top, DescriptionRect.right, DescriptionRect.bottom); + + // Underline + for (i=DescriptionRect.left+1;i<DescriptionRect.right-1;i++) + DrawBitmap(hdc, i, DescriptionRect.top+22, hUnderline); // less code then stretching ;) + + // Headline + Font = CreateFont(-14, 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, + OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial"); + SelectObject(hdc, Font); + DrawText(hdc, DescriptionHeadline, lstrlen(DescriptionHeadline), &Rect, DT_SINGLELINE|DT_NOPREFIX); + DeleteObject(Font); + + // Description + Font = CreateFont(-11, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, + OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial"); + SelectObject(hdc, Font); + Rect.top += 35; + Rect.bottom = DescriptionRect.bottom-2; + DrawText(hdc, DescriptionText, lstrlen(DescriptionText), &Rect, DT_WORDBREAK|DT_NOPREFIX); // ToDo: Call TabbedTextOut to draw a nice table + DeleteObject(Font); +} + +static VOID +ResizeControl(HWND hwnd, int x1, int y1, int x2, int y2) +{ + MoveWindow(hwnd, x1, y1, x2-x1, y2-y1, TRUE); +} + +/* + AddListColumn - adding column items to Application list +*/ +static VOID +AddListColumn(VOID) +{ + LV_COLUMN column; + RECT rect; + WCHAR szBuf[MAX_PATH]; + + GetClientRect(hMainWnd, &rect); + ZeroMemory(&column, sizeof(LV_COLUMN)); + column.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; + column.fmt = LVCFMT_LEFT; + column.iSubItem = 0; + LoadString(hApplet, IDS_LIST_TITLE, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + column.pszText = szBuf; + column.cx = 320; + (void)ListView_InsertColumn(hAppList, 0, &column); + + column.cx = 75; + column.iSubItem = 1; + LoadString(hApplet, IDS_LAST_USED, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + column.pszText = szBuf; + (void)ListView_InsertColumn(hAppList,1,&column); + + column.cx = 70; + column.iSubItem = 2; + column.fmt = LVCFMT_RIGHT; + LoadString(hApplet, IDS_SIZE_TITLE, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + column.pszText = szBuf; + (void)ListView_InsertColumn(hAppList,2,&column); +} + +static VOID +AddTreeViewItems(VOID) +{ + HIMAGELIST hImageList; + WCHAR szBuf[1024]; + int Index[2]; + + hImageList = ImageList_Create(16, 16, ILC_COLORDDB, 1, 1); + SendMessageW(hActList, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList); + + Index[0] = ImageList_Add(hImageList, LoadBitmap(hApplet, MAKEINTRESOURCE(IDB_SELECT)), NULL); + Index[1] = ImageList_Add(hImageList, LoadBitmap(hApplet, MAKEINTRESOURCE(IDB_ICON)), NULL); + + // Insert items to Actions List + TV_INSERTSTRUCTW Insert; + + ZeroMemory(&Insert, sizeof(TV_INSERTSTRUCT)); + Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; + Insert.hInsertAfter = TVI_LAST; + Insert.hParent = TVI_ROOT; + Insert.item.iSelectedImage = Index[0]; + + Insert.item.lParam = 0; + LoadString(hApplet, IDS_PROGANDUPDATES, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + Insert.item.pszText = szBuf; + Insert.item.iImage = Index[1]; + hRootItem = TreeView_InsertItem(hActList, &Insert); + + Insert.item.lParam = 1; + LoadString(hApplet, IDS_PROGRAMS_ONLY, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + Insert.item.pszText = szBuf; + Insert.item.iImage = Index[1]; + (VOID) TreeView_InsertItem(hActList, &Insert); + + Insert.item.lParam = 2; + LoadString(hApplet, IDS_UPDATES_ONLY, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + Insert.item.pszText = szBuf; + Insert.item.iImage = Index[1]; + (VOID) TreeView_InsertItem(hActList, &Insert); + // Select first item + (VOID) TreeView_SelectItem(hActList, hRootItem); +} + +/* + InitControls - function for init all controls on main window +*/ +static VOID +InitControls(VOID) +{ + WCHAR szBuf[1024]; + + hMainFont = CreateFont(-11 , 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, + OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial"); + + hActList = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEWW, L"", + WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, + 0, 0, 0, 0, hMainWnd, NULL, hApplet, NULL); + + hAppList = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEWW, L"", + WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_SORTASCENDING|LVS_REPORT, + 0, 0, 0, 0, hMainWnd, NULL, hApplet, NULL); + + (VOID) ListView_SetExtendedListViewStyle(hAppList, LVS_EX_FULLROWSELECT); + + LoadString(hApplet, IDS_SEARCH_TEXT, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + hSearch = CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", szBuf, WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT, + 0, 0, 0, 0, hMainWnd, NULL, hApplet, NULL); + SendMessage(hSearch, WM_SETFONT, (WPARAM)hMainFont, 0); + // Remove button + LoadString(hApplet, IDS_REMOVE_BTN, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + hRemoveBtn = CreateWindowEx(0, L"BUTTON", szBuf, WS_CHILD|WS_VISIBLE|WS_DISABLED|BS_TEXT, + 0, 0, 0, 0, hMainWnd, NULL, hApplet, NULL); + SendMessage(hRemoveBtn, WM_SETFONT, (WPARAM)hMainFont, 0); + // Modify button + LoadString(hApplet, IDS_MODIFY_BTN, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + hModifyBtn = CreateWindowEx(0, L"BUTTON", szBuf, WS_CHILD|WS_VISIBLE|WS_DISABLED|BS_TEXT, + 0, 0, 0, 0, hMainWnd, NULL, hApplet, NULL); + SendMessage(hModifyBtn, WM_SETFONT, (WPARAM)hMainFont, 0); + + hUnderline = LoadBitmap(hApplet, MAKEINTRESOURCE(IDB_UNDERLINE)); + hSearchIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_SEARCH)); + + AddListColumn(); + AddTreeViewItems(); +} + +/* + GetARPInfo - Getting information from ARP cache + Input: szName - Application Name + Output: szPath - Path to image file + szSize - Application size + szLastUsed - Last used time +*/ +static VOID +GetARPInfo(LPCWSTR szName, LPWSTR szPath, LPWSTR szSize, LPWSTR szLastUsed) +{ + APPARPINFO aai = {0}; + DWORD dwSize = sizeof(aai), dwType = REG_BINARY; + SYSTEMTIME systime, localtime; + WCHAR szBuf[MAX_PATH]; + HKEY hKey; + + swprintf(szBuf, L"SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\%s", szName); + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szBuf, + 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + ZeroMemory(&aai, sizeof(APPARPINFO)); + if ((RegQueryValueEx(hKey, L"SlowInfoCache", NULL, &dwType, (LPBYTE)&aai, &dwSize) == ERROR_SUCCESS) && + (aai.Size == sizeof(APPARPINFO))) + { + // Getting path to image + wcscpy(szPath, aai.ImagePath); + + // Getting application size + if (aai.AppSize < (ULONGLONG) 2000000000) + { + swprintf(szSize, L"%.2f", (float)aai.AppSize/(1024*1024)); + } + else wcscpy(szSize,L"---"); + + // Getting last used + if (FileTimeToSystemTime(&aai.LastUsed, &systime)) + { + if (SystemTimeToTzSpecificLocalTime(NULL, &systime, &localtime)) + { + if (((int)localtime.wYear > 1900) && ((int)localtime.wYear < 3000)) + { + swprintf(szLastUsed, L"%02d.%02d.%02d", localtime.wMonth, localtime.wDay, localtime.wYear); + } + else wcscpy(szLastUsed,L"---"); + } + else wcscpy(szLastUsed,L"---"); + } + else wcscpy(szLastUsed,L"---"); + } + else + { + wcscpy(szPath,L"---"); + wcscpy(szSize,L"---"); + wcscpy(szLastUsed,L"---"); + } + } + RegCloseKey(hKey); +} + +/* + AddItemToList - create application list + + hSubKey - handle to the sub key for adding to LPARAM + szDisplayName - display name + ItemIndex - item index + AppName - application name (for getting ARPCache info) +*/ +static VOID +AddItemToList(LPARAM hSubKey, LPWSTR szDisplayName, INT ItemIndex, LPWSTR AppName) +{ + int index; + HICON hIcon = NULL; + LV_ITEM listItem; + WCHAR IconPath[MAX_PATH], AppSize[256], LastUsed[256]; + + GetARPInfo(AppName, IconPath, AppSize, LastUsed); + + if (GetFileAttributes(IconPath) != 0xFFFFFFFF) + { + // FIXME: This function not getting 32-bits icon + ExtractIconEx(IconPath, 0, NULL, &hIcon, 1); + } + + if (hIcon == NULL) + { + hIcon = LoadImage(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); + } + index = ImageList_AddIcon(hImageAppList, hIcon); + DestroyIcon(hIcon); + + ZeroMemory(&listItem, sizeof(LV_ITEM)); + listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; + listItem.pszText = (LPTSTR)szDisplayName; + listItem.lParam = (LPARAM)hSubKey; + listItem.iItem = (int)ItemIndex; + listItem.iImage = index; + int iIndex; + iIndex = ListView_InsertItem(hAppList, &listItem); + ListView_SetItemText(hAppList, iIndex, 1, LastUsed); + ListView_SetItemText(hAppList, iIndex, 2, AppSize); +} + +/* + ShowMode: + if ShowMode = 0 - programs and updates + if ShowMode = 1 - show programs only + if ShowMode = 2 - show updates only +*/ +static VOID +FillSoftwareList(INT ShowMode) +{ + WCHAR pszName[MAX_PATH]; + WCHAR pszDisplayName[MAX_PATH]; + WCHAR pszParentKeyName[MAX_PATH]; + FILETIME FileTime; + HKEY hKey; + HKEY hSubKey; + DWORD dwType; + DWORD dwSize = MAX_PATH; + DWORD dwValue = 0; + BOOL bIsUpdate = FALSE; + BOOL bIsSystemComponent = FALSE; + INT ItemIndex = 0; + + (VOID) ImageList_Destroy(hImageAppList); + (VOID) ListView_DeleteAllItems(hAppList); + + DEVMODE pDevMode; + int ColorDepth; + + pDevMode.dmSize = sizeof(DEVMODE); + pDevMode.dmDriverExtra = 0; + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &pDevMode); + switch (pDevMode.dmBitsPerPel) + { + case 32: ColorDepth = ILC_COLOR32; break; + case 24: ColorDepth = ILC_COLOR24; break; + case 16: ColorDepth = ILC_COLOR16; break; + case 8: ColorDepth = ILC_COLOR8; break; + case 4: ColorDepth = ILC_COLOR4; break; + default: ColorDepth = ILC_COLOR; break; + } + + hImageAppList = ImageList_Create(16, 16, ColorDepth | ILC_MASK, 0, 1); + SendMessage(hAppList, WM_SETREDRAW, FALSE, 0); + + if (RegOpenKey(HKEY_LOCAL_MACHINE, + L"Software\Microsoft\Windows\CurrentVersion\Uninstall", + &hKey) != ERROR_SUCCESS) + { + WCHAR Buf[256]; + + LoadString(hApplet, IDS_UNABLEOPEN_UNINSTKEY, Buf, sizeof(Buf) / sizeof(WCHAR)); + MessageBox(hMainWnd, Buf, NULL, MB_ICONWARNING); + return; + } + + ItemIndex = 0; + dwSize = MAX_PATH; + while (RegEnumKeyEx(hKey, ItemIndex, pszName, &dwSize, NULL, NULL, NULL, &FileTime) == ERROR_SUCCESS) + { + if (RegOpenKey(hKey,pszName,&hSubKey) == ERROR_SUCCESS) + { + dwType = REG_DWORD; + dwSize = sizeof(DWORD); + if (RegQueryValueEx(hSubKey, L"SystemComponent", + NULL, &dwType, + (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS) + { + bIsSystemComponent = (dwValue == 0x1); + } + else + { + bIsSystemComponent = FALSE; + } + + dwType = REG_SZ; + dwSize = MAX_PATH; + bIsUpdate = (RegQueryValueEx(hSubKey, L"ParentKeyName", + NULL, &dwType, + (LPBYTE)pszParentKeyName, + &dwSize) == ERROR_SUCCESS); + dwSize = MAX_PATH; + if (RegQueryValueEx(hSubKey, L"DisplayName", + NULL, &dwType, + (LPBYTE)pszDisplayName, + &dwSize) == ERROR_SUCCESS) + { + if ((ShowMode < 0)||(ShowMode > 2)) ShowMode = 0; + if (!bIsSystemComponent) + { + if (ShowMode == 0) + { + AddItemToList((LPARAM)hSubKey, (LPWSTR)pszDisplayName, ItemIndex, pszName); + } + if ((ShowMode == 1)&&(!bIsUpdate)) + { + AddItemToList((LPARAM)hSubKey, (LPWSTR)pszDisplayName, ItemIndex, pszName); + } + if ((ShowMode == 2)&&(bIsUpdate)) + { + AddItemToList((LPARAM)hSubKey, (LPWSTR)pszDisplayName, ItemIndex, pszName); + } + } + } + } + + dwSize = MAX_PATH; + ItemIndex++; + } + + (VOID) ListView_SetImageList(hAppList, hImageAppList, LVSIL_SMALL); + SendMessage(hAppList, WM_SETREDRAW, TRUE, 0); + RegCloseKey(hSubKey); + RegCloseKey(hKey); +} + +static BOOL +GetAppString(LPCWSTR lpKeyName, LPWSTR lpString) +{ + HKEY hKey; + INT nIndex; + + nIndex = (INT)SendMessage(hAppList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); + if (nIndex != -1) + { + LVITEM item; + + ZeroMemory(&item, sizeof(LVITEM)); + item.mask = LVIF_PARAM; + item.iItem = nIndex; + (VOID) ListView_GetItem(hAppList,&item); + hKey = (HKEY)item.lParam; + + DWORD dwSize, dwType = REG_SZ; + if (RegQueryValueEx(hKey, lpKeyName, NULL, &dwType, + (LPBYTE)lpString, &dwSize) == ERROR_SUCCESS) + { + return TRUE; + } + } + return FALSE; +} + +static VOID +CallUninstall(VOID) +{ + INT nIndex; + HKEY hKey; + DWORD dwType, dwRet; + WCHAR pszUninstallString[MAX_PATH]; + DWORD dwSize; + MSG msg; + + nIndex = (INT)SendMessage(hAppList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); + if (nIndex != -1) + { + LVITEM item; + + ZeroMemory(&item, sizeof(LVITEM)); + item.mask = LVIF_PARAM; + item.iItem = nIndex; + (VOID) ListView_GetItem(hAppList,&item); + hKey = (HKEY)item.lParam; + + dwType = REG_SZ; + dwSize = MAX_PATH; + if (RegQueryValueEx(hKey, L"UninstallString", NULL, &dwType, + (LPBYTE)pszUninstallString, &dwSize) == ERROR_SUCCESS) + { + STARTUPINFO si; + PROCESS_INFORMATION pi; + + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + si.wShowWindow = SW_SHOW; + if (CreateProcess(NULL,pszUninstallString,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) + { + CloseHandle(pi.hThread); + EnableWindow(hMainWnd, FALSE); + + for (;;) + { + dwRet = MsgWaitForMultipleObjects(1, &pi.hProcess, FALSE, INFINITE, QS_ALLEVENTS); + if (dwRet == WAIT_OBJECT_0 + 1) + { + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + else if (dwRet == WAIT_OBJECT_0 || dwRet == WAIT_FAILED) + break; + } + CloseHandle(pi.hProcess); + + EnableWindow(hMainWnd, TRUE); + // Disable all buttons + EnableWindow(hRemoveBtn,FALSE); + EnableWindow(hModifyBtn,FALSE); + // Update software list + FillSoftwareList(0); + SetActiveWindow(hMainWnd); + } + } + else + { + WCHAR szBuf[256]; + + LoadString(hApplet, IDS_UNABLEREAD_UNINSTSTR, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + MessageBox(hMainWnd, szBuf, NULL, MB_ICONWARNING); + } + } +} + +static VOID +ShowPopupMenu(HWND hwndDlg, INT xPos, INT yPos) +{ + INT nIndex; + nIndex = (INT)SendMessage(hAppList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); + if ( nIndex != -1) + { + POINT pt; + RECT lvRect; + HMENU hMenu; + + GetCursorPos(&pt); + + GetWindowRect(hAppList, &lvRect); + if (PtInRect(&lvRect, pt)) + { + hMenu = GetSubMenu(LoadMenu(hApplet, MAKEINTRESOURCE(IDR_POPUP_APP)),0); + TrackPopupMenuEx(hMenu, TPM_RIGHTBUTTON, xPos, yPos, hwndDlg, NULL); + DestroyMenu(hMenu); + } + } +} + +static VOID +GetAppInfo(LPWSTR lpInfo) +{ + WCHAR szBuf[1024], szDesc[1024]; + INT iIndex; + HKEY hKey; + + iIndex = SendMessage(hAppList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED); + if (iIndex != -1) + { + LVITEM item; + DWORD dwSize = 2048; + + ZeroMemory(&item, sizeof(LVITEM)); + item.mask = LVIF_PARAM; + item.iItem = iIndex; + (VOID) ListView_GetItem(hAppList,&item); + hKey = (HKEY)item.lParam; + + wcscpy(lpInfo,L"\0"); + if (RegQueryValueEx(hKey, L"Publisher", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_PUBLISHER, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + //wcscat(lpInfo, szDesc); + swprintf(lpInfo, L"%s%s\n", szDesc, szBuf); + } + if (RegQueryValueEx(hKey, L"RegOwner", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_REG_OWNER, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"ProductID", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_PRODUCT_ID, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"DisplayVersion", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_VERSION, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"Contact", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_CONTACT, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"HelpLink", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_SUP_INFO, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"HelpTelephone", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_SUP_PHONE, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"URLUpdateInfo", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_PRODUCT_UPD, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"Readme", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_README, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (RegQueryValueEx(hKey, L"Comments", NULL, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS) + { + LoadString(hApplet, IDS_INF_COMMENTS, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscat(lpInfo, szDesc); + swprintf(lpInfo,L"%s%s\n", lpInfo, szBuf); + } + if (wcslen(lpInfo) < 10) + { + LoadString(hApplet, IDS_NO_INFORMATION, szDesc, sizeof(szDesc) / sizeof(WCHAR)); + wcscpy(lpInfo, szDesc); + } + } +} + +static VOID +ShowAppInfo(VOID) +{ + WCHAR Info[2048], szBuf[1024]; + + if (-1 != (INT) SendMessage(hAppList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED)) + { + GetAppInfo(Info); + ListView_GetItemText(hAppList, SendMessage(hAppList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED), 0, szBuf, sizeof(szBuf)); + ShowMessage(szBuf, Info); + } +} + +static VOID +GetListItemText(LPARAM lParam1, LPARAM lParam2, INT iSubItem, LPWSTR Item1, LPWSTR Item2) +{ + LVFINDINFO find; + INT iIndex; + + find.flags = LVFI_PARAM; + + find.lParam = lParam1; + iIndex = ListView_FindItem(hAppList, -1, &find); + ListView_GetItemText(hAppList, iIndex, iSubItem, Item1, sizeof(Item1)); + + find.lParam = lParam2; + iIndex = ListView_FindItem(hAppList, -1, &find); + ListView_GetItemText(hAppList, iIndex, iSubItem, Item2, sizeof(Item2)); +} + +static INT CALLBACK +CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) +{ + WCHAR szItem1[MAX_PATH], szItem2[MAX_PATH]; + + switch ((INT)lParamSort) + { + case 0: // Name + { + GetListItemText(lParam1, lParam2, 0, szItem1, szItem2); + if (bAscending == TRUE) + return wcscmp(szItem2, szItem1); + else + return wcscmp(szItem1, szItem2); + } + case 1: // Date + GetListItemText(lParam1, lParam2, 1, szItem1, szItem2); + if (bAscending == TRUE) + return wcscmp(szItem2, szItem1); + else + return wcscmp(szItem1, szItem2); + case 2: // Size + { + // FIXME: No correct sorting by application size + INT Size1, Size2; + + GetListItemText(lParam1, lParam2, 2, szItem1, szItem2); + if (wcscmp(szItem1, L"---") == 0) wcscpy(szItem1, L"0"); + if (wcscmp(szItem2, L"---") == 0) wcscpy(szItem2, L"0"); + Size1 = _wtoi(szItem1); + Size2 = _wtoi(szItem2); + if (Size1 < Size2) + { + if(bAscending == TRUE) + return -1; + else + return 1; + } + else if (Size1 == Size2) + { + return 0; + } + else if (Size1 > Size2) + { + if(bAscending == TRUE) + return 1; + else + return -1; + } + } + } + + return 0; +} + +static BOOL +LoadSettings(VOID) +{ + HKEY hKey; + DWORD dwSize; + BOOL Ret; + + if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\ReactOS\AppWiz", 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + dwSize = sizeof(APPWIZSETTINGS); + if (RegQueryValueEx(hKey, L"Settings", NULL, NULL, (LPBYTE)&AppWizSettings, &dwSize) == ERROR_SUCCESS) + { + if (AppWizSettings.Size == sizeof(APPWIZSETTINGS)) + Ret = TRUE; + else + Ret = FALSE; + } + else Ret = FALSE; + } + else Ret = FALSE; + + RegCloseKey(hKey); + return Ret; +} + +static BOOL +SaveSettings(VOID) +{ + HKEY hKey; + BOOL Ret; + + if (RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\ReactOS\AppWiz", 0, NULL, + REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) + { + AppWizSettings.Size = sizeof(APPWIZSETTINGS); + if (RegSetValueEx(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&AppWizSettings, sizeof(APPWIZSETTINGS)) == ERROR_SUCCESS) + Ret = TRUE; + else + Ret = FALSE; + } + else Ret = FALSE; + + RegCloseKey(hKey); + return Ret; +} + +static LRESULT CALLBACK +WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +{ + static RECT DescriptionRect; + WCHAR szBuf[1024]; + + switch (Message) + { + case WM_CREATE: + { + hMainWnd = hwnd; + MoveWindow(hMainWnd, AppWizSettings.Left, AppWizSettings.Top, + AppWizSettings.Right - AppWizSettings.Left, + AppWizSettings.Bottom - AppWizSettings.Top, TRUE); + if (AppWizSettings.Maximized) ShowWindow(hMainWnd, SW_MAXIMIZE); + ShowMessage(Strings[0],Strings[1]); // Welcome message + InitControls(); + } + break; + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case ID_APP_REMOVE: + CallUninstall(); + break; + } + if(HIWORD(wParam) == BN_CLICKED) + { + if (lParam == (LPARAM)hRemoveBtn) + { + CallUninstall(); + } + } + if (lParam == (LPARAM)hSearch) + { + switch (HIWORD(wParam)) + { + case EN_SETFOCUS: + { + WCHAR Tmp[1024]; + + LoadString(hApplet, IDS_SEARCH_TEXT, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + GetWindowText(hSearch, Tmp, 1024); + if (wcscmp(szBuf, Tmp) == 0) SetWindowText(hSearch, L""); + } + break; + case EN_KILLFOCUS: + { + GetWindowText(hSearch, szBuf, 1024); + if (wcslen(szBuf) < 1) + { + LoadString(hApplet, IDS_SEARCH_TEXT, szBuf, sizeof(szBuf) / sizeof(WCHAR)); + SetWindowText(hSearch, szBuf); + } + } + break; + case EN_CHANGE: + break; + } + } + } + break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hwnd, &ps); + HDC BackbufferHdc = CreateCompatibleDC(hdc); + HBITMAP BackbufferBmp = CreateCompatibleBitmap(hdc, ps.rcPaint.right, ps.rcPaint.bottom); + + SelectObject(BackbufferHdc, BackbufferBmp); + FillRect(BackbufferHdc, &ps.rcPaint, (HBRUSH)COLOR_APPWORKSPACE); + DrawIconEx(BackbufferHdc, 153, 1, hSearchIcon, 24, 24, 0, NULL, DI_NORMAL|DI_COMPAT); + DrawDescription(BackbufferHdc, DescriptionRect); + BitBlt(hdc, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, BackbufferHdc, 0, 0, SRCCOPY); + DeleteObject(BackbufferBmp); + DeleteDC(BackbufferHdc); + EndPaint(hwnd, &ps); + } + break; + case WM_NOTIFY: + { + LPNMHDR data = (LPNMHDR)lParam; + + switch (data->code) + { + case TVN_SELCHANGED: + if(data->hwndFrom == hActList) + { + // Add items to programs list + FillSoftwareList(((LPNMTREEVIEW)lParam)->itemNew.lParam); + // Set default titile and message + ShowMessage(Strings[0], Strings[1]); + // Disable all buttons + EnableWindow(hRemoveBtn, FALSE); + EnableWindow(hModifyBtn, FALSE); + } + break; + case NM_CLICK: + if(data->hwndFrom == hAppList) + { + if (-1 != (INT) SendMessage(hAppList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED)) + { + EnableWindow(hRemoveBtn, TRUE); + if (GetAppString(L"ModifyPath", NULL)) + EnableWindow(hModifyBtn, TRUE); + } + ShowAppInfo(); + } + break; + case NM_DBLCLK: + if(data->hwndFrom == hAppList) + { + if (-1 != (INT) SendMessage(hAppList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED)) + { + CallUninstall(); + } + } + break; + case LVN_COLUMNCLICK: + { + LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; + + (VOID) ListView_SortItems(hAppList, CompareFunc, pnmv->iSubItem); + if (bAscending == TRUE) + { + bAscending = FALSE; + } + else + { + bAscending = TRUE; + } + } + break; + } + } + break; + case WM_SIZING: + { + LPRECT pRect = (LPRECT)lParam; + if (pRect->right-pRect->left < 520) + pRect->right = pRect->left + 520; + + if (pRect->bottom-pRect->top < 400) + pRect->bottom = pRect->top + 400; + } + break; + case WM_SIZE: + { + // Actions list + ResizeControl(hActList, 0, 1, 150, HIWORD(lParam)-180); + + // Applications list + ResizeControl(hAppList, 152, 25, LOWORD(lParam), HIWORD(lParam)-180); + + // Search Edit + ResizeControl(hSearch, 180, 1, LOWORD(lParam), 25); + + RECT Rect = {1, HIWORD(lParam)-178, LOWORD(lParam)-1, HIWORD(lParam)-1}; + DescriptionRect = Rect; + + // Buttons + MoveWindow(hRemoveBtn, LOWORD(lParam)-105, HIWORD(lParam)-30, 100, 25, TRUE); // Remove button + MoveWindow(hModifyBtn, LOWORD(lParam)-208, HIWORD(lParam)-30, 100, 25, TRUE); // Modify button + + (VOID) ListView_SetColumnWidth(hAppList, 0, LOWORD(lParam)-330); + + // Update title and info + ShowAppInfo(); + } + break; + case WM_ACTIVATEAPP: + ShowAppInfo(); + break; + case WM_CONTEXTMENU: + { + // Show popup menu for programs list + ShowPopupMenu(hwnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + } + break; + case WM_DESTROY: + { + WINDOWPLACEMENT wp; + + // Save settings + ShowWindow(hMainWnd, SW_HIDE); + wp.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(hMainWnd, &wp); + AppWizSettings.Left = wp.rcNormalPosition.left; + AppWizSettings.Top = wp.rcNormalPosition.top; + AppWizSettings.Right = wp.rcNormalPosition.right; + AppWizSettings.Bottom = wp.rcNormalPosition.bottom; + if (IsZoomed(hMainWnd) || (wp.flags & WPF_RESTORETOMAXIMIZED)) + AppWizSettings.Maximized = TRUE; + else + AppWizSettings.Maximized = FALSE; + SaveSettings(); + // Destroy all and quit + DeleteObject(hMainFont); + DeleteObject(hSearchIcon); + PostQuitMessage(0); + } + break; + } + return DefWindowProc(hwnd, Message, wParam, lParam); +} + +static VOID +InitSettings(VOID) +{ + if (!LoadSettings()) + { + AppWizSettings.Maximized = FALSE; + AppWizSettings.Left = 0; + AppWizSettings.Top = 0; + AppWizSettings.Right = 520; + AppWizSettings.Bottom = 400; + } +} + +static INT +MainWindowCreate(VOID) +{ + WNDCLASS WndClass = {0}; + MSG msg; + WCHAR szBuf[256]; + + // Load welcome strings + LoadString(hApplet, IDS_WELCOME_TITLE, Strings[0], sizeof(szBuf) / sizeof(WCHAR)); + LoadString(hApplet, IDS_WELCOME_MSG, Strings[1], sizeof(szBuf) / sizeof(WCHAR)); + + InitSettings(); + + // Create the window + WndClass.lpszClassName = L"rosappwiz"; + WndClass.lpfnWndProc = (WNDPROC)WndProc; + WndClass.hInstance = hApplet; + WndClass.style = CS_HREDRAW | CS_VREDRAW; + WndClass.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM)); + WndClass.hCursor = LoadCursor(hApplet, IDC_ARROW); + WndClass.hbrBackground = (HBRUSH)COLOR_BTNFACE + 1; + + if (!RegisterClass(&WndClass)) return 0; + + LoadString(hApplet, IDS_CPLSYSTEMNAME, szBuf, 256); + hMainWnd = CreateWindow(L"rosappwiz", szBuf, + WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE | WS_CAPTION, + CW_USEDEFAULT, CW_USEDEFAULT, + 0, 0, NULL, NULL, hApplet, NULL); + + // Show it + ShowWindow(hMainWnd, SW_SHOW); + UpdateWindow(hMainWnd); + + // Message Loop + while(GetMessage(&msg,NULL,0,0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return 0; +} + +/* Control Panel Callback */ +LONG CALLBACK +CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2) +{ + CPLINFO *CPlInfo; + DWORD i; + + UNREFERENCED_PARAMETER(hwndCPl); + + i = (DWORD)lParam1; + switch (uMsg) + { + case CPL_INIT: + return TRUE; + + case CPL_GETCOUNT: + return 1; + + case CPL_INQUIRE: + CPlInfo = (CPLINFO*)lParam2; + CPlInfo->lData = 0; + CPlInfo->idIcon = IDI_CPLSYSTEM; + CPlInfo->idName = IDS_CPLSYSTEMNAME; + CPlInfo->idInfo = IDS_CPLSYSTEMDESCRIPTION; + break; + + case CPL_DBLCLK: + MainWindowCreate(); + break; + } + + return FALSE; +} + + +BOOL WINAPI +DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved) +{ + UNREFERENCED_PARAMETER(lpvReserved); + + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + CoInitialize(NULL); + hApplet = hinstDLL; + break; + } + + return TRUE; +}
Propchange: trunk/reactos/dll/cpl/appwiz-new/appwiz.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/appwiz.def URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/appwiz.d... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/appwiz.def (added) +++ trunk/reactos/dll/cpl/appwiz-new/appwiz.def Mon Feb 18 20:25:40 2008 @@ -1,0 +1,9 @@ +LIBRARY appwiz.cpl + +EXPORTS +CPlApplet@16 +;NewLinkHere@16 +;NewLinkHereA@16 +;NewLinkHereW@16 + +; EOF
Propchange: trunk/reactos/dll/cpl/appwiz-new/appwiz.def ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/appwiz.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/appwiz.h... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/appwiz.h (added) +++ trunk/reactos/dll/cpl/appwiz-new/appwiz.h Mon Feb 18 20:25:40 2008 @@ -1,0 +1,78 @@ +#ifndef __CPL_APPWIZ_H +#define __CPL_APPWIZ_H + +#define COBJMACROS +#include <windows.h> +#include <windowsx.h> /* GET_X/Y_LPARAM */ +#include <commctrl.h> +#include <cpl.h> +#include <prsht.h> +#include <stdlib.h> +#include <stdio.h> +#include <wchar.h> +#include <stdlib.h> +#include <stdarg.h> +#include <process.h> +#include <prsht.h> +#include <shlobj.h> +#include <objbase.h> +#include <shobjidl.h> +#include <shlguid.h> +#include <richedit.h> + +#include "resource.h" + +typedef LONG (CALLBACK *CPLAPPLET_PROC)(VOID); + +typedef struct +{ + int idIcon; + int idName; + int idDescription; + CPLAPPLET_PROC AppletProc; +} APPLET, *PAPPLET; + +typedef struct +{ + WCHAR szTarget[MAX_PATH]; + WCHAR szWorkingDirectory[MAX_PATH]; + WCHAR szDescription[MAX_PATH]; + WCHAR szLinkName[MAX_PATH]; +} CREATE_LINK_CONTEXT, *PCREATE_LINK_CONTEXT; + +typedef struct +{ + DWORD Size; + DWORD Masks; + ULONGLONG AppSize; + FILETIME LastUsed; + int TimesUsed; + WCHAR ImagePath[MAX_PATH]; +} APPARPINFO; + +typedef struct +{ + DWORD Size; + BOOL Maximized; + INT Left; + INT Top; + INT Right; + INT Bottom; +} APPWIZSETTINGS; + +/* appwiz.c */ +HINSTANCE hApplet; // Main applet instance +HWND hMainWnd, // Main window + hActList, // Actions list + hAppList, // Programs list + hSearch, //Search line + hRemoveBtn, // Remove button + hModifyBtn; // Modify button + +APPWIZSETTINGS AppWizSettings; + +void ShowLastWin32Error(HWND hWndOwner); + +#endif /* __CPL_APPWIZ_H */ + +/* EOF */
Propchange: trunk/reactos/dll/cpl/appwiz-new/appwiz.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/appwiz.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/appwiz.r... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/appwiz.rbuild (added) +++ trunk/reactos/dll/cpl/appwiz-new/appwiz.rbuild Mon Feb 18 20:25:40 2008 @@ -1,0 +1,23 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<module name="appwiz-new" type="win32dll" extension=".cpl" baseaddress="${BASEADDRESS_APPWIZ}" installbase="system32" installname="appwiz-new.cpl" unicode="yes" allowwarnings="true"> + <importlibrary definition="appwiz.def" /> + <include base="appwiz-new">.</include> + <define name="__USE_W32API" /> + <define name="_WIN32_IE">0x600</define> + <define name="_WIN32_WINNT">0x501</define> + <define name="WINVER">0x0501</define> + <library>kernel32</library> + <library>advapi32</library> + <library>user32</library> + <library>comctl32</library> + <library>msvcrt</library> + <library>ole32</library> + <library>uuid</library> + <library>shell32</library> + <library>msimg32</library> + <library>gdi32</library> + <file>appwiz.c</file> + <file>createlink.c</file> + <file>appwiz.rc</file> +</module>
Propchange: trunk/reactos/dll/cpl/appwiz-new/appwiz.rbuild ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/appwiz.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/appwiz.r... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/appwiz.rc (added) +++ trunk/reactos/dll/cpl/appwiz-new/appwiz.rc Mon Feb 18 20:25:40 2008 @@ -1,0 +1,27 @@ +#include "resource.h" +#include <windows.h> + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Software Control Panel\0" +#define REACTOS_STR_INTERNAL_NAME "appwiz\0" +#define REACTOS_STR_ORIGINAL_FILENAME "appwiz.cpl\0" +#ifdef _MSC_VER +#include <../../../reactos/version.rc> +#else +#include <reactos/version.rc> +#endif + +IDI_CPLSYSTEM ICON "resources/applet.ico" +IDI_APPICO ICON "resources/1501.ico" +IDI_INSTICO ICON "resources/1502.ico" +IDI_RECBINICO ICON "resources/1503.ico" +IDI_SEARCH ICON "resources/search.ico" + +IDB_WATERMARK BITMAP "resources/watermark.bmp" +IDB_UNDERLINE BITMAP "resources/underline.bmp" +IDB_SELECT BITMAP "resources/select.bmp" +IDB_ICON BITMAP "resources/icon.bmp" + +#include "rsrc.rc"
Propchange: trunk/reactos/dll/cpl/appwiz-new/appwiz.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/createlink.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/createli... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/createlink.c (added) +++ trunk/reactos/dll/cpl/appwiz-new/createlink.c Mon Feb 18 20:25:40 2008 @@ -1,0 +1,13 @@ +/* + * + * PROJECT: ReactOS Software Control Panel + * FILE: dll/cpl/appwiz/createlink.c + * PURPOSE: ReactOS Software Control Panel + * PROGRAMMER: Gero Kuehn (reactos.filter@gkware.com) + * Dmitry Chapyshev (lentind@yandex.ru) + * Johannes Anderwald + * UPDATE HISTORY: + * 06-17-2004 Created + */ + +#include "appwiz.h"
Propchange: trunk/reactos/dll/cpl/appwiz-new/createlink.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/lang/en-... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/lang/en-US.rc (added) +++ trunk/reactos/dll/cpl/appwiz-new/lang/en-US.rc Mon Feb 18 20:25:40 2008 @@ -1,0 +1,200 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +IDR_POPUP_APP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "&Remove", ID_APP_REMOVE + MENUITEM "&Modify", ID_APP_MODIFY, GRAYED + MENUITEM "R&epair", ID_APP_REPAIR, GRAYED + END +END + +IDD_NETINSTALL DIALOGEX 0, 0, 242, 221 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Network Install" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "&Install...", IDC_INSTALL, 150, 171, 85, 14 + LTEXT "&The following software can be automatically installed by ReactOS. To install a program, select it from the list and click Install.", IDC_NETTEXT, 40, 6, 195, 32 + LISTBOX IDC_NETPROGLIST, 7, 42, 228, 125, LBS_STANDARD | WS_TABSTOP + ICON IDI_APPICO, IDC_NETICON, 9, 10, 20, 20 +END + +IDD_CREATESHORTCUT DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Create Shortcut" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "This wizard helps you to create shortcuts to local or network programs, files, folders, computers, or Internet addresses.", -1, 97, 7, 195, 28 + LTEXT "&Type the location of the item:", IDC_LOCATIONITEM, 98, 46, 196, 8 + EDITTEXT IDC_LOCITEMEDIT, 97, 58, 133, 14, ES_AUTOHSCROLL + PUSHBUTTON "B&rowse...", IDC_LOCBROWSE, 233, 58, 60, 14 + LTEXT "Click Next to continue.", -1, 97, 95, 198, 8 +END + +IDD_SELPROGFOLDER DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Select Program Folder" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Select a folder to place this shortcut in:", -1, 100, 7, 193, 10 + CONTROL "", IDC_SELFOLDER, "SYSTREEVIEW32", WS_BORDER | WS_TABSTOP | 0x00000028, 100, 19, 193, 90 + PUSHBUTTON "New &Folder...", IDC_NEWFOLDERBTN, 218, 116, 75, 14 + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT +END + +IDD_SELPROGTITLE DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Select a Title for the Program" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Type a name for this shortcut:", -1, 100, 10, 194, 10 + EDITTEXT IDC_NAMESCEDIT, 100, 23, 194, 14, ES_AUTOHSCROLL + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "Click Finish to create the shortcut.", -1, 100, 61, 194, 8 +END + +IDD_SELPROGICON DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Select an Icon" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Select an icon for the shortcut:", -1, 100, 8, 195, 10 + LISTBOX IDC_SELICONLIST, 100, 20, 192, 130, LBS_OWNERDRAWFIXED | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | LBS_DISABLENOSCROLL | WS_HSCROLL | WS_TABSTOP + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT +END + +IDD_INSTFROMCD DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Install Program From Floppy Disk or CD-ROM" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "", IDC_HEADTEXT, 101, 7, 193, 28 + ICON 0, IDC_INSTFROMCDICON, 100, 60, 18, 20 + LTEXT "", IDC_INSTFROMCDTEXT, 123, 66, 146, 8 +END + +IDD_RUNINSTPROG DIALOGEX 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Run Installation Program" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "", IDC_HEADTEXT, 101, 6, 195, 28 + LTEXT "&Open:", IDC_LOCATIONITEM, 100, 53, 195, 8 + EDITTEXT IDC_LOCITEMEDIT, 98, 64, 133, 14, ES_AUTOHSCROLL + PUSHBUTTON "B&rowse...", IDC_LOCBROWSE, 234, 64, 60, 14 +END + +IDD_CHANGEUSEROPT DIALOG 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Change User Option" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "You have the option to make this new program available to everyone.", 1012, 101, 5, 194, 40 + AUTORADIOBUTTON "Install", IDC_INSTALLRB, 108, 51, 146, 14, BS_MULTILINE | WS_GROUP + AUTORADIOBUTTON "Execute", IDC_LOCATIONITEM, 108, 74, 146, 14, BS_MULTILINE | NOT WS_TABSTOP +END + +IDD_FINISHADMINST DIALOG 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Finish Admin Install" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "Change ini mapping back by clicking Finish.", IDC_HEADTEXT, 98, 7, 196, 40 +END + +IDD_AFTERINST DIALOG 0, 0, SHORTCUTDLG_WIDTH, SHORTCUTDLG_HEIGHT +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "After Installation" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDB_WATERMARK, "STATIC", SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, WATERMARK_WIDTH, SHORTCUTDLG_HEIGHT + LTEXT "Please press Next.", IDC_HEADTEXT, 98, 7, 197, 40 +END + +IDD_RUNINSTPROG2 DIALOG 0, 0, 250, 120 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Run Installation Program" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Please specify the uninstall program location", IDC_UNINSTLOCTEXT, 9, 8, 235, 37 + LTEXT "&Command line for the uninstall program:", IDC_LOCATIONITEM, 9, 57, 237, 8 + EDITTEXT IDC_LOCITEMEDIT, 7, 69, 165, 14, ES_AUTOHSCROLL + PUSHBUTTON "B&rowse...", IDC_LOCBROWSE, 178, 69, 66, 14 + DEFPUSHBUTTON "OK", IDOK, 118, 100, 60, 14 + PUSHBUTTON "Cancel", IDCANCEL, 184, 100, 60, 14 +END + +IDD_WARNING DIALOG 20, 20, 255, 100 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Warning" +FONT 8, "MS Shell Dlg" +BEGIN + ICON "", IDC_WARNINGICON, 8, 10, 20, 20 + LTEXT "There are other users logged on to this computer.", -1, 37, 8, 214, 10 + LTEXT "If you uninstall this program while another user is running it, the program might not uninstall completely.", -1, 37, 23, 212, 22 + LTEXT "To properly change or remove this program, switch to and log off each user before you continue.", IDC_WARNINGTEXT, 37, 46, 212, 26 + PUSHBUTTON "&Switch User", IDC_SWITCHUSER, 61, 81, 60, 14 + PUSHBUTTON "&Continue", IDOK, 125, 81, 60, 14 + PUSHBUTTON "Cancel", IDCANCEL, 189, 81, 60, 14 +END + +IDD_REMSHORTCUTS DIALOGEX 20, 20, 220, 200 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION +CAPTION "Remove Shortcuts/Folders" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&To remove an item from the Start menu, select the item and click Remove.", IDC_UNINSTLOCTEXT, 10, 7, 204, 16 + CONTROL "", IDC_SELFOLDER, "SYSTREEVIEW32", WS_BORDER | WS_TABSTOP | 0x00000023, 10, 28, 200, 145 + PUSHBUTTON "&Remove", IDC_REMOVEBTN, 84, 182, 60, 14 + DEFPUSHBUTTON "Close", IDOK, 151, 182, 60, 14 +END + +IDD_ADDLATER DIALOGEX 0, 0, 220, 160 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTERMOUSE | WS_POPUPWINDOW | WS_CAPTION +CAPTION "Add Later" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "You may choose a date and time when you would like to add this program to your computer. For example, you can schedule this to happen when you are away from your computer.", IDC_UNINSTLOCTEXT, 7, 4, 208, 33 + AUTORADIOBUTTON "&Add program later ", IDC_ADDPROGLATER, 7, 47, 207, 10, WS_GROUP + CONTROL "Picker", 12368, "SYSDATETIMEPICK32", WS_BORDER | WS_TABSTOP | 0x0000000C, 29, 62, 107, 14 + AUTORADIOBUTTON "&Do not add program", IDC_NOTADDPROG, 7, 87, 208, 10 + DEFPUSHBUTTON "OK", IDOK, 89, 141, 60, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 154, 141, 60, 14, NOT WS_TABSTOP +END + +STRINGTABLE +BEGIN + IDS_CPLSYSTEMNAME "Add or Remove Programs" + IDS_CPLSYSTEMDESCRIPTION "Install or remove programs and ReactOS components." + IDS_UNABLEOPEN_UNINSTKEY "Unable to open Uninstall Key" + IDS_LIST_TITLE "List" + IDS_SIZE_TITLE "Size (MB)" + IDS_LAST_USED "Last Used" + IDS_PROGANDUPDATES "Programs & updates" + IDS_PROGRAMS_ONLY "Programs only" + IDS_UPDATES_ONLY "Updates only" + IDS_WELCOME_TITLE "Welcome to the Add or Remove Programs" + IDS_WELCOME_MSG "Please choose a category on the left or select application on the list for removing or viewing information." + IDS_SEARCH_TEXT "Search in the list..." + IDS_REMOVE_BTN "&Remove" + IDS_MODIFY_BTN "&Modify" + IDS_UNABLEREAD_UNINSTSTR "Unable to read UninstallString. This entry is invalid or has been created by an MSI installer." + IDS_INF_REG_OWNER "Registered Owner: " + IDS_INF_PRODUCT_ID "Product ID: " + IDS_INF_PUBLISHER "Publisher: " + IDS_INF_VERSION "Version: " + IDS_INF_CONTACT "Contact: " + IDS_INF_SUP_INFO "Support Information: " + IDS_INF_SUP_PHONE "Support Telephone: " + IDS_INF_PRODUCT_UPD "Product Updates: " + IDS_INF_README "Readme: " + IDS_INF_COMMENTS "Comments: " + IDS_NO_INFORMATION "No information about this program." +END
Propchange: trunk/reactos/dll/cpl/appwiz-new/lang/en-US.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/resource.h (added) +++ trunk/reactos/dll/cpl/appwiz-new/resource.h Mon Feb 18 20:25:40 2008 @@ -1,0 +1,100 @@ +#ifndef __CPL_RESOURCE_H +#define __CPL_RESOURCE_H + +/* dialog sizes */ +#define SHORTCUTDLG_WIDTH 300 +#define SHORTCUTDLG_HEIGHT 160 +#define WATERMARK_WIDTH 90 + +/* menus */ +#define IDR_POPUP_APP 14000 + +/* menu items */ +#define ID_APP_REMOVE 14100 +#define ID_APP_MODIFY 14101 +#define ID_APP_REPAIR 14102 + +/* icons */ +#define IDI_CPLSYSTEM 1500 +#define IDI_APPICO 1501 +#define IDI_INSTICO 1502 +#define IDI_RECBINICO 1503 +#define IDI_SEARCH 1504 + +/* dialogs */ +#define IDD_NETINSTALL 100 +#define IDD_CREATESHORTCUT 200 +#define IDD_SELPROGFOLDER 201 +#define IDD_SELPROGTITLE 202 +#define IDD_SELPROGICON 203 +#define IDD_INSTFROMCD 300 +#define IDD_RUNINSTPROG 301 +#define IDD_CHANGEUSEROPT 302 +#define IDD_FINISHADMINST 304 +#define IDD_AFTERINST 305 +#define IDD_RUNINSTPROG2 306 +#define IDD_WARNING 307 +#define IDD_REMSHORTCUTS 400 +#define IDD_ADDLATER 12544 + +/* bitmaps */ +#define IDB_WATERMARK 1019 +#define IDB_UNDERLINE 10000 +#define IDB_ICON 10001 +#define IDB_SELECT 10002 + +/* strings */ +#define IDS_CPLSYSTEMNAME 2001 +#define IDS_CPLSYSTEMDESCRIPTION 2002 +#define IDS_UNABLEOPEN_UNINSTKEY 15000 +#define IDS_LIST_TITLE 15001 +#define IDS_SIZE_TITLE 15002 +#define IDS_LAST_USED 15003 +#define IDS_PROGANDUPDATES 15004 +#define IDS_PROGRAMS_ONLY 15005 +#define IDS_UPDATES_ONLY 15006 +#define IDS_WELCOME_TITLE 15007 +#define IDS_WELCOME_MSG 15008 +#define IDS_SEARCH_TEXT 15009 +#define IDS_REMOVE_BTN 15010 +#define IDS_MODIFY_BTN 15011 +#define IDS_UNABLEREAD_UNINSTSTR 15012 +#define IDS_INF_REG_OWNER 15013 +#define IDS_INF_PRODUCT_ID 15014 +#define IDS_INF_PUBLISHER 15015 +#define IDS_INF_VERSION 15016 +#define IDS_INF_CONTACT 15017 +#define IDS_INF_SUP_INFO 15018 +#define IDS_INF_SUP_PHONE 15019 +#define IDS_INF_PRODUCT_UPD 15020 +#define IDS_INF_README 15021 +#define IDS_INF_COMMENTS 15022 +#define IDS_NO_INFORMATION 15023 + +/* controls */ +#define IDC_INSTALL 1000 +#define IDC_INSTALLRB 1001 +#define IDC_LOCATIONITEM 1002 +#define IDC_LOCITEMEDIT 1003 +#define IDC_LOCBROWSE 1004 +#define IDC_INSTFROMCDTEXT 1005 +#define IDC_INSTFROMCDICON 1006 +#define IDC_NETPROGLIST 1011 +#define IDC_HEADTEXT 1012 +#define IDC_WARNINGICON 1013 +#define IDC_SWITCHUSER 1014 +#define IDC_WARNINGTEXT 1017 +#define IDC_NAMESCEDIT 1020 +#define IDC_SELICONLIST 1021 +#define IDC_SELFOLDER 1022 +#define IDC_NEWFOLDERBTN 1027 +#define IDC_REMOVEBTN 1030 +#define IDC_UNINSTLOCTEXT 1031 +#define IDC_NETTEXT 1050 +#define IDC_NETICON 1051 +#define IDC_ADDPROGLATER 12369 +#define IDC_NOTADDPROG 12370 + +#endif /* __CPL_RESOURCE_H */ + +/* EOF */
Propchange: trunk/reactos/dll/cpl/appwiz-new/resource.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/cpl/appwiz-new/resources/1501.ico URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/1501.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/1502.ico URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/1502.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/1503.ico URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/1503.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/applet.ico URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/applet.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/icon.bmp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/icon.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/search.ico URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/search.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/select.bmp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/select.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/underline.bmp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/underline.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/resources/watermark.bmp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/resource... ============================================================================== Binary file - no diff available.
Propchange: trunk/reactos/dll/cpl/appwiz-new/resources/watermark.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/reactos/dll/cpl/appwiz-new/rsrc.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz-new/rsrc.rc?... ============================================================================== --- trunk/reactos/dll/cpl/appwiz-new/rsrc.rc (added) +++ trunk/reactos/dll/cpl/appwiz-new/rsrc.rc Mon Feb 18 20:25:40 2008 @@ -1,0 +1,4 @@ +#include "resource.h" +#include <windows.h> + +#include "lang/en-US.rc"
Propchange: trunk/reactos/dll/cpl/appwiz-new/rsrc.rc ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/dll/cpl/cpl.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/cpl.rbuild?rev=3241... ============================================================================== --- trunk/reactos/dll/cpl/cpl.rbuild (original) +++ trunk/reactos/dll/cpl/cpl.rbuild Mon Feb 18 20:25:40 2008 @@ -6,6 +6,9 @@ </directory> <directory name="appwiz"> <xi:include href="appwiz/appwiz.rbuild" /> +</directory> +<directory name="appwiz-new"> + <xi:include href="appwiz-new/appwiz.rbuild" /> </directory> <directory name="desk"> <xi:include href="desk/desk.rbuild" />