Sync to Wine-0_9_5:
authorGé van Geldorp <ge@gse.nl>
Fri, 6 Jan 2006 20:30:08 +0000 (20:30 +0000)
committerGé van Geldorp <ge@gse.nl>
Fri, 6 Jan 2006 20:30:08 +0000 (20:30 +0000)
Vitaliy Margolen <wine-patch@kievinfo.com>
- shell32: Create Local AppData for user profile.
  Move history and internet tmp files to Local Settings.
- shell32: Update Russian resources.
Michael Jung <mjung@iss.tu-darmstadt.de>
- shell32: Helper function for unicode support in folder and file pidls.
- shell32/unixfs: Added unicode support in folder and file pidls.

svn path=/trunk/; revision=20625

12 files changed:
reactos/lib/shell32/pidl.c
reactos/lib/shell32/pidl.h
reactos/lib/shell32/shell32_Bg.rc
reactos/lib/shell32/shell32_De.rc
reactos/lib/shell32/shell32_En.rc
reactos/lib/shell32/shell32_Es.rc
reactos/lib/shell32/shell32_Fi.rc
reactos/lib/shell32/shell32_Fr.rc
reactos/lib/shell32/shell32_No.rc
reactos/lib/shell32/shell32_Pt.rc
reactos/lib/shell32/shell32_Ru.rc
reactos/lib/shell32/shellpath.c

index b39fb24..fb85949 100644 (file)
@@ -1811,15 +1811,21 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
  */
 DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
 {
-    DWORD    dwReturn;
+    DWORD   dwReturn;
     char    szTemp[MAX_PATH];
+    FileStructW *pFileStructW = _ILGetFileStructW(pidl);
 
     TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
 
-    dwReturn = _ILSimpleGetText(pidl, szTemp, uOutSize);
+    if (pFileStructW) {
+        lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
+        dwReturn = lstrlenW(pFileStructW->wszName);
+    } else {
+        dwReturn = _ILSimpleGetText(pidl, szTemp, MAX_PATH);
 
-    if (!MultiByteToWideChar(CP_ACP, 0, szTemp, -1, szOut, MAX_PATH))
-        *szOut = 0;
+        if (!MultiByteToWideChar(CP_ACP, 0, szTemp, -1, szOut, uOutSize))
+            *szOut = 0;
+    }
 
     TRACE("-- (%p=%s 0x%08lx)\n",szOut,debugstr_w(szOut),dwReturn);
     return dwReturn;
@@ -1938,6 +1944,45 @@ IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl)
     return NULL;
 }
 
