Autosyncing with Wine HEAD

svn path=/trunk/; revision=26501
This commit is contained in:
The Wine Synchronizer 2007-04-25 08:22:24 +00:00
parent a8e8588392
commit dee6701b2c
17 changed files with 1182 additions and 42 deletions

View file

@ -57,7 +57,7 @@ typedef struct
} InsertObjectDlgInfo;
INT_PTR CALLBACK UIInsertObjectDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static INT_PTR CALLBACK UIInsertObjectDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static LRESULT UIINSOBJDLG_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam);
static void UIINSERTOBJECTDLG_InitDialog(InsertObjectDlgInfo* pdlgInfo);
static void UIINSERTOBJECTDLG_SelectCreateCtrl(InsertObjectDlgInfo* pdlgInfo);

View file

@ -17,6 +17,7 @@
<library>ntdll</library>
<file>insobjdlg.c</file>
<file>oledlg_main.c</file>
<file>pastespl.c</file>
<file>rsrc.rc</file>
<file>oledlg.spec</file>
</module>

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
@ -53,3 +53,43 @@ STRINGTABLE DISCARDABLE
IDS_NOTOLEMOD "Die Datei ist offenbar kein gültiges OLE - Steuermodul. Die OLE - Steuerung konnte nicht registiert werden."
IDS_NOTOLEMODCAPTION "Steuerung hinzufügen"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Inhalte einfügen"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Quelle:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "&Einfügen", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "&Verknüpfung einfügen", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&Als:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "OK", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
CONTROL "Abbrechen", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
CONTROL "&Hilfe", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
CONTROL "Als Symbol &darstellen", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
CONTROL "&Symbol ändern...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< result text goes here >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "Ergebnis", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "Fügt den Inhalt der Zwischenablage in Ihr Dokument als %s ein."
IDS_PS_PASTE_OBJECT "Fügt den Inhalt der Zwischenablage so in Ihr Dokument ein dass Sie es mit %s aktivieren können."
IDS_PS_PASTE_OBJECT_AS_ICON "Fügt den Inhalt der Zwischenablage so in Ihr Dokument ein dass Sie es mit %s aktivieren können. Wird als Symbol dargestellt."
IDS_PS_PASTE_LINK_DATA "Fügt den Inhalt der Zwischenablage in Ihr Dokument als %s ein. Die Daten sind mit der Ursprungsdatei verknüpft so dass Änderungen an dieser in Ihrem Dokument erscheinen."
IDS_PS_PASTE_LINK_OBJECT "Fügt ein Bild des Zwischenablagen-Inhalts in Ihr Dokument ein. Das Bild ist mit der Ursprungsdatei verknüpft so dass Änderungen an dieser in Ihrem Dokument erscheinen."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Fügt eine Verknüpfung ein die auf den Ort des Zwischenablagen-Inhalts zeigt. Die Verknüpfung ist mit der Ursprungsdatei verknüpft so dass Änderungen an dieser in Ihrem Dokument erscheinen."
IDS_PS_NON_OLE "Fügt den Inhalt der Zwischenablage in Ihr Dokument als ein."
IDS_PS_UNKNOWN_TYPE "Unbekannter Typ"
IDS_PS_UNKNOWN_SRC "Unbekannte Quelle"
IDS_PS_UNKNOWN_APP "dem Erzeugerprogramm"
}

View file

@ -53,3 +53,43 @@ STRINGTABLE DISCARDABLE
IDS_NOTOLEMOD "File does not appear to be a valid OLE module. Unable to register OLE control."
IDS_NOTOLEMODCAPTION "Add Control"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Paste Special"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Source:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "&Paste", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "Paste &Link", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&As:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "OK", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
CONTROL "Cancel", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
CONTROL "&Help", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
CONTROL "&Display As Icon", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
CONTROL "Change &Icon...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< result text goes here >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "Result", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "Inserts the contents of the clipboard into your document as %s."
IDS_PS_PASTE_OBJECT "Inserts the contents of the clipboard into your document so that you can activate it using %s."
IDS_PS_PASTE_OBJECT_AS_ICON "Inserts the contents of the clipboard into your document so that you can activate it using %s. It will be displayed as an icon."
IDS_PS_PASTE_LINK_DATA "Inserts the contents of the clipboard into your document as %s. The data is linked to the source file so that changes to the file will be reflected in your document."
IDS_PS_PASTE_LINK_OBJECT "Inserts a picture of the clipboard contents into your document. The picture is linked to the source file so that changes to the file will be reflected in your document."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Inserts a shortcut which points to the location of the clipboard contents. The shortcut is linked to the source file so that changes to the file will be reflected in your document."
IDS_PS_NON_OLE "Inserts the contents of the clipboard into your document."
IDS_PS_UNKNOWN_TYPE "Unknown Type"
IDS_PS_UNKNOWN_SRC "Unknown Source"
IDS_PS_UNKNOWN_APP "the program which created it"
}

View file

@ -2,7 +2,7 @@
* oledlg dll resources
* French language support
*
* Copyright (C) 2005 Jonathan Ernst
* Copyright (C) 2005-2006 Jonathan Ernst
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -30,30 +30,70 @@ BEGIN
LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP
LTEXT "Type d'objet:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE
LTEXT "Type d'objet :",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE
DEFPUSHBUTTON "OK",IDOK,221,7,66,14
PUSHBUTTON "Annuler",IDCANCEL,221,24,66,14
GROUPBOX "Résultat",IDC_RESULT,7,103,208,41
CONTROL "Créer Nouveau",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
CONTROL "Créer nouveau",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,7,20,62,10
CONTROL "Créer Contrôle",IDC_CREATECONTROL,"Button",
CONTROL "Créer le contrôle",IDC_CREATECONTROL,"Button",
BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10
CONTROL "Créer Depuis Fichier",IDC_CREATEFROMFILE,"Button",
CONTROL "Créer depuis le fichier",IDC_CREATEFROMFILE,"Button",
BS_AUTORADIOBUTTON,7,37,67,10
LTEXT "",IDC_RESULTDESC,49,112,159,23
PUSHBUTTON "&Ajoute Contrôle...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE
CONTROL "Afficher Comme Icône",IDC_ASICON,"Button",BS_AUTOCHECKBOX |
CONTROL "Afficher comme icône",IDC_ASICON,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10
PUSHBUTTON "Parcourir...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE
LTEXT "Fichier:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE
LTEXT "Fichier :",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE
EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE
END
STRINGTABLE DISCARDABLE
{
IDS_RESULTOBJDESC "Insérer un nouvel object %s dans votre document"
IDS_RESULTFILEOBJDESC "Insère le contenu du fichier comme un objet dans votre document afin que vous puissiez l'activer en utilisant le programme avec lequel vous l'avez créé."
IDS_RESULTFILEOBJDESC "Insère le contenu du fichier comme un objet dans votre document afin que vous puissiez l'activer en utilisant le programme avec lequel il a été créé."
IDS_BROWSE "Parcourir"
IDS_NOTOLEMOD "Le fichier ne semble pas être un module OLE valide. Impossible d'enregistrer le contrôle OLE."
IDS_NOTOLEMODCAPTION "Ajouter Contrôle"
IDS_NOTOLEMODCAPTION "Ajouter un contrôle"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Collage spécial"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Source :", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "C&oller", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "Coller le &lien", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&Comme :", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "OK", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
CONTROL "Annuler", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
CONTROL "Aid&e", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
CONTROL "&Afficher comme icône", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
CONTROL "Changer l'&icône...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< le résultat vient ici >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "Résultat", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "Insère le contenu du presse-papiers dans votre document comme %s."
IDS_PS_PASTE_OBJECT "Insère le contenu du presse-papiers dans votre document de sorte que vous puissiez l'activer en utilisant %s."
IDS_PS_PASTE_OBJECT_AS_ICON "Insère le contenu du presse-papiers dans votre document de sorte que vous puissiez l'activer en utilisant %s. Il sera affiché comme une icône."
IDS_PS_PASTE_LINK_DATA "Insère le contenu du presse-papiers dans votre document comme %s. Les données sont liées au fichier source de sorte que les modifications de celles-ci seront répercutées dans votre document."
IDS_PS_PASTE_LINK_OBJECT "Insère le contenu du presse-papiers dans votre document. L'image est liée au fichier source de sorte que les modifications de celle-ci seront répercutées dans votre document."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Insère un raccourci qui pointe vers l'emplacement du contenu du presse-papiers. Le raccourci est lié au fichier source de sorte que les modifications de celui-ci seront répercutées dans votre document."
IDS_PS_NON_OLE "Insère le contenu du presse-papiers dans votre document."
IDS_PS_UNKNOWN_TYPE "Type inconnu"
IDS_PS_UNKNOWN_SRC "Source inconnue"
IDS_PS_UNKNOWN_APP "le programme avec lequel il a été créé"
}

