Sync to Wine-20050725: Michael Jung mjung@iss.tu-darmstadt.de - Initial support for the IPersistFolder3 interface. - Use CP_UNIXCP instead of CP_ACP when converting paths (Pointed out by Troy Rollo). - Add file type column in detailed shell view. - Make the order of shell view columns 'prefix-compatible' with shfldr_fs. - Don't remove filename extensions for path pidls in GetDisplayNameOf. - Do filename postprocessing in GetDisplayNameOf (Hide filename extensions if appropriate). - Don't cache child pidls in UnixFolder, but create them on the fly. - Don't use unix filesystem specific attributes in UnixFolder's pidls. - Partially implemented UnixFolder's ISFHelper::CopyItems method. - Return correct HRESULT code in UnixFolder's IEnumIDList::Next. - Corresponding test. - Release shell folders only if they were successfully acquired. - Implemented UnixFolder's ISFHelper::DeleteItems interface. - Fail in SHGetDataFromIDList when called on special folder. - Return correct attributes in ParseDisplayName. - Register unixfs at desktop level in DllRegisterServer. - Fix two more corner cases in UNIXFS_get_unix_path and UNIXFS_path_to_pidl. - If the unixfs is rooted at the Desktop folder, forward ParseDisplayName calls to it instead of to MyComputer. - Only initialize shell folders via the IPersistFolder3 interface in SHELL32_CoCreateInitSF if the pidl which specifies the child is of type 'Folder'. Otherwise fall back to IPersistFolder. - Append filename extension if necessary in IShellFolder::SetNameOf. - Release parent shell folder in GetAttributesOf. Francois Gouget fgouget@free.fr - Assorted spelling fixes. Robert Shearman rob@codeweavers.com - Implement ShellDDEInit. Michael Lin mlin@corvu.com.au Michael Jung mjung@iss.tu-darmstadt.de - Implemented UnixFolder's ISFHelper::AddFolder. - ISFHelper interface support for UnixFolder (currently only stubs). - Implemented UnixFolder's IShellFolder::SetNameOf. Vincent Béron vberon@mecano.gme.usherb.ca - Remove multiple declarations of the same function, keeping the public one as reference. Mike McCormack mike@codeweavers.com - gcc 4.0 -Wpointer-sign fixes (Reg* functions). - -Wpointer-sign fixes. Troy Rollo wine@troy.rollo.name - Return attributes for the correct file in the unixfs ParseDisplayName. - When using PATHMODE_UNIX, all files are in the file system. Marcelo Duarte marcelotduarte@gmail.com - Update shell32 resources for Portuguese. Detlef Riekenberg wine.dev@web.de - Printers_RegisterWindowW / Printers_UnregisterWindow implemented as stub. - Show the FIXME in Printer_LoadIconsW only when needed. - Printer_LoadIconsW: implemented minimal version. Modified: trunk/reactos/lib/shell32/Makefile.in Modified: trunk/reactos/lib/shell32/autocomplete.c Modified: trunk/reactos/lib/shell32/classes.c Modified: trunk/reactos/lib/shell32/cpanelfolder.c Modified: trunk/reactos/lib/shell32/dataobject.c Added: trunk/reactos/lib/shell32/dde.c Modified: trunk/reactos/lib/shell32/dialogs.c Modified: trunk/reactos/lib/shell32/dragdrophelper.c Modified: trunk/reactos/lib/shell32/enumidlist.c Modified: trunk/reactos/lib/shell32/folders.c Modified: trunk/reactos/lib/shell32/pidl.c Modified: trunk/reactos/lib/shell32/pidl.h Modified: trunk/reactos/lib/shell32/regsvr.c Modified: trunk/reactos/lib/shell32/shell32.spec Modified: trunk/reactos/lib/shell32/shell32.xml Modified: trunk/reactos/lib/shell32/shell32_Pt.rc Modified: trunk/reactos/lib/shell32/shell32_main.c Modified: trunk/reactos/lib/shell32/shell32_main.h Modified: trunk/reactos/lib/shell32/shelllink.c Modified: trunk/reactos/lib/shell32/shellole.c Modified: trunk/reactos/lib/shell32/shfldr.h Modified: trunk/reactos/lib/shell32/shfldr_desktop.c Modified: trunk/reactos/lib/shell32/shfldr_fs.c Modified: trunk/reactos/lib/shell32/shfldr_mycomp.c Modified: trunk/reactos/lib/shell32/shlexec.c Modified: trunk/reactos/lib/shell32/shlfolder.c Modified: trunk/reactos/lib/shell32/shlfsbind.c Modified: trunk/reactos/lib/shell32/shlview.c Modified: trunk/reactos/lib/shell32/shv_bg_cmenu.c Modified: trunk/reactos/lib/shell32/shv_item_cmenu.c Modified: trunk/reactos/lib/shell32/undocshell.h _____
Modified: trunk/reactos/lib/shell32/Makefile.in --- trunk/reactos/lib/shell32/Makefile.in 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/Makefile.in 2005-08-12 18:04:51 UTC (rev 17338) @@ -18,6 +18,7 @@
clipboard.c \ control.c \ cpanelfolder.c \ + dde.c \ dataobject.c \ debughlp.c \ dialogs.c \ _____
Modified: trunk/reactos/lib/shell32/autocomplete.c --- trunk/reactos/lib/shell32/autocomplete.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/autocomplete.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -64,7 +64,7 @@
{ const IAutoCompleteVtbl *lpVtbl; const IAutoComplete2Vtbl *lpvtblAutoComplete2; - DWORD ref; + LONG ref; BOOL enabled; HWND hwndEdit; HWND hwndListBox; _____
Modified: trunk/reactos/lib/shell32/classes.c --- trunk/reactos/lib/shell32/classes.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/classes.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -49,7 +49,7 @@
#define MAX_EXTENSION_LENGTH 20
-BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, DWORD len, BOOL bPrependDot) +BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot) { HKEY hkey; WCHAR szTemp[MAX_EXTENSION_LENGTH + 2]; @@ -83,7 +83,7 @@ return TRUE; }
-BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, DWORD len, BOOL bPrependDot) +BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot) { HKEY hkey; char szTemp[MAX_EXTENSION_LENGTH + 2]; @@ -194,7 +194,7 @@ char sTemp[MAX_PATH]; char sNum[5];
- if (!RegQueryValueExA(hkey, NULL, 0, &dwType, szDest, &len)) + if (!RegQueryValueExA(hkey, NULL, 0, &dwType, (LPBYTE)szDest, &len)) { if (dwType == REG_EXPAND_SZ) { @@ -319,7 +319,7 @@ szDest[0] = 0; if (HCR_RegOpenClassIDKey(riid, &hkey)) { - if (!RegQueryValueExA(hkey,"",0,NULL,szDest,&len)) + if (!RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len)) { ret = TRUE; } @@ -404,10 +404,10 @@ (LPVOID*)&psfFolder); if (SUCCEEDED(hr)) { hr = IShellFolder_GetAttributesOf(psfFolder, 0, NULL, pdwAttributes); + IShellFolder_Release(psfFolder); } + IShellFolder_Release(psfDesktop); } - IShellFolder_Release(psfFolder); - IShellFolder_Release(psfDesktop); if (FAILED(hr)) return FALSE; } else { lResult = RegQueryValueExW(hSFKey, wszAttributes, 0, NULL, (LPBYTE)&dwTemp, &dwLen); _____
Modified: trunk/reactos/lib/shell32/cpanelfolder.c --- trunk/reactos/lib/shell32/cpanelfolder.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/cpanelfolder.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -59,7 +59,7 @@
typedef struct { const IShellFolder2Vtbl *lpVtbl; - DWORD ref; + LONG ref; const IPersistFolder2Vtbl *lpVtblPersistFolder2; const IShellExecuteHookWVtbl *lpVtblShellExecuteHookW; const IShellExecuteHookAVtbl *lpVtblShellExecuteHookA; _____
Modified: trunk/reactos/lib/shell32/dataobject.c --- trunk/reactos/lib/shell32/dataobject.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/dataobject.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -43,7 +43,7 @@
{ /* IUnknown fields */ const IEnumFORMATETCVtbl *lpVtbl; - DWORD ref; + LONG ref; /* IEnumFORMATETC fields */ UINT posFmt; UINT countFmt; @@ -205,7 +205,7 @@ { /* IUnknown fields */ const IDataObjectVtbl *lpVtbl; - DWORD ref; + LONG ref;
/* IDataObject fields */ LPITEMIDLIST pidl; _____
Copied: trunk/reactos/lib/shell32/dde.c (from rev 17337, vendor/wine/dlls/shell32/current/dde.c) Property changes on: trunk/reactos/lib/shell32/dde.c ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native _____
Modified: trunk/reactos/lib/shell32/dialogs.c --- trunk/reactos/lib/shell32/dialogs.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/dialogs.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -255,7 +255,7 @@
if (icList > 0) { pszList = HeapAlloc( GetProcessHeap(), 0, icList) ; - if (ERROR_SUCCESS != RegQueryValueExA (hkey, "MRUList", NULL, NULL, pszList, &icList)) + if (ERROR_SUCCESS != RegQueryValueExA (hkey, "MRUList", NULL, NULL, (LPBYTE)pszList, &icList)) MessageBoxA (hCb, "Unable to grab MRUList !", "Nix", MB_OK) ; } else @@ -278,7 +278,7 @@ pszCmd = HeapReAlloc(GetProcessHeap(), 0, pszCmd, icCmd) ; else pszCmd = HeapAlloc(GetProcessHeap(), 0, icCmd) ; - if (ERROR_SUCCESS != RegQueryValueExA (hkey, szIndex, NULL, NULL, pszCmd, &icCmd)) + if (ERROR_SUCCESS != RegQueryValueExA (hkey, szIndex, NULL, NULL, (LPBYTE)pszCmd, &icCmd)) MessageBoxA (hCb, "Unable to grab index", "Nix", MB_OK) ;
if (NULL != pszLatest) @@ -328,7 +328,7 @@ memmove (&pszList[1], pszList, Nix) ; pszList[0] = cMatch ; szIndex[0] = cMatch ; - RegSetValueExA (hkey, szIndex, 0, REG_SZ, pszLatest, strlen (pszLatest) + 1) ; + RegSetValueExA (hkey, szIndex, 0, REG_SZ, (LPBYTE)pszLatest, strlen (pszLatest) + 1) ; } }
@@ -350,10 +350,10 @@ memmove (&pszList[1], pszList, icList - 1) ; pszList[0] = cMatch ; szIndex[0] = cMatch ; - RegSetValueExA (hkey, szIndex, 0, REG_SZ, pszLatest, strlen (pszLatest) + 1) ; + RegSetValueExA (hkey, szIndex, 0, REG_SZ, (LPBYTE)pszLatest, strlen (pszLatest) + 1) ; }
- RegSetValueExA (hkey, "MRUList", 0, REG_SZ, pszList, strlen (pszList) + 1) ; + RegSetValueExA (hkey, "MRUList", 0, REG_SZ, (LPBYTE)pszList, strlen (pszList) + 1) ;
HeapFree( GetProcessHeap(), 0, pszCmd) ; HeapFree( GetProcessHeap(), 0, pszList) ; _____
Modified: trunk/reactos/lib/shell32/dragdrophelper.c --- trunk/reactos/lib/shell32/dragdrophelper.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/dragdrophelper.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -49,7 +49,7 @@
typedef struct { const IDropTargetHelperVtbl *lpVtbl; - DWORD ref; + LONG ref; } IDropTargetHelperImpl;
static const IDropTargetHelperVtbl vt_IDropTargetHelper; _____
Modified: trunk/reactos/lib/shell32/enumidlist.c --- trunk/reactos/lib/shell32/enumidlist.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/enumidlist.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -46,7 +46,7 @@
typedef struct { const IEnumIDListVtbl *lpVtbl; - DWORD ref; + LONG ref; LPENUMLIST mpFirst; LPENUMLIST mpLast; LPENUMLIST mpCurrent; _____
Modified: trunk/reactos/lib/shell32/folders.c --- trunk/reactos/lib/shell32/folders.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/folders.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -50,7 +50,7 @@
typedef struct { const IExtractIconWVtbl *lpVtbl; - DWORD ref; + LONG ref; const IPersistFileVtbl *lpvtblPersistFile; const IExtractIconAVtbl *lpvtblExtractIconA; LPITEMIDLIST pidl; _____
Modified: trunk/reactos/lib/shell32/pidl.c --- trunk/reactos/lib/shell32/pidl.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/pidl.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -1113,7 +1113,7 @@
case SHGDFIL_FINDDATA: pfd = dest;
- if (_ILIsDrive(pidl)) + if (_ILIsDrive(pidl) || _ILIsSpecialFolder(pidl)) return E_INVALIDARG;
if (len < sizeof(WIN32_FIND_DATAA)) @@ -1488,7 +1488,7 @@ *
************************************************************************ * */ -LPITEMIDLIST _ILAlloc(PIDLTYPE type, size_t size) +LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size) { LPITEMIDLIST pidlOut = NULL;
_____
Modified: trunk/reactos/lib/shell32/pidl.h --- trunk/reactos/lib/shell32/pidl.h 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/pidl.h 2005-08-12 18:04:51 UTC (rev 17338) @@ -206,7 +206,7 @@
* - two bytes are the NULL PIDL terminator * Sets type of the returned PIDL to type. */ -LPITEMIDLIST _ILAlloc(PIDLTYPE type, size_t size); +LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size);
/* Creates a PIDL with guid format and type type, which must be one of PT_GUID, * PT_SHELLEXT, or PT_YAGUID. _____
Modified: trunk/reactos/lib/shell32/regsvr.c --- trunk/reactos/lib/shell32/regsvr.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/regsvr.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -20,6 +20,7 @@
#include <stdarg.h> #include <string.h> +#include <stdio.h>
#include "windef.h" #include "winbase.h" @@ -30,6 +31,7 @@ #include "ole2.h" #include "shlguid.h" #include "shell32_main.h" +#include "shfldr.h"
#include "wine/debug.h"
@@ -79,6 +81,16 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list); static HRESULT unregister_coclasses(struct regsvr_coclass const *list);
+struct regsvr_namespace +{ + CLSID const *clsid; /* CLSID of the namespace extension. NULL for end of list */ + LPCWSTR parent; /* Mount point (MyComputer, Desktop, ..). */ + LPCWSTR value; /* Display name of the extension. */ +}; + +static HRESULT register_namespace_extensions(struct regsvr_namespace const *list); +static HRESULT unregister_namespace_extensions(struct regsvr_namespace const *list); +
/*********************************************************************** * static string constants */ @@ -377,6 +389,66 @@ return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; }
+/********************************************************************** + * register_namespace_extensions + */ +static WCHAR *get_namespace_key(struct regsvr_namespace const *list) { + static const WCHAR wszExplorerKey[] = { + 'S','o','f','t','w','a','r','e','\','M','i','c','r','o','s','o','f','t' ,'\', + 'W','i','n','d','o','w','s','\','C','u','r','r','e','n','t','V','e','r' ,'s','i','o','n','\', + 'E','x','p','l','o','r','e','r','\',0 }; + static const WCHAR wszNamespace[] = { '\','N','a','m','e','s','p','a','c','e','\',0 }; + WCHAR *pwszKey, *pwszCLSID; + + pwszKey = HeapAlloc(GetProcessHeap(), 0, sizeof(wszExplorerKey)+sizeof(wszNamespace)+ + sizeof(WCHAR)*(lstrlenW(list->parent)+CHARS_IN_GUID)); + if (!pwszKey) + return NULL; + + lstrcpyW(pwszKey, wszExplorerKey); + lstrcatW(pwszKey, list->parent); + lstrcatW(pwszKey, wszNamespace); + if (FAILED(StringFromCLSID(list->clsid, &pwszCLSID))) { + HeapFree(GetProcessHeap(), 0, pwszKey); + return NULL; + } + lstrcatW(pwszKey, pwszCLSID); + CoTaskMemFree(pwszCLSID); + + return pwszKey; +} + +static HRESULT register_namespace_extensions(struct regsvr_namespace const *list) { + WCHAR *pwszKey; + HKEY hKey; + + for (; list->clsid; list++) { + pwszKey = get_namespace_key(list); + + /* Create the key and set the value. */ + if (pwszKey && ERROR_SUCCESS == + RegCreateKeyExW(HKEY_LOCAL_MACHINE, pwszKey, 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL)) + { + RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)list->value, sizeof(WCHAR)*(lstrlenW(list->value)+1)); + RegCloseKey(hKey); + } + + HeapFree(GetProcessHeap(), 0, pwszKey); + } + return S_OK; +} + +static HRESULT unregister_namespace_extensions(struct regsvr_namespace const *list) { + WCHAR *pwszKey; + + for (; list->clsid; list++) { + pwszKey = get_namespace_key(list); + RegDeleteKeyW(HKEY_LOCAL_MACHINE, pwszKey); + HeapFree(GetProcessHeap(), 0, pwszKey); + } + return S_OK; +} +
/*********************************************************************** * regsvr_key_guid */ @@ -545,6 +617,16 @@ };
/*********************************************************************** + * namespace extensions list + */ +static const WCHAR wszDesktop[] = { 'D','e','s','k','t','o','p',0 }; +static const WCHAR wszSlash[] = { '/', 0 }; + +static struct regsvr_namespace const namespace_extensions_list[] = { + { NULL } +}; + +/********************************************************************** * * DllRegisterServer (SHELL32.@) */ HRESULT WINAPI SHELL32_DllRegisterServer() @@ -558,6 +640,8 @@ hr = register_interfaces(interface_list); if (SUCCEEDED(hr)) hr = SHELL_RegisterShellFolders(); + if (SUCCEEDED(hr)) + hr = register_namespace_extensions(namespace_extensions_list); return hr; }
@@ -573,5 +657,7 @@ hr = unregister_coclasses(coclass_list); if (SUCCEEDED(hr)) hr = unregister_interfaces(interface_list); + if (SUCCEEDED(hr)) + hr = unregister_namespace_extensions(namespace_extensions_list); return hr; } _____
Modified: trunk/reactos/lib/shell32/shell32.spec --- trunk/reactos/lib/shell32/shell32.spec 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shell32.spec 2005-08-12 18:04:51 UTC (rev 17338) @@ -189,7 +189,7 @@
202 stub SHLocalReAlloc 203 stub AddCommasW 204 stub ShortSizeFormatW - 205 stub Printer_LoadIconsW + 205 stdcall Printer_LoadIconsW(wstr ptr ptr) 206 stub Link_AddExtraDataSection 207 stub Link_ReadExtraDataSection 208 stub Link_RemoveExtraDataSection @@ -197,8 +197,8 @@ 210 stub LargeIntegerToString 211 stub Printers_GetPidl 212 stub Printers_AddPrinterPropPages - 213 stub Printers_RegisterWindowW - 214 stub Printers_UnregisterWindow + 213 stdcall Printers_RegisterWindowW(wstr long ptr ptr) + 214 stdcall Printers_UnregisterWindow(long long) 215 stdcall -noname SHStartNetConnectionDialog(long str long) 243 stdcall @(long long) shell32_243 244 stdcall -noname SHInitRestricted(ptr ptr) _____
Modified: trunk/reactos/lib/shell32/shell32.xml --- trunk/reactos/lib/shell32/shell32.xml 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shell32.xml 2005-08-12 18:04:51 UTC (rev 17338) @@ -28,6 +28,7 @@
<file>control.c</file> <file>cpanelfolder.c</file> <file>dataobject.c</file> + <file>dde.c</file> <file>debughlp.c</file> <file>dialogs.c</file> <file>dragdrophelper.c</file> _____
Modified: trunk/reactos/lib/shell32/shell32_Pt.rc --- trunk/reactos/lib/shell32/shell32_Pt.rc 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shell32_Pt.rc 2005-08-12 18:04:51 UTC (rev 17338) @@ -132,30 +132,33 @@
PUSHBUTTON "&Procurar...", 12288, 170, 63, 50, 14, WS_TABSTOP }
-/* - special folders -*/ STRINGTABLE DISCARDABLE { + /* columns in the shellview */ + IDS_SHV_COLUMN1 "Arquivo" + IDS_SHV_COLUMN2 "Tamanho" + IDS_SHV_COLUMN3 "Tipo" + IDS_SHV_COLUMN4 "Modificado" + IDS_SHV_COLUMN5 "Atributos" + IDS_SHV_COLUMN6 "Tamanho" + IDS_SHV_COLUMN7 "DisponÝvel" + IDS_SHV_COLUMN8 "Nome" + IDS_SHV_COLUMN9 "Comentßrios" + IDS_SHV_COLUMN10 "Dono" + IDS_SHV_COLUMN11 "Grupo" + + /* special folders */ IDS_DESKTOP "?rea de trabalho" IDS_MYCOMPUTER "Meu computador" -}
-/* - context menus -*/ -STRINGTABLE DISCARDABLE -{ + /* context menus */ IDS_VIEW_LARGE "?cones &grandes" IDS_VIEW_SMALL "?cones &pequenos" IDS_VIEW_LIST "&Lista" IDS_VIEW_DETAILS "&Detalhes" IDS_SELECT "Selecionar" IDS_OPEN "Abrir" -}
-STRINGTABLE DISCARDABLE -{ IDS_CREATEFOLDER_DENIED "NÒo pode criar nova pasta: PermissÒo negada." IDS_CREATEFOLDER_CAPTION "Erro durante a criaþÒo da nova pasta" IDS_DELETEITEM_CAPTION "Confirmar exclusÒo de arquivo" @@ -164,34 +167,14 @@ IDS_DELETEMULTIPLE_TEXT "VocÛ tem certeza que deseja excluir estes %1 itens?" IDS_OVERWRITEFILE_TEXT "Sobreescrever arquivo %1?" IDS_OVERWRITEFILE_CAPTION "Confirmar sobreescrever arquivo" -}
-/* colunas no shellview */ -STRINGTABLE -BEGIN - IDS_SHV_COLUMN1 "Arquivo" - IDS_SHV_COLUMN2 "Tamanho" - IDS_SHV_COLUMN3 "Tipo" - IDS_SHV_COLUMN4 "Modificado" - IDS_SHV_COLUMN5 "Atributos" - IDS_SHV_COLUMN6 "Tamanho" - IDS_SHV_COLUMN7 "DisponÝvel" - IDS_SHV_COLUMN8 "Nome" - IDS_SHV_COLUMN9 "Comentßrios" -END + /* message box strings */ + IDS_RESTART_TITLE "Reiniciar" + IDS_RESTART_PROMPT "VocÛ quer simular a reinicializaþÒo do Windows?" + IDS_SHUTDOWN_TITLE "Desligar" + IDS_SHUTDOWN_PROMPT "VocÛ quer finalizar a sessÒo no ReactOS?"
-/* message box strings */ -STRINGTABLE DISCARDABLE -{ - IDS_RESTART_TITLE "Reiniciar" - IDS_RESTART_PROMPT "VocÛ quer simular a reinicializaþÒo do Windows?" - IDS_SHUTDOWN_TITLE "Desligar" - IDS_SHUTDOWN_PROMPT "VocÛ quer finalizar a sessÒo no ReactOS?" -} - -/* shell folder path default values - */ -STRINGTABLE DISCARDABLE -{ + /* shell folder path default values */ IDS_PROGRAMS "Menu Iniciar\Programas" IDS_PERSONAL "Meus Documentos" IDS_FAVORITES "Favoritos" _____
Modified: trunk/reactos/lib/shell32/shell32_main.c --- trunk/reactos/lib/shell32/shell32_main.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shell32_main.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -718,6 +718,63 @@
return NULL; }
+/********************************************************************** *** + * Printer_LoadIconsW [SHELL32.205] + */ +VOID WINAPI Printer_LoadIconsW(LPCWSTR wsPrinterName, HICON * pLargeIcon, HICON * pSmallIcon) +{ + INT iconindex=IDI_SHELL_PRINTER; + + TRACE("(%s, %p, %p)\n", debugstr_w(wsPrinterName), pLargeIcon, pSmallIcon); + + /* We should check if wsPrinterName is + 1. the Default Printer or not + 2. connected or not + 3. a Local Printer or a Network-Printer + and use different Icons + */ + if((wsPrinterName != NULL) && (wsPrinterName[0] != 0)) + { + FIXME("(select Icon by PrinterName %s not implemented)\n", debugstr_w(wsPrinterName)); + } + + if(pLargeIcon != NULL) + *pLargeIcon = LoadImageW(shell32_hInstance, + (LPCWSTR) MAKEINTRESOURCE(iconindex), IMAGE_ICON, + 0, 0, LR_DEFAULTCOLOR|LR_DEFAULTSIZE); + + if(pSmallIcon != NULL) + *pSmallIcon = LoadImageW(shell32_hInstance, + (LPCWSTR) MAKEINTRESOURCE(iconindex), IMAGE_ICON, + 16, 16, LR_DEFAULTCOLOR); +} + +/********************************************************************** *** + * Printers_RegisterWindowW [SHELL32.213] + * used by "printui.dll": + * find the Window of the given Type for the specific Printer and + * return the already existent hwnd or open a new window + */ +BOOL WINAPI Printers_RegisterWindowW(LPCWSTR wsPrinter, DWORD dwType, + HANDLE * phClassPidl, HWND * phwnd) +{ + FIXME("(%s, %lx, %p (%p), %p (%p)) stub!\n", debugstr_w(wsPrinter), dwType, + phClassPidl, (phClassPidl != NULL) ? *(phClassPidl) : NULL, + phwnd, (phwnd != NULL) ? *(phwnd) : NULL); + + return FALSE; +} + +/********************************************************************** *** + * Printers_UnregisterWindow [SHELL32.214] + */ +VOID WINAPI Printers_UnregisterWindow(HANDLE hClassPidl, HWND hwnd) +{ + FIXME("(%p, %p) stub!\n", hClassPidl, hwnd); +} + +/********************************************************************** ***/ + typedef struct { LPCWSTR szApp; @@ -985,14 +1042,6 @@ }
-/********************************************************************** *** - * ShellDDEInit (SHELL32.@) - */ -void WINAPI ShellDDEInit(BOOL start) -{ - FIXME("stub: %d\n", start); -} -
/*********************************************************************** * DllGetVersion [SHELL32.@] * _____
Modified: trunk/reactos/lib/shell32/shell32_main.h --- trunk/reactos/lib/shell32/shell32_main.h 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shell32_main.h 2005-08-12 18:04:51 UTC (rev 17338) @@ -56,14 +56,14 @@
INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags );
/* Classes Root */ -BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, DWORD len, BOOL bPrependDot); +BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot); BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len ); BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, LPDWORD dwNr); BOOL HCR_GetDefaultIconFromGUIDW(REFIID riid, LPWSTR szDest, DWORD len, LPDWORD dwNr); BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len);
/* ANSI versions of above functions, supposed to go away as soon as they are not used anymore */ -BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, DWORD len, BOOL bPrependDot); +BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot); BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, LPDWORD dwNr); BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len);
@@ -223,6 +223,7 @@
extern WCHAR swShell32Name[MAX_PATH];
+BOOL UNIXFS_is_rooted_at_desktop(void); extern const GUID CLSID_UnixFolder; extern const GUID CLSID_UnixDosFolder;
_____
Modified: trunk/reactos/lib/shell32/shelllink.c --- trunk/reactos/lib/shell32/shelllink.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shelllink.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -133,7 +133,7 @@
const IShellExtInitVtbl *lpvtblShellExtInit; const IContextMenuVtbl *lpvtblContextMenu;
- DWORD ref; + LONG ref;
/* data structures according to the informations in the link */ LPITEMIDLIST pPidl; @@ -660,7 +660,7 @@ static HRESULT Stream_LoadLocation( IStream *stm, volume_info *volume, LPWSTR *path ) { - unsigned char *p = NULL; + char *p = NULL; LOCATION_INFO *loc; HRESULT r; int n; _____
Modified: trunk/reactos/lib/shell32/shellole.c --- trunk/reactos/lib/shell32/shellole.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shellole.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -500,11 +500,11 @@
typedef struct { const IClassFactoryVtbl *lpVtbl; - DWORD ref; + LONG ref; CLSID *rclsid; LPFNCREATEINSTANCE lpfnCI; const IID * riidInst; - ULONG * pcRefDll; /* pointer to refcounter in external dll (ugrrr...) */ + LONG * pcRefDll; /* pointer to refcounter in external dll (ugrrr...) */ } IDefClFImpl;
static const IClassFactoryVtbl dclfvt; _____
Modified: trunk/reactos/lib/shell32/shfldr.h --- trunk/reactos/lib/shell32/shfldr.h 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shfldr.h 2005-08-12 18:04:51 UTC (rev 17338) @@ -70,3 +70,4 @@
}
void SHELL_FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags); +BOOL SHELL_FS_HideExtension(LPWSTR pwszPath); _____
Modified: trunk/reactos/lib/shell32/shfldr_desktop.c --- trunk/reactos/lib/shell32/shfldr_desktop.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shfldr_desktop.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -61,7 +61,7 @@
typedef struct { const IShellFolder2Vtbl *lpVtbl; - DWORD ref; + LONG ref;
CLSID *pclsid;
_____
Modified: trunk/reactos/lib/shell32/shfldr_fs.c --- trunk/reactos/lib/shell32/shfldr_fs.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shfldr_fs.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -61,7 +61,7 @@
typedef struct { const IUnknownVtbl *lpVtbl; - DWORD ref; + LONG ref; const IShellFolder2Vtbl *lpvtblShellFolder; const IPersistFolder3Vtbl *lpvtblPersistFolder3; const IDropTargetVtbl *lpvtblDropTarget; @@ -590,8 +590,10 @@ LPCITEMIDLIST rpidl = NULL;
hr = SHBindToParent(This->pidlRoot, &IID_IShellFolder, (LPVOID*)&psfParent, (LPCITEMIDLIST*)&rpidl); - if(SUCCEEDED(hr)) + if(SUCCEEDED(hr)) { SHELL32_GetItemAttributes (psfParent, rpidl, rgfInOut); + IShellFolder_Release(psfParent); + } } else { while (cidl > 0 && *apidl) { @@ -698,7 +700,20 @@ static const WCHAR NeverShowExtW[] = { 'N','e','v','e','r','S','h','o','w','E', 'x','t',0 };
-static BOOL hide_extension(LPWSTR szPath) +/********************************************************************** ******** + * SHELL_FS_HideExtension [Internal] + * + * Query the registry if the filename extension of a given path should be + * hidden. + * + * PARAMS + * szPath [I] Relative or absolute path of a file + * + * RETURNS + * TRUE, if the filename's extension should be hidden + * FALSE, otherwise. + */ +BOOL SHELL_FS_HideExtension(LPWSTR szPath) { HKEY hKey; DWORD dwData; @@ -737,7 +752,7 @@ if (!(dwFlags & SHGDN_FORPARSING) && ((dwFlags & SHGDN_INFOLDER) || (dwFlags == SHGDN_NORMAL))) { MultiByteToWideChar(CP_ACP, 0, szPath, -1, pathW, MAX_PATH); - if (hide_extension(pathW) && szPath[0] != '.') + if (SHELL_FS_HideExtension(pathW) && szPath[0] != '.') PathRemoveExtensionA (szPath); } } @@ -842,7 +857,7 @@ } else lstrcpynW(szDest, lpName, MAX_PATH);
- if(!(dwFlags & SHGDN_FORPARSING) && hide_extension(szSrc)) { + if(!(dwFlags & SHGDN_FORPARSING) && SHELL_FS_HideExtension(szSrc)) { WCHAR *ext = PathFindExtensionW(szSrc); if(*ext != '\0') { INT len = strlenW(szDest); _____
Modified: trunk/reactos/lib/shell32/shfldr_mycomp.c --- trunk/reactos/lib/shell32/shfldr_mycomp.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shfldr_mycomp.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -56,7 +56,7 @@
typedef struct { const IShellFolder2Vtbl *lpVtbl; - DWORD ref; + LONG ref; const IPersistFolder2Vtbl *lpVtblPersistFolder2;
/* both paths are parsible from the desktop */ @@ -443,8 +443,10 @@ LPCITEMIDLIST rpidl = NULL;
hr = SHBindToParent(This->pidlRoot, &IID_IShellFolder, (LPVOID*)&psfParent, (LPCITEMIDLIST*)&rpidl); - if(SUCCEEDED(hr)) + if(SUCCEEDED(hr)) { SHELL32_GetItemAttributes (psfParent, rpidl, rgfInOut); + IShellFolder_Release(psfParent); + } } else { while (cidl > 0 && *apidl) { pdump (*apidl); _____
Modified: trunk/reactos/lib/shell32/shlexec.c --- trunk/reactos/lib/shell32/shlexec.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shlexec.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -743,7 +743,7 @@
/****************************************************************** * dde_cb * - * callback for the DDE connection. not really usefull + * callback for the DDE connection. not really useful */ static HDDEDATA CALLBACK dde_cb(UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, _____
Modified: trunk/reactos/lib/shell32/shlfolder.c --- trunk/reactos/lib/shell32/shlfolder.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shlfolder.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -204,7 +204,9 @@
IPersistFolder *pPF; IPersistFolder3 *ppf;
- if (SUCCEEDED (IUnknown_QueryInterface ((IUnknown *) * ppvOut, &IID_IPersistFolder3, (LPVOID *) & ppf))) { + if (_ILIsFolder(pidlChild) && + SUCCEEDED (IUnknown_QueryInterface ((IUnknown *) * ppvOut, &IID_IPersistFolder3, (LPVOID *) & ppf))) + { PERSIST_FOLDER_TARGET_INFO ppfti; char szDestPath[MAX_PATH];
_____
Modified: trunk/reactos/lib/shell32/shlfsbind.c --- trunk/reactos/lib/shell32/shlfsbind.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shlfsbind.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -43,7 +43,7 @@
typedef struct { const IFileSystemBindDataVtbl *lpVtbl; - DWORD ref; + LONG ref; WIN32_FIND_DATAW findFile; } IFileSystemBindDataImpl;
_____
Modified: trunk/reactos/lib/shell32/shlview.c --- trunk/reactos/lib/shell32/shlview.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shlview.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -77,7 +77,7 @@
typedef struct { const IShellViewVtbl* lpVtbl; - DWORD ref; + LONG ref; const IOleCommandTargetVtbl* lpvtblOleCommandTarget; const IDropTargetVtbl* lpvtblDropTarget; const IDropSourceVtbl* lpvtblDropSource; _____
Modified: trunk/reactos/lib/shell32/shv_bg_cmenu.c --- trunk/reactos/lib/shell32/shv_bg_cmenu.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shv_bg_cmenu.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -45,7 +45,7 @@
{ const IContextMenu2Vtbl *lpVtbl; IShellFolder* pSFParent; - DWORD ref; + LONG ref; BOOL bDesktop; } BgCmImpl;
_____
Modified: trunk/reactos/lib/shell32/shv_item_cmenu.c --- trunk/reactos/lib/shell32/shv_item_cmenu.c 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/shv_item_cmenu.c 2005-08-12 18:04:51 UTC (rev 17338) @@ -44,7 +44,7 @@
*/ typedef struct { const IContextMenu2Vtbl *lpVtbl; - DWORD ref; + LONG ref; IShellFolder* pSFParent; LPITEMIDLIST pidl; /* root pidl */ LPITEMIDLIST *apidl; /* array of child pidls */ _____
Modified: trunk/reactos/lib/shell32/undocshell.h --- trunk/reactos/lib/shell32/undocshell.h 2005-08-12 17:50:33 UTC (rev 17337) +++ trunk/reactos/lib/shell32/undocshell.h 2005-08-12 18:04:51 UTC (rev 17338) @@ -65,9 +65,6 @@
LPITEMIDLIST * ppidl, DWORD *attributes);
-LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path); -LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path); - /* string functions */ @@ -124,15 +121,6 @@
void WINAPI ExitWindowsDialog(HWND hwndOwner);
-BOOL WINAPI GetFileNameFromBrowse( - HWND hwndOwner, - LPSTR lpstrFile, - DWORD nMaxFile, - LPCSTR lpstrInitialDir, - LPCSTR lpstrDefExt, - LPCSTR lpstrFilter, - LPCSTR lpstrTitle); - BOOL WINAPI SHFindComputer( LPCITEMIDLIST pidlRoot, LPCITEMIDLIST pidlSavedSearch);