[CLIPBRD]

- Add clipboard file icon by Jared Smudde.
- Open any clipboard data file given in the command line.

[BOOTDATA]
- Add registry entries for file extension .clp.

CORE-10853 #resolve #comment Support added in revision 70736.

svn path=/trunk/; revision=70736
This commit is contained in:
Hermès Bélusca-Maïto 2016-02-13 23:16:19 +00:00
parent 60c090d24a
commit c3c8cf879c
14 changed files with 93 additions and 78 deletions

View file

@ -2,9 +2,9 @@
list(APPEND SOURCE
clipbrd.c
cliputils.c
winutils.c
fileutils.c
scrollutils.c
winutils.c
precomp.h)
add_executable(clipbrd ${SOURCE} clipbrd.rc)

View file

@ -63,6 +63,23 @@ static void SaveClipboardToFile(void)
CloseClipboard();
}
static void LoadClipboardDataFromFile(LPWSTR lpszFileName)
{
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
{
EmptyClipboard();
ReadClipboardFile(lpszFileName);
}
CloseClipboard();
}
static void LoadClipboardFromFile(void)
{
OPENFILENAMEW ofn;
@ -87,19 +104,7 @@ static void LoadClipboardFromFile(void)
if (!GetOpenFileNameW(&ofn))
return;
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
{
EmptyClipboard();
ReadClipboardFile(szFileName);
}
CloseClipboard();
LoadClipboardDataFromFile(szFileName);
}
static void LoadClipboardFromDrop(HDROP hDrop)
@ -109,19 +114,7 @@ static void LoadClipboardFromDrop(HDROP hDrop)
DragQueryFileW(hDrop, 0, szFileName, ARRAYSIZE(szFileName));
DragFinish(hDrop);
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
{
EmptyClipboard();
ReadClipboardFile(szFileName);
}
CloseClipboard();
LoadClipboardDataFromFile(szFileName);
}
static void SetDisplayFormat(UINT uFormat)
@ -169,7 +162,7 @@ static void InitMenuPopup(HMENU hMenu, LPARAM index)
DrawMenuBar(Globals.hMainWnd);
}
void UpdateDisplayMenu(void)
static void UpdateDisplayMenu(void)
{
UINT uFormat;
WCHAR szFormatName[MAX_FMT_NAME_LEN + 1];
@ -258,7 +251,7 @@ static int ClipboardCommandHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
WCHAR szTitle[MAX_STRING_LEN];
HICON hIcon;
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIP_ICON));
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIPBRD_ICON));
LoadStringW(Globals.hInstance, STRING_CLIPBOARD, szTitle, ARRAYSIZE(szTitle));
ShellAboutW(Globals.hMainWnd, szTitle, 0, hIcon);
DeleteObject(hIcon);
@ -346,6 +339,28 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
{
switch(uMsg)
{
case WM_CREATE:
{
Globals.hMenu = GetMenu(hWnd);
Globals.hWndNext = SetClipboardViewer(hWnd);
UpdateDisplayMenu();
SetDisplayFormat(0);
break;
}
case WM_CLOSE:
{
DestroyWindow(hWnd);
break;
}
case WM_DESTROY:
{
ChangeClipboardChain(hWnd, Globals.hWndNext);
PostQuitMessage(0);
break;
}
case WM_PAINT:
{
ClipboardPaintHandler(hWnd, uMsg, wParam, lParam);
@ -395,28 +410,6 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
break;
}
case WM_CREATE:
{
Globals.hMenu = GetMenu(hWnd);
Globals.hWndNext = SetClipboardViewer(hWnd);
UpdateDisplayMenu();
SetDisplayFormat(0);
break;
}
case WM_CLOSE:
{
DestroyWindow(hWnd);
break;
}
case WM_DESTROY:
{
ChangeClipboardChain(hWnd, Globals.hWndNext);
PostQuitMessage(0);
break;
}
case WM_CHANGECBCHAIN:
{
if ((HWND)wParam == Globals.hWndNext)
@ -534,7 +527,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
wndclass.cbSize = sizeof(wndclass);
wndclass.lpfnWndProc = MainWndProc;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIP_ICON));
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON));
wndclass.hCursor = LoadCursorW(0, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndclass.lpszMenuName = MAKEINTRESOURCEW(MAIN_MENU);
@ -574,6 +567,10 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
ShowLastWin32Error(Globals.hMainWnd);
}
/* If the user provided a path to a clipboard data file, try to open it */
if (lpCmdLine != NULL && *lpCmdLine)
LoadClipboardDataFromFile(lpCmdLine);
UpdateLinesToScroll();
while (GetMessageW(&msg, 0, 0, 0))

View file

@ -8,7 +8,8 @@
#define REACTOS_STR_ORIGINAL_FILENAME "clipbrd.exe"
#include <reactos/version.rc>
CLIP_ICON ICON "res/clipbrd.ico"
CLIPBRD_ICON ICON "res/clipbrd.ico"
CLPFILE_ICON ICON "res/clpfile.ico"
#include <reactos/manifest_exe.rc>

View file

@ -33,6 +33,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Zwischenablage"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Soll der Inhalt der Zwischenablage gelöscht werden?"
STRING_DELETE_TITLE "Zwischenablage löschen"
STRING_FORMAT_NT "Zwischenablagedateien für ReactOS (*.clp)"