View file

@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
@ -53,3 +53,43 @@ STRINGTABLE DISCARDABLE
IDS_NOTOLEMOD "이 파일은 올바른 OLE모듈이 아닌거로 보입니다. OLE컨트롤을 등록할수 없습니다."
IDS_NOTOLEMODCAPTION "컨트롤 더하기"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "특별하게 붙여넣기"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "원본:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "붙여넣기(&P)", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "링크로 붙여넣기(&L)", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&As:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "확인", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
CONTROL "취소", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
CONTROL "도움말(&H)", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
CONTROL "아이콘으로 보기(&D)", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
CONTROL "아이콘 바꾸기(&I)...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< 결과 텍스트는 여기다가 >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "결과", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "당신의 문서 %s에 클립보드의 내용 삽입하기."
IDS_PS_PASTE_OBJECT "당신의 문서에 클립보드의 내용들을 첨부하면 %s를 사용해서 이것을 실행할 수 있습니다."
IDS_PS_PASTE_OBJECT_AS_ICON "당신의 문서에 클립보드의 내용들을 첨부하면 %s를 사용해서 이것을 실행할 수 있습니다. 이것은 아이콘으로 나타내질 겁니다."
IDS_PS_PASTE_LINK_DATA "당신의 문서 %s에 클립보드의 내용 삽입하기. 이 데이터는 원본 파일에 연결되어 있어서 파일이 바뀌면 당신의 문서도 바뀔겁니다."
IDS_PS_PASTE_LINK_OBJECT "당신의 문서에 클립보드에 있는 그림을 집어넣습니다. 이 그림은 원본 파일에 연결되어 있어서 파일이 바뀌면 당신의 문서도 바뀔겁니다."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "당신의 문서에 클립보드에 있는 단축아이콘을 집어넣습니다. 이 단축아이콘은 원본 파일에 연결되어 있어서 파일이 바뀌면 당신의 문서도 바뀔겁니다t."
IDS_PS_NON_OLE "당신의 문서에 클립보드의 내용 삽입하기."
IDS_PS_UNKNOWN_TYPE "알수 없는 형식"
IDS_PS_UNKNOWN_SRC "알수 없는 원본"
IDS_PS_UNKNOWN_APP "이 프로그램은 알 수 없는 프로그램으로 만들어졌습니다"
}

View file

@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
@ -33,7 +33,7 @@ BEGIN
GROUPBOX "Resultaat",IDC_RESULT,7,103,208,41
CONTROL "Nieuw",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,7,20,62,10
CONTROL "Creëren",IDC_CREATECONTROL,"Button",
CONTROL "Creëren",IDC_CREATECONTROL,"Button",
BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10
CONTROL "Bestand gebruiken",IDC_CREATEFROMFILE,"Button",
BS_AUTORADIOBUTTON,7,37,67,10

View file

