13#ifndef SHCIDS_ALLFIELDS
14#define SHCIDS_ALLFIELDS 0x80000000L
86 pszOut[ich++] = AttrLetters[0];
88 pszOut[ich++] = AttrLetters[1];
90 pszOut[ich++] = AttrLetters[2];
92 pszOut[ich++] = AttrLetters[3];
94 pszOut[ich++] = AttrLetters[4];
183 if (curpidl->mkid.cb != 0)
185 ERR(
"ERROR, unhandled PIDL!\n");
196 ERR(
"ERROR, not a font PIDL!\n");
204 ERR(
"Unable to query info about %S\n", fontEntry->
Name());
224 ERR(
"GetDateFormatA failed\n");
236 return SHSetStrRet(&psd->
str, szAttr);
255 if (!lpszDisplayName || !lpszDisplayName[0] || !ppidl)
262 if (lpszDisplayName[0] ==
L':' && lpszDisplayName[1] ==
L':')
292 *pchEaten =
wcslen(lpszDisplayName);
295 *pdwAttributes &= (SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_CANCOPY |
325 if (!fontEntry1 || !fontEntry2)
340 if (!info1 || !info2)
342 ERR(
"Unable to find font %S or %S in cache!\n", fontEntry1->
Name(), fontEntry2->
Name());
358 ULONGLONG size1 = info1->FileSize().QuadPart, size2 = info2->FileSize().QuadPart;
359 result = (size1 < size2) ? -1 : ((size1 > size2) ? 1 : 0);
368 WCHAR szAttr1[8], szAttr2[8];
379 ERR(
"Unimplemented column %u\n",
column);
401 TRACE(
"IContextMenu\n");
421 if (!rgfInOut || !cidl || !apidl)
430 DWORD rgf = (SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_CANCOPY | SFGAO_FILESYSTEM);
431 while (cidl > 0 && *apidl)
445 *rgfInOut &= ~SFGAO_VALIDATE;
502 ERR(
"DFM_CMD_MOVE not supported\n");
525 if (
riid == IID_IContextMenu ||
526 riid == IID_IContextMenu2 ||
527 riid == IID_IContextMenu3)
535 else if (
riid == IID_IExtractIconA ||
riid == IID_IExtractIconW)
549 ERR(
"IID_IExtractIcon with cidl != 1 UNIMPLEMENTED\n");
564 *ppvOut = pDataObj.
Detach();
568 else if (
riid == IID_IDropTarget)
581 if (!pidl || !strRet)
586 if (nextPidl && nextPidl->mkid.cb != 0)
588 ERR(
"ERROR, unhandled PIDL!\n");
603 return SHSetStrRet(strRet, fullPath);
605 return SHSetStrRet(strRet, fileName);
608 return SHSetStrRet(strRet, fontEntry->
Name());
635 ERR(
"Unable to extract path from pidl\n");
642 ERR(
"Unable to get fonts path (0x%x)\n",
hr);
648 ERR(
"CFontExt View initializing on unexpected folder: '%S'\n", PidlPath);
HRESULT _CDataObject_CreateInstance(PCIDLIST_ABSOLUTE folder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, LPVOID *ppvOut)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
HRESULT _CEnumFonts_CreateInstance(CFontExt *zip, DWORD flags, REFIID riid, LPVOID *ppvOut)
bool GetInterfaceName(const WCHAR *InterfaceString, WCHAR *buf, size_t size)
static FolderViewColumns g_ColumnDefs[]
static HRESULT FONTEXT_GetAttributeString(DWORD dwAttributes, LPWSTR pszOut, UINT cchMax)
WCHAR * g2s(REFCLSID iid)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
bool IsEmpty() const noexcept
int CompareNoCase(_In_z_ PCXSTR psz) const
CStringW File(size_t Index)
CStringW GetFontFilePath(const PCWSTR Path) const
CFontInfo * Find(const FontPidlEntry *fontEntry)
CStringW Name(size_t Index)
void SetFontDir(const LPCWSTR Path)
STDMETHODIMP GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut) override
STDMETHODIMP GetDefaultColumn(DWORD dwReserved, ULONG *pSort, ULONG *pDisplay) override
STDMETHODIMP DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHODIMP GetDefaultColumnState(UINT iColumn, SHCOLSTATEF *pcsFlags) override
STDMETHODIMP GetCurFolder(LPITEMIDLIST *ppidl) override
STDMETHODIMP GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
HRESULT DeleteItems(IDataObject *pDataObj)
STDMETHODIMP GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHODIMP EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
STDMETHODIMP GetDefaultSearchGUID(GUID *lpguid) override
CComHeapPtr< ITEMIDLIST > m_Folder
STDMETHODIMP MapColumnToSCID(UINT iColumn, SHCOLUMNID *pscid) override
STDMETHODIMP SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) override
STDMETHODIMP CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) override
STDMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
static HRESULT CALLBACK MenuCallback(IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
STDMETHODIMP BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
STDMETHODIMP EnumSearches(IEnumExtraSearch **ppenum) override
HRESULT PreviewItems(IDataObject *pDataObj)
STDMETHODIMP GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut) override
STDMETHODIMP ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes) override
STDMETHODIMP GetClassID(CLSID *lpClassId) override
STDMETHODIMP Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHODIMP Initialize(LPCITEMIDLIST pidl) override
STDMETHODIMP BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
void SetViewWindow(HWND hwndView)
STDMETHODIMP DragLeave() override
STDMETHODIMP CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) override
#define IDS_INSTALL_FAILED
#define IDS_REACTOS_FONTS_FOLDER
#define DFM_GETDEFSTATICID
#define DFM_INVOKECOMMANDEX
#define DFM_MERGECONTEXTMENU
#define DFM_INVOKECOMMAND
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
int WINAPI StrCmpIW(const WCHAR *str, const WCHAR *comp)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
HRESULT WINAPI OleGetClipboard(IDataObject **obj)
HRESULT WINAPI DECLSPEC_HOTPATCH ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *ppszProgID)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
#define FAILED_UNEXPECTEDLY
HRESULT DoPreviewFontFiles(HWND hwnd, IDataObject *pDataObj)
const GUID CLSID_CFontExt
HRESULT InstallFontsFromDataObject(HWND hwndView, IDataObject *pDataObj)
BOOL CheckDataObject(IDataObject *pDataObj)
HRESULT DoDeleteFontFiles(HWND hwnd, IDataObject *pDataObj)
const FontPidlEntry * _FontFromIL(PCITEMID_CHILD pidl)
PITEMID_CHILD _ILCreate(LPCWSTR lpName, LPCWSTR lpFileName)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * fontName
VOID WINAPI CoTaskMemFree(LPVOID ptr)
const DWORD DROPEFFECT_NONE
const DWORD DROPEFFECT_COPY
#define ERROR_FILE_NOT_FOUND
static const struct access_res create[16]
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_COMPRESSED
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_ARCHIVE
#define LOCALE_USER_DEFAULT
interface IBindCtx * LPBC
const GUID IID_IDataObject
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
#define IsEqualIID(riid1, riid2)
#define MAKE_COMPARE_HRESULT(x)
#define DFM_WM_INITMENUPOPUP
#define DFM_CMD_PROPERTIES
#define FCIDM_SHVIEW_OPEN
#define FCIDM_SHVIEW_INSERTLINK
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define HKEY_CLASSES_ROOT
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONINFORMATION
#define MAKEINTRESOURCEW(i)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define IID_PPV_ARG(Itype, ppType)