[ros-diffs] [dchapyshev] 32412: - Implement new appwiz

dchapyshev at svn.reactos.org dchapyshev at svn.reactos.org
Mon Feb 18 18:25:40 CET 2008


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?rev=32412&view=auto
==============================================================================
--- 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 at 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.def?rev=32412&view=auto
==============================================================================
--- 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 at 16
+;NewLinkHere at 16
+;NewLinkHereA at 16
+;NewLinkHereW at 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?rev=32412&view=auto
==============================================================================
--- 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.rbuild?rev=32412&view=auto
==============================================================================
--- 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.rc?rev=32412&view=auto
==============================================================================
--- 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/createlink.c?rev=32412&view=auto
==============================================================================
--- 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 at gkware.com)
+ *				 Dmitry Chapyshev (lentind at 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-US.rc?rev=32412&view=auto
==============================================================================
--- 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.h?rev=32412&view=auto
==============================================================================
--- 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/resources/1501.ico?rev=32412&view=auto
==============================================================================
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/resources/1502.ico?rev=32412&view=auto
==============================================================================
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/resources/1503.ico?rev=32412&view=auto
==============================================================================
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/resources/applet.ico?rev=32412&view=auto
==============================================================================
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/resources/icon.bmp?rev=32412&view=auto
==============================================================================
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/resources/search.ico?rev=32412&view=auto
==============================================================================
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/resources/select.bmp?rev=32412&view=auto
==============================================================================
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/resources/underline.bmp?rev=32412&view=auto
==============================================================================
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/resources/watermark.bmp?rev=32412&view=auto
==============================================================================
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?rev=32412&view=auto
==============================================================================
--- 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=32412&r1=32411&r2=32412&view=diff
==============================================================================
--- 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" />




More information about the Ros-diffs mailing list