@ -1,5 +1,5 @@
/*
* Copyright 2005 Alexander N. Sørnes <alex@thehandofagony.com>
* Copyright 2005-2006 Alexander N. Sørnes <alex@thehandofagony.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -53,3 +53,43 @@ STRINGTABLE DISCARDABLE
IDS_NOTOLEMOD "Filen ser ikke ut til å være en gyldig OLE-modul. Kunne ikke registrere OLE-kontroller."
IDS_NOTOLEMODCAPTION "Legg til kontroller"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lim inn spesiell"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Kilde:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "Lim in&n", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "Lim inn kob&ling", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&Som:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "OK", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 224, 6, 66, 14
CONTROL "Avbryt", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 23, 66, 14
CONTROL "&Hjelp", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 42, 66, 14
CONTROL "&Vis som ikon", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 66, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 224, 75, 66, 44
CONTROL "Endre &ikon . . .", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 224, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< resultatet kommer her >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "Resultat", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Rediger", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "Setter innholdet fra utklippstavlen inn i dokumentet som %s."
IDS_PS_PASTE_OBJECT "Setter innholdet fra utklippstavlen inn i dokumentet så du kan aktivere det med %s."
IDS_PS_PASTE_OBJECT_AS_ICON "Setter innholdet fra utklippstavlen inn i dokumentet så du kan aktivere det med %s. Det vises som et ikon."
IDS_PS_PASTE_LINK_DATA "Setter innholdet fra utklippstavlen inn i dokumentet som %s. Det kobles til kildefilen så endrer i denne også skjer i dokumentet."
IDS_PS_PASTE_LINK_OBJECT "Setter inn et bilde av utklippstavleinnholdet i dokumentet. Bildet kobles til kildefilen så endringer i denne også skjer i dokumentet ."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Setter inn en snarvei som peker til plasseringen av innholdet på utklippstavlen. Snarveien kobles til kildefilen så endringer i denne også skjer i dokumentet."
IDS_PS_NON_OLE "Setter innholdet fra utklippstavlen inn i dokumentet."
IDS_PS_UNKNOWN_TYPE "Ukjent type"
IDS_PS_UNKNOWN_SRC "Ukjent kilde"
IDS_PS_UNKNOWN_APP "programmet som laget det"
}

View file

@ -0,0 +1,96 @@
/*
* Copyright 2003 Ulrich Czekalla for CodeWeavers
* Copyright 2006 Mikolaj Zalewski
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 310, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Wstaw objekt"
FONT 8, "MS Shell Dlg"
BEGIN
LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP
LTEXT "Typ obiektu:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE
DEFPUSHBUTTON "OK",IDOK,229,7,66,14
PUSHBUTTON "Anuluj",IDCANCEL,229,24,66,14
GROUPBOX "Wynik",IDC_RESULT,7,103,208,41
CONTROL "Utwórz nowy",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,7,20,62,10
CONTROL "Utwórz kontrolkê",IDC_CREATECONTROL,"Button",
BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,72,10
CONTROL "Utwórz z pliku",IDC_CREATEFROMFILE,"Button",
BS_AUTORADIOBUTTON,7,37,67,10
LTEXT "",IDC_RESULTDESC,49,112,159,23
PUSHBUTTON "&Dodaj kontrolkê...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE
CONTROL "Wyœwietlaj jako ikonê",IDC_ASICON,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP | NOT WS_VISIBLE,223,58,84,10
PUSHBUTTON "Przegl¹daj...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE
LTEXT "Plik:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE
EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE
END
STRINGTABLE DISCARDABLE
{
IDS_RESULTOBJDESC "Wstaw nowy objekt %s do dokumentu"
IDS_RESULTFILEOBJDESC "Wstaw zawartoœæ pliku jako obiekt do dokumentu. Bêdzie mo¿na go aktywowaæ u¿ywaj¹c programu, który go stworzy³."
IDS_BROWSE "Przegl¹daj"
IDS_NOTOLEMOD "Plik nie wydaje siê byæ poprawnym modu³em OLE. Nie uda³o siê zarejestrowaæ kontrolki OLE."
IDS_NOTOLEMODCAPTION "Dodaj kontrolkê"
}
IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 309, 140
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Wklej specjalnie"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "<22>ród³o:", -1, 6, 9, 30, 8, WS_VISIBLE | WS_GROUP
CONTROL "&Wklej", IDC_PS_PASTE, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE,
6, 38, 55, 10
CONTROL "Wklej &³¹czê", IDC_PS_PASTELINK, "Button", BS_AUTORADIOBUTTON | WS_VISIBLE,
6, 63, 55, 10
LTEXT "&Jako:", -1, 65, 25, 16, 8, WS_VISIBLE | WS_GROUP
LISTBOX IDC_PS_PASTELIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_PASTELINKLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | NOT WS_VISIBLE
LISTBOX IDC_PS_DISPLAYLIST, 65, 36, 153, 57, LBS_NOTIFY | LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_VISIBLE
CONTROL "OK", IDOK, "Button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_VISIBLE, 232, 6, 66, 14
CONTROL "Anuluj", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 232, 23, 66, 14
CONTROL "&Pomoc", IDC_OLEUIHELP, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 232, 42, 66, 14
CONTROL "W&yœwietlaj jako ikonê", IDC_PS_DISPLAYASICON, "Button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE, 224, 59, 84, 14
CONTROL "", IDC_PS_ICONDISPLAY, "Static", SS_ICON | WS_VISIBLE, 232, 75, 66, 44
CONTROL "Zmieñ &ikonê...", IDC_PS_CHANGEICON, "Button", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE, 232, 123, 66, 14
CONTROL "", IDC_PS_RESULTIMAGE, "Static", SS_ICON | WS_VISIBLE, 8, 101, 42, 34
CONTROL "<< result text goes here >>", IDC_PS_RESULTTEXT, "Static", SS_NOPREFIX | WS_VISIBLE, 54, 100, 159, 35
CONTROL "Wynik", -1, "Button", BS_GROUPBOX | WS_GROUP | WS_VISIBLE, 6, 90, 212, 48
CONTROL "", IDC_PS_SOURCETEXT, "Edit", ES_READONLY | ES_AUTOHSCROLL | WS_VISIBLE, 37, 9, 180, 8
END
STRINGTABLE DISCARDABLE
{
IDS_PS_PASTE_DATA "Wstawia zawartoϾ schowka do documentu jako %s."
IDS_PS_PASTE_OBJECT "Wstawia zawartoœæ schowka do dokumentu, tak aby móg³ byæ aktywowany za pomoc¹ %s."
IDS_PS_PASTE_OBJECT_AS_ICON "Wstawia zawartoœæ schowka do dokumentu, tak aby móg³ byæ aktywowany za pomoc¹ %s. Bêdzie wyœwietlany jako ikona."
IDS_PS_PASTE_LINK_DATA "Wstawia zawartoœæ schowka do documentu jako %s. Dane bêd¹ po³¹czone z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie."
IDS_PS_PASTE_LINK_OBJECT "Wstawia zawartoœæ schowka do documentu jako obraz. Obraz bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie."
IDS_PS_PASTE_LINK_OBJECT_AS_ICON "Wstawia do documentu skrót do zawartoœci schowka. Skrót bêdzie po³¹czony z plikiem Ÿród³owym, dziêki czemu zmiany w pliku bêd¹ odzwierciedlone w dokumencie."
IDS_PS_NON_OLE "Wstawia zawartoϾ schowka do dokumentu"
IDS_PS_UNKNOWN_TYPE "Nieznany typ"
IDS_PS_UNKNOWN_SRC "Nieznane Ÿród³o"
IDS_PS_UNKNOWN_APP "program który go stworzy³"
}

View file

@ -1,5 +1,6 @@
/*
* Copyright 2004 Marcelo Duarte
* Copyright 2006 Américo José Melo
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -16,7 +17,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
@ -45,6 +46,38 @@ BEGIN
EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE
END
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Inserir objecto"
FONT 8, "MS Shell Dlg"
BEGIN
LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP
LTEXT "Tipo de objecto:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE
DEFPUSHBUTTON "OK",IDOK,221,7,66,14
PUSHBUTTON "Cancelar",IDCANCEL,221,24,66,14
GROUPBOX "Resultado",IDC_RESULT,7,103,208,41
CONTROL "Criar novo",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,7,20,62,10
CONTROL "Criar controlo",IDC_CREATECONTROL,"Button",
BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10
CONTROL "Criar do ficheiro",IDC_CREATEFROMFILE,"Button",
BS_AUTORADIOBUTTON,7,37,67,10
LTEXT "",IDC_RESULTDESC,49,112,159,23
PUSHBUTTON "&Adicionar Controlo...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE
CONTROL "Mostrar como ícone",IDC_ASICON,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10
PUSHBUTTON "Procurar...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE
LTEXT "Ficheiro:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE
EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE
END
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
STRINGTABLE DISCARDABLE
{
IDS_RESULTOBJDESC "Inserir um novo objeto %s no documento"
@ -53,3 +86,14 @@ STRINGTABLE DISCARDABLE
IDS_NOTOLEMOD "O arquivo não parece ser um módulo OLE válido. Impossível registrar o controle OLE."
IDS_NOTOLEMODCAPTION "Adicionar Controle"
}
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
STRINGTABLE DISCARDABLE
{
IDS_RESULTOBJDESC "Inserir novo objecto %s no documento"
IDS_RESULTFILEOBJDESC "Inserir conteúdo do ficheiro como um objecto no documento de modo que opossa activar usando o programa que o criou."
IDS_BROWSE "Procurar"
IDS_NOTOLEMOD "O ficheiro não parece ser um módulo OLE válido. Impossível registrar o controlo OLE."
IDS_NOTOLEMODCAPTION "Adicionar Controlo"
}

View file

@ -18,7 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define COM_NO_WINDOWS_H
#include <stdarg.h>
#include "windef.h"
@ -27,24 +26,69 @@
#include "wingdi.h"
#include "winuser.h"
#include "oledlg.h"
#include "wine/debug.h"
#include "ole2.h"
#include "oledlg_private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(ole);
HINSTANCE OLEDLG_hInstance = 0;
UINT cf_embed_source;
UINT cf_embedded_object;
UINT cf_link_source;
UINT cf_object_descriptor;
UINT cf_link_src_descriptor;
UINT cf_ownerlink;
UINT cf_filename;
UINT cf_filenamew;
UINT oleui_msg_help;
UINT oleui_msg_enddialog;
static void register_clipboard_formats(void)
{
/* These used to be declared in olestd.h, but that seems to have been removed from the api */
static const WCHAR CF_EMBEDSOURCEW[] = { 'E','m','b','e','d',' ','S','o','u','r','c','e',0 };
static const WCHAR CF_EMBEDDEDOBJECTW[] = { 'E','m','b','e','d','d','e','d',' ','O','b','j','e','c','t',0 };
static const WCHAR CF_LINKSOURCEW[] = { 'L','i','n','k',' ','S','o','u','r','c','e',0 };
static const WCHAR CF_OBJECTDESCRIPTORW[] = { 'O','b','j','e','c','t',' ','D','e','s','c','r','i','p','t','o','r',0 };
static const WCHAR CF_LINKSRCDESCRIPTORW[] = { 'L','i','n','k',' ','S','o','u','r','c','e',' ','D','e','s','c','r','i','p','t','o','r',0 };
static const WCHAR CF_OWNERLINKW[] = { 'O','w','n','e','r','L','i','n','k',0 };
static const WCHAR CF_FILENAMEW[] = { 'F','i','l','e','N','a','m','e',0 };
static const WCHAR CF_FILENAMEWW[] = { 'F','i','l','e','N','a','m','e','W',0 };
/* Load in the same order as native to make debugging easier */
cf_object_descriptor = RegisterClipboardFormatW(CF_OBJECTDESCRIPTORW);
cf_link_src_descriptor = RegisterClipboardFormatW(CF_LINKSRCDESCRIPTORW);
cf_embed_source = RegisterClipboardFormatW(CF_EMBEDSOURCEW);
cf_embedded_object = RegisterClipboardFormatW(CF_EMBEDDEDOBJECTW);
cf_link_source = RegisterClipboardFormatW(CF_LINKSOURCEW);
cf_ownerlink = RegisterClipboardFormatW(CF_OWNERLINKW);
cf_filename = RegisterClipboardFormatW(CF_FILENAMEW);
cf_filenamew = RegisterClipboardFormatW(CF_FILENAMEWW);
}
static void register_messages(void)
{
oleui_msg_help = RegisterWindowMessageW(SZOLEUI_MSG_HELPW);
oleui_msg_enddialog = RegisterWindowMessageW(SZOLEUI_MSG_ENDDIALOGW);
}
/***********************************************************************
* DllMain
*/
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
{
TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad);
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
OLEDLG_hInstance = hinstDLL;
register_clipboard_formats();
register_messages();
break;
case DLL_PROCESS_DETACH:
@ -112,26 +156,6 @@ UINT WINAPI OleUIInsertObjectW(LPOLEUIINSERTOBJECTW lpOleUIInsertObject)
return OLEUI_FALSE;
}
/***********************************************************************
* OleUIPasteSpecialA (OLEDLG.4)
*/
UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial)
{
FIXME("(%p): stub\n", lpOleUIPasteSpecial);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return OLEUI_FALSE;
}
/***********************************************************************
* OleUIPasteSpecialW (OLEDLG.22)
*/
UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial)
{
FIXME("(%p): stub\n", lpOleUIPasteSpecial);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return OLEUI_FALSE;
}
/***********************************************************************
* OleUIEditLinksA (OLEDLG.5)
*/