View file

@ -33,6 +33,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Clipboard"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Clear contents of the Clipboard?"
STRING_DELETE_TITLE "Clear Clipboard"
STRING_FORMAT_NT "Clipboard files for ReactOS (*.clp)"

View file

@ -35,6 +35,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Portapapeles"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "¿Borrar contenidos del Portapapeles?"
STRING_DELETE_TITLE "Vaciar Portapapeles"
STRING_FORMAT_NT "Archivos de Portapapeles de ReactOS (*.clp)"

View file

@ -18,7 +18,7 @@ BEGIN
BEGIN
MENUITEM "&Supprimer\tSuppr", CMD_DELETE
END
POPUP "&Affichage"
POPUP "Affic&hage"
BEGIN
MENUITEM "&Automatique", CMD_AUTOMATIC
END
@ -33,6 +33,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Presse-papiers"
STRING_CLIPFILE "Élément du Presse-papiers"
STRING_DELETE_MSG "Voulez-vous effacer le contenu du Presse-papiers ?"
STRING_DELETE_TITLE "Effacer le Presse-papiers"
STRING_FORMAT_NT "Fichiers du Presse-papiers ReactOS (*.clp)"

View file

@ -34,6 +34,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Clipboard"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
STRING_DELETE_TITLE "Curăță Clipboard"
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"

View file

@ -35,6 +35,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Pano"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Pano içeriğini sil?"
STRING_DELETE_TITLE "Pano Sil"
STRING_FORMAT_NT "ReactOS İçin Pano Kütükleri (*.clp)"

View file

@ -35,6 +35,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "剪贴板"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "清除剪贴板的内容吗?"
STRING_DELETE_TITLE "清除剪贴板"
STRING_FORMAT_NT "ReactOS 的剪贴板文件 (*.clp)"

View file

@ -35,6 +35,7 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "剪貼簿"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "清除剪貼簿的內容嗎?"
STRING_DELETE_TITLE "清除剪貼簿"
STRING_FORMAT_NT "ReactOS 的剪貼簿檔案 (*.clp)"

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -1,38 +1,40 @@
#pragma once
#define MAIN_MENU 100
#define CLIP_ICON 101
#define ID_ACCEL 102
#define CLIPBRD_ICON 100
#define CLPFILE_ICON 101
#define MAIN_MENU 102
#define ID_ACCEL 103
#define CMD_OPEN 100
#define CMD_SAVE_AS 101
#define CMD_EXIT 102
#define CMD_DELETE 103
#define CMD_HELP 105
#define CMD_ABOUT 106
#define CMD_OPEN 110
#define CMD_SAVE_AS 111
#define CMD_EXIT 112
#define CMD_DELETE 113
#define CMD_HELP 115
#define CMD_ABOUT 116
#define CMD_AUTOMATIC 1000
#define STRING_CLIPBOARD 100
#define STRING_DELETE_MSG 101
#define STRING_DELETE_TITLE 102
#define STRING_FORMAT_NT 103
#define STRING_FORMAT_GEN 104
#define STRING_CLIPBOARD 120
#define STRING_CLIPFILE 121
#define STRING_DELETE_MSG 123
#define STRING_DELETE_TITLE 124
#define STRING_FORMAT_NT 125
#define STRING_FORMAT_GEN 126
#define STRING_CF_UNKNOWN 200
#define STRING_CF_TEXT 201
#define STRING_CF_BITMAP 202
#define STRING_CF_OEMTEXT 203
#define STRING_CF_UNICODETEXT 204
#define STRING_CF_DIB 205
#define STRING_CF_LOCALE 206
#define STRING_CF_ENHMETAFILE 207
#define STRING_CF_METAFILEPICT 208
#define STRING_CF_METAFILEPICT 203
#define STRING_CF_SYLK 204
#define STRING_CF_DIF 205
#define STRING_CF_OEMTEXT 207
#define STRING_CF_DIB 208
#define STRING_CF_PALETTE 209
#define STRING_CF_DIBV5 210
#define STRING_CF_SYLK 211
#define STRING_CF_DIF 212
#define STRING_CF_HDROP 213
#define STRING_CF_UNICODETEXT 213
#define STRING_CF_ENHMETAFILE 214
#define STRING_CF_HDROP 215
#define STRING_CF_LOCALE 216
#define STRING_CF_DIBV5 217
#define ERROR_UNSUPPORTED_FORMAT 300
#define ERROR_INVALID_FILE_FORMAT 301

View file

@ -23,6 +23,13 @@ HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}","",0x00000000,"Drive Propert
HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","",0x00000000,"shell32.dll"
HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","ThreadingModel",0x00000000,"Apartment"
; Clipboard Element
HKCR,".clp","",0x00000000,"clpfile"
HKCR,"clpfile","",0x00000000,"Clipboard Element"
HKCR,"clpfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\clipbrd.exe,-121"
HKCR,"clpfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\clipbrd.exe,1"
HKCR,"clpfile\shell\open\command","",0x00000000,"clipbrd.exe %1"
; Rich Text Files
HKCR,".rtf","",0x00000000,"rtffile"
HKCR,".rtf\shellnew","",0x00000000,""