Sync to Wine-20050725:
Michael Jung <mjung(a)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(a)free.fr>
- Assorted spelling fixes.
Robert Shearman <rob(a)codeweavers.com>
- Implement ShellDDEInit.
Michael Lin <mlin(a)corvu.com.au>
Michael Jung <mjung(a)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(a)mecano.gme.usherb.ca>
- Remove multiple declarations of the same function, keeping the public
one as reference.
Mike McCormack <mike(a)codeweavers.com>
- gcc 4.0 -Wpointer-sign fixes (Reg* functions).
- -Wpointer-sign fixes.
Troy Rollo <wine(a)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(a)gmail.com>
- Update shell32 resources for Portuguese.
Detlef Riekenberg <wine.dev(a)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);