View file

@ -0,0 +1,38 @@
/*
* oledlg internal header file
*
* Copyright (C) 2006 Huw Davies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __OLEDLG_PRIVATE_H__
#define __OLEDLG_PRIVATE_H__
extern HINSTANCE OLEDLG_hInstance;
extern UINT cf_embed_source;
extern UINT cf_embedded_object;
extern UINT cf_link_source;
extern UINT cf_object_descriptor;
extern UINT cf_link_src_descriptor;
extern UINT cf_ownerlink;
extern UINT cf_filename;
extern UINT cf_filenamew;
extern UINT oleui_msg_help;
extern UINT oleui_msg_enddialog;
#endif /* __OLEDLG_PRIVATE_H__ */

View file

@ -58,8 +58,8 @@ Index: rsrc.rc
===================================================================
--- rsrc.rc (revision 25690)
+++ rsrc.rc (revision working copy)
@@ -44,3 +44,4 @@
#include "oledlg_No.rc"
@@ -47,3 +47,4 @@
#include "oledlg_Pl.rc"
#include "oledlg_Pt.rc"
#include "oledlg_Tr.rc"
+#include "oledlg_Uk.rc"

View file

@ -0,0 +1,722 @@
/*
* OleUIPasteSpecial implementation
*
* Copyright 2006 Huw Davies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define COBJMACROS
#define NONAMELESSSTRUCT
#define NONAMELESSUNION
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "oledlg.h"
#include "oledlg_private.h"
#include "resource.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(ole);
typedef struct
{
OLEUIPASTESPECIALW *ps;
DWORD flags;
WCHAR *source_name;
WCHAR *link_source_name;
WCHAR *type_name;
WCHAR *link_type_name;
LPOLESTR app_name;
} ps_struct_t;
static const struct ps_flag
{
DWORD flag;
const char *name;
} ps_flags[] = {
#define PS_FLAG_ENTRY(p) {p, #p}
PS_FLAG_ENTRY(PSF_SHOWHELP),
PS_FLAG_ENTRY(PSF_SELECTPASTE),
PS_FLAG_ENTRY(PSF_SELECTPASTELINK),
PS_FLAG_ENTRY(PSF_CHECKDISPLAYASICON),
PS_FLAG_ENTRY(PSF_DISABLEDISPLAYASICON),
PS_FLAG_ENTRY(PSF_HIDECHANGEICON),
PS_FLAG_ENTRY(PSF_STAYONCLIPBOARDCHANGE),
PS_FLAG_ENTRY(PSF_NOREFRESHDATAOBJECT),
{-1, NULL}
#undef PS_FLAG_ENTRY
};
static void dump_ps_flags(DWORD flags)
{
char flagstr[1000] = "";
const struct ps_flag *flag = ps_flags;
for( ; flag->name; flag++) {
if(flags & flag->flag) {
strcat(flagstr, flag->name);
strcat(flagstr, "|");
}
}
TRACE("flags %08x %s\n", flags, flagstr);
}
static void dump_pastespecial(LPOLEUIPASTESPECIALW ps)
{
UINT i;
dump_ps_flags(ps->dwFlags);
TRACE("hwnd %p caption %s hook %p custdata %lx\n",
ps->hWndOwner, debugstr_w(ps->lpszCaption), ps->lpfnHook, ps->lCustData);
if(IS_INTRESOURCE(ps->lpszTemplate))
TRACE("hinst %p template %04x hresource %p\n", ps->hInstance, (WORD)(ULONG_PTR)ps->lpszTemplate, ps->hResource);
else
TRACE("hinst %p template %s hresource %p\n", ps->hInstance, debugstr_w(ps->lpszTemplate), ps->hResource);
TRACE("dataobj %p arrpasteent %p cpasteent %d arrlinktype %p clinktype %d\n",
ps->lpSrcDataObj, ps->arrPasteEntries, ps->cPasteEntries,
ps->arrLinkTypes, ps->cLinkTypes);
TRACE("cclsidex %d lpclsidex %p nselect %d flink %d hmetapict %p size(%d,%d)\n",
ps->cClsidExclude, ps->lpClsidExclude, ps->nSelectedIndex, ps->fLink,
ps->hMetaPict, ps->sizel.cx, ps->sizel.cy);
for(i = 0; i < ps->cPasteEntries; i++)
{
TRACE("arrPasteEntries[%d]: cFormat %08x pTargetDevice %p dwAspect %d lindex %d tymed %d\n",
i, ps->arrPasteEntries[i].fmtetc.cfFormat, ps->arrPasteEntries[i].fmtetc.ptd,
ps->arrPasteEntries[i].fmtetc.dwAspect, ps->arrPasteEntries[i].fmtetc.lindex,
ps->arrPasteEntries[i].fmtetc.tymed);
TRACE("\tformat name %s result text %s flags %04x\n", debugstr_w(ps->arrPasteEntries[i].lpstrFormatName),
debugstr_w(ps->arrPasteEntries[i].lpstrResultText), ps->arrPasteEntries[i].dwFlags);
}
for(i = 0; i < ps->cLinkTypes; i++)
TRACE("arrLinkTypes[%d] %08x\n", i, ps->arrLinkTypes[i]);
for(i = 0; i < ps->cClsidExclude; i++)
TRACE("lpClsidExclude[%d] %s\n", i, debugstr_guid(&ps->lpClsidExclude[i]));
}
static inline WCHAR *strdupAtoW(const char *str)
{
DWORD len;
WCHAR *ret;
if(!str) return NULL;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
return ret;
}
static inline WCHAR *strdupW(const WCHAR *str)
{
DWORD len;
WCHAR *ret;
if(!str) return NULL;
len = lstrlenW(str) + 1;
ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
memcpy(ret, str, len * sizeof(WCHAR));
return ret;
}
static void get_descriptors(HWND hdlg, ps_struct_t *ps_struct)
{
FORMATETC fmtetc;
STGMEDIUM stg;
fmtetc.tymed = TYMED_HGLOBAL;
fmtetc.dwAspect = DVASPECT_CONTENT;
fmtetc.ptd = NULL;
fmtetc.lindex = -1;
fmtetc.cfFormat = cf_object_descriptor;
if(IDataObject_GetData(ps_struct->ps->lpSrcDataObj, &fmtetc, &stg) == S_OK)
{
OBJECTDESCRIPTOR *obj_desc = GlobalLock(stg.u.hGlobal);
if(obj_desc->dwSrcOfCopy)
ps_struct->source_name = strdupW((WCHAR*)((char*)obj_desc + obj_desc->dwSrcOfCopy));
if(obj_desc->dwFullUserTypeName)
ps_struct->type_name = strdupW((WCHAR*)((char*)obj_desc + obj_desc->dwFullUserTypeName));
OleRegGetUserType(&obj_desc->clsid, USERCLASSTYPE_APPNAME, &ps_struct->app_name);
/* Get the icon here. If dwDrawAspect & DVASCPECT_ICON call GetData(CF_METAFILEPICT), otherwise
native calls OleGetIconFromClass(obj_desc->clsid) */
GlobalUnlock(stg.u.hGlobal);
GlobalFree(stg.u.hGlobal);
}
else
{
/* Try to get some data using some of the other clipboard formats */
}
fmtetc.cfFormat = cf_link_src_descriptor;
if(IDataObject_GetData(ps_struct->ps->lpSrcDataObj, &fmtetc, &stg) == S_OK)
{
OBJECTDESCRIPTOR *obj_desc = GlobalLock(stg.u.hGlobal);
if(obj_desc->dwSrcOfCopy)
ps_struct->link_source_name = strdupW((WCHAR*)((char*)obj_desc + obj_desc->dwSrcOfCopy));
if(obj_desc->dwFullUserTypeName)
ps_struct->link_type_name = strdupW((WCHAR*)((char*)obj_desc + obj_desc->dwFullUserTypeName));
GlobalUnlock(stg.u.hGlobal);
GlobalFree(stg.u.hGlobal);
}
if(ps_struct->source_name == NULL && ps_struct->link_source_name == NULL)
{
WCHAR buf[200];
LoadStringW(OLEDLG_hInstance, IDS_PS_UNKNOWN_SRC, buf, sizeof(buf)/sizeof(WCHAR));
ps_struct->source_name = strdupW(buf);
}
if(ps_struct->type_name == NULL && ps_struct->link_type_name == NULL)
{
WCHAR buf[200];
LoadStringW(OLEDLG_hInstance, IDS_PS_UNKNOWN_TYPE, buf, sizeof(buf)/sizeof(WCHAR));
ps_struct->type_name = strdupW(buf);
}
}
static BOOL add_entry_to_lb(HWND hdlg, UINT id, OLEUIPASTEENTRYW *pe)
{
HWND hwnd = GetDlgItem(hdlg, id);
BOOL ret = FALSE;
/* FIXME %s handling */
/* Note that this suffers from the same bug as native, in that if a new string
is a substring of an already added string, then the FINDSTRING will succeed
this is probably not what we want */
if(SendMessageW(hwnd, LB_FINDSTRING, 0, (LPARAM)pe->lpstrFormatName) == -1)
{
LRESULT pos = SendMessageW(hwnd, LB_ADDSTRING, 0, (LPARAM)pe->lpstrFormatName);
SendMessageW(hwnd, LB_SETITEMDATA, pos, (LPARAM)pe);
ret = TRUE;
}
return ret;
}
static DWORD init_pastelist(HWND hdlg, OLEUIPASTESPECIALW *ps)
{
IEnumFORMATETC *penum;
HRESULT hr;
FORMATETC fmts[20];
DWORD fetched, items_added = 0;
hr = IDataObject_EnumFormatEtc(ps->lpSrcDataObj, DATADIR_GET, &penum);
if(FAILED(hr))
{
WARN("Unable to create IEnumFORMATETC\n");
return 0;
}
/* The native version grabs only the first 20 fmts and we do the same */
hr = IEnumFORMATETC_Next(penum, sizeof(fmts)/sizeof(fmts[0]), fmts, &fetched);
TRACE("got %d formats hr %08x\n", fetched, hr);
if(SUCCEEDED(hr))
{
DWORD src_fmt, req_fmt;
for(req_fmt = 0; req_fmt < ps->cPasteEntries; req_fmt++)
{
/* This is used by update_structure() to set nSelectedIndex on exit */
ps->arrPasteEntries[req_fmt].dwScratchSpace = req_fmt;
TRACE("req_fmt %x\n", ps->arrPasteEntries[req_fmt].fmtetc.cfFormat);
for(src_fmt = 0; src_fmt < fetched; src_fmt++)
{
TRACE("\tenum'ed fmt %x\n", fmts[src_fmt].cfFormat);
if(ps->arrPasteEntries[req_fmt].fmtetc.cfFormat == fmts[src_fmt].cfFormat)
{
add_entry_to_lb(hdlg, IDC_PS_PASTELIST, ps->arrPasteEntries + req_fmt);
items_added++;
break;
}
}
}
}
IEnumFORMATETC_Release(penum);
EnableWindow(GetDlgItem(hdlg, IDC_PS_PASTE), items_added ? TRUE : FALSE);
return items_added;
}
static DWORD init_linklist(HWND hdlg, OLEUIPASTESPECIALW *ps)
{
HRESULT hr;
DWORD supported_mask = 0;
DWORD items_added = 0;
int link, req_fmt;
FORMATETC fmt = {0, NULL, DVASPECT_CONTENT, -1, -1};
for(link = 0; link < ps->cLinkTypes && link < PS_MAXLINKTYPES; link++)
{
fmt.cfFormat = ps->arrLinkTypes[link];
hr = IDataObject_QueryGetData(ps->lpSrcDataObj, &fmt);
if(hr == S_OK)
supported_mask |= 1 << link;
}
TRACE("supported_mask %02x\n", supported_mask);
for(req_fmt = 0; req_fmt < ps->cPasteEntries; req_fmt++)
{
DWORD linktypes;
if(ps->arrPasteEntries[req_fmt].dwFlags & OLEUIPASTE_LINKANYTYPE)
linktypes = 0xff;
else
linktypes = ps->arrPasteEntries[req_fmt].dwFlags & 0xff;
if(linktypes & supported_mask)
{
add_entry_to_lb(hdlg, IDC_PS_PASTELINKLIST, ps->arrPasteEntries + req_fmt);
items_added++;
}
}
EnableWindow(GetDlgItem(hdlg, IDC_PS_PASTELINK), items_added ? TRUE : FALSE);
return items_added;
}
/* copies src_list_id into the display list */
static void update_display_list(HWND hdlg, UINT src_list_id)
{
LONG count, i, old_pos;
WCHAR txt[256];
LONG item_data;
HWND display_list = GetDlgItem(hdlg, IDC_PS_DISPLAYLIST);
HWND list = GetDlgItem(hdlg, src_list_id);
old_pos = SendMessageW(display_list, LB_GETCURSEL, 0, 0);
if(old_pos == -1) old_pos = 0;
SendMessageW(display_list, WM_SETREDRAW, 0, 0);
SendMessageW(display_list, LB_RESETCONTENT, 0, 0);
count = SendMessageW(list, LB_GETCOUNT, 0, 0);
for(i = 0; i < count; i++)
{
SendMessageW(list, LB_GETTEXT, i, (LPARAM)txt);
item_data = SendMessageW(list, LB_GETITEMDATA, i, 0);
SendMessageW(display_list, LB_INSERTSTRING, i, (LPARAM)txt);
SendMessageW(display_list, LB_SETITEMDATA, i, item_data);
}
old_pos = max(old_pos, count);
SendMessageW(display_list, LB_SETCURSEL, 0, 0);
SendMessageW(display_list, WM_SETREDRAW, 1, 0);
if(GetForegroundWindow() == hdlg)
SetFocus(display_list);
}
static void init_lists(HWND hdlg, ps_struct_t *ps_struct)
{
DWORD pastes_added = init_pastelist(hdlg, ps_struct->ps);
DWORD links_added = init_linklist(hdlg, ps_struct->ps);
UINT check_id, list_id;
if((ps_struct->flags & (PSF_SELECTPASTE | PSF_SELECTPASTELINK)) == 0)
ps_struct->flags |= PSF_SELECTPASTE;
if(!pastes_added && !links_added)
ps_struct->flags &= ~(PSF_SELECTPASTE | PSF_SELECTPASTELINK);
else if(!pastes_added && (ps_struct->flags & PSF_SELECTPASTE))
{
ps_struct->flags &= ~PSF_SELECTPASTE;
ps_struct->flags |= PSF_SELECTPASTELINK;
}
else if(!links_added && (ps_struct->flags & PSF_SELECTPASTELINK))
{
ps_struct->flags &= ~PSF_SELECTPASTELINK;
ps_struct->flags |= PSF_SELECTPASTE;
}
check_id = 0;
list_id = 0;
if(ps_struct->flags & PSF_SELECTPASTE)
{
check_id = IDC_PS_PASTE;
list_id = IDC_PS_PASTELIST;
}
else if(ps_struct->flags & PSF_SELECTPASTELINK)
{
check_id = IDC_PS_PASTELINK;
list_id = IDC_PS_PASTELINKLIST;
}
CheckRadioButton(hdlg, IDC_PS_PASTE, IDC_PS_PASTELINK, check_id);
if(list_id)
update_display_list(hdlg, list_id);
else
EnableWindow(GetDlgItem(hdlg, IDOK), 0);
}
static void update_src_text(HWND hdlg, ps_struct_t *ps_struct)
{
WCHAR *str;
if(ps_struct->flags & PSF_SELECTPASTE)
{
if(ps_struct->source_name)
str = ps_struct->source_name;
else
str = ps_struct->link_source_name;
}
else
{
if(ps_struct->link_source_name)
str = ps_struct->link_source_name;
else
str = ps_struct->source_name;
}
SetDlgItemTextW(hdlg, IDC_PS_SOURCETEXT, str);
}
static void update_as_icon(HWND hdlg, ps_struct_t *ps_struct)
{
HWND icon_display = GetDlgItem(hdlg, IDC_PS_ICONDISPLAY);
HWND display_as_icon = GetDlgItem(hdlg, IDC_PS_DISPLAYASICON);
HWND change_icon = GetDlgItem(hdlg, IDC_PS_CHANGEICON);
/* FIXME. No as icon handling */
ps_struct->flags &= ~PSF_CHECKDISPLAYASICON;
CheckDlgButton(hdlg, IDC_PS_DISPLAYASICON, ps_struct->flags & PSF_CHECKDISPLAYASICON);
EnableWindow(display_as_icon, 0);
ShowWindow(icon_display, SW_HIDE);
EnableWindow(icon_display, 0);
ShowWindow(change_icon, SW_HIDE);
EnableWindow(change_icon, 0);
}
static void update_result_text(HWND hdlg, ps_struct_t *ps_struct)
{
WCHAR resource_txt[200];
UINT res_id;
OLEUIPASTEENTRYW *pent;
LONG cur_sel;
static const WCHAR percent_s[] = {'%','s',0};
WCHAR *result_txt, *ptr;
cur_sel = SendMessageW(GetDlgItem(hdlg, IDC_PS_DISPLAYLIST), LB_GETCURSEL, 0, 0);
if(cur_sel == -1) return;
pent = (OLEUIPASTEENTRYW*)SendMessageW(GetDlgItem(hdlg, IDC_PS_DISPLAYLIST), LB_GETITEMDATA, cur_sel, 0);
if(ps_struct->flags & PSF_SELECTPASTE)
{
if(ps_struct->flags & PSF_CHECKDISPLAYASICON)
res_id = IDS_PS_PASTE_OBJECT_AS_ICON;
else
res_id = IDS_PS_PASTE_DATA;
}
else
{
if(ps_struct->flags & PSF_CHECKDISPLAYASICON)
res_id = IDS_PS_PASTE_LINK_OBJECT_AS_ICON;
else
res_id = IDS_PS_PASTE_LINK_DATA;
}
LoadStringW(OLEDLG_hInstance, res_id, resource_txt, sizeof(resource_txt)/sizeof(WCHAR));
if((ptr = strstrW(resource_txt, percent_s)))
{
/* FIXME handle %s in ResultText. Sub appname if IDS_PS_PASTE_OBJECT{_AS_ICON}. Else sub appropiate type name */
size_t result_txt_len = strlenW(pent->lpstrResultText);
ptrdiff_t offs = (char*)ptr - (char*)resource_txt;
result_txt = HeapAlloc(GetProcessHeap(), 0, (strlenW(resource_txt) + result_txt_len - 1) * sizeof(WCHAR));
memcpy(result_txt, resource_txt, offs);
memcpy((char*)result_txt + offs, pent->lpstrResultText, result_txt_len * sizeof(WCHAR));
memcpy((char*)result_txt + offs + result_txt_len * sizeof(WCHAR), ptr + 2, (strlenW(ptr + 2) + 1) * sizeof(WCHAR));
}
else
result_txt = resource_txt;
SetDlgItemTextW(hdlg, IDC_PS_RESULTTEXT, result_txt);
if(result_txt != resource_txt)
HeapFree(GetProcessHeap(), 0, result_txt);
}
static void selection_change(HWND hdlg, ps_struct_t *ps_struct)
{
update_as_icon(hdlg, ps_struct);
update_result_text(hdlg, ps_struct);
}
static void mode_change(HWND hdlg, ps_struct_t *ps_struct, UINT id)
{
if(id == IDC_PS_PASTE)
{
ps_struct->flags &= ~PSF_SELECTPASTELINK;
ps_struct->flags |= PSF_SELECTPASTE;
}
else
{
ps_struct->flags &= ~PSF_SELECTPASTE;
ps_struct->flags |= PSF_SELECTPASTELINK;
}
update_src_text(hdlg, ps_struct);
update_display_list(hdlg, id == IDC_PS_PASTE ? IDC_PS_PASTELIST : IDC_PS_PASTELINKLIST);
selection_change(hdlg, ps_struct);
}
static void post_help_msg(HWND hdlg, ps_struct_t *ps_struct)
{
PostMessageW(ps_struct->ps->hWndOwner, oleui_msg_help, (WPARAM)hdlg, IDD_PASTESPECIAL);
}
static void send_end_dialog_msg(HWND hdlg, ps_struct_t *ps_struct, UINT id)
{
SendMessageW(hdlg, oleui_msg_enddialog, id, 0);
}
static void update_structure(HWND hdlg, ps_struct_t *ps_struct)
{
LONG cur_sel = SendMessageW(GetDlgItem(hdlg, IDC_PS_DISPLAYLIST), LB_GETCURSEL, 0, 0);
if(cur_sel != -1)
{
OLEUIPASTEENTRYW *pent;
pent = (OLEUIPASTEENTRYW *)SendMessageW(GetDlgItem(hdlg, IDC_PS_DISPLAYLIST), LB_GETITEMDATA, cur_sel, 0);
ps_struct->ps->nSelectedIndex = pent->dwScratchSpace;
}
ps_struct->ps->dwFlags = ps_struct->flags;
ps_struct->ps->fLink = (ps_struct->flags & PSF_SELECTPASTELINK) ? TRUE : FALSE;
}
static void free_structure(ps_struct_t *ps_struct)
{
HeapFree(GetProcessHeap(), 0, ps_struct->type_name);
HeapFree(GetProcessHeap(), 0, ps_struct->source_name);
HeapFree(GetProcessHeap(), 0, ps_struct->link_type_name);
HeapFree(GetProcessHeap(), 0, ps_struct->link_source_name);
CoTaskMemFree(ps_struct->app_name);
HeapFree(GetProcessHeap(), 0, ps_struct);
}
static INT_PTR CALLBACK ps_dlg_proc(HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
{
/* native uses prop name "Structure", but we're not compatible
with that so we'll prepend "Wine_". */
static const WCHAR prop_name[] = {'W','i','n','e','_','S','t','r','u','c','t','u','r','e',0};
ps_struct_t *ps_struct;
TRACE("(%p, %04x, %08x, %08lx)\n", hdlg, msg, wp, lp);
ps_struct = GetPropW(hdlg, prop_name);
if(msg != WM_INITDIALOG)
{
if(!ps_struct)
return 0;
if(ps_struct->ps->lpfnHook)
{
INT_PTR ret = ps_struct->ps->lpfnHook(hdlg, msg, wp, lp);
if(ret) return ret;
}
}
switch(msg)
{
case WM_INITDIALOG:
{
ps_struct = HeapAlloc(GetProcessHeap(), 0, sizeof(*ps_struct));
ps_struct->ps = (OLEUIPASTESPECIALW*)lp;
ps_struct->type_name = NULL;
ps_struct->source_name = NULL;
ps_struct->link_type_name = NULL;
ps_struct->link_source_name = NULL;
ps_struct->app_name = NULL;
ps_struct->flags = ps_struct->ps->dwFlags;
SetPropW(hdlg, prop_name, ps_struct);
if(!(ps_struct->ps->dwFlags & PSF_SHOWHELP))
{
ShowWindow(GetDlgItem(hdlg, IDC_OLEUIHELP), SW_HIDE);
EnableWindow(GetDlgItem(hdlg, IDC_OLEUIHELP), 0);
}
if(ps_struct->ps->lpszCaption)
SetWindowTextW(hdlg, ps_struct->ps->lpszCaption);
get_descriptors(hdlg, ps_struct);
init_lists(hdlg, ps_struct);
update_src_text(hdlg, ps_struct);
selection_change(hdlg, ps_struct);
SetFocus(GetDlgItem(hdlg, IDC_PS_DISPLAYLIST));
if(ps_struct->ps->lpfnHook)
ps_struct->ps->lpfnHook(hdlg, msg, 0, 0);
return FALSE; /* use new focus */
}
case WM_COMMAND:
switch(LOWORD(wp))
{
case IDC_PS_DISPLAYLIST:
switch(HIWORD(wp))
{
case LBN_SELCHANGE:
selection_change(hdlg, ps_struct);
return FALSE;
default:
return FALSE;
}
case IDC_PS_PASTE:
case IDC_PS_PASTELINK:
switch(HIWORD(wp))
{
case BN_CLICKED:
mode_change(hdlg, ps_struct, LOWORD(wp));
return FALSE;
default:
return FALSE;
}
case IDC_OLEUIHELP:
switch(HIWORD(wp))
{
case BN_CLICKED:
post_help_msg(hdlg, ps_struct);
return FALSE;
default:
return FALSE;
}
case IDOK:
case IDCANCEL:
switch(HIWORD(wp))
{
case BN_CLICKED:
send_end_dialog_msg(hdlg, ps_struct, LOWORD(wp));
return FALSE;
default:
return FALSE;
}
}
return FALSE;
default:
if(msg == oleui_msg_enddialog)
{
if(wp == IDOK)
update_structure(hdlg, ps_struct);
EndDialog(hdlg, wp);
/* native does its cleanup in WM_DESTROY */
RemovePropW(hdlg, prop_name);
free_structure(ps_struct);
return TRUE;
}
return FALSE;
}
}
/***********************************************************************
* OleUIPasteSpecialA (OLEDLG.4)
*/
UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA psA)
{
OLEUIPASTESPECIALW ps;
UINT ret;
TRACE("(%p)\n", psA);
memcpy(&ps, psA, psA->cbStruct);
ps.lpszCaption = strdupAtoW(psA->lpszCaption);
if(!IS_INTRESOURCE(ps.lpszTemplate))
ps.lpszTemplate = strdupAtoW(psA->lpszTemplate);
if(psA->cPasteEntries > 0)
{
DWORD size = psA->cPasteEntries * sizeof(ps.arrPasteEntries[0]);
UINT i;
ps.arrPasteEntries = HeapAlloc(GetProcessHeap(), 0, size);
memcpy(ps.arrPasteEntries, psA->arrPasteEntries, size);
for(i = 0; i < psA->cPasteEntries; i++)
{
ps.arrPasteEntries[i].lpstrFormatName =
strdupAtoW(psA->arrPasteEntries[i].lpstrFormatName);
ps.arrPasteEntries[i].lpstrResultText =
strdupAtoW(psA->arrPasteEntries[i].lpstrResultText);
}
}
ret = OleUIPasteSpecialW(&ps);
if(psA->cPasteEntries > 0)
{
UINT i;
for(i = 0; i < psA->cPasteEntries; i++)
{
HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.arrPasteEntries[i].lpstrFormatName);
HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.arrPasteEntries[i].lpstrResultText);
}
HeapFree(GetProcessHeap(), 0, ps.arrPasteEntries);
}
if(!IS_INTRESOURCE(ps.lpszTemplate))
HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.lpszTemplate);
HeapFree(GetProcessHeap(), 0, (WCHAR*)ps.lpszCaption);
/* Copy back the output fields */
psA->dwFlags = ps.dwFlags;
psA->lpSrcDataObj = ps.lpSrcDataObj;
psA->nSelectedIndex = ps.nSelectedIndex;
psA->fLink = ps.fLink;
psA->hMetaPict = ps.hMetaPict;
psA->sizel = ps.sizel;
return ret;
}
/***********************************************************************
* OleUIPasteSpecialW (OLEDLG.22)
*/
UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW ps)
{
LPCDLGTEMPLATEW dlg_templ = (LPCDLGTEMPLATEW)ps->hResource;
UINT ret;
TRACE("(%p)\n", ps);
if(TRACE_ON(ole)) dump_pastespecial(ps);
if(!ps->lpSrcDataObj)
OleGetClipboard(&ps->lpSrcDataObj);
if(ps->hInstance || !ps->hResource)
{
HINSTANCE hInst = ps->hInstance ? ps->hInstance : OLEDLG_hInstance;
const WCHAR *name = ps->hInstance ? ps->lpszTemplate : MAKEINTRESOURCEW(IDD_PASTESPECIAL4);
HRSRC hrsrc;
if(name == NULL) return OLEUI_ERR_LPSZTEMPLATEINVALID;
hrsrc = FindResourceW(hInst, name, MAKEINTRESOURCEW(RT_DIALOG));
if(!hrsrc) return OLEUI_ERR_FINDTEMPLATEFAILURE;
dlg_templ = LoadResource(hInst, hrsrc);
if(!dlg_templ) return OLEUI_ERR_LOADTEMPLATEFAILURE;
}
ret = DialogBoxIndirectParamW(OLEDLG_hInstance, dlg_templ, ps->hWndOwner, ps_dlg_proc, (LPARAM)ps);
return ret;
}