+/******************************************************************************
+ * _ILGetFileStructW [Internal]
+ *
+ * Get pointer the a SHITEMID's FileStructW field if present
+ *
+ * PARAMS
+ *  pidl [I] The SHITEMID
+ *
+ * RETURNS
+ *  Success: Pointer to pidl's FileStructW field.
+ *  Failure: NULL
+ */
+FileStructW* _ILGetFileStructW(LPCITEMIDLIST pidl) {
+    FileStructW *pFileStructW;
+    WORD cbOffset;
+    
+    if (!(_ILIsValue(pidl) || _ILIsFolder(pidl)))
+        return NULL;
+
+    cbOffset = *(WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
+    pFileStructW = (FileStructW*)((LPBYTE)pidl + cbOffset);
+
+    /* Currently I don't see a fool prove way to figure out if a pidl is for sure of WinXP
+     * style with a FileStructW member. If we switch all our shellfolder-implementations to
+     * the new format, this won't be a problem. For now, we do as many sanity checks as possible. */
+    if (cbOffset & 0x1 || /* FileStructW member is word aligned in the pidl */
+        /* FileStructW is positioned after FileStruct */
+        cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
+        /* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
+        cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
+        pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
+    {
+        WARN("Invalid pidl format (cbOffset = %d)!\n", cbOffset);
+        return NULL;
+    }
+
+    return pFileStructW;
+}
+
 /*************************************************************************
  * _ILGetFileDateTime
  *
index df3d1f2..691aa2a 100644 (file)
@@ -143,6 +143,20 @@ typedef struct tagFileStruct
     The second the dos name when needed or just 0x00 */
 } FileStruct;
 
+/* At least on WinXP, this struct is appended with 2-byte-alignment to FileStruct. There follows 
+ * a WORD member after the wszName string, which gives the offset from the beginning of the PIDL 
+ * to the FileStructW member. */
+typedef struct tagFileStructW {
+    WORD cbLen;
+    BYTE dummy1[6];
+    WORD uCreationDate;
+    WORD uCreationTime;
+    WORD uLastAccessDate;
+    WORD uLastAccessTime;
+    BYTE dummy2[4];
+    WCHAR wszName[1];
+} FileStructW;
+
 typedef struct tagValueW
 {
     WCHAR name[1];
@@ -240,6 +254,7 @@ LPPIDLDATA  _ILGetDataPointer       (LPCITEMIDLIST);
 LPSTR          _ILGetTextPointer       (LPCITEMIDLIST);
 LPSTR          _ILGetSTextPointer      (LPCITEMIDLIST);
 IID            *_ILGetGUIDPointer      (LPCITEMIDLIST pidl);
+FileStructW     *_ILGetFileStructW      (LPCITEMIDLIST pidl);
 
 /*
  * debug helper
index 3f64a49..22fe6b5 100644 (file)
@@ -190,9 +190,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Application Data"
        IDS_PRINTHOOD               "PrintHood"
        IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
-       IDS_INTERNET_CACHE          "Temporary Internet Files"
+       IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
        IDS_COOKIES                 "Cookies"
-       IDS_HISTORY                 "History"
+       IDS_HISTORY                 "Local Settings\\History"
        IDS_PROGRAM_FILES           "Program Files"
        IDS_MYPICTURES              "My Documents\\My Pictures"
        IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
index a76f08a..d3a685c 100644 (file)
@@ -190,9 +190,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA             "Anwendungsdaten"
        IDS_PRINTHOOD           "Druckumgebung"
        IDS_LOCAL_APPDATA       "Lokale Einstellungen\\Anwendungsdaten"
-       IDS_INTERNET_CACHE      "Temporary Internet Files"
+       IDS_INTERNET_CACHE      "Lokale Einstellungen\\Temporary Internet Files"
        IDS_COOKIES             "Cookies"
-       IDS_HISTORY             "Verlauf"
+       IDS_HISTORY             "Lokale Einstellungen\\Verlauf"
        IDS_PROGRAM_FILES       "Programme"
        IDS_MYPICTURES          "Eigene Dateien\\Eigene Bilder"
        IDS_PROGRAM_FILES_COMMON "Programme\\Gemeinsame Dateien"
index 9a53a19..d1586fc 100644 (file)
@@ -189,9 +189,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Application Data"
        IDS_PRINTHOOD               "PrintHood"
        IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
-       IDS_INTERNET_CACHE          "Temporary Internet Files"
+       IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
        IDS_COOKIES                 "Cookies"
-       IDS_HISTORY                 "History"
+       IDS_HISTORY                 "Local Settings\\History"
        IDS_PROGRAM_FILES           "Program Files"
        IDS_MYPICTURES              "My Documents\\My Pictures"
        IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
index 3b4dbe8..ed9635a 100644 (file)
@@ -207,9 +207,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Application Data"
        IDS_PRINTHOOD               "PrintHood"
        IDS_LOCAL_APPDATA           "Configuración local\\Datos de programa"
-       IDS_INTERNET_CACHE          "Archivos temporales de Internet"
+       IDS_INTERNET_CACHE          "Configuración local\\Archivos temporales de Internet"
        IDS_COOKIES                 "Cookies"
-       IDS_HISTORY                 "Historial"
+       IDS_HISTORY                 "Configuración local\\Historial"
        IDS_PROGRAM_FILES           "Archivos de programa"
        IDS_MYPICTURES              "Mis documentos\\Mis imágenes"
        IDS_PROGRAM_FILES_COMMON    "Archivos de programa\\Archivos comunes"
index 42ffc80..8a2264f 100644 (file)
@@ -189,9 +189,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Ohjelmien Tiedot"
        IDS_PRINTHOOD               "Tulostinympäristö"
        IDS_LOCAL_APPDATA           "Paikalliset Asetukset\\Ohjelmien Tiedot"
-       IDS_INTERNET_CACHE          "Väliaikaiset Internet-tiedostot"
+       IDS_INTERNET_CACHE          "Paikalliset Asetukset\\Väliaikaiset Internet-tiedostot"
        IDS_COOKIES                 "Evästeet"
-       IDS_HISTORY                 "Historia"
+       IDS_HISTORY                 "Paikalliset Asetukset\\Historia"
        IDS_PROGRAM_FILES           "Ohjelmat"
        IDS_MYPICTURES              "Omat tiedostot\\Omat kuvatiedostot"
        IDS_PROGRAM_FILES_COMMON    "Ohjelmat\\Yhteiset Tiedostot"
index ac8d641..8b1cb2d 100644 (file)
@@ -209,9 +209,9 @@ STRINGTABLE DISCARDABLE
  IDS_APPDATA                 "Application Data"
  IDS_PRINTHOOD               "Voisinage d'impression"
  IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
- IDS_INTERNET_CACHE          "Temporary Internet Files"
+ IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
  IDS_COOKIES                 "Cookies"
- IDS_HISTORY                 "Historique"
+ IDS_HISTORY                 "Local Settings\\Historique"
  IDS_PROGRAM_FILES           "Program Files"
  IDS_MYPICTURES              "Mes documents\\Mes images"
  IDS_PROGRAM_FILES_COMMON    "Program Files\\Fichiers communs"
index 72048e6..68cd5ed 100644 (file)
@@ -189,9 +189,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Application Data"
        IDS_PRINTHOOD               "PrintHood"
        IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
-       IDS_INTERNET_CACHE          "Temporary Internet Files"
+       IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
        IDS_COOKIES                 "Cookies"
-       IDS_HISTORY                 "History"
+       IDS_HISTORY                 "Local Settings\\History"
        IDS_PROGRAM_FILES           "Program Files"
        IDS_MYPICTURES              "Mine dokumenter\\Mine bilder"
        IDS_PROGRAM_FILES_COMMON    "Programfiler\\Fellesfiler"
index 8031ded..d5991d0 100644 (file)
@@ -190,9 +190,9 @@ STRINGTABLE DISCARDABLE
        IDS_APPDATA                 "Application Data"
        IDS_PRINTHOOD               "PrintHood"
        IDS_LOCAL_APPDATA           "Configurações locais\\Dados de aplicativos"
-       IDS_INTERNET_CACHE          "Temporary Internet Files"
+       IDS_INTERNET_CACHE          "Configurações locais\\Temporary Internet Files"
        IDS_COOKIES                 "Cookies"
-       IDS_HISTORY                 "Histórico"
+       IDS_HISTORY                 "Configurações locais\\Histórico"
        IDS_PROGRAM_FILES           "Arquivos de programas"
        IDS_MYPICTURES              "Meus Documentos\\Minhas Imagens"
        IDS_PROGRAM_FILES_COMMON    "Arquivos de programas\\Arquivos comuns"
index 8c6dcfc..3f9b149 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright 1998 Juergen Schmied
+ * Copyright 2006 Vitaliy Margolen
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
 
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
+MENU_001 MENU DISCARDABLE
+BEGIN
+    MENUITEM "&Áîëüøèå Èêîíêè",        FCIDM_SHVIEW_BIGICON
+    MENUITEM "&Ìåëêèå Èêîíêè", FCIDM_SHVIEW_SMALLICON
+    MENUITEM "&Ñïèñîê",                FCIDM_SHVIEW_LISTVIEW
+    MENUITEM "&Ïîäðîáíî",      FCIDM_SHVIEW_REPORTVIEW
+END
+
+/*
+ shellview background menu
+*/
+MENU_002 MENU DISCARDABLE
+BEGIN
+    POPUP ""
+    BEGIN
+        POPUP "&Ïðîñìîòð"
+        BEGIN
+            MENUITEM "&Áîëüøèå Èêîíêè",        FCIDM_SHVIEW_BIGICON
+            MENUITEM "&Ìåëêèå Èêîíêè", FCIDM_SHVIEW_SMALLICON
+            MENUITEM "&Ñïèñîê",                FCIDM_SHVIEW_LISTVIEW
+            MENUITEM "&Ïîäðîáíî",      FCIDM_SHVIEW_REPORTVIEW
+        END
+        MENUITEM SEPARATOR
+        POPUP "Arrange &Icons"
+        BEGIN
+            MENUITEM "Ïî &Èìåíè",      0x30    /* column 0 */
+            MENUITEM "Ïî &Òèïó",       0x32    /* column 2 */
+            MENUITEM "Ïî &Ðàçìåðó",    0x31    /* ... */
+            MENUITEM "Ïî &Äàòå",       0x33
+            MENUITEM SEPARATOR
+            MENUITEM "&Àâòîìàòè÷åñêè", FCIDM_SHVIEW_AUTOARRANGE
+        END
+        MENUITEM "Â&ûðîâíÿòü èêîíêè",  FCIDM_SHVIEW_SNAPTOGRID
+        MENUITEM SEPARATOR
+        MENUITEM "Î&áíîâèòü",          FCIDM_SHVIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Âñòàâèòü",          FCIDM_SHVIEW_INSERT
+        MENUITEM "Âñòàâèòü &ÿðêëûê",   FCIDM_SHVIEW_INSERTLINK
+        MENUITEM SEPARATOR
+        POPUP "Ñîçäàòü"
+        BEGIN
+            MENUITEM "&Ïàïêà",         FCIDM_SHVIEW_NEWFOLDER
+            MENUITEM "&ßðëûê",         FCIDM_SHVIEW_NEWLINK
+            MENUITEM SEPARATOR
+        END
+        MENUITEM SEPARATOR
+        MENUITEM "Ñâî&éñòâà",          FCIDM_SHVIEW_PROPERTIES
+    END
+END
+
+/*
+ shellview item menu
+*/
+MENU_SHV_FILE MENU DISCARDABLE
+BEGIN
+    POPUP ""
+    BEGIN
+        MENUITEM "&Ïðîâîäíèê",         FCIDM_SHVIEW_EXPLORE
+        MENUITEM "&Îòêðûòü",           FCIDM_SHVIEW_OPEN
+        MENUITEM SEPARATOR
+        MENUITEM "&Âûðåçàòü",          FCIDM_SHVIEW_CUT
+        MENUITEM "&Êîïèðîâàòü",                FCIDM_SHVIEW_COPY
+        MENUITEM SEPARATOR
+        MENUITEM "Ñîçäàòü &ßîëûê",     FCIDM_SHVIEW_CREATELINK
+        MENUITEM "&Óäàëìòü",           FCIDM_SHVIEW_DELETE
+        MENUITEM "Ïåðåè&ìåíîâàòü",     FCIDM_SHVIEW_RENAME
+        MENUITEM SEPARATOR
+        MENUITEM "Ñâî&éñòâà",          FCIDM_SHVIEW_PROPERTIES
+    END
+END
+
+SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
+CAPTION "Îáçîð"
+FONT 8, "MS Shell Dlg"
+{
+    DEFPUSHBUTTON "Äà", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "Îòìåíèòü", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
+    LTEXT "", IDD_TITLE, 4, 4, 180, 12
+    LTEXT "", IDD_STATUS, 4, 25, 180, 12
+    CONTROL "", IDD_TREEVIEW, "SysTreeView32",
+               TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
+               WS_BORDER | WS_TABSTOP,
+               4, 40, 180, 120
+}
+
 SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Π%s"
@@ -44,3 +131,75 @@ FONT 8, "MS Shell Dlg"
  PUSHBUTTON "Îòìåíà", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
  PUSHBUTTON "Îá&çîð...", 12288, 170, 63, 50, 14, WS_TABSTOP
 }
+
+STRINGTABLE DISCARDABLE
+{
+    /* columns in the shellview */
+    IDS_SHV_COLUMN1            "Èìÿ"
+    IDS_SHV_COLUMN2            "Ðàçìåð"
+    IDS_SHV_COLUMN3            "Òèï"
+    IDS_SHV_COLUMN4            "Èçìåíåí"
+    IDS_SHV_COLUMN5            "Àòðèáóòû"
+    IDS_SHV_COLUMN6            "Ïîëíûé îáúåì"
+    IDS_SHV_COLUMN7            "Ñâîáîäíî"
+    IDS_SHV_COLUMN8            "Èìÿ"
+    IDS_SHV_COLUMN9            "Êîììåíòàðèé"
+    IDS_SHV_COLUMN10           "Âëàäåëåö"
+    IDS_SHV_COLUMN11           "Ãðóïïà"
+
+    /* special folders */
+    IDS_DESKTOP                        "Ðàáî÷èé ñòîë"
+    IDS_MYCOMPUTER             "Ìîé êîìïüþòåð"
+
+    /* context menus */
+    IDS_VIEW_LARGE             "&Áîëüøèå Èêîíêè"
+    IDS_VIEW_SMALL             "&Ìåëêèå Èêîíêè"
+    IDS_VIEW_LIST              "&Ñïèñîê"
+    IDS_VIEW_DETAILS           "&Ïîäðîáíî"
+    IDS_SELECT                 "&Âûáðàòü"
+    IDS_OPEN                   "&Îòêðûòü"
+
+    IDS_CREATEFOLDER_DENIED    "Íåâîçìîæíî ñîçäàòü ïàïêó - íåò ïîëíîìî÷èé."
+    IDS_CREATEFOLDER_CAPTION   "Îøèáêà âî âðåìÿ ñîçäàíèÿ ïàïêè"
+    IDS_DELETEITEM_CAPTION     "Ïîäòâåðæäåíèå óäàëåíèÿ ôàéëà"
+    IDS_DELETEFOLDER_CAPTION   "Ïîäòâåðæäåíèå óäàëåíèÿ ïàïêè"
+    IDS_DELETEITEM_TEXT                "Óäàëèòü '%1'?"
+    IDS_DELETEMULTIPLE_TEXT    "Óäàëèòü ýòè îáüåêòû (%1?"
+    IDS_OVERWRITEFILE_TEXT     "Çàìåíèòü ôàéë(û) %1?"
+    IDS_OVERWRITEFILE_CAPTION  "Ïîäòâåðæäåíèå çàìåíû ôàéëà"
+
+    /* message box strings */
+    IDS_RESTART_TITLE          "Ïåðåçàãðóçèòü"
+    IDS_RESTART_PROMPT         "Âû õîòèòå ñèìóëèðîâàòü ïåðåçàïóñê Windows?"
+    IDS_SHUTDOWN_TITLE         "Âûêëþ÷èòü ïèòàíèå"
+    IDS_SHUTDOWN_PROMPT                "Âû õîòèòå çàêèí÷èòü ðàáîòó ñ Wine?"
+
+    /* shell folder path default values */
+    IDS_PROGRAMS                "Ãëàâíîå ìåíþ\\Ïðîãðàììû"
+    IDS_PERSONAL                "Ìîè äîêóìåíòû"
+    IDS_FAVORITES               "Èçáðàííîå"
+    IDS_STARTUP                 "Ãëàâíîå ìåíþ\\Ïðîãðàììû\\Àâòîçàãðóçêà"
+    IDS_RECENT                  "Recent"
+    IDS_SENDTO                  "Îòïðââèòü"
+    IDS_STARTMENU               "Ãëàâíîå ìåíþ"
+    IDS_MYMUSIC                 "Ìîè äîêóìåíòû\\Ìîÿ ìóçûêà"
+    IDS_MYVIDEO                 "Ìîè äîêóìåíòû\\Ìîè ôèëüìû"
+    IDS_DESKTOPDIRECTORY        "Ðàáî÷èé ñòîë"
+    IDS_NETHOOD                 "NetHood"
+    IDS_TEMPLATES               "Øàáëîíû"
+    IDS_APPDATA                 "Application Data"
+    IDS_PRINTHOOD               "PrintHood"
+    IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
+    IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
+    IDS_COOKIES                 "Cookies"
+    IDS_HISTORY                 "Local Settings\\History"
+    IDS_PROGRAM_FILES           "Program Files"
+    IDS_MYPICTURES              "Ìîè äîêóìåíòû\\Ìîè ðèñóíêè"
+    IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
+    IDS_COMMON_DOCUMENTS        "Îáùèå äîêóìåíòû"
+    IDS_ADMINTOOLS              "Ãëàâíîå ìåíþ\\Ïðîãðàììû\\Administrative Tools"
+    IDS_COMMON_MUSIC            "Îáùèå äîêóìåíòû\\Ìîÿ ìóçûêà"
+    IDS_COMMON_PICTURES         "Îáùèå äîêóìåíòû\\Ìîè ðèñóíêè"
+    IDS_COMMON_VIDEO            "Îáùèå äîêóìåíòû\\Ìîè ôèëüìû"
+    IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"
+}
index 3d07236..794e20a 100644 (file)
@@ -1816,6 +1816,8 @@ static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
      CSIDL_NETHOOD,
      CSIDL_TEMPLATES,
      CSIDL_PRINTHOOD,
+     CSIDL_LOCAL_APPDATA,
+     CSIDL_INTERNET_CACHE,
      CSIDL_COOKIES,
      CSIDL_HISTORY,
      CSIDL_MYPICTURES