View file

@ -38,3 +38,15 @@
#define IDC_BROWSE 1009
#define IDC_FILELBL 1010
#define IDC_FILE 1011
/* String ids for Paste Special */
#define IDS_PS_PASTE_DATA 0x190
#define IDS_PS_PASTE_OBJECT 0x191
#define IDS_PS_PASTE_OBJECT_AS_ICON 0x192
#define IDS_PS_PASTE_LINK_DATA 0x193
#define IDS_PS_PASTE_LINK_OBJECT 0x194
#define IDS_PS_PASTE_LINK_OBJECT_AS_ICON 0x195
#define IDS_PS_NON_OLE 0x196
#define IDS_PS_UNKNOWN_TYPE 0x197
#define IDS_PS_UNKNOWN_SRC 0x198
#define IDS_PS_UNKNOWN_APP 0x199

View file

@ -22,6 +22,8 @@
#include "winbase.h"
#include "winuser.h"
#include "winnls.h"
#include "oledlg.h"
#include "resource.h"
/*
@ -42,6 +44,7 @@
#include "oledlg_Ko.rc"
#include "oledlg_Nl.rc"
#include "oledlg_No.rc"
#include "oledlg_Pl.rc"
#include "oledlg_Pt.rc"
#include "oledlg_Tr.rc"
#include "oledlg_Uk.rc"