From cdb174ecccf090279e57580d1d714baf1f600652 Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Fri, 9 Jan 2004 01:58:22 +0000 Subject: [PATCH] Ported comdlg32.dll from Wine. There are still a few minor bugs with it. svn path=/trunk/; revision=7520 --- reactos/lib/comdlg32/.cvsignore | 20 + reactos/lib/comdlg32/Makefile.in | 48 + reactos/lib/comdlg32/Makefile.ros-template | 20 + reactos/lib/comdlg32/cdlg.h | 224 ++ reactos/lib/comdlg32/cdlg16.h | 155 + reactos/lib/comdlg32/cdlg32.c | 182 ++ reactos/lib/comdlg32/cdlg_Ca.rc | 218 ++ reactos/lib/comdlg32/cdlg_Cn.rc | 444 +++ reactos/lib/comdlg32/cdlg_Cs.rc | 185 ++ reactos/lib/comdlg32/cdlg_Da.rc | 219 ++ reactos/lib/comdlg32/cdlg_De.rc | 436 +++ reactos/lib/comdlg32/cdlg_En.rc | 462 +++ reactos/lib/comdlg32/cdlg_Eo.rc | 185 ++ reactos/lib/comdlg32/cdlg_Es.rc | 218 ++ reactos/lib/comdlg32/cdlg_Fi.rc | 218 ++ reactos/lib/comdlg32/cdlg_Fr.rc | 465 +++ reactos/lib/comdlg32/cdlg_Hu.rc | 215 ++ reactos/lib/comdlg32/cdlg_It.rc | 215 ++ reactos/lib/comdlg32/cdlg_Ja.rc | 341 ++ reactos/lib/comdlg32/cdlg_Ko.rc | 297 ++ reactos/lib/comdlg32/cdlg_Nl.rc | 323 ++ reactos/lib/comdlg32/cdlg_No.rc | 185 ++ reactos/lib/comdlg32/cdlg_Pl.rc | 218 ++ reactos/lib/comdlg32/cdlg_Pt.rc | 461 +++ reactos/lib/comdlg32/cdlg_Ru.rc | 410 +++ reactos/lib/comdlg32/cdlg_Si.rc | 439 +++ reactos/lib/comdlg32/cdlg_Sk.rc | 412 +++ reactos/lib/comdlg32/cdlg_Sv.rc | 432 +++ reactos/lib/comdlg32/cdlg_Wa.rc | 225 ++ reactos/lib/comdlg32/cdlg_Zh.rc | 232 ++ reactos/lib/comdlg32/cdlg_xx.rc | 620 ++++ reactos/lib/comdlg32/colordlg.c | 1343 ++++++++ reactos/lib/comdlg32/colordlg16.c | 476 +++ reactos/lib/comdlg32/comdlg32.spec | 25 + reactos/lib/comdlg32/commdlg.spec | 27 + reactos/lib/comdlg32/filedlg.c | 3283 ++++++++++++++++++++ reactos/lib/comdlg32/filedlg16.c | 1463 +++++++++ reactos/lib/comdlg32/filedlgbrowser.c | 957 ++++++ reactos/lib/comdlg32/filedlgbrowser.h | 166 + reactos/lib/comdlg32/filetitle.c | 114 + reactos/lib/comdlg32/finddlg.c | 496 +++ reactos/lib/comdlg32/finddlg32.c | 557 ++++ reactos/lib/comdlg32/fontdlg.c | 1281 ++++++++ reactos/lib/comdlg32/fontdlg16.c | 351 +++ reactos/lib/comdlg32/generic.c | 63 + reactos/lib/comdlg32/makefile | 9 + reactos/lib/comdlg32/printdlg.c | 2928 +++++++++++++++++ reactos/lib/comdlg32/printdlg.h | 106 + reactos/lib/comdlg32/printdlg16.c | 610 ++++ reactos/lib/comdlg32/ros.h | 17 + reactos/lib/comdlg32/rsrc.rc | 67 + 51 files changed, 23063 insertions(+) create mode 100644 reactos/lib/comdlg32/.cvsignore create mode 100644 reactos/lib/comdlg32/Makefile.in create mode 100644 reactos/lib/comdlg32/Makefile.ros-template create mode 100644 reactos/lib/comdlg32/cdlg.h create mode 100644 reactos/lib/comdlg32/cdlg16.h create mode 100644 reactos/lib/comdlg32/cdlg32.c create mode 100644 reactos/lib/comdlg32/cdlg_Ca.rc create mode 100644 reactos/lib/comdlg32/cdlg_Cn.rc create mode 100644 reactos/lib/comdlg32/cdlg_Cs.rc create mode 100644 reactos/lib/comdlg32/cdlg_Da.rc create mode 100644 reactos/lib/comdlg32/cdlg_De.rc create mode 100644 reactos/lib/comdlg32/cdlg_En.rc create mode 100644 reactos/lib/comdlg32/cdlg_Eo.rc create mode 100644 reactos/lib/comdlg32/cdlg_Es.rc create mode 100644 reactos/lib/comdlg32/cdlg_Fi.rc create mode 100644 reactos/lib/comdlg32/cdlg_Fr.rc create mode 100644 reactos/lib/comdlg32/cdlg_Hu.rc create mode 100644 reactos/lib/comdlg32/cdlg_It.rc create mode 100644 reactos/lib/comdlg32/cdlg_Ja.rc create mode 100644 reactos/lib/comdlg32/cdlg_Ko.rc create mode 100644 reactos/lib/comdlg32/cdlg_Nl.rc create mode 100644 reactos/lib/comdlg32/cdlg_No.rc create mode 100644 reactos/lib/comdlg32/cdlg_Pl.rc create mode 100644 reactos/lib/comdlg32/cdlg_Pt.rc create mode 100644 reactos/lib/comdlg32/cdlg_Ru.rc create mode 100644 reactos/lib/comdlg32/cdlg_Si.rc create mode 100644 reactos/lib/comdlg32/cdlg_Sk.rc create mode 100644 reactos/lib/comdlg32/cdlg_Sv.rc create mode 100644 reactos/lib/comdlg32/cdlg_Wa.rc create mode 100644 reactos/lib/comdlg32/cdlg_Zh.rc create mode 100644 reactos/lib/comdlg32/cdlg_xx.rc create mode 100644 reactos/lib/comdlg32/colordlg.c create mode 100644 reactos/lib/comdlg32/colordlg16.c create mode 100644 reactos/lib/comdlg32/comdlg32.spec create mode 100644 reactos/lib/comdlg32/commdlg.spec create mode 100644 reactos/lib/comdlg32/filedlg.c create mode 100644 reactos/lib/comdlg32/filedlg16.c create mode 100644 reactos/lib/comdlg32/filedlgbrowser.c create mode 100644 reactos/lib/comdlg32/filedlgbrowser.h create mode 100644 reactos/lib/comdlg32/filetitle.c create mode 100644 reactos/lib/comdlg32/finddlg.c create mode 100644 reactos/lib/comdlg32/finddlg32.c create mode 100644 reactos/lib/comdlg32/fontdlg.c create mode 100644 reactos/lib/comdlg32/fontdlg16.c create mode 100644 reactos/lib/comdlg32/generic.c create mode 100644 reactos/lib/comdlg32/makefile create mode 100644 reactos/lib/comdlg32/printdlg.c create mode 100644 reactos/lib/comdlg32/printdlg.h create mode 100644 reactos/lib/comdlg32/printdlg16.c create mode 100644 reactos/lib/comdlg32/ros.h create mode 100644 reactos/lib/comdlg32/rsrc.rc diff --git a/reactos/lib/comdlg32/.cvsignore b/reactos/lib/comdlg32/.cvsignore new file mode 100644 index 00000000000..9edd5cbe53b --- /dev/null +++ b/reactos/lib/comdlg32/.cvsignore @@ -0,0 +1,20 @@ +*.coff +*.dll +*.d +*.a +*.o +*.sym +*.map +*.tmp +Makefile.ros +idb_hist_large.bmp +idb_hist_small.bmp +idb_std_small.bmp +idb_std_large.bmp +idb_view_large.bmp +idb_view_small.bmp +idc_divider.cur +idc_divideropen.cur +idi_dragarrow.ico +idt_check.bmp +comctl32.spec.def diff --git a/reactos/lib/comdlg32/Makefile.in b/reactos/lib/comdlg32/Makefile.in new file mode 100644 index 00000000000..f3d024d5196 --- /dev/null +++ b/reactos/lib/comdlg32/Makefile.in @@ -0,0 +1,48 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = comdlg32.dll +IMPORTS = shell32 shlwapi comctl32 winspool user32 gdi32 kernel32 ntdll +ALTNAMES = commdlg.dll +EXTRALIBS = $(LIBUUID) + +SPEC_SRCS16 = $(ALTNAMES:.dll=.spec) + +C_SRCS = \ + cdlg32.c \ + colordlg.c \ + filedlg.c \ + filedlgbrowser.c \ + finddlg32.c \ + filetitle.c \ + fontdlg.c \ + printdlg.c + +C_SRCS16 = \ + colordlg16.c \ + filedlg16.c \ + finddlg.c \ + fontdlg16.c \ + generic.c \ + printdlg16.c + +RC_SRCS = rsrc.rc +RC_BINSRC = cdlg_xx.rc +RC_BINARIES = \ + 800.bmp \ + cdrom.ico \ + floppy.ico \ + folder.ico \ + folder2.ico \ + fontpics.bmp \ + hdisk.ico \ + network.ico \ + pd32_collate.ico \ + pd32_landscape.ico \ + pd32_nocollate.ico \ + pd32_portrait.ico + +@MAKE_DLL_RULES@ + +### Dependencies: diff --git a/reactos/lib/comdlg32/Makefile.ros-template b/reactos/lib/comdlg32/Makefile.ros-template new file mode 100644 index 00000000000..4b025ec4a53 --- /dev/null +++ b/reactos/lib/comdlg32/Makefile.ros-template @@ -0,0 +1,20 @@ + +TARGET_NAME = comdlg32 + +TARGET_OBJECTS = @C_SRCS@ + +TARGET_CFLAGS = -D__REACTOS__ @EXTRADEFS@ + +TARGET_SDKLIBS = @IMPORTS@ libwine.a libwine_unicode.a wine_uuid.a ntdll.a winspool.a + +TARGET_BASE = 0x77a50000 + +TARGET_RC_SRCS = @RC_SRCS@ +TARGET_RC_BINSRC = @RC_BINSRC@ +TARGET_RC_BINARIES = @RC_BINARIES@ + +default: all + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/comdlg32/cdlg.h b/reactos/lib/comdlg32/cdlg.h new file mode 100644 index 00000000000..5345266cef1 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg.h @@ -0,0 +1,224 @@ +/* + * Common Dialog Boxes interface (32 bit) + * + * Copyright 1998 Bertho A. Stultiens + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _WINE_DLL_CDLG_H +#define _WINE_DLL_CDLG_H + +#define COM_NO_WINDOWS_H +#include "dlgs.h" +#include "wownt32.h" + +/* Common dialogs implementation globals */ +#define COMDLG32_Atom ((ATOM)0xa000) /* MS uses this one to identify props */ + +extern HINSTANCE COMDLG32_hInstance; + +void COMDLG32_SetCommDlgExtendedError(DWORD err); +LPVOID COMDLG32_AllocMem(int size); + +/* handle<-handle16 conversion */ +#define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) + +/* Find/Replace local definitions */ + +#define FR_WINE_UNICODE 0x80000000 +#define FR_WINE_REPLACE 0x40000000 + +typedef struct { + FINDREPLACEA fr; /* Internally used structure */ + union { + FINDREPLACEA *fra; /* Reference to the user supplied structure */ + FINDREPLACEW *frw; + } user_fr; +} COMDLG32_FR_Data; + +#define PD32_PRINT_TITLE 7000 + +#define PD32_VALUE_UREADABLE 1104 +#define PD32_INVALID_PAGE_RANGE 1105 +#define PD32_FROM_NOT_ABOVE_TO 1106 +#define PD32_MARGINS_OVERLAP 1107 +#define PD32_NR_OF_COPIES_EMPTY 1108 +#define PD32_TOO_LARGE_COPIES 1109 +#define PD32_PRINT_ERROR 1110 +#define PD32_NO_DEFAULT_PRINTER 1111 +#define PD32_CANT_FIND_PRINTER 1112 +#define PD32_OUT_OF_MEMORY 1113 +#define PD32_GENERIC_ERROR 1114 +#define PD32_DRIVER_UNKNOWN 1115 + +#define PD32_PRINTER_STATUS_READY 1536 +#define PD32_PRINTER_STATUS_PAUSED 1537 +#define PD32_PRINTER_STATUS_ERROR 1538 +#define PD32_PRINTER_STATUS_PENDING_DELETION 1539 +#define PD32_PRINTER_STATUS_PAPER_JAM 1540 +#define PD32_PRINTER_STATUS_PAPER_OUT 1541 +#define PD32_PRINTER_STATUS_MANUAL_FEED 1542 +#define PD32_PRINTER_STATUS_PAPER_PROBLEM 1543 +#define PD32_PRINTER_STATUS_OFFLINE 1544 +#define PD32_PRINTER_STATUS_IO_ACTIVE 1545 +#define PD32_PRINTER_STATUS_BUSY 1546 +#define PD32_PRINTER_STATUS_PRINTING 1547 +#define PD32_PRINTER_STATUS_OUTPUT_BIN_FULL 1548 +#define PD32_PRINTER_STATUS_NOT_AVAILABLE 1549 +#define PD32_PRINTER_STATUS_WAITING 1550 +#define PD32_PRINTER_STATUS_PROCESSING 1551 +#define PD32_PRINTER_STATUS_INITIALIZING 1552 +#define PD32_PRINTER_STATUS_WARMING_UP 1553 +#define PD32_PRINTER_STATUS_TONER_LOW 1554 +#define PD32_PRINTER_STATUS_NO_TONER 1555 +#define PD32_PRINTER_STATUS_PAGE_PUNT 1556 +#define PD32_PRINTER_STATUS_USER_INTERVENTION 1557 +#define PD32_PRINTER_STATUS_OUT_OF_MEMORY 1558 +#define PD32_PRINTER_STATUS_DOOR_OPEN 1559 +#define PD32_PRINTER_STATUS_SERVER_UNKNOWN 1560 +#define PD32_PRINTER_STATUS_POWER_SAVE 1561 + +#define PD32_DEFAULT_PRINTER 1582 +#define PD32_NR_OF_DOCUMENTS_IN_QUEUE 1583 +#define PD32_PRINT_ALL_X_PAGES 1584 +#define PD32_MARGINS_IN_INCHES 1585 +#define PD32_MARGINS_IN_MILIMETERS 1586 +#define PD32_MILIMETERS 1587 + +/* Charset names string IDs */ + +#define IDS_CHARSET_ANSI 200 +#define IDS_CHARSET_SYMBOL 201 +#define IDS_CHARSET_JIS 202 +#define IDS_CHARSET_HANGUL 203 +#define IDS_CHARSET_GB2312 204 +#define IDS_CHARSET_BIG5 205 +#define IDS_CHARSET_GREEK 206 +#define IDS_CHARSET_TURKISH 207 +#define IDS_CHARSET_HEBREW 208 +#define IDS_CHARSET_ARABIC 209 +#define IDS_CHARSET_BALTIC 210 +#define IDS_CHARSET_VIETNAMESE 211 +#define IDS_CHARSET_RUSSIAN 212 +#define IDS_CHARSET_EE 213 +#define IDS_CHARSET_THAI 214 +#define IDS_CHARSET_JOHAB 215 +#define IDS_CHARSET_MAC 216 +#define IDS_CHARSET_OEM 217 +#define IDS_CHARSET_VISCII 218 +#define IDS_CHARSET_TCVN 219 +#define IDS_CHARSET_KOI8 220 +#define IDS_CHARSET_ISO3 221 +#define IDS_CHARSET_ISO4 222 +#define IDS_CHARSET_ISO10 223 +#define IDS_CHARSET_CELTIC 224 + +/* Color names string IDs */ + +#define IDS_COLOR_BLACK 1040 +#define IDS_COLOR_MAROON 1041 +#define IDS_COLOR_GREEN 1042 +#define IDS_COLOR_OLIVE 1043 +#define IDS_COLOR_NAVY 1044 +#define IDS_COLOR_PURPLE 1045 +#define IDS_COLOR_TEAL 1046 +#define IDS_COLOR_GRAY 1047 +#define IDS_COLOR_SILVER 1048 +#define IDS_COLOR_RED 1049 +#define IDS_COLOR_LIME 1050 +#define IDS_COLOR_YELLOW 1051 +#define IDS_COLOR_BLUE 1052 +#define IDS_COLOR_FUCHSIA 1053 +#define IDS_COLOR_AQUA 1054 +#define IDS_COLOR_WHITE 1055 + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winnls.h" +#include "commctrl.h" +#include "shlobj.h" +#include "shellapi.h" + +/* ITEMIDLIST */ + +extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST); +extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST); +extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILGetNext)(LPITEMIDLIST); +extern BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST); +extern BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST); + +/* SHELL */ +extern LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD); +extern DWORD (WINAPI *COMDLG32_SHFree)(LPVOID); +extern BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR); +extern BOOL (WINAPI *COMDLG32_SHGetFolderPathW)(HWND,int,HANDLE,DWORD,LPWSTR); + +extern BOOL WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType); +extern BOOL WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType); + +/* + * Internal Functions + * Do NOT Export to other programs and dlls + */ + +BOOL CC_HookCallChk( LPCHOOSECOLORW lpcc ); +int CC_MouseCheckResultWindow( HWND hDlg, LPARAM lParam ); +LRESULT CC_WMLButtonDown( HWND hDlg, WPARAM wParam, LPARAM lParam ); +LRESULT CC_WMLButtonUp( HWND hDlg, WPARAM wParam, LPARAM lParam ); +LRESULT CC_WMCommand( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD + notifyCode, HWND hwndCtl ); +LRESULT CC_WMMouseMove( HWND hDlg, LPARAM lParam ); +LRESULT CC_WMPaint( HWND hDlg, WPARAM wParam, LPARAM lParam ); +void CC_SwitchToFullSize( HWND hDlg, COLORREF result, LPRECT lprect ); +void CC_PaintSelectedColor( HWND hDlg, COLORREF cr ); +int CC_RGBtoHSL(char c, int r, int g, int b); +void CC_PaintCross( HWND hDlg, int x, int y); +void CC_PaintTriangle( HWND hDlg, int y); +int CC_CheckDigitsInEdit( HWND hwnd, int maxval ); +void CC_EditSetHSL( HWND hDlg, int h, int s, int l ); +int CC_HSLtoRGB(char c, int hue, int sat, int lum); +void CC_EditSetRGB( HWND hDlg, COLORREF cr ); +void CC_PaintUserColorArray( HWND hDlg, int rows, int cols, COLORREF* lpcr ); + +typedef struct +{ + HWND hWnd1; + HWND hWnd2; + LPCHOOSEFONTA lpcf32a; + int added; +} CFn_ENUMSTRUCT, *LPCFn_ENUMSTRUCT; + +INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM, + UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd, + LPCFn_ENUMSTRUCT e); +INT AddFontStyle(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *metrics, + UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3, + HWND hDlg, BOOL iswin16); +void _dump_cf_flags(DWORD cflags); + +LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf); +LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam); +LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam); +LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf); +LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf); +LRESULT CFn_WMDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam); + +#endif /* _WINE_DLL_CDLG_H */ diff --git a/reactos/lib/comdlg32/cdlg16.h b/reactos/lib/comdlg32/cdlg16.h new file mode 100644 index 00000000000..76b05f54643 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg16.h @@ -0,0 +1,155 @@ +/* + * Common Dialog Boxes interface (16 bit implementation) + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * Copyright 1998 Bertho A. Stultiens + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _WINE_DLL_CDLG16_H +#define _WINE_DLL_CDLG16_H + +#define COM_NO_WINDOWS_H +#include "dlgs.h" +#include "wine/windef16.h" +#include "wine/winbase16.h" +#include "wine/winuser16.h" +#include "wownt32.h" + +/* 16 bit api */ + +#include "pshpack1.h" + +typedef UINT16 (CALLBACK *LPOFNHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM); + +typedef struct { + DWORD lStructSize; + HWND16 hwndOwner; + HINSTANCE16 hInstance; + SEGPTR lpstrFilter; + SEGPTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + SEGPTR lpstrFile; + DWORD nMaxFile; + SEGPTR lpstrFileTitle; + DWORD nMaxFileTitle; + SEGPTR lpstrInitialDir; + SEGPTR lpstrTitle; + DWORD Flags; + UINT16 nFileOffset; + UINT16 nFileExtension; + SEGPTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC16 lpfnHook; + SEGPTR lpTemplateName; +} OPENFILENAME16,*LPOPENFILENAME16; + +typedef UINT16 (CALLBACK *LPCCHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM); + +typedef struct { + DWORD lStructSize; + HWND16 hwndOwner; + HWND16 hInstance; + COLORREF rgbResult; + SEGPTR lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC16 lpfnHook; + SEGPTR lpTemplateName; +} CHOOSECOLOR16; +typedef CHOOSECOLOR16 *LPCHOOSECOLOR16; + +typedef UINT16 (CALLBACK *LPFRHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef struct { + DWORD lStructSize; /* size of this struct 0x20 */ + HWND16 hwndOwner; /* handle to owner's window */ + HINSTANCE16 hInstance; /* instance handle of.EXE that */ + /* contains cust. dlg. template */ + DWORD Flags; /* one or more of the FR_?? */ + SEGPTR lpstrFindWhat; /* ptr. to search string */ + SEGPTR lpstrReplaceWith; /* ptr. to replace string */ + UINT16 wFindWhatLen; /* size of find buffer */ + UINT16 wReplaceWithLen; /* size of replace buffer */ + LPARAM lCustData; /* data passed to hook fn. */ + LPFRHOOKPROC16 lpfnHook; + SEGPTR lpTemplateName; /* custom template name */ +} FINDREPLACE16, *LPFINDREPLACE16; + +typedef UINT16 (CALLBACK *LPCFHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef struct +{ + DWORD lStructSize; + HWND16 hwndOwner; /* caller's window handle */ + HDC16 hDC; /* printer DC/IC or NULL */ + SEGPTR lpLogFont; /* ptr. to a LOGFONT struct */ + short iPointSize; /* 10 * size in points of selected font */ + DWORD Flags; /* enum. type flags */ + COLORREF rgbColors; /* returned text color */ + LPARAM lCustData; /* data passed to hook fn. */ + LPCFHOOKPROC16 lpfnHook; + SEGPTR lpTemplateName; /* custom template name */ + HINSTANCE16 hInstance; /* instance handle of.EXE that */ + /* contains cust. dlg. template */ + SEGPTR lpszStyle; /* return the style field here */ + /* must be LF_FACESIZE or bigger */ + UINT16 nFontType; /* same value reported to the */ + /* EnumFonts callback with the */ + /* extra FONTTYPE_ bits added */ + short nSizeMin; /* minimum pt size allowed & */ + short nSizeMax; /* max pt size allowed if */ + /* CF_LIMITSIZE is used */ +} CHOOSEFONT16, *LPCHOOSEFONT16; + + +typedef UINT16 (CALLBACK *LPPRINTHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM); +typedef UINT16 (CALLBACK *LPSETUPHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM); +typedef struct +{ + DWORD lStructSize; + HWND16 hwndOwner; + HGLOBAL16 hDevMode; + HGLOBAL16 hDevNames; + HDC16 hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE16 hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC16 lpfnPrintHook; + LPSETUPHOOKPROC16 lpfnSetupHook; + SEGPTR lpPrintTemplateName; + SEGPTR lpSetupTemplateName; + HGLOBAL16 hPrintTemplate; + HGLOBAL16 hSetupTemplate; +} PRINTDLG16, *LPPRINTDLG16; + +BOOL16 WINAPI ChooseColor16(LPCHOOSECOLOR16 lpChCol); +HWND16 WINAPI FindText16( SEGPTR find); +INT16 WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf); +BOOL16 WINAPI GetOpenFileName16(SEGPTR ofn); +BOOL16 WINAPI GetSaveFileName16(SEGPTR ofn); +BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 print); +HWND16 WINAPI ReplaceText16( SEGPTR find); +BOOL16 WINAPI ChooseFont16(LPCHOOSEFONT16); + +#include "poppack.h" + +#endif /* _WINE_DLL_CDLG16_H */ diff --git a/reactos/lib/comdlg32/cdlg32.c b/reactos/lib/comdlg32/cdlg32.c new file mode 100644 index 00000000000..fc94238c6f3 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg32.c @@ -0,0 +1,182 @@ +/* + * Common Dialog Boxes interface (32 bit) + * Find/Replace + * + * Copyright 1999 Bertho A. Stultiens + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "cderr.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" + + +HINSTANCE COMDLG32_hInstance = 0; + +static DWORD COMDLG32_TlsIndex = TLS_OUT_OF_INDEXES; + +HINSTANCE SHELL32_hInstance = 0; +HINSTANCE SHFOLDER_hInstance = 0; + +/* ITEMIDLIST */ +LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST); +LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST); +LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILGetNext)(LPITEMIDLIST); +BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST); +BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST); + +/* SHELL */ +LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD); +DWORD (WINAPI *COMDLG32_SHFree)(LPVOID); +BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR); +BOOL (WINAPI *COMDLG32_SHGetFolderPathW)(HWND,int,HANDLE,DWORD,LPWSTR); + +/*********************************************************************** + * DllMain (COMDLG32.init) + * + * Initialization code for the COMDLG32 DLL + * + * RETURNS: + * FALSE if sibling could not be loaded or instantiated twice, TRUE + * otherwise. + */ +static char * GPA_string = "Failed to get entry point %s for hinst = 0x%08x\n"; +#define GPA(dest, hinst, name) \ + if(!(dest = (void*)GetProcAddress(hinst,name)))\ + { \ + ERR(GPA_string, debugstr_a(name), hinst); \ + return FALSE; \ + } + +BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) +{ + TRACE("(%p, %08lx, %p)\n", hInstance, Reason, Reserved); + + switch(Reason) + { + case DLL_PROCESS_ATTACH: + COMDLG32_hInstance = hInstance; + DisableThreadLibraryCalls(hInstance); + + SHELL32_hInstance = GetModuleHandleA("SHELL32.DLL"); + + if (!SHELL32_hInstance) + { + ERR("loading of shell32 failed\n"); + return FALSE; + } + + /* ITEMIDLIST */ + GPA(COMDLG32_PIDL_ILIsEqual, SHELL32_hInstance, (LPCSTR)21L); + GPA(COMDLG32_PIDL_ILCombine, SHELL32_hInstance, (LPCSTR)25L); + GPA(COMDLG32_PIDL_ILGetNext, SHELL32_hInstance, (LPCSTR)153L); + GPA(COMDLG32_PIDL_ILClone, SHELL32_hInstance, (LPCSTR)18L); + GPA(COMDLG32_PIDL_ILRemoveLastID, SHELL32_hInstance, (LPCSTR)17L); + + /* SHELL */ + + GPA(COMDLG32_SHAlloc, SHELL32_hInstance, (LPCSTR)196L); + GPA(COMDLG32_SHFree, SHELL32_hInstance, (LPCSTR)195L); + /* for the first versions of shell32 SHGetFolderPathA is in SHFOLDER.DLL */ + COMDLG32_SHGetFolderPathA = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathA"); + if (!COMDLG32_SHGetFolderPathA) + { + SHFOLDER_hInstance = LoadLibraryA("SHFOLDER.DLL"); + GPA(COMDLG32_SHGetFolderPathA, SHFOLDER_hInstance,"SHGetFolderPathA"); + } + + /* for the first versions of shell32 SHGetFolderPathW is in SHFOLDER.DLL */ + COMDLG32_SHGetFolderPathW = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathW"); + if (!COMDLG32_SHGetFolderPathW) + { + SHFOLDER_hInstance = LoadLibraryA("SHFOLDER.DLL"); + GPA(COMDLG32_SHGetFolderPathW, SHFOLDER_hInstance,"SHGetFolderPathW"); + } + + break; + + case DLL_PROCESS_DETACH: + if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) TlsFree(COMDLG32_TlsIndex); + if(SHFOLDER_hInstance) FreeLibrary(SHFOLDER_hInstance); + break; + } + return TRUE; +} +#undef GPA + +/*********************************************************************** + * COMDLG32_AllocMem (internal) + * Get memory for internal datastructure plus stringspace etc. + * RETURNS + * Pointer to a heap block: Succes + * NULL: Failure + */ +LPVOID COMDLG32_AllocMem( + int size /* [in] Block size to allocate */ +) { + LPVOID ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); + if(!ptr) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + return NULL; + } + return ptr; +} + + +/*********************************************************************** + * COMDLG32_SetCommDlgExtendedError (internal) + * + * Used to set the thread's local error value if a comdlg32 function fails. + */ +void COMDLG32_SetCommDlgExtendedError(DWORD err) +{ + TRACE("(%08lx)\n", err); + if (COMDLG32_TlsIndex == TLS_OUT_OF_INDEXES) + COMDLG32_TlsIndex = TlsAlloc(); + if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) + TlsSetValue(COMDLG32_TlsIndex, (void *)err); + else + FIXME("No Tls Space\n"); +} + + +/*********************************************************************** + * CommDlgExtendedError (COMMDLG.26) + * CommDlgExtendedError (COMDLG32.@) + * + * Get the thread's local error value if a comdlg32 function fails. + * RETURNS + * Current error value which might not be valid + * if a previous call succeeded. + */ +DWORD WINAPI CommDlgExtendedError(void) +{ + if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) + return (DWORD)TlsGetValue(COMDLG32_TlsIndex); + else + return 0; /* we never set an error, so there isn't one */ +} diff --git a/reactos/lib/comdlg32/cdlg_Ca.rc b/reactos/lib/comdlg32/cdlg_Ca.rc new file mode 100644 index 00000000000..4f4da809592 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Ca.rc @@ -0,0 +1,218 @@ +/* + * Copyright 1998 Marc Huguet Puig + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Obrir" +FONT 8, "Helv" +{ + LTEXT "&Nom:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directoris:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Tipus de fitxers:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Unitats:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Noms &lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Anomenar i desar..." +FONT 8, "Helv" +{ + LTEXT "&Nom:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directoris:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Desar fitxer en f&ormat:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Unitats:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Fer-ne cpia", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Impressi" +FONT 8, "Helv" +{ + LTEXT "Impressora:", 1088, 6, 6, 40, 9 + LTEXT "Impressi del document", 1089, 60, 6, 150, 9 + GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Sencer", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Part seleccionada", 1057, 16, 60, 60, 12 + RADIOBUTTON "P&gines", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "D'acord", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configuraci", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "P&rimera:", 1090, 60, 80, 30, 9 + LTEXT "<ima:", 1091, 120, 80, 30, 9 + LTEXT "&Qualitat:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Imprimir en un &fitxer", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "S&eparar les cpies", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configuraci de la impressi" +FONT 8, "Helv" +{ + GROUPBOX "Impressora:", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Impressora per &defecte", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Impressora &especificada:", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "D'acord", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Opcions", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientaci", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Vertical", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Horitzontal", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Mida", 1089, 130, 95, 30, 9 + LTEXT "A&limentaci:", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tipus de lletra" +FONT 8, "Helv" +{ + LTEXT "&Tipus de lletra:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Estil del tipus de lletra:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Grandria:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "D'acord",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Anullaci",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "A&plicar", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "A&juda" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Efectes",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Barrar-lo", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Subratllar-lo", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Color:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Exemple",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Color" +FONT 8, "Helv" +{ + LTEXT "Colors &bsics:", 1088, 4, 4, 140, 10 + LTEXT "Colors person&alitzats:", 1089, 4, 106, 140, 10 + LTEXT "Color Sl&id", 1090, 150, 151, 48, 10 + LTEXT "&Roig:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Verd:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Bla&u:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Tint:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat.:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Llum.:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "D'acord", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038,100,166, 44, 14 + PUSHBUTTON "Afegir als &colors personalitzats", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definir colors personalitzats >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Cerca" +FONT 8, "Helv" +{ + LTEXT "&Cercar:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "C&ercar mots sencers", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Distingir majscules de minscules", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direcci", 1072, 107, 26, 68, 28 + CONTROL "&Amunt", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "A&vall", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Continuaci", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anullaci", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Substituci" +FONT 8, "Helv" +{ + LTEXT "&Cercar:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Substituir per:", 1090, -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Cercar &mots sencers", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Distingir majscules de minscules", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "C&ontinucaci", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "S&ubstituci", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Substituci &automtica", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Tancar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Cn.rc b/reactos/lib/comdlg32/cdlg_Cn.rc new file mode 100644 index 00000000000..fc0b7833650 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Cn.rc @@ -0,0 +1,444 @@ +/* + * Copyright 2002 Tisheng Chen + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Helv" +{ + LTEXT "ļ(&N):", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "ļ(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "ļ(&T):", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "(&v):", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "ֻ(&R)", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ϊ ..." +FONT 8, "Helv" +{ + LTEXT "ļ(&N):", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Ŀ¼(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "ļ(&T):", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "(&v):", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "ֻ(&R)", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ӡ" +FONT 8, "Helv" +{ + LTEXT "ӡ:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "ӡΧ", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "ȫ(&A)", rad1, 16, 45, 60, 12 + RADIOBUTTON "ѡķΧ(&e)", rad2, 16, 60, 60, 12 + RADIOBUTTON "ҳ(&G)", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "ȷ", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&S)", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "(&F):", 1090, 60, 80, 30, 9 + LTEXT "(&T):", 1091, 120, 80, 30, 9 + LTEXT "ӡ(&Q):", 1092, 6, 100, 76, 9 + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "ӡļ(&l):", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensed", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ӡ" +FONT 8, "Helv" +{ + GROUPBOX "ӡ", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Ĭϴӡ(&D)", rad1, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "ָĴӡ(&P)", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "ȷ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&S)", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "(&O)", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "(&P)", rad3, 50, 100, 40, 12 + RADIOBUTTON "(&L)", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "ֽ", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "ֽŴС(&Z)", 1089, 130, 95, 30, 9 + LTEXT "ֽԴ(&S)", 1090, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Helv" +{ + LTEXT "(&F):",1088 ,6,3,40,9 + COMBOBOX cmb1, 6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "ʽ(&y):",1089 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "С(&S):",1090,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "ȷ",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "Ӧ(&A)", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Ч",1072,6,72,84,34,WS_GROUP + CHECKBOX "ɾ(&k)", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "»(&U)", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "ɫ(&C):", 1091 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "ʾ",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ɫ" +FONT 8, "Helv" +{ + LTEXT "ɫ(&B):", 1088, 4, 4, 140, 10 + LTEXT "Զɫ(&C):", 1089, 4, 106, 140, 10 + LTEXT "ɫ|ɫ(&O)", 1090, 150, 151, 48, 10 + LTEXT "(&R):", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&G):",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&B):",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ɫ(&E):" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ͷ(&S):" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&L)" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "ȷ", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", pshHelp,100,166, 44, 14 + PUSHBUTTON "ӵԶɫ(&A)", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "涨Զɫ(&D)>>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Helv" +{ + LTEXT "(&n):", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ȫƥ(&W)", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "ִСд(&C)", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "", grp1, 107, 26, 68, 28 + CONTROL "(&U)", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "(&D)", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "һ(&F)", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ", IDCANCEL , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "滻" +FONT 8, "Helv" +{ + LTEXT "(&n):", -1, 4, 9, 48, 8 + EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "滻Ϊ(&p):", -1, 4, 26, 48, 8 + EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ȫƥ(&W)", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "ִСд(&C)", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "һ(&F)", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "滻(&R)", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȫ滻(&A)", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "ӡ" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "ȷ", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "(&H)", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "ӡ", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "ӡļ(&l)", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "(&P)", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "(&N):", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "״̬:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ͺ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "λ:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ע:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "(&C):",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ollate", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "ӡΧ", grp1, 8,92, 144,64, WS_GROUP + CONTROL "ȫ(&A)", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "ҳ(&G)", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "ѡķΧ(&S)", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "(&f):", stc2, 52,124, 20,8 + RTEXT "(&t):", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "ӡ" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "ȷ",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "ȡ",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Network...", psh5, 284,156,48,14 */ + + GROUPBOX "ӡ", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "(&P)", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "(&N):", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "״̬:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ͺ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "λ:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ע:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "ֽ", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "ֽŴС(&z):", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "ֽԴ(&S):", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "(&P)", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "(&L)", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ҳ" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "ֽ", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "С(&S):", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "Դ(&S):", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "(&O)", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "(&P)", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "(&L)", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "߾", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "(&e):", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "(&R):", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "(&o):", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "(&B):", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "ȷ", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "ȡ", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "ӡ(&P)...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "" +FONT 8, "Helv" +{ + LTEXT "Ѱ(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "ļ(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "ļ(&t)",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "ֻ(&r)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "(&O)", IDOK,222,110,50,14 + PUSHBUTTON "ȡ", IDCANCEL,222,128,50,14 + PUSHBUTTON "(&H)", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&About FolderPicker Test" + IDS_DOCUMENTFOLDERS "ĵĿ¼" + IDS_PERSONAL "ҵĵ" + IDS_FAVORITES "ղؼ" + IDS_PATH "ϵͳ·" + IDS_DESKTOP "" + IDS_FONTS "" + IDS_MYCOMPUTER "ҵĵ" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "ϵͳļ" + IDS_LOCALHARDRIVES "Ӳ" + IDS_FILENOTFOUND "Ҳļ" + IDS_VERIFYFILE "Ƿȷļơ" + IDS_CREATEFILE "Ҳļ\nǷ񴴽ļ?" + IDS_OVERWRITEFILE "ļѾڡ\nҪ滻?" + IDS_INVALID_FILENAME_TITLE "ļдЧַ" + IDS_INVALID_FILENAME "ļвܰκһַ:: \n / : < > |" + IDS_PATHNOTEXISTING "ļв" + IDS_FILENOTEXISTING "ļ" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "һ" + IDS_NEWFOLDER "½ļ" + IDS_LISTVIEW "б" + IDS_REPORTVIEW "ϸ" + IDS_TODESKTOP "鿴" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "ӡ" + + PD32_VALUE_UREADABLE "Unreadable Entry" + PD32_INVALID_PAGE_RANGE "This value does not lie within the page range.\n\ +Please enter a value between %d and %d." + PD32_FROM_NOT_ABOVE_TO "The 'from' entry cannot exceed the \ +'to' entry." + PD32_MARGINS_OVERLAP "Margins overlap or fall outside \ +Paper boundaries.\nPlease reenter margins." + PD32_NR_OF_COPIES_EMPTY "The number of 'Number of copies' \ +value cannot be empty." + PD32_TOO_LARGE_COPIES "This large nmuber of copies is not \ +supported by your printer.\nPlease enter a value between 1 and %d." + PD32_PRINT_ERROR "A printer error occurred." + PD32_NO_DEFAULT_PRINTER "There is not default printer." + PD32_CANT_FIND_PRINTER "Cannot find the printer." + PD32_OUT_OF_MEMORY "Out of memory." + PD32_GENERIC_ERROR "Some error occurred." + PD32_DRIVER_UNKNOWN "Unknown printer driver." + + PD32_DEFAULT_PRINTER "Default Printer; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "There are %d documents in the queue" + PD32_PRINT_ALL_X_PAGES "&All %d pages" + PD32_MARGINS_IN_INCHES "Margins [inches]" + PD32_MARGINS_IN_MILIMETERS "Margins [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Ready" + PD32_PRINTER_STATUS_PAUSED "Paused; " + PD32_PRINTER_STATUS_ERROR "Error; " + PD32_PRINTER_STATUS_PENDING_DELETION "Pending deletion; " + PD32_PRINTER_STATUS_PAPER_JAM "Paper jam; " + PD32_PRINTER_STATUS_PAPER_OUT "Out of paper; " + PD32_PRINTER_STATUS_MANUAL_FEED "Feed paper manual; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Paper problem; " + PD32_PRINTER_STATUS_OFFLINE "Printer offline; " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O Active; " + PD32_PRINTER_STATUS_BUSY "Busy; " + PD32_PRINTER_STATUS_PRINTING "Printing; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Output tray is full; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Not available; " + PD32_PRINTER_STATUS_WAITING "Waiting; " + PD32_PRINTER_STATUS_PROCESSING "Processing; " + PD32_PRINTER_STATUS_INITIALIZING "Initialising; " + PD32_PRINTER_STATUS_WARMING_UP "Warming up; " + PD32_PRINTER_STATUS_TONER_LOW "Toner low; " + PD32_PRINTER_STATUS_NO_TONER "No toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Interrupted by user; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Out of memory; " + PD32_PRINTER_STATUS_DOOR_OPEN "The printer door is open; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server unknown; " + PD32_PRINTER_STATUS_POWER_SAVE "Power safe mode; " +} + +#pragma code_page(default) diff --git a/reactos/lib/comdlg32/cdlg_Cs.rc b/reactos/lib/comdlg32/cdlg_Cs.rc new file mode 100644 index 00000000000..db74a23586d --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Cs.rc @@ -0,0 +1,185 @@ +/* + * Copyright 1996 Roman Dolejsi + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_CZECH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Oteven souboru" +FONT 8, "Helv" +{ + LTEXT "&jmno souboru:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Adrese:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Typ zobrazench soubor:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Diskov jednotky:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Otevt", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Npovda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Pouze pro ten", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ulo pod jmnem..." +FONT 8, "Helv" +{ + LTEXT "&Jmno souboru:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Adrese:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Typ zobrazench soubor:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Diskov jednotky:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ulo pod jmnem", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Npovda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Pouze pro ten", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tisk" +FONT 8, "Helv" +{ + LTEXT "Tiskrna:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Rozsah tisku", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "Vytiskni v&e", 1056, 16, 45, 60, 12 + RADIOBUTTON "Vytiskni &vbr", 1057, 16, 60, 60, 12 + RADIOBUTTON "Vytiskni &zadan strnky", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Tiskni", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Nastavit...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Od:", 1090, 60, 80, 30, 9 + LTEXT "&Do:", 1091, 120, 80, 30, 9 + LTEXT "Kvalita &tisku:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Tisk do so&uboru", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kondenzovan", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Nastaven zpsobu tisku" +FONT 8, "Helv" +{ + GROUPBOX "Tiskrna", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Pedvolen tiskrna", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Specifick &tiskrna", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Dal volby...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientace", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "Na &vku", 1058, 50, 100, 40, 12 + RADIOBUTTON "Na &ku", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papr", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Formt", 1089, 130, 95, 30, 9 + LTEXT "&Odkud", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Psmo" +FONT 8, "Helv" +{ + LTEXT "Psmo:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Barvy" +FONT 8, "Helv" +{ + LTEXT "&Zkladn barvy:", 1088, 6, 6, 40, 9 + LTEXT "&Barvy na zakzku:", 1089, 6, 126, 40, 9 + LTEXT "Barva|Spoj&it", 1090, 100, 146, 40, 9 + LTEXT "&Odstn:", 1091, 150, 126, 40, 9 + LTEXT "&Sytost:", 1092, 150, 146, 40, 9 + LTEXT "&Jas:", 1093, 150, 166, 40, 9 + LTEXT "e&rven:", 1094, 150, 126, 40, 9 + LTEXT "&Zelen:", 1095, 150, 146, 40, 9 + LTEXT "&Modr:", 1096, 150, 166, 40, 9 + DEFPUSHBUTTON "Ok", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pidat barvu", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Vyadit barvu", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Storno", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Hledn" +FONT 8, "Helv" +{ + LTEXT "&Vyhledat:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Pouze &cel slova", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Rozliovat mal a velk psmena", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Smr", 1072, 107, 26, 68, 28 + CONTROL "N&ahoru", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Dolu", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "Vyhledat d&al", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zavt", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Npovda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Zmna" +FONT 8, "Helv" +{ + LTEXT "&Vyhledat:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zamnit za:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Pouze &cel slova", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Rozliovat mal a velk psmena", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "Vyhledat d&al", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Za&mnit", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zamnit ve v&bru", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zavt", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Npovda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Da.rc b/reactos/lib/comdlg32/cdlg_Da.rc new file mode 100644 index 00000000000..075e8bb2c9f --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Da.rc @@ -0,0 +1,219 @@ +/* + * Copyright 1995 Morten Welinder + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_DANISH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "bn" +FONT 8, "Helv" +{ + LTEXT "&Filnavn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Oversigt over filer af type:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Drev:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&bn", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Gem som ..." +FONT 8, "Helv" +{ + LTEXT "&Filnavn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Oversigt over filer af type:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Drev:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&Gem som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Udskriv" +FONT 8, "Helv" +{ + LTEXT "Printer:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Udskriv omrde", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Alt", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Markeret", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Sider", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Udskriv", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Fra:", 1090, 60, 80, 30, 9 + LTEXT "&Til:", 1091, 120, 80, 30, 9 + LTEXT "Udskrifts&kvalitet:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Udskriv til fi&l", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sammentrykket", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Udskriftsindstilling" +FONT 8, "Helv" +{ + GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Standardprinter", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Specifik &printer", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "Po&rtrt", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Landskab", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papir", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "Strrelse", 1089, 130, 95, 30, 9 + LTEXT "&Kilde", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Skrifttyper" +FONT 8, "Helv" +{ + LTEXT "Skrifttype&navn:", 1088, 6, 6, 40, 9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Typografi:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Strrelse:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Annuller",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Anvend", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Hjlp" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Effekter",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Gennemstreget", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Understreget", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Farve:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Eksempel",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Farve" +FONT 8, "Helv" +{ + LTEXT "&Grundlggende farver:", 1088, 4, 4, 140, 10 + LTEXT "&Selvvalgte farver:", 1089, 4, 106, 140, 10 + LTEXT "&Ensfarvet", 1090, 150, 151, 48, 10 + LTEXT "&Rd:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Grn:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Bl:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Intensitet:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Farvemtning:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lysstyrke:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Hjlp", 1038,100,166, 44, 14 + PUSHBUTTON "&Tilfj til selvvalgte farver", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definer selvvalgt farve >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Find" +FONT 8, "Helv" +{ + LTEXT "&Find hvad:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kun hele ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Forskel p store/sm &bogstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Retning", 1072, 107, 26, 68, 28 + CONTROL "&Op", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Ned", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Find nste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Erstat" +FONT 8, "Helv" +{ + LTEXT "&Find hvad:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Erstat med:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kun hele ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "Forskel p store/sm &bogstaver", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "&Find nste", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Erstat", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Erstat &alle", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuller", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_De.rc b/reactos/lib/comdlg32/cdlg_De.rc new file mode 100644 index 00000000000..de455662c11 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_De.rc @@ -0,0 +1,436 @@ +/* + * Copyright 1994 Martin von Loewis + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ffnen" +FONT 8, "Helv" +{ + LTEXT "Datei&name:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Verzeichnisse:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste der Datei&typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Laufwerke:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "ffnen", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hilfe", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Schreibgeschtzt", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Speichern als ..." +FONT 8, "Helv" +{ + LTEXT "Datei&name:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Verzeichnisse:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste der Datei&typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Laufwerke:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Speichern als", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hilfe", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Schreibgeschtzt", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Drucken" +FONT 8, "Helv" +{ + LTEXT "Drucker:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Druckbereicht", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Alles", rad1, 16, 45, 60, 12 + RADIOBUTTON "A&uswahl", rad2, 16, 60, 60, 12 + RADIOBUTTON "&Seiten", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "Drucken", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Einrichten", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Von:", 1090, 60, 80, 30, 9 + LTEXT "&Bis:", 1091, 120, 80, 30, 9 + LTEXT "Druck&qualitt:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "In &Datei drucken", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Verdichtet", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Druckereinrichtung" +FONT 8, "Helv" +{ + GROUPBOX "Drucker", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Standarddrucker", rad1, 16, 20, 80, 12 + LTEXT "[keiner]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Bestimmter &Drucker", rad2, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Einrichten", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientierung", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Hochformat", rad3, 50, 100, 40, 12 + RADIOBUTTON "&Querformat", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Gre", 1089, 130, 95, 30, 9 + LTEXT "P&apierquelle", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Seite einrichten" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Papier", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Gre:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Zufuhr:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Format", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Hochformat", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Querformat", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Rnder", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Links:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Rechts:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Oben:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Unten:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Abbrechen", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "&Drucker...", psh3, 184, 220, 48, 14 +END + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "Schrift&art:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Schrift&stil:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Schrift&gre:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Abbrechen",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Zuweisen", psh3,218,40,40,14,WS_GROUP + PUSHBUTTON "&Hilfe" , pshHelp,218,57,40,14,WS_GROUP + GROUPBOX "Darstellung",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Durchgestrichen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Unterstrichen", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Farbe:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Muster",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Farbe" +FONT 8, "Helv" +{ + LTEXT "Gr&undfarben:", 1088, 4, 4, 140, 10 + LTEXT "Selbs&tdefinierte Farben:", 1089, 4, 106, 140, 10 + LTEXT "Farbe | B&asis", 1090, 150, 151, 48, 10 + LTEXT "&Rot:", 726 ,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Grn:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Blau:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Farbe:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Stt:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "H&ell:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hilfe", pshHelp,100,166, 44, 14 + PUSHBUTTON "Farbe hin&zufgen", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Farben &definieren >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&a",713,300,200,4,14 /* just a dummy: 'a' is like &a in "B&asis" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Suchen" +FONT 8, "Helv" +{ + LTEXT "S&uchen nach:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Nur ganze &Worte", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Beachte Gro/Kleinschreibung", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Richtung", 1072, 107, 26, 68, 28 + CONTROL "H&och", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Runter", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Nchsten finden", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hilfe", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ersetzen" +FONT 8, "Helv" +{ + LTEXT "S&uchen nach:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ersetzen &durch:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Nur ganze &Worte", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Beachte Gro/Kleinschreibung", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "&Nchsten finden", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Ersetzen", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Alle ersetzen", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Abbrechen", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hilfe", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "ffnen" +FONT 8, "Helv" +{ + LTEXT "&Suche in",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 122, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,292,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "Datei&name:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "Datei&typen",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "&Schreibgeschtzt",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + + DEFPUSHBUTTON "&ffnen", IDOK,242,110,50,14 + PUSHBUTTON "Abbrechen", IDCANCEL,242,128,50,14 + PUSHBUTTON "&Hilfe", pshHelp,242,145,50,14 +} + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Drucken" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Abbrechen", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Hilfe", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Drucker", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "In Fi&le drucken", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Eigenschaften", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Ort:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kommentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Kopien", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Anzahl &Kopien:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ollate", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Druck Bereich", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Alles", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "&Seiten", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "Aus&wahl", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&von:", stc2, 52,124, 20,8 + RTEXT "&bis:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print Setup" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Abbrechen",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Netzwerk...", psh5, 284,156,48,14 */ + + GROUPBOX "Drucker", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Eigenschaften", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "[keiner]", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "[keiner]", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Ort:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "[keiner]", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kommentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "[keiner]", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papier", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "&Gre:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Zufuhr:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientierung", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&Hochformat", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "&Querformat", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&ber den Folderpicker" + IDS_DOCUMENTFOLDERS "Dokumenten Ordner" + IDS_PERSONAL "Meine Dokumente" + IDS_FAVORITES "Meine Favoriten" + IDS_PATH "System Ordner" + IDS_DESKTOP "Desktop" + IDS_FONTS "Schriftarten" + IDS_MYCOMPUTER "Mein Computer" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "System Ordner" + IDS_LOCALHARDRIVES "Lokale Festplatten" + IDS_FILENOTFOUND "Datei nicht gefunden" + IDS_VERIFYFILE "Bitte berprfen sie, ob der korrekte Dateiname angegeben wurde" + IDS_CREATEFILE "Die Datei existiert nicht.\nWollen Sie sie neu anlegen?" + IDS_OVERWRITEFILE "Die Datei existiert bereits.\nWollen Sie sie berschreiben?" + IDS_INVALID_FILENAME_TITLE "Unzulssige Zeichen im Pfad" + IDS_INVALID_FILENAME "Ein Dateiname darf folgende Zeichen nicht enthalten:\n / : < > |" + IDS_PATHNOTEXISTING "Der Pfad existiert nicht" + IDS_FILENOTEXISTING "Die Datei existiert nicht" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Eine Verzeichnisebene hher" + IDS_NEWFOLDER "Neuen Ordner anlegen" + IDS_LISTVIEW "Liste" + IDS_REPORTVIEW "Details" + IDS_TODESKTOP "Desktopordner anzeigen" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Drucken" + + PD32_VALUE_UREADABLE "Unlesbarer Eintrag" + PD32_INVALID_PAGE_RANGE "Dieser Wert liegt nicht auf der Seite.\n\ +Bitte geben sie einen Wert zwischen %d und %d an." + PD32_FROM_NOT_ABOVE_TO "Der 'von' Eintrag kann nicht grer sein als der 'bis' Eintrag." + PD32_MARGINS_OVERLAP "Die Rnder berlappen oder sind auerhalb des Papiers.\nBitte die Rnder neu eingeben." + PD32_NR_OF_COPIES_EMPTY "Es muss ein Wert bei der Anzahl der Kopien angegeben werden." + PD32_TOO_LARGE_COPIES "Ihr Drucker untersttzt so viele Kopien nicht.\nBitte verwenden Sie eine Kopienzahl zwischen 1 und %d." + PD32_PRINT_ERROR "Ein Druckerfehler ist aufgetreten." + PD32_NO_DEFAULT_PRINTER "Es ist kein Standarddrucker eingestellt." + PD32_CANT_FIND_PRINTER "Kann den Drucker nicht finden." + PD32_OUT_OF_MEMORY "Kein freier Speicher mehr." + PD32_GENERIC_ERROR "Ein unbekannter Fehler ist aufgetreten." + PD32_DRIVER_UNKNOWN "Unbekannter Druckertreiber." + + PD32_DEFAULT_PRINTER "Standard Drucker; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Es sind %d Dokumente in der Queue" + PD32_PRINT_ALL_X_PAGES "&Alle %d Seiten" + PD32_MARGINS_IN_INCHES "Rnder [inches/zoll]" + PD32_MARGINS_IN_MILIMETERS "Rnder [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Bereit; " + PD32_PRINTER_STATUS_PAUSED "Gestoppt; " + PD32_PRINTER_STATUS_ERROR "Fehler; " + PD32_PRINTER_STATUS_PENDING_DELETION "Wartet auf Lschung; " + PD32_PRINTER_STATUS_PAPER_JAM "Papierstau; " + PD32_PRINTER_STATUS_PAPER_OUT "Papierfach leer; " + PD32_PRINTER_STATUS_MANUAL_FEED "Papier manuell zufhren; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Papierproblem; " + PD32_PRINTER_STATUS_OFFLINE "Printer ist offline; " + PD32_PRINTER_STATUS_IO_ACTIVE "Datenbertragung; " + PD32_PRINTER_STATUS_BUSY "Beschftigt; " + PD32_PRINTER_STATUS_PRINTING "Druckend; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Ausgabe Fach ist voll; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Nicht vorhanden; " + PD32_PRINTER_STATUS_WAITING "Wartend; " + PD32_PRINTER_STATUS_PROCESSING "In Bearbeitung; " + PD32_PRINTER_STATUS_INITIALIZING "Initialisierend; " + PD32_PRINTER_STATUS_WARMING_UP "Aufwrmend; " + PD32_PRINTER_STATUS_TONER_LOW "Tonerstand niedrig; " + PD32_PRINTER_STATUS_NO_TONER "Kein Toner mehr; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Durch Benutzer unterbrochen; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Kein Speicher mehr; " + PD32_PRINTER_STATUS_DOOR_OPEN "Druckergehuse ist offen; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Druckserver unbekannt; " + PD32_PRINTER_STATUS_POWER_SAVE "Stromsparmodus; " +} diff --git a/reactos/lib/comdlg32/cdlg_En.rc b/reactos/lib/comdlg32/cdlg_En.rc new file mode 100644 index 00000000000..3e972db2ffc --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_En.rc @@ -0,0 +1,462 @@ +/* + * Copyright 1995 Alexandre Julliard + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Open" +FONT 8, "Helv" +{ + LTEXT "File &Name:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directories:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Open", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Read Only", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Save As ..." +FONT 8, "Helv" +{ + LTEXT "File &Name:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directories:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Save As", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Read Only", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Print" +FONT 8, "Helv" +{ + LTEXT "Printer:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Print Range", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&All", rad1, 16, 45, 60, 12 + RADIOBUTTON "S&election", rad2, 16, 60, 60, 12 + RADIOBUTTON "&Pages", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "Print", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&From:", 1090, 60, 80, 30, 9 + LTEXT "&To:", 1091, 120, 80, 30, 9 + LTEXT "Print &Quality:", 1092, 6, 100, 76, 9 + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Print to Fi&le", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensed", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Print Setup" +FONT 8, "Helv" +{ + GROUPBOX "Printer", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Default Printer", rad1, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Specific &Printer", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientation", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "Po&rtrait", rad3, 50, 100, 40, 12 + RADIOBUTTON "&Landscape", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "Paper", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "Si&ze", 1089, 130, 95, 30, 9 + LTEXT "&Source", 1090, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "&Font:",stc1 ,6,3,40,9 + COMBOBOX cmb1, 6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Font St&yle:",stc2 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Size:",stc3,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancel",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Apply", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Effects",grp1,6,72,84,34,WS_GROUP + CHECKBOX "Stri&keout", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Underline", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Color:", stc4 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Sample",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt:",stc7 ,98,114,40,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Color" +FONT 8, "Helv" +{ + LTEXT "&Basic Colors:", 1088, 4, 4, 140, 10 + LTEXT "&Custom Colors:", 1089, 4, 106, 140, 10 + LTEXT "Color | Sol&id", 1090, 150, 151, 48, 10 + LTEXT "&Red:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Green:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Blue:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Hue:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Help", pshHelp,100,166, 44, 14 + PUSHBUTTON "&Add to Custom Colors", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Define Custom Colors >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Find" +FONT 8, "Helv" +{ + LTEXT "Fi&nd What:", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Match &Whole Word Only", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Match &Case", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direction", grp1, 107, 26, 68, 28 + CONTROL "&Up", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Down", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Find Next", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancel", IDCANCEL , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Replace" +FONT 8, "Helv" +{ + LTEXT "Fi&nd What:", -1, 4, 9, 48, 8 + EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Re&place With:", -1, 4, 26, 48, 8 + EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Match &Whole Word Only", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Match &Case", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "&Find Next", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&Replace", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Replace &All", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Help", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Print to fi&le", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Properties", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Where:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comment:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Copies", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Number of &copies:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ollate", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Print range", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&All", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Pa&ges", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "&Selection", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&from:", stc2, 52,124, 20,8 + RTEXT "&to:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print Setup" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Network...", psh5, 284,156,48,14 */ + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Properties", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Where:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comment:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Paper", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "Si&ze:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Source:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientation", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "P&ortrait", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "L&andscape", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Setup Page" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Paper", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Size:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Tray:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Orientation", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Portrait", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Landscape", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Borders", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "L&eft:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Right:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "T&op:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Bottom:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Cancel", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "P&rinter...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Open" +FONT 8, "Helv" +{ + LTEXT "Look &in:",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "File &name:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "Files of &type:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "Open as &read-only",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&Open", IDOK,222,110,50,14 + PUSHBUTTON "Cancel", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Help", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&About FolderPicker Test" + IDS_DOCUMENTFOLDERS "Document Folders" + IDS_PERSONAL "My Documents" + IDS_FAVORITES "My Favorites" + IDS_PATH "System Path" + IDS_DESKTOP "Desktop" + IDS_FONTS "Fonts" + IDS_MYCOMPUTER "My Computer" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "System Folders" + IDS_LOCALHARDRIVES "Local Hard Drives" + IDS_FILENOTFOUND "File not found" + IDS_VERIFYFILE "Please verify that the correct file name was given" + IDS_CREATEFILE "File does not exist\nDo you want to create file" + IDS_OVERWRITEFILE "File does already exist.\nDo you want to replace it?" + IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path" + IDS_INVALID_FILENAME "A filename cannot contain any of the following characters: \n / : < > |" + IDS_PATHNOTEXISTING "Path does not exist" + IDS_FILENOTEXISTING "File does not exist" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Up One Level" + IDS_NEWFOLDER "Create New Folder" + IDS_LISTVIEW "List" + IDS_REPORTVIEW "Details" + IDS_TODESKTOP "Browse to Desktop" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Print" + + PD32_VALUE_UREADABLE "Unreadable Entry" + PD32_INVALID_PAGE_RANGE "This value does not lie within the page range.\n\ +Please enter a value between %d and %d." + PD32_FROM_NOT_ABOVE_TO "The 'from' entry cannot exceed the \ +'to' entry." + PD32_MARGINS_OVERLAP "Margins overlap or fall outside \ +Paper boundaries.\nPlease reenter margins." + PD32_NR_OF_COPIES_EMPTY "The number of 'Number of copies' \ +value cannot be empty." + PD32_TOO_LARGE_COPIES "This large number of copies is not \ +supported by your printer.\nPlease enter a value between 1 and %d." + PD32_PRINT_ERROR "A printer error occurred." + PD32_NO_DEFAULT_PRINTER "No default printer defined." + PD32_CANT_FIND_PRINTER "Cannot find the printer." + PD32_OUT_OF_MEMORY "Out of memory." + PD32_GENERIC_ERROR "An error occurred." + PD32_DRIVER_UNKNOWN "Unknown printer driver." + + PD32_DEFAULT_PRINTER "Default Printer; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "There are %d documents in the queue" + PD32_PRINT_ALL_X_PAGES "&All %d pages" + PD32_MARGINS_IN_INCHES "Margins [inches]" + PD32_MARGINS_IN_MILIMETERS "Margins [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Ready" + PD32_PRINTER_STATUS_PAUSED "Paused; " + PD32_PRINTER_STATUS_ERROR "Error; " + PD32_PRINTER_STATUS_PENDING_DELETION "Pending deletion; " + PD32_PRINTER_STATUS_PAPER_JAM "Paper jam; " + PD32_PRINTER_STATUS_PAPER_OUT "Out of paper; " + PD32_PRINTER_STATUS_MANUAL_FEED "Feed paper manual; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Paper problem; " + PD32_PRINTER_STATUS_OFFLINE "Printer offline; " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O Active; " + PD32_PRINTER_STATUS_BUSY "Busy; " + PD32_PRINTER_STATUS_PRINTING "Printing; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Output tray is full; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Not available; " + PD32_PRINTER_STATUS_WAITING "Waiting; " + PD32_PRINTER_STATUS_PROCESSING "Processing; " + PD32_PRINTER_STATUS_INITIALIZING "Initialising; " + PD32_PRINTER_STATUS_WARMING_UP "Warming up; " + PD32_PRINTER_STATUS_TONER_LOW "Toner low; " + PD32_PRINTER_STATUS_NO_TONER "No toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Interrupted by user; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Out of memory; " + PD32_PRINTER_STATUS_DOOR_OPEN "The printer door is open; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server unknown; " + PD32_PRINTER_STATUS_POWER_SAVE "Power save mode; " +} + +STRINGTABLE DISCARDABLE /* Color names */ +{ + IDS_COLOR_BLACK "Black" + IDS_COLOR_MAROON "Maroon" + IDS_COLOR_GREEN "Green" + IDS_COLOR_OLIVE "Olive" + IDS_COLOR_NAVY "Navy" + IDS_COLOR_PURPLE "Purple" + IDS_COLOR_TEAL "Teal" + IDS_COLOR_GRAY "Gray" + IDS_COLOR_SILVER "Silver" + IDS_COLOR_RED "Red" + IDS_COLOR_LIME "Lime" + IDS_COLOR_YELLOW "Yellow" + IDS_COLOR_BLUE "Blue" + IDS_COLOR_FUCHSIA "Fuchsia" + IDS_COLOR_AQUA "Aqua" + IDS_COLOR_WHITE "White" +} diff --git a/reactos/lib/comdlg32/cdlg_Eo.rc b/reactos/lib/comdlg32/cdlg_Eo.rc new file mode 100644 index 00000000000..c9a5f87b2dd --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Eo.rc @@ -0,0 +1,185 @@ +/* + * Copyright 1996 Duncan C Thomson + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Malfermu dosieron" +FONT 8, "Helv" +{ + LTEXT "Dosier&nomo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Dosier&ujo:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Dosier&speco:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Disk&ilo:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Malfermu", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Helpu", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Nur &legebla", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Sekurigu dosieron" +FONT 8, "Helv" +{ + LTEXT "Dosier&nomo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Dosier&ujo:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Dosier&speco:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Disk&ilo:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Sekurigu", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Helpu", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Nur &legebla", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Presu" +FONT 8, "Helv" +{ + LTEXT "Presilo:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Etendion", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&iujn", 1056, 16, 45, 60, 12 + RADIOBUTTON "&elekton", 1057, 16, 60, 60, 12 + RADIOBUTTON "&paojn", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Presu", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aranu", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "de:", 1090, 60, 80, 30, 9 + LTEXT "is:", 1091, 120, 80, 30, 9 + LTEXT "&Kvalito:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Presu &dosieren", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Mallartipe", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Presada Arano" +FONT 8, "Helv" +{ + GROUPBOX "Presilo", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Implicita Presilo", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "&Specifa Presilo", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Enorde", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Agordo", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Formato", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Vertikala", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Horizontala", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papero", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Grando", 1089, 130, 95, 30, 9 + LTEXT "&Fonto", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tiparo" +FONT 8, "Helv" +{ + LTEXT "Tiparo:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + DEFPUSHBUTTON "Enorde", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Koloro" +FONT 8, "Helv" +{ + LTEXT "&Normala koloraro:", 1088, 6, 6, 40, 9 + LTEXT "&Persona koloraro:", 1089, 6, 126, 40, 9 + LTEXT "Color|Sol&id", 1090, 100, 146, 40, 9 + LTEXT "&Farbo:", 1091, 150, 126, 40, 9 + LTEXT "&Saturo:", 1092, 150, 146, 40, 9 + LTEXT "&Helo:", 1093, 150, 166, 40, 9 + LTEXT "&Ruo:", 1094, 150, 126, 40, 9 + LTEXT "&Verda:", 1095, 150, 146, 40, 9 + LTEXT "&Bluo:", 1096, 150, 166, 40, 9 + DEFPUSHBUTTON "Enorde", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aldonu al persona koloraro", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Forv&iu personan koloraron", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Seru" +FONT 8, "Helv" +{ + LTEXT "&Seru:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Nur tutan &vorton", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Atentu &Usklecon", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direkto", 1072, 107, 26, 68, 28 + CONTROL "&Retro", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Antaen", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Pluseru", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Helpu", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Anstataigu" +FONT 8, "Helv" +{ + LTEXT "Anstataigu:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&per:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Nur tutan &vorton", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Atentu &Usklecon", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "Plu&seru", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Anstataigu", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anstataigu &iujn", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Nuligu", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Helpu", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Es.rc b/reactos/lib/comdlg32/cdlg_Es.rc new file mode 100644 index 00000000000..72b798e0442 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Es.rc @@ -0,0 +1,218 @@ +/* + * Copyright 1995 Jon Tombs + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Abrir" +FONT 8, "Helv" +{ + LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directorios:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "U&nidades:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Abrir", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "&Guardar como..." +FONT 8, "Helv" +{ + LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Directorios:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "U&nidades:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&Guardar como", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Imprimir" +FONT 8, "Helv" +{ + LTEXT "Impresora:", 1088, 6, 6, 40, 9 + LTEXT "Campo de impresin", 1089, 60, 6, 150, 9 + GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Todo", 1056, 16, 45, 60, 12 + RADIOBUTTON "Selecc&in", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Paginas", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Imprimir", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Desde:", 1090, 60, 80, 30, 9 + LTEXT "&Hasta:", 1091, 120, 80, 30, 9 + LTEXT "Calidad de impre&sin:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Impri&mir en un archivo", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensado", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configuracin de impresin" +FONT 8, "Helv" +{ + GROUPBOX "Impresora:", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Pre&determinada del sistema", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Impresora &especmfica:", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Aceptar", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientacin", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Vertical", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Horizontal", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papel", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Tamao", 1089, 130, 95, 30, 9 + LTEXT "O&rigen:", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Fuente" +FONT 8, "Helv" +{ + LTEXT "&Fuente:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Est&ilo de fuente:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Tamao:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "Aceptar",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Cancelar",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "A&plicar", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "A&yuda" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "&Efectos",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Rayado", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Subrayado", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Color:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Ejemplo",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Color" +FONT 8, "Helv" +{ + LTEXT "Colores &bsicos:", 1088, 4, 4, 140, 10 + LTEXT "Colores person&alizados:", 1089, 4, 106, 140, 10 + LTEXT "Color|S3l&ido", 1090, 150, 151, 48, 10 + LTEXT "&Rojo:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Verde:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "A&zul:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Tinte:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat.:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum.:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Aceptar", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&yuda", 1038,100,166, 44, 14 + PUSHBUTTON "Agregar a los &colores personalizados", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definir colores personalizados >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Buscar" +FONT 8, "Helv" +{ + LTEXT "Buscar:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Comparar palabra entera solamente", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maysculas/minsculas", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direccin", 1072, 107, 26, 68, 28 + CONTROL "A&rriba", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Abajo", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "Buscar &siguiente", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&yuda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "R&eemplazar" +FONT 8, "Helv" +{ + LTEXT "Buscar:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Re&emplazar por:", 1090, -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Comparar palabra entera solamente", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maysculas/minsculas", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "Reemplazar &siguiente", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Reemplazar", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Reemplazar &todo", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&yuda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Fi.rc b/reactos/lib/comdlg32/cdlg_Fi.rc new file mode 100644 index 00000000000..7fe34ae170f --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Fi.rc @@ -0,0 +1,218 @@ +/* + * Copyright 1995 Jukka Iivonen + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Avaa" +FONT 8, "Helv" +{ + LTEXT "Tiedosto&nimi:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Hakemistot:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Luettele tiedostot tyypeittin:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Asemat:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Avaa", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Peruuta", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Ohje", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Vain luku", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tallenna nimell" +FONT 8, "Helv" +{ + LTEXT "Tiedosto&nimi:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Hakemistot:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Tallenna tiedosto &muodossa:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Asemat:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Tallenna", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Peruuta", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Ohje", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Vain luku", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tulosta" +FONT 8, "Helv" +{ + LTEXT "Kirjoitin:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Tulostusalue", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Kaikki", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Valinta", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Sivut", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Tulosta", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Peruuta", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Asetukset", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Mist:", 1090, 60, 80, 30, 9 + LTEXT "Mi&hin:", 1091, 120, 80, 30, 9 + LTEXT "&Tulostustarkkuus:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Tulosta t&iedostoon", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Tiivistetty", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Kirjoittimen asetukset" +FONT 8, "Helv" +{ + GROUPBOX "Kirjoitin", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "O&letuskirjoitin", 1056, 16, 20, 80, 12 + LTEXT "[ei valittu]", 1088, 35, 35, 120, 9 + RADIOBUTTON "&Erityinen kirjoitin", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Peruuta", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Asetukset...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Suunta", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Pysty", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Vaaka", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Paperi", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Koko:", 1089, 130, 95, 30, 9 + LTEXT "L&hde:", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Fontit" +FONT 8, "Helv" +{ + LTEXT "&Fontti:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Fonttit&yyli:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Koko:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Peruuta",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Sovella", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Ohje" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Efektit",1072,6,72,84,34,WS_GROUP + CHECKBOX "Yli&viivattu", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "A&lleviivattu", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "V&ri:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Nyte",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Vri" +FONT 8, "Helv" +{ + LTEXT "Pe&rusvrit:", 1088, 4, 4, 140, 10 + LTEXT "&Muokatut vrit:", 1089, 4, 106, 140, 10 + LTEXT "Vri|&Tasainen", 1090, 150, 151, 48, 10 + LTEXT "&Pun:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Vihr:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Si&n:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Svy:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Kyll:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "K&irkk:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "S&ulje", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "O&hje", 1038,100,166, 44, 14 + PUSHBUTTON "&Lis vri", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "M&rittele vri >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Etsi" +FONT 8, "Helv" +{ + LTEXT "&Etsittv:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Koko sana", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kirjaink&oko", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Suunta", 1072, 107, 26, 68, 28 + CONTROL "&Yls", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Alas", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "Etsi &seuraava", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Peruuta", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "O&hje", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Korvaa" +FONT 8, "Helv" +{ + LTEXT "&Etsittv:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ko&rvattava:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Koko sana", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kirjaink&oko", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "Etsi &seuraava", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Korv&aa", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Korvaa ka&ikki", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "S&ulje", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "O&hje", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Fr.rc b/reactos/lib/comdlg32/cdlg_Fr.rc new file mode 100644 index 00000000000..f87413820a9 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Fr.rc @@ -0,0 +1,465 @@ +/* + * Commdlg + * French language support + * + * Copyright 1995 Alexandre Julliard + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ouvrir" +FONT 8, "Helv" +{ + LTEXT "&Nom de fichier:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Rpertoires", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste des fichiers de &type:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Lecteurs:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Lecture seule", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Enregistrer sous ..." +FONT 8, "Helv" +{ + LTEXT "&Nom de fichier:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Rpertoires:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste des fichiers de &type:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Lecteurs:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Lecture seule", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Imprimer" +FONT 8, "Helv" +{ + LTEXT "Imprimante:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "tendue", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Tout", rad1, 16, 45, 60, 12 + RADIOBUTTON "&Slection", rad2, 16, 60, 60, 12 + RADIOBUTTON "&Pages", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configurer...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&De:", 1090, 60, 80, 30, 9 + LTEXT "&A:", 1091, 120, 80, 30, 9 + LTEXT "&Qualit d'impression:", 1092, 6, 100, 76, 9 + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "&Fichier d'impression", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Copies t&ries", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configuration de l'impression" +FONT 8, "Helv" +{ + GROUPBOX "Imprimante", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Imprimante par dfaut", rad1, 16, 20, 80, 12 + LTEXT "[aucune]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Imprimante &spcifique", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Options...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientation", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Portrait", rad3, 50, 100, 40, 12 + RADIOBUTTON "Paysag&e", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "Papier", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Taille :", 1089, 130, 95, 30, 9 + LTEXT "&Ali&mentation :", 1090, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Polices" +FONT 8, "Helv" +{ + LTEXT "&Police:",stc1 ,6,3,40,9 + COMBOBOX cmb1 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "St&yle de police:",stc2 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Taille:",stc3,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Annuler",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "A&ppliquer", psh3,218,40,40,14,WS_GROUP + PUSHBUTTON "&Aide" , pshHelp,218,57,40,14,WS_GROUP + GROUPBOX "Effets",grp1,6,72,84,34,WS_GROUP + CHECKBOX "&Barr", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Soulign", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Couleur:", stc4 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Exemple",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Couleurs" +FONT 8, "Helv" +{ + LTEXT "Couleurs de &base:", 1088, 4, 4, 140, 10 + LTEXT "&Couleurs personnalises:", 1089, 4, 106, 140, 10 + LTEXT "Couleur | &Uni", 1090, 150, 151, 48, 10 + LTEXT "&Rouge:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Vert:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Bl&eu:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Teinte:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat.:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum.:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp,100,166, 44, 14 + PUSHBUTTON "A&jouter couleur personnalises", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Dfinir couleurs personnalises >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Rechercher" +FONT 8, "Helv" +{ + LTEXT "&Rechercher:", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "M&ot seulement", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Respect des &majuscules/minuscules", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direction", grp1, 107, 26, 68, 28 + CONTROL "&Haut", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Bas", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Poursuivre", 1, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Remplacer" +FONT 8, "Helv" +{ + LTEXT "&Rechercher:", -1, 4, 9, 48, 8 + EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "R&emplacer par:", -1, 4, 26, 48, 8 + EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "M&ot seulement", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Respect des &majuscules/minuscules", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "&Poursuivre", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rempla&cer", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Remplacer &tout", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Annuler", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Impression" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annuler", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Aide", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Imprimante", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Imprimer dans un fichier", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "Proprits", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Nom:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Etat:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Emplacement:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Commentaire:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Copies", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Nombre de copies:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "Copies assembles",chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Etendue de pages", grp1, 8,92, 144,64, WS_GROUP + CONTROL "Toutes", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Pages", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "Selection", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&de:", stc2, 52,124, 20,8 + RTEXT "&:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Configuration de l'imprimante" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Annuler",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Rseau...", psh5, 284,156,48,14 */ + + GROUPBOX "Imprimante", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Proprits", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Nom:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Etat:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "[aucun]", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "[aucun]", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Emplacement:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "[aucun]", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Commentaire:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "[aucun]", stc13, 60, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papier", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "&Taille:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Source:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientation", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&Portrait", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "&Paysage", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Mise en page" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Papier", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Taille:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Source:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Orientation", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Portrait", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "P&aysage", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Marges", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Droite:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Gauche:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Haut:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Bas:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Annuler", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "&Imprimante...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Ouvrir" +FONT 8, "Helv" +{ + LTEXT "&Rechercher dans",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 122, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,292,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "&Nom du fichier:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "&Type du fichier",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "&Protection criture",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "Ouvrir", IDOK,242,110,50,14 + PUSHBUTTON "Annuler", IDCANCEL,242,128,50,14 + PUSHBUTTON "&Aide", pshHelp,242,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX " propos du choix de rpertoires" + IDS_DOCUMENTFOLDERS "Rpertoire Documents" + IDS_PERSONAL "Mes Documents" + IDS_FAVORITES "Mes Favoris" + IDS_PATH "Rpertoire systme" + IDS_DESKTOP "Bureau" + IDS_FONTS "Polices" + IDS_MYCOMPUTER "Poste de travail" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Rpertoires systme" + IDS_LOCALHARDRIVES "Disques locaux" + IDS_FILENOTFOUND "Fichier non trouv" + IDS_VERIFYFILE "Prire de vrifier que le nom de fichier indiqu est correct" + IDS_CREATEFILE "Ce fichier n'existe pas.\nSouhaitez-vous le crer ?" + IDS_OVERWRITEFILE "Ce fichier existe dj.\nVoulez-vous le remplacer ?" + IDS_INVALID_FILENAME_TITLE "Le chemin d'accs contient des caractres invalides" + IDS_INVALID_FILENAME "Un nom de fichier ne peut contenir un des caractres suivants : \n / : < > |" + IDS_PATHNOTEXISTING "Le chemin d'accs n'existe pas" + IDS_FILENOTEXISTING "Le fichier n'existe pas" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Remonter d'un niveau" + IDS_NEWFOLDER "Crer un nouveau dossier" + IDS_LISTVIEW "Liste" + IDS_REPORTVIEW "Dtails" + IDS_TODESKTOP "Voir le bureau" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Imprimer" + + PD32_VALUE_UREADABLE "Entre illisible" + PD32_INVALID_PAGE_RANGE "Cette valeur n'est pas dans l'intervalle de pages\n\ +Veuillez indiquer une valeur entre %d et %d." + PD32_FROM_NOT_ABOVE_TO "Le champ 'de' ne peut tre plus grand \ +que le champ ''." + PD32_MARGINS_OVERLAP "Les marges se recouvrent ou dpassent du papier\n\ +Veuillez indiquer de nouvelles valeurs." + PD32_NR_OF_COPIES_EMPTY "Le champ 'Copies' est vide.\n\ +Veuillez entrer un nombre et r&essayer." + PD32_TOO_LARGE_COPIES "Votre imprimante ne peut grer autant de copies.\n\ +Veuillez indiquer un nombre de copies entre 1 et %d." + PD32_PRINT_ERROR "Une erreur d'impression est intervenue." + PD32_NO_DEFAULT_PRINTER "Pas d'imprimante par dfaut." + PD32_CANT_FIND_PRINTER "Impossible de trouver l'imprimante." + PD32_OUT_OF_MEMORY "Pas assez de mmoire." + PD32_GENERIC_ERROR "Une erreur est intervenue." + PD32_DRIVER_UNKNOWN "Pilote d'imprimante inconnu." + + PD32_DEFAULT_PRINTER "Imprimante par dfaut; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Il y a %d documents dans la file d'attente" + PD32_PRINT_ALL_X_PAGES "&Toutes les %d pages" + PD32_MARGINS_IN_INCHES "Marges [pouces]" + PD32_MARGINS_IN_MILIMETERS "Marges [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Prt; " + PD32_PRINTER_STATUS_PAUSED "Suspendu; " + PD32_PRINTER_STATUS_ERROR "Erreur; " + PD32_PRINTER_STATUS_PENDING_DELETION "En attente de suppression; " + PD32_PRINTER_STATUS_PAPER_JAM "Bourrage papier; " + PD32_PRINTER_STATUS_PAPER_OUT "Plus de papier; " + PD32_PRINTER_STATUS_MANUAL_FEED "Insertion manuelle du papier; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Problme de papier; " + PD32_PRINTER_STATUS_OFFLINE "L'imprimante n'est pas en ligne; " + PD32_PRINTER_STATUS_IO_ACTIVE "IO Active; " + PD32_PRINTER_STATUS_BUSY "Occupe; " + PD32_PRINTER_STATUS_PRINTING "En cours d'impression; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Le bac de sortie est plein; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Non disponible; " + PD32_PRINTER_STATUS_WAITING "En attente; " + PD32_PRINTER_STATUS_PROCESSING "Traitement en cours; " + PD32_PRINTER_STATUS_INITIALIZING "Dmarrage en cours; " + PD32_PRINTER_STATUS_WARMING_UP "Prchauffage; " + PD32_PRINTER_STATUS_TONER_LOW "Toner presque vide; " + PD32_PRINTER_STATUS_NO_TONER "Pas de toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Annul par utilisateur; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Plus assez de mmoire; " + PD32_PRINTER_STATUS_DOOR_OPEN "La porte de l'imprimante est ouverte; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Serveur d'impression inconnu; " + PD32_PRINTER_STATUS_POWER_SAVE "Mode conomie d'nergie; " +} + +STRINGTABLE DISCARDABLE /* Color names */ +{ + IDS_COLOR_BLACK "Noir" + IDS_COLOR_MAROON "Marron" + IDS_COLOR_GREEN "Vert" + IDS_COLOR_OLIVE "Olive" + IDS_COLOR_NAVY "Bleu marine" + IDS_COLOR_PURPLE "Pourpre" + IDS_COLOR_TEAL "Turquoise" + IDS_COLOR_GRAY "Gris" + IDS_COLOR_SILVER "Argent" + IDS_COLOR_RED "Rouge" + IDS_COLOR_LIME "Lime" + IDS_COLOR_YELLOW "Jaune" + IDS_COLOR_BLUE "Bleu" + IDS_COLOR_FUCHSIA "Fuchsia" + IDS_COLOR_AQUA "Aqua" + IDS_COLOR_WHITE "Blanc" +} diff --git a/reactos/lib/comdlg32/cdlg_Hu.rc b/reactos/lib/comdlg32/cdlg_Hu.rc new file mode 100644 index 00000000000..6b4fba0ba79 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Hu.rc @@ -0,0 +1,215 @@ +/* + * Copyright 1997 John Zero + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Megnyits" +FONT 8, "Helv" +BEGIN + LTEXT "File &neve:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Knyvtrak:", -1, 110, 6, 92, 9 + CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9 + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "File &tpusok:", 1089, 6, 104, 90, 9 + CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36 + LTEXT "&Meghajtk:", 1091, 110, 104, 92, 9 + CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68 + CONTROL "Megnyits", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 208, 6, 56, 14 + CONTROL "Mgsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 24, 56, 14 + CONTROL "&Segtsg", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 46, 56, 14 + CONTROL "&Csak olvashat", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 208, 68, 63, 12 +END + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Ments j nven ..." +FONT 8, "Helv" +{ + LTEXT "File &neve:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Knyvtrak:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "File &tpusok:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Meghajtk:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ments j nven", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mgsem", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Segtsg", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Csak olvashat", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Nyomtats" +FONT 8, "Helv" +{ + LTEXT "Nyomtat:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Nyomtatand terlet", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Mind", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Kivlasztott", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Lapok", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Nyomtats", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mgsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Bellts", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "-&tl:", 1090, 60, 80, 30, 9 + LTEXT "-&ig:", 1091, 120, 80, 30, 9 + LTEXT "Mi&nsg:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "&File-ba nyomtat", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sr", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Nyomtat belltsa" +FONT 8, "Helv" +{ + GROUPBOX "Nyomtat", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Alaprtelmezett nyomtat", 1056, 16, 20, 80, 12 + LTEXT "[nincs]", 1088, 35, 35, 120, 9 + RADIOBUTTON "&Adott nyomtat", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mgsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Bellts", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Oldalfekvs", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&ll", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Fekv", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papr", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Mrete", 1089, 130, 95, 30, 9 + LTEXT "Fo&rrsa", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "&Font:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Font &stlus:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Mret:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Mgsem",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Alkalmaz", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Segtsg" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Effektusok",1072,6,72,84,34,WS_GROUP + CHECKBOX "&thzott", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Alhzott", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Szn:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Minta",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Szn" +FONT 8, "Helv" +{ + LTEXT "&Alap sznek:", 1088, 4, 4, 140, 10 + LTEXT "&Egyedi sznek:", 1089, 4, 106, 140, 10 + LTEXT "Szn | &Tmr", 1090, 150, 151, 48, 10 + LTEXT "&Vrs:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zld:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Kk:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Hue:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mgsem", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Segtsg", 1038,100,166, 44, 14 + PUSHBUTTON "&Egyedi sznekhez ads", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "E&gyedi szn definils >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&t",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + +FINDDLGORD DIALOG 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Keress" +FONT 8, "Helv" +BEGIN + LTEXT "&Mit keressen:", -1, 4, 8, 48, 8 + EDITTEXT 1152, 51, 7, 124, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "Teljes &szavak keresse", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 4, 26, 100, 12 + CONTROL "Kis/&nagybet klnb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 4, 42, 92, 12 + GROUPBOX "Irny", 1072, 97, 26, 78, 28 + CONTROL "&Vissza", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 102, 38, 32, 12 + CONTROL "&Elre", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + CONTROL "&Kvetkez", 1, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 5, 50, 14 + CONTROL "Mgsem", 2, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 23, 50, 14 + PUSHBUTTON "&Segtsg", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +END + +REPLACEDLGORD DIALOG 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Cserls" +FONT 8, "Helv" +BEGIN + LTEXT "&Mit keressen:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 57, 7, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Mire &cserljem:", -1, 4, 26, 53, 8 + EDITTEXT 1153, 57, 24, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "Teljes &szavak keresse", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12 + CONTROL "Kis/&nagybet klnb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 5, 62, 99, 12 + CONTROL "&Kvetkez", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 174, 4, 53, 14 + CONTROL "C&serl", 1024, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 21, 53, 14 + CONTROL "M&indent cserl", 1025, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 38, 53, 14 + CONTROL "Mgsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 55, 53, 14 + CONTROL "&Segtsg", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 75, 53, 14 +END diff --git a/reactos/lib/comdlg32/cdlg_It.rc b/reactos/lib/comdlg32/cdlg_It.rc new file mode 100644 index 00000000000..abe863cb45d --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_It.rc @@ -0,0 +1,215 @@ +/* + * Copyright 1996 Tristan Tarrant + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Apri" +FONT 8, "Helv" +{ + LTEXT "&Nome file:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Percorso:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Files di &Tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Unita':", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Apri", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Solo &Lettura", 1040, 208, 68, 52, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Salva con nome ..." +FONT 8, "Helv" +{ + LTEXT "&Nome file:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Percorso:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Files di &Tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Unita':", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Salva come", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Sola lettura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Stampa" +FONT 8, "Helv" +{ + LTEXT "Stampante:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Pagine da stampare", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Tutte", 1056, 16, 45, 60, 12 + RADIOBUTTON "S&elezione", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Pagine", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Stampa", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configura", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Da:", 1090, 60, 80, 30, 9 + LTEXT "&A:", 1091, 120, 80, 30, 9 + LTEXT "&Qualita' di Stampa:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Stampa su Fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensato", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 274, 154 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configurazione Stampante" +FONT 8, "Helv" +{ + GROUPBOX "Stampante", 1072, 6, 10, 180, 72, BS_GROUPBOX + RADIOBUTTON "Stampante &Preferita", 1056, 16, 20, 78, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Stampante &Specifica", 1057, 16, 50, 78, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Installa", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientamento", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Verticale", 1058, 50, 100, 42, 12 + RADIOBUTTON "&Orizzontale", 1059, 50, 115, 50, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Carta", 1074, 120, 85, 150, 50, BS_GROUPBOX + LTEXT "&Dimensione", 1089, 130, 100, 30, 9 + LTEXT "&Sorgente", 1090, 130, 115, 30, 9 + COMBOBOX 1137, 168, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 168, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "&Font:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "St&ile:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Dimensione:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Annulla",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "A&pplica", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Aiuto" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Effetti",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Barrato", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Sottolineato", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Colore:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Esempio",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Colore" +FONT 8, "Helv" +{ + LTEXT "Colori di &Base:", 1088, 4, 4, 140, 10 + LTEXT "Colori &Utente:", 1089, 4, 106, 140, 10 + LTEXT "Colore | Sol&ido", 1090, 150, 151, 48, 10 + LTEXT "&Rosso:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Verde:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Blu:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Tinta:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Aiuto", 1038,100,166, 44, 14 + PUSHBUTTON "&Aggiungi ai Colori Utente", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definisci Colori Utente >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Trova" +FONT 8, "Helv" +{ + LTEXT "Tro&va:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Parola Intera", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maiuscole/Minuscole", 1041, 4, 42, 74, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direzione", 1072, 107, 26, 68, 28 + CONTROL "&Su", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 24, 12 + CONTROL "&Giu'", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 38, 28, 12 + DEFPUSHBUTTON "&Trova Prossimo", IDOK, 180, 5, 54, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Cambia" +FONT 8, "Helv" +{ + LTEXT "Tro&va:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ca&mbia con:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Parola Intera", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maiuscole/Minuscole", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "&Trova Prossimo", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Cambia", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cambia &Tutto", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Ja.rc b/reactos/lib/comdlg32/cdlg_Ja.rc new file mode 100644 index 00000000000..f41e2bf9b5b --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Ja.rc @@ -0,0 +1,341 @@ +/* + * Copyright 2000 Junichi Kuchinishi + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "t@CJ" +FONT 9, "MS UI Gothic" +{ + LTEXT "t@C(&N):", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "fBNg(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "t@C̎(&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "hCu(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "㏑֎~(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "O‚ĕۑ" +FONT 9, "MS UI Gothic" +{ + LTEXT "t@C(&N):", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "fBNg(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "t@C̎(&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "hCu(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "㏑֎~(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 9, "MS UI Gothic" +{ + LTEXT "gp:", 1088, 6, 6, 40, 9 + LTEXT "ʏg", 1089, 60, 6, 150, 9 + GROUPBOX "͈͂̑I", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "Sy[W(&A)", 1056, 16, 45, 60, 12 + RADIOBUTTON "I(&E)", 1057, 16, 60, 60, 12 + RADIOBUTTON "y[Ww(&P)", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "̐ݒ(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "߰ނ(&F):", 1090, 60, 80, 30, 9 + LTEXT "߰ނ܂(&T):", 1091, 120, 80, 30, 9 + LTEXT "󎚕i(&Q):", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "t@C֏o(&L)", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "v^̐ݒ" +FONT 9, "MS UI Gothic" +{ + GROUPBOX "v^̑I", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "ʏgv^(&D)", 1056, 16, 20, 80, 12 + LTEXT "(ʏgv^ݒ肳Ă܂)", 1088, 35, 35, 120, 9 + RADIOBUTTON "̑̃v^(&P)", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "̌", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "c(&R)", 1058, 50, 100, 40, 12 + RADIOBUTTON "(&L)", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "p̑I", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "p(&Z)", 1089, 130, 95, 30, 9 + LTEXT "@(&S)", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "tHg̎w" +FONT 9, "MS UI Gothic" +{ + LTEXT "̫Ė(&F):",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "(&Y):",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "(&S):",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "ݾ",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "(&A)", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "(&H)" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "",1072,6,72,84,34,WS_GROUP + CHECKBOX "(&K)", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "(&U)", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "F(&C):", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Tv",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "F̐ݒ" +FONT 9, "MS UI Gothic" +{ + LTEXT "{F(&B):", 1088, 4, 4, 140, 10 + LTEXT "쐬F(&C):", 1089, 4, 106, 140, 10 + LTEXT "F |", 1090, 150, 151, 48, 10 + LTEXT "(&R):", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&G):",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&B):",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "F(&U):" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "N₩(&S):" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "邳(&L):" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038,100,166, 44, 14 + PUSHBUTTON "lj(&A)", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "F̍쐬(&D)...", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "̌" +FONT 9, "MS UI Gothic" +{ + LTEXT "镶(&N):", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "PPʂŌ(&W)", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "啶Əʂ(&C)", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "", 1072, 107, 26, 68, 28 + CONTROL "֌(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "֌(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "(&F)", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", 2, IDCANCEL, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "̒u" +FONT 9, "MS UI Gothic" +{ + LTEXT "uO̕(&N):", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "u̕(&P):", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "PPʂŌ(&W)", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "啶Əʂ(&C)", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "(&F)", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "uĎ(&R)", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ׂĂu(&A)", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ݾ", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "" +FONT 9, "MS UI Gothic" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "ݾ", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "(&H)", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "̧ق֏o(&L)", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "è(&P)", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "(&N):", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT ":", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ꏊ:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "(&C):",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "Pʂň(&O)", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "͈", grp1, 8,92, 144,64, WS_GROUP + CONTROL "ׂ(&A)", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "߰ގw(&G)", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "I(&S)", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "߰ނ(&F)", stc2, 52,124, 20,8 + RTEXT "߰ނ܂(&T)", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "̐ݒ" +FONT 9, "MS UI Gothic" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Network...", psh5, 284,156,48,14 */ + + GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "è(&P)", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "(&N):", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT ":", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "ꏊ:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "p", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "p(&Z):", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Source:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "c(&O)", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "(&A)", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "̧قJ" +FONT 9, "MS UI Gothic" +{ + LTEXT "̧ق̏ꏊ(&I):",IDC_LOOKINSTATIC,5,6,52,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,56,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 188, 2, 82, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "̧ٖ(&N):",IDC_FILENAMESTATIC,5,112,48,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,56,110,153,12,ES_AUTOHSCROLL + + LTEXT "̧ق̎(&T):",IDC_FILETYPESTATIC,5,128,52,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,56,126,153,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "ǂݎp̧قƂĊJ(&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "J(&O)", IDOK,222,110,50,14 + PUSHBUTTON "ݾ", IDCANCEL,222,128,50,14 + PUSHBUTTON "(&H)", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&About FolderPicker Test" + IDS_DOCUMENTFOLDERS "Document Folders" + IDS_PERSONAL "My Documents" + IDS_FAVORITES "Cɓ" + IDS_PATH "System Path" + IDS_DESKTOP "޽į" + IDS_FONTS "Fonts" + IDS_MYCOMPUTER "ϲ ߭" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "System Folders" + IDS_LOCALHARDRIVES "Local Hard Drives" + IDS_FILENOTFOUND "̧ق‚܂B" + IDS_VERIFYFILE "̧ٖmFĂB" + IDS_CREATEFILE "̧ق݂͑܂B\n쐬܂?" +} diff --git a/reactos/lib/comdlg32/cdlg_Ko.rc b/reactos/lib/comdlg32/cdlg_Ko.rc new file mode 100644 index 00000000000..f795b1754cc --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Ko.rc @@ -0,0 +1,297 @@ +/* + * Copyright 1996 Bang Jun Young + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 9, "Helv" +{ + LTEXT " ̸(&N):", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "丮(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT " (&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "̺(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "б (&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ٸ ̸ ..." +FONT 9, "Helv" +{ + LTEXT " ̸(&N):", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "丮(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT " (&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "̺(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "б (&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "μ" +FONT 9, "Helv" +{ + LTEXT "μ:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "μ ", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "(&A)", 1056, 16, 45, 60, 12 + RADIOBUTTON "(&E)", 1057, 16, 60, 60, 12 + RADIOBUTTON "(&P)", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "μ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "(&F):", 1090, 60, 80, 30, 9 + LTEXT "(&T):", 1091, 120, 80, 30, 9 + LTEXT "μ ǰ(&Q):", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Ϸ μ(&L)", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "μ " +FONT 9, "Helv" +{ + GROUPBOX "μ", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "⺻ μ(&D)", 1056, 16, 20, 80, 12 + LTEXT "[]", 1088, 35, 35, 120, 9 + RADIOBUTTON " μ(&P)", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ȯ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "(&R)", 1058, 50, 100, 40, 12 + RADIOBUTTON "(&L)", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "ũ(&Z)", 1089, 130, 95, 30, 9 + LTEXT "(&S)", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print" +FONT 9, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Help", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Print to fi&le", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Properties", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Where:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comment:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Copies", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Number of &copies:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ollate", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Print range", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&All", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Pa&ges", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "&Selection", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&from:", stc2, 52,124, 20,8 + RTEXT "&to:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print Setup" +FONT 9, "Helv" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Network...", psh5, 284,156,48,14 */ + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Properties", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Name:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Where:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comment:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Paper", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "Si&ze:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Source:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientation", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "P&ortrait", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "L&andscape", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + + +CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ü" +FONT 9, "Helv" +{ + LTEXT "ü:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + DEFPUSHBUTTON "Ȯ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 9, "Helv" +{ + LTEXT "⺻(&B):", 1088, 4, 4, 140, 10 + LTEXT "ڻ(&C):", 1089, 4, 106, 140, 10 + LTEXT "ȥ | ܻ(&i)", 1090, 150, 151, 48, 10 + LTEXT "(&R):", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ʷ(&G):",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ķ(&B):",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&H):" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ä(&S):" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&L):" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ȯ", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", 1038,100,166, 44, 14 + PUSHBUTTON "ڻ ߰(&A)", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ڻ (&D) >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 280, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ã" +FONT 9, "Helv" +{ + LTEXT "ã ڿ(&N):", -1, 4, 8, 50, 8 + EDITTEXT 1152, 60, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ܾ(&W)", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "/ҹ / (&C)", 1041, 4, 38, 112, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "ã ", 1072, 120, 26, 90, 28 + CONTROL "(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 125, 38, 40, 12 + CONTROL "Ʒ(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 164, 38, 45, 12 + DEFPUSHBUTTON " ã(&F)", IDOK, 220, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 220, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 220, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ٲٱ" +FONT 9, "Helv" +{ + LTEXT "ã ڿ(&N):", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ٲ ڿ(&P):", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ܾ(&W)", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "ҹ (&C)", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON " ã(&F)", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ٲٱ(&R)", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON " ٲٱ(&A)", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "" +FONT 9, "Helv" +{ + LTEXT "ġ(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT " ̸(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT " (&T):",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "б (&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "(&O)", IDOK,222,110,50,14 + PUSHBUTTON "", IDCANCEL,222,128,50,14 + PUSHBUTTON "(&H)", pshHelp,222,145,50,14 +} diff --git a/reactos/lib/comdlg32/cdlg_Nl.rc b/reactos/lib/comdlg32/cdlg_Nl.rc new file mode 100644 index 00000000000..9c8e29f867c --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Nl.rc @@ -0,0 +1,323 @@ +/* + * Copyright 1999 Klaas van Gend + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Bestand openen" +FONT 8, "Helv" +{ + LTEXT "Bestands&naam:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Zoeken in:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Bestands&typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&Openen", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Opslaan als ..." +FONT 8, "Helv" +{ + LTEXT "Bestands&naam:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Zoeken in:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Bestands&typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&Opslaan als", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Afdrukken" +FONT 8, "Helv" +{ + LTEXT "Printer:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Afdrukbereik", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Alles", 1056, 16, 45, 60, 12 + RADIOBUTTON "Sele&ctie", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Pagina's", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Eigenschappen", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&van:", 1090, 60, 80, 30, 9 + LTEXT "&t/m:", 1091, 120, 80, 30, 9 + LTEXT "Afdruk&kwaliteit:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Naar &bestand", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Afdrukeigenschappen" +FONT 8, "Helv" +{ + GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Default Printer", 1056, 16, 20, 80, 12 + LTEXT "[geen]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Specifieke &Printer", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Afdrukstand", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Staand", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Liggend", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papier", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Formaat", 1089, 130, 95, 30, 9 + LTEXT "&Bron", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lettertype" +FONT 8, "Helv" +{ + LTEXT "&Lettertype:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Teken&stijl:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Grootte:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annuleren",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Toepassen", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Effecten",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Doorhalen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Onderstrepen", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Kleur:", 1091 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Voorbeeld",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Schr&ift:",stc7 ,98,114,40,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Kleur" +FONT 8, "Helv" +{ + LTEXT "&Basiskleuren:", 1088, 4, 4, 140, 10 + LTEXT "&Aangepaste kleuren:", 1089, 4, 106, 140, 10 + LTEXT "Kleur | &Effen", 1090, 157, 151, 48, 10 + LTEXT "&Rood:", 726 /*1094*/, 256,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Groen:",727/*1095*/, 256,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Blau&w:",728 /*1096*/, 256,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Ti&nt:" ,723 /*1091*/, 196,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Intensiteit:" ,724 /*1092*/, 196,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Helderheid:" ,725 /*1093*/, 196,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Help", 1038,100,166, 44, 14 + PUSHBUTTON "&Toevoegen aan Aangepaste kleuren", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definieer Aangepaste kleuren >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tekst zoeken" +FONT 8, "Helv" +{ + LTEXT "&Zoek naar:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Heel &woord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Gelijke &hoofd-/kleine letters", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Zoekrichting", 1072, 107, 26, 68, 28 + CONTROL "&Omhoog", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "Om&laag", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Volgende zoeken", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annuleren", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tekst vervangen" +FONT 8, "Helv" +{ + LTEXT "&Zoek naar:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Vervang &door:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Heel &woord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Gelijke &hoofd-/kleine letters", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "Volgende zoeken", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Ve&rvangen", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Alles vervangen", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuleren", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Help", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Print32" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Help", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Naar &bestand", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Eigenschappen", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Naam:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Waar:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Opmerking:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Aantal ", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Aantal e&xemplaren:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "&Sorteren", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Afdrukbereik", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Alle xx", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "&Pagina's", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "Sele&ctie", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&van:", stc2, 52,124, 20,8 + RTEXT "&t/m:", stc3, 100,124, 16,8 +} + + + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Print" + + PD32_VALUE_UREADABLE "Onleesbare ingave" + PD32_INVALID_PAGE_RANGE "Deze waarde ligt niet binnen het bereik\n\ +Voert u s.v.p. een waarde tussen %d en %d in." + PD32_FROM_NOT_ABOVE_TO "De VAN ingave kan niet groter zijn \ +dan de TO waarde" + PD32_MARGINS_OVERLAP "De marges overlappen of vallen \ +buiten het papier.\nVoer s.v.p. nieuwe marges in." + PD32_NR_OF_COPIES_EMPTY "Het aantal invoerveld kan niet leeg \ +zijn." + PD32_TOO_LARGE_COPIES "Zoveel exemplaren kan de printer \ +niet in een keer aan, het maximum is %d" + PD32_PRINT_ERROR "Er ontstond een printer fout." + PD32_NO_DEFAULT_PRINTER "Er is geen default printer" + PD32_CANT_FIND_PRINTER "De printer werd niet gevonden" + PD32_OUT_OF_MEMORY "Er was onvoldoende geheugen \ +beschikbaar" + PD32_GENERIC_ERROR "Er onstond een niet nader \ +gespecifieerde fout" + PD32_DRIVER_UNKNOWN "De printer driver is onbekend" + + PD32_DEFAULT_PRINTER "Default Printer, " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Er staan %d documenten in de \ +wachtrij" + PD32_PRINT_ALL_X_PAGES "&Alle %d pagina's" + PD32_MARGINS_IN_INCHES "Marges [inch]" + PD32_MARGINS_IN_MILIMETERS "Marges [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Klaar" + PD32_PRINTER_STATUS_PAUSED "Gepauseerd, " + PD32_PRINTER_STATUS_ERROR "Fout, " + PD32_PRINTER_STATUS_PENDING_DELETION "Bezig met verwijderen, " + PD32_PRINTER_STATUS_PAPER_JAM "Paper jam, " + PD32_PRINTER_STATUS_PAPER_OUT "Papier is op, " + PD32_PRINTER_STATUS_MANUAL_FEED "Voer s.v.p. met de hand papier in, " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Papier probleem, " + PD32_PRINTER_STATUS_OFFLINE "Printer offline, " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O Actief, " + PD32_PRINTER_STATUS_BUSY "Druk bezig, " + PD32_PRINTER_STATUS_PRINTING "Aan het printen, " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "De uitvoerlade is vol, " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Niet aanwezig, " + PD32_PRINTER_STATUS_WAITING "Aan het wachten, " + PD32_PRINTER_STATUS_PROCESSING "Aan het Verwerken, " + PD32_PRINTER_STATUS_INITIALIZING "Aan het opstarten, " + PD32_PRINTER_STATUS_WARMING_UP "Aan het opwarmen, " + PD32_PRINTER_STATUS_TONER_LOW "Er is nog maar weinig toner, " + PD32_PRINTER_STATUS_NO_TONER "Toner is op, " + PD32_PRINTER_STATUS_PAGE_PUNT "Storing in papieruitvoer, " + PD32_PRINTER_STATUS_USER_INTERVENTION "Onderbroken door een gebruiker, " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Onvoldoende geheugen beschikbaar, " + PD32_PRINTER_STATUS_DOOR_OPEN "De printer staat is open, " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server onbekend; " + PD32_PRINTER_STATUS_POWER_SAVE "Power safe mode; " +} diff --git a/reactos/lib/comdlg32/cdlg_No.rc b/reactos/lib/comdlg32/cdlg_No.rc new file mode 100644 index 00000000000..2c54c2b1d7d --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_No.rc @@ -0,0 +1,185 @@ +/* + * Copyright 1994 Dag Asheim + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "pne" +FONT 8, "Helv" +{ + LTEXT "&Filnavn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste over filer av &type:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "pne", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjelp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lagre som ..." +FONT 8, "Helv" +{ + LTEXT "&Filnavn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Liste over filer av &type:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Lagre som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjelp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Skriv" +FONT 8, "Helv" +{ + LTEXT "Skriver:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Skriv del", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Alle", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Markert", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Sider", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Skriv", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Oppsett", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Fra:", 1090, 60, 80, 30, 9 + LTEXT "&Til:", 1091, 120, 80, 30, 9 + LTEXT "&Utskriftskvalitet:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "&Skriv til fil", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sammentrykket", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Skriveoppsett" +FONT 8, "Helv" +{ + GROUPBOX "Skriver", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Standardskriver", 1056, 16, 20, 80, 12 + LTEXT "[ingen]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Spesifikk &skriver", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Oppsett", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Portrett", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Landskap", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papir", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Strrelse", 1089, 130, 95, 30, 9 + LTEXT "&Kilde", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "Font:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Farge" +FONT 8, "Helv" +{ + LTEXT "&Grunnleggende farger:", 1088, 6, 6, 40, 9 + LTEXT "&Egendefinerte farger:", 1089, 6, 126, 40, 9 + LTEXT "&Ensfarget", 1090, 100, 146, 40, 9 + LTEXT "&Int:", 1091, 150, 126, 40, 9 + LTEXT "&Met:", 1092, 150, 146, 40, 9 + LTEXT "&Lum:", 1093, 150, 166, 40, 9 + LTEXT "&Rd:", 1094, 150, 126, 40, 9 + LTEXT "&Grnn:", 1095, 150, 146, 40, 9 + LTEXT "&Bl:", 1096, 150, 166, 40, 9 + DEFPUSHBUTTON "Ok", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Legg til egendefinert farge", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Fjern egendefinerte farger", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Finn" +FONT 8, "Helv" +{ + LTEXT "&Finn hva:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kun hele ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Skill p store/sm bokstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Retning", 1072, 107, 26, 68, 28 + CONTROL "&Opp", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Ned", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Finn neste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjelp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Bytt" +FONT 8, "Helv" +{ + LTEXT "&Finn hva:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Bytt med:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kun hele ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Skill p store/sm bokstaver", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "&Finn neste", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Bytt", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Bytt alt", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjelp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Pl.rc b/reactos/lib/comdlg32/cdlg_Pl.rc new file mode 100644 index 00000000000..f0a99004b81 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Pl.rc @@ -0,0 +1,218 @@ +/* + * Copyright 1997 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +/* LTEXT "Wyswietl pliki &typu:", 1089, 6, 104, 90, 9 */ +OPEN_FILE DIALOG 36, 24, 279, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Otwrz" +FONT 8, "Helv" +BEGIN + LTEXT "&Nazwa pliku:", 1090, 6, 6, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Katalogi:", -1, 110, 6, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9 + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Wywietl pliki &typu:", 1089, 6, 104, 90, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36 + LTEXT "&Stacje dyskw:", 1091, 110, 104, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68 + CONTROL "Otwrz", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 6, 56, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 24, 56, 14 + CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 46, 56, 14 + CONTROL "Tylko do odczytu", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 208, 68, 69, 12 +END +/* PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 */ +SAVE_FILE DIALOG 36, 24, 278, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Zapisz jako" +FONT 8, "Helv" +BEGIN + LTEXT "&Nazwa pliku:", 1090, 6, 6, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Katalogi:", -1, 110, 6, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9 + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Pokazuj pliki &typu:", 1089, 6, 104, 90, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36 + LTEXT "&Stacje dyskw:", 1091, 110, 104, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68 + CONTROL "Ok", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 6, 56, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 24, 56, 14 + CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 45, 56, 14 + CONTROL "&Tylko do odczytu", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 208, 68, 68, 12 +END +/* DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP */ +PRINT DIALOG 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Drukuj" +FONT 8, "Helv" +BEGIN + LTEXT "&Drukarka:", 1088, 6, 6, 40, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Drukuj", 1072, 6, 30, 160, 65, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "&Wszystko", 1056, 16, 45, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "W&ybr", 1057, 16, 60, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "&Strony", 1058, 16, 75, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "Drukuj", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 6, 56, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 24, 56, 14 + CONTROL "&Ustawienia", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 46, 56, 14 + LTEXT "&Od:", 1090, 60, 78, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Do:", 1091, 120, 78, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Jako &wydruku:", 1092, 6, 100, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 71, 98, 92, 68 + CONTROL "Drukuj do Pli&ku", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 14, 115, 95, 12 + CONTROL "Sortuj kopie", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 182, 102, 59, 12 +END +/* PUSHBUTTON "Anuluj",IDCANCEL,218,23,40,14,WS_GROUP */ +PRINT_SETUP DIALOG 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Print Setup" +FONT 8, "Helv" +BEGIN + GROUPBOX "Drukarka", 1072, 6, 10, 180, 65, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "&Drukarka domylna", 1056, 16, 20, 80, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "&Inna drukarka", 1057, 16, 50, 80, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 35, 65, 149, 68 + CONTROL "Ok", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 206, 6, 56, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 24, 56, 14 + CONTROL "&Opcje", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 46, 56, 14 + GROUPBOX "Orientacja", 1073, 6, 85, 100, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "W p&ionie", 1058, 50, 100, 40, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + RADIOBUTTON "W po&ziomie", 1059, 50, 115, 40, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papier", 1074, 120, 85, 180, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "&Wielko", 1089, 130, 95, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&rdo", 1090, 130, 110, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 155, 95, 92, 68 + CONTROL "", 1138, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 155, 110, 92, 68 +END +/* CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 */ +CHOOSE_FONT DIALOG 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +BEGIN + LTEXT "&Czcionka:", 1088, 6,3,40,9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1136, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | +CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE, 6,13,94,54 + LTEXT "St&yl:", 1089, 108,3,44,9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1137, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | +WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE, 108,13,64,54 + LTEXT "&Rozmiar:", 1090, 179,3,30,9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1138, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | +WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT, 179,13,32,54 + CONTROL "OK", IDOK, "BUTTON", WS_GROUP, 218,6,40,14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 218,23,40,14 + CONTROL "&Zastosuj", 1026, "BUTTON", WS_GROUP, 218,40,40,14 + CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 218,57,40,14 + CONTROL "Efekty specialne", 1072, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 6,72,84,34 + CONTROL "Prz&ekrelona", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 82, 58, 10 + CONTROL "P&odkrelona", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10,94,50,10 + LTEXT "&Kolor:", 1091, 6,110,30,9, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", 1139, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | +CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6,120,84,100 +/* CONTROL "Przykad", 1073, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 98,72,160,49 + CONTROL "AaBbYyZz\xB3", stc5, "STATIC", SS_NOPREFIX | NOT WS_VISIBLE, 104,81,149,37 */ + GROUPBOX "Przykad",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz\xB3",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +END +/* PUSHBUTTON "&Replace", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + * PUSHBUTTON "Replace &All", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + * PUSHBUTTON "Cancel", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + * PUSHBUTTON "&Help", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP + *} + */ +FINDDLGORD DIALOG 34, 24, 251, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Znajd" +FONT 8, "Helv" +BEGIN + LTEXT "&Znajd:", -1, 4, 8, 42, 8, WS_CHILD | WS_VISIBLE | WS_GROUP + EDITTEXT 1152, 46, 7, 134, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "Uwzgldnij tylko cae wyrazy", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 4, 26, 107, 12 + CONTROL "&Uwzgldniaj wielko liter", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 42, 107, 12 + GROUPBOX "Kierunek", 1072, 113, 26, 68, 28 + CONTROL "W &g\xF3r\xEA", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 117, 38, 20, 12 + CONTROL "W &d\xF3l", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 144, 38, 30, 12 + CONTROL "&Znajd nastpny", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 5, 61, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 23, 61, 14 + CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 45, 61, 14 +END +REPLACEDLGORD DIALOG 36, 24, 245, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Zamie" +FONT 8, "Helv" +BEGIN + LTEXT "&Znajd:", -1, 4, 9, 48, 8, WS_CHILD | WS_VISIBLE | WS_GROUP + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Zanie &na:", -1, 4, 26, 48, 8, WS_CHILD | WS_VISIBLE | WS_GROUP + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "Uwzgldnij &tylko cae wyrazy", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12 + CONTROL "&Uwzgldnij wielko liter", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 62, 96, 12 + CONTROL "Znajd nastpny", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 4, 67, 14 + CONTROL "&Zamie", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 21, 68, 14 + CONTROL "Zamie &wszystkie", 1025, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 38, 68, 14 + CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 56, 68, 14 + CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 75, 68, 14 +END + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Color" +FONT 8, "Helv" +{ + LTEXT "&Podstawowe kolory:", 1088, 4, 4, 140, 10 + LTEXT "Dowolne &kolory:", 1089, 4, 106, 140, 10 + LTEXT "Kolor | Sol&id", 1090, 150, 151, 48, 10 + LTEXT "&Czerwony:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zielony:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Niebieski:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Hue:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anuluj", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Pomoc", 1038,100,166, 44, 14 + PUSHBUTTON "&Dodaj do dowolnych", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Z&definiuj Kolor >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} diff --git a/reactos/lib/comdlg32/cdlg_Pt.rc b/reactos/lib/comdlg32/cdlg_Pt.rc new file mode 100644 index 00000000000..4db99f67042 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Pt.rc @@ -0,0 +1,461 @@ +/* + * Copyright 1997 Ricardo R. Massaro + * Copyright 2003 Marcelo Duarte + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Abrir" +FONT 8, "Helv" +{ + LTEXT "Nome do &Arquivo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Diretrios:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Listar Arquivos do &Tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Abrir", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Somente Leitura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Salvar Como ..." +FONT 8, "Helv" +{ + LTEXT "Nome do &Arquivo:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Diretrios:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Listar Arquivos do &Tipo:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Salvar &Como", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Ajuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Somente Leitura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Imprimir" +FONT 8, "Helv" +{ + LTEXT "Impressora:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Faixa de Impresso", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Tudo", 1056, 16, 45, 60, 12 + RADIOBUTTON "S&eleo", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Pginas", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Imprimir", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&De:", 1090, 60, 80, 30, 9 + LTEXT "&Ate:", 1091, 120, 80, 30, 9 + LTEXT "&Qualidade de Impresso:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Imprimir para Arquivo", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "C&ondensado", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Configuraes de Impresso" +FONT 8, "Helv" +{ + GROUPBOX "Impressora", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Impressora Padro", 1056, 16, 20, 80, 12 + LTEXT "[none]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Impressora &Especfica", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientao", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Retrato", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Paisagem", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papel", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Tamanho", 1089, 130, 95, 30, 9 + LTEXT "&Fonte de Alimentao", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Fonte" +FONT 8, "Helv" +{ + LTEXT "&Fonte:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Estilo da Fonte:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Tamanho:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Cancelar",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Aplicar", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "A&juda" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Efeitos",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Riscado", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Sublinhado", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Cor:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Amostra",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Cor" +FONT 8, "Helv" +{ + LTEXT "Cores &Bsicas:", 1088, 4, 4, 140, 10 + LTEXT "&Cores do Usurio:", 1089, 4, 106, 140, 10 + LTEXT "Colorido|Slid&o", 1090, 150, 151, 48, 10 + LTEXT "Ver&melho:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Verde:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "A&zul:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Mat&iz:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Sa&t:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Aj&uda", 1038,100,166, 44, 14 + PUSHBUTTON "&Adicionar Cor Personalizada", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definir Cores Personalizadas >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&o",713,300,200,4,14 /* just a dummy: 'o' is like &o in "solid&o" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Procurar" +FONT 8, "Helv" +{ + LTEXT "&Procurar:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Palavra &Inteira", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maisculas/minusculas", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direo", 1072, 107, 26, 68, 28 + CONTROL "A&cima", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "A&baixo", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "Procurar a Pr&xima", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Substituir" +FONT 8, "Helv" +{ + LTEXT "&Procurar:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Substituir Pa&ra:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Palavra &inteira", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maisculas/minsculas", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "Procurar a Pr&xima", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&Substituir", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Substituir &Todas", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancelar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&juda", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Imprimir" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 50,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancelar", IDCANCEL, 232,164, 50,14, WS_GROUP + PUSHBUTTON "&Ajuda", pshHelp, 50, 161, 50,14, WS_GROUP + + GROUPBOX "Impressora", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Imprimir em arqui&vo", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "Propri&edades", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Nome:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Tipo:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Onde:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comentrio:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Cpias", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Nmero de &cpias:", stc5, 168,108, 68, 8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "&Agrupar", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Faixa de impresso", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Todos", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "P&ginas", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "Seleo", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&de:", stc2, 52,124, 20,8 + RTEXT "&at:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Configuraes de Impresso" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "OK", IDOK,180,156,50,14,WS_GROUP + PUSHBUTTON "Cancelar", IDCANCEL,232,156,50,14 +/* PUSHBUTTON "Rede...", psh5, 284,156,50,14 */ + + GROUPBOX "Impressora", grp4, 8, 4, 272, 84, WS_GROUP + PUSHBUTTON "&Propriedades", psh2, 212, 17, 60, 14, WS_GROUP + LTEXT "&Nome:", stc6, 16, 20, 36, 8 + COMBOBOX cmb1, 52, 18, 152, 152, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36, 10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Tipo:", stc7, 16, 48, 36, 10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Onde:", stc10, 16, 60, 36, 10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comentrio", stc9, 16, 72, 36, 10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papel", grp2, 8, 92, 164, 56, WS_GROUP + LTEXT "&Tamanho:", stc2, 16, 108, 36, 8 + COMBOBOX cmb2, 52, 106, 112, 112, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Origem:", stc3, 16, 128, 36, 8 + COMBOBOX cmb3, 52, 126, 112, 112, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientao", grp1, 180, 92, 100, 56, WS_GROUP + ICON "", ico1, 195, 112, 18, 20, WS_GROUP + CONTROL "&Retrato", rad1, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 224, 106, 52, 12 + CONTROL "&Paisagem", rad2, "Button", BS_AUTORADIOBUTTON, 224, 126, 52, 12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Configuraes de Pgina" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Papel", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Tamanho:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Bandeja:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Orientao", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Retrato", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Paisagem", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Bordas", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Esquerda:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Direita:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Superior:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Inferior:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Cancelar", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "Im&pressora...", psh3, 184, 220, 50, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Abrir" +FONT 8, "Helv" +{ + LTEXT "&Examinar:",IDC_LOOKINSTATIC,5,6,31,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,40,3,134,300,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 172, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "&Nome do arquivo:",IDC_FILENAMESTATIC,5,112,48,16, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,111,155,12,ES_AUTOHSCROLL + + LTEXT "Arquivos do &tipo",IDC_FILETYPESTATIC,5,131,48,16, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,129,155,100,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "Abrir como &somente-leitura",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,148,74,10 + + DEFPUSHBUTTON "&Abrir", IDOK,222,110,50,14 + PUSHBUTTON "Cancelar", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Ajuda", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&Sobre FolderPicker Test" + IDS_DOCUMENTFOLDERS "Pastas de Documentos" + IDS_PERSONAL "Meus Documentos" + IDS_FAVORITES "Favoritos" + IDS_PATH "Caminho do Sistema" + IDS_DESKTOP "rea de Trabalho" + IDS_FONTS "Fontes" + IDS_MYCOMPUTER "Meu Computador" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Pastas do Sistema" + IDS_LOCALHARDRIVES "Discos Rgidos Locais" + IDS_FILENOTFOUND "Arquivo no encontrado" + IDS_VERIFYFILE "Por favor verifique se foi fornecido o nome correto do arquivo" + IDS_CREATEFILE "Arquivo no existe\nVoc gostaria de cria-lo" + IDS_OVERWRITEFILE "Arquivo j existe.\nGostaria de substitu-lo?" + IDS_INVALID_FILENAME_TITLE "Caracter(es) invlidos no caminho" + IDS_INVALID_FILENAME "Um nome de arquivo no pode conter quaisquer dos seguintes caracteres: \n / : < > |" + IDS_PATHNOTEXISTING "Caminho no existe" + IDS_FILENOTEXISTING "Arquivo no existe" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Um Nvel Acima" + IDS_NEWFOLDER "Criar Nova Pasta" + IDS_LISTVIEW "Lista" + IDS_REPORTVIEW "Detalhes" + IDS_TODESKTOP "rea de Trabalho" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Imprimir" + + PD32_VALUE_UREADABLE "Entrada Ilegvel" + PD32_INVALID_PAGE_RANGE "Este valor no se encaixa na faixa de pginas\n\ +Por favor entre um valor entre %d e %d." + PD32_FROM_NOT_ABOVE_TO "A entrada DE no pode exceder AT." + PD32_MARGINS_OVERLAP "As margens esto fora das medidas \ +do papel.\nPor favor reentre as margens." + PD32_NR_OF_COPIES_EMPTY "O nmero de cpias no pode ter valor vazio." + PD32_TOO_LARGE_COPIES "Esta grande quantidade de cpias no suportada \ +pela sua impressora.\nPor favor entre um valor entre 1 e %d." + PD32_PRINT_ERROR "Ocorreu um erro de impresso." + PD32_NO_DEFAULT_PRINTER "No existe uma impressora padro." + PD32_CANT_FIND_PRINTER "No possvel encontrar uma impressora." + PD32_OUT_OF_MEMORY "Memria insuficiente." + PD32_GENERIC_ERROR "Ocorreu algum erro." + PD32_DRIVER_UNKNOWN "Driver de impressora desconhecido." + + PD32_DEFAULT_PRINTER "Impressora Padro; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Existem %d documentos na fila" + PD32_PRINT_ALL_X_PAGES "&Todas %d pginas" + PD32_MARGINS_IN_INCHES "Margens [polegadas]" + PD32_MARGINS_IN_MILIMETERS "Margens [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Pronto" + PD32_PRINTER_STATUS_PAUSED "Pausada; " + PD32_PRINTER_STATUS_ERROR "Erro; " + PD32_PRINTER_STATUS_PENDING_DELETION "Excluso pendente; " + PD32_PRINTER_STATUS_PAPER_JAM "Papel atolado; " + PD32_PRINTER_STATUS_PAPER_OUT "Sem papel; " + PD32_PRINTER_STATUS_MANUAL_FEED "Alimentao manual; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Problemas com o papel; " + PD32_PRINTER_STATUS_OFFLINE "Impressora desligada; " + PD32_PRINTER_STATUS_IO_ACTIVE "E/S Ativa; " + PD32_PRINTER_STATUS_BUSY "Ocupada; " + PD32_PRINTER_STATUS_PRINTING "Imprimindo; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Bandeja de sada est cheia; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "No disponvel; " + PD32_PRINTER_STATUS_WAITING "Esperando; " + PD32_PRINTER_STATUS_PROCESSING "Processando; " + PD32_PRINTER_STATUS_INITIALIZING "Inicializando; " + PD32_PRINTER_STATUS_WARMING_UP "Aquecendo; " + PD32_PRINTER_STATUS_TONER_LOW "Pouco toner; " + PD32_PRINTER_STATUS_NO_TONER "Sem toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Lanar pgina; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Interveno do usurio; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Memria insuficiente; " + PD32_PRINTER_STATUS_DOOR_OPEN "A impressora est aberta; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Servidor de impresso desconhecido; " + PD32_PRINTER_STATUS_POWER_SAVE "Modo econmico; " +} + +STRINGTABLE DISCARDABLE /* Nomes de cores */ +{ + IDS_COLOR_BLACK "Preto" + IDS_COLOR_MAROON "Castanho" + IDS_COLOR_GREEN "Verde" + IDS_COLOR_OLIVE "Verde-oliva" + IDS_COLOR_NAVY "Azul-marinho" + IDS_COLOR_PURPLE "Roxo" + IDS_COLOR_TEAL "Azul-petrleo" + IDS_COLOR_GRAY "Cinza" + IDS_COLOR_SILVER "Prateado" + IDS_COLOR_RED "Vermelho" + IDS_COLOR_LIME "Verde-limo" + IDS_COLOR_YELLOW "Amarelo" + IDS_COLOR_BLUE "Azul" + IDS_COLOR_FUCHSIA "Fcsia" + IDS_COLOR_AQUA "Azul-piscina" + IDS_COLOR_WHITE "Branco" +} diff --git a/reactos/lib/comdlg32/cdlg_Ru.rc b/reactos/lib/comdlg32/cdlg_Ru.rc new file mode 100644 index 00000000000..a2ce032724e --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Ru.rc @@ -0,0 +1,410 @@ +/* + * Copyright 1999 Alexander Kanavin + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + LTEXT "& :", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT " &:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "& ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " ..." +FONT 8, "Ms Sans Serif" +{ + LTEXT "& :", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT " &:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON " ", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "& ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + LTEXT ":", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&", 1056, 16, 45, 60, 12 + RADIOBUTTON "& ", 1057, 16, 60, 60, 12 + RADIOBUTTON "&", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&:", 1090, 60, 80, 30, 9 + LTEXT "&:", 1091, 120, 80, 30, 9 + LTEXT "& :", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "& ", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " " +FONT 8, "Ms Sans Serif" +{ + GROUPBOX "", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON " &", 1056, 16, 20, 80, 12 + LTEXT "[]", 1088, 35, 35, 120, 9 + RADIOBUTTON "& ", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&", 1058, 50, 100, 40, 12 + RADIOBUTTON "&", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&", 1089, 130, 95, 30, 9 + LTEXT "&", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + LTEXT "&:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "",1072,6,72,84,34,WS_GROUP + CHECKBOX "&", 1040, 10,82,75,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&", 1041, 10,94,75,10, BS_AUTOCHECKBOX + LTEXT "&:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBb",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 310, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " " +FONT 8, "Ms Sans Serif" +{ + LTEXT "& :", 1088, 4, 4, 140, 10 + LTEXT "& :", 1089, 4, 106, 140, 10 + LTEXT "|&", 1090, 150, 151, 48, 10 + LTEXT "&:", 726 /*1094*/,254,126,32,10 + EDITTEXT 706, 288,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&:",727/*1095*/,254,140,32,10 + EDITTEXT 707, 288,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&:",728 /*1096*/,264,154,24,10 + EDITTEXT 708, 288,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&:" ,723 /*1091*/,202,126,30,10 + EDITTEXT 703, 234,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&:" ,724 /*1092*/,199,140,34,10 + EDITTEXT 704, 234,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&:" ,725 /*1093*/,202,154,30,10 + EDITTEXT 705, 234,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "C", 1038,100,166, 44, 14 + PUSHBUTTON "& ", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "& >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 245, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + LTEXT "&:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 138, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "& ", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "C & ", 1041, 4, 42, 100, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "", 1072, 107, 26, 78, 28 + CONTROL "&", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 40, 12 + CONTROL "&", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 38, 30, 12 + + DEFPUSHBUTTON "& ", IDOK, 190, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "", IDCANCEL , 190, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", pshHelp , 190, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + LTEXT "&:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "& :", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "& ", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX " & ", 1041, 5, 62, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "& ", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON " &", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "" +FONT 8, "Ms Sans Serif" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP + CONTROL " &", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT ":", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc13, 16, 72, 36,10, SS_NOPREFIX + LTEXT "", stc13, 60, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "", grp2, 160, 92, 120,64, WS_GROUP + LTEXT " &:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "&", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,230,130,40,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "&", rad3,"Button",BS_AUTORADIOBUTTON,16,122,50,12 + CONTROL "&", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 85,122, 20,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 120,122, 20,12, WS_GROUP | ES_NUMBER + RTEXT "&:", stc2, 70,124, 10,8 + RTEXT "&:", stc3, 106,124, 10,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION " " +FONT 8, "Ms Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "...", psh5, 284,156,48,14 */ + + GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT ":", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT ":", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "&:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "&", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "" +FONT 8, "MS Sans Serif" +{ + LTEXT " &",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT " &:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT " &",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL " &",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&", IDOK,222,110,50,14 + PUSHBUTTON "", IDCANCEL,222,128,50,14 + PUSHBUTTON "&", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "& " + IDS_DOCUMENTFOLDERS " " + IDS_PERSONAL " " + IDS_FAVORITES "" + IDS_PATH " " + IDS_DESKTOP " " + IDS_FONTS "" + IDS_MYCOMPUTER " " +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS " " + IDS_LOCALHARDRIVES " " + IDS_FILENOTFOUND " " + IDS_VERIFYFILE ", " + IDS_CREATEFILE " \n ?" + IDS_OVERWRITEFILE " .\n ?" + IDS_INVALID_FILENAME_TITLE " " + IDS_INVALID_FILENAME " : \n / : < > |" + IDS_PATHNOTEXISTING " " + IDS_FILENOTEXISTING " " +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER " " + IDS_NEWFOLDER " " + IDS_LISTVIEW "" + IDS_REPORTVIEW "" + IDS_TODESKTOP " " +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "" + + PD32_VALUE_UREADABLE " " + PD32_INVALID_PAGE_RANGE " \n\ + %d %d" + PD32_FROM_NOT_ABOVE_TO " :" + PD32_MARGINS_OVERLAP " \ + .\n " + PD32_NR_OF_COPIES_EMPTY " \ +" + PD32_TOO_LARGE_COPIES " \ + .\n 1 %d" + PD32_PRINT_ERROR " " + PD32_NO_DEFAULT_PRINTER " , " + PD32_CANT_FIND_PRINTER " " + PD32_OUT_OF_MEMORY " " + PD32_GENERIC_ERROR "() ()" + PD32_DRIVER_UNKNOWN " " + + PD32_DEFAULT_PRINTER " ; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "%d " + PD32_PRINT_ALL_X_PAGES "& %d " + PD32_MARGINS_IN_INCHES " [)" + PD32_MARGINS_IN_MILIMETERS " []" + PD32_MILIMETERS "" + + PD32_PRINTER_STATUS_READY "" + PD32_PRINTER_STATUS_PAUSED "; " + PD32_PRINTER_STATUS_ERROR "; " + PD32_PRINTER_STATUS_PENDING_DELETION " ; " + PD32_PRINTER_STATUS_PAPER_JAM " ; " + PD32_PRINTER_STATUS_PAPER_OUT " ; " + PD32_PRINTER_STATUS_MANUAL_FEED " ; " + PD32_PRINTER_STATUS_PAPER_PROBLEM " ; " + PD32_PRINTER_STATUS_OFFLINE " offline; " + PD32_PRINTER_STATUS_IO_ACTIVE "/ ; " + PD32_PRINTER_STATUS_BUSY "; " + PD32_PRINTER_STATUS_PRINTING " ; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL " ; " + PD32_PRINTER_STATUS_NOT_AVAILABLE " ; " + PD32_PRINTER_STATUS_WAITING "; " + PD32_PRINTER_STATUS_PROCESSING "; " + PD32_PRINTER_STATUS_INITIALIZING "; " + PD32_PRINTER_STATUS_WARMING_UP "; " + PD32_PRINTER_STATUS_TONER_LOW " ; " + PD32_PRINTER_STATUS_NO_TONER " ; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION " ; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY " ; " + PD32_PRINTER_STATUS_DOOR_OPEN " ; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN " ; " + PD32_PRINTER_STATUS_POWER_SAVE " ; " +} diff --git a/reactos/lib/comdlg32/cdlg_Si.rc b/reactos/lib/comdlg32/cdlg_Si.rc new file mode 100644 index 00000000000..2a8eca03a5a --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Si.rc @@ -0,0 +1,439 @@ +/* + * Copyright 2002-2003 Rok Mandeljc + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Odpiranje" +FONT 8, "MS Sans Serif" +{ + LTEXT "Ime &datoteke:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Mape:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Vrsta datotek:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Pog&oni:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "V redu", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Samo za b&ranje", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Shrani kot" +FONT 8, "MS Sans Serif" +{ + LTEXT "Ime &datoteke:", 1090, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Mape:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Vrsta datotek:", 1089, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Pog&oni:", 1091, 110, 104, 92, 9 + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "V redu", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Samo za b&ranje", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tiskanje" +FONT 8, "MS Sans Serif" +{ + LTEXT "Tiskalnik:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Obseg tiskanja", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Vse", rad1, 16, 45, 60, 12 + RADIOBUTTON "I&zbor", rad2, 16, 60, 60, 12 + RADIOBUTTON "St&rani", rad3, 16, 75, 60, 12 + DEFPUSHBUTTON "V redu", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Pripr&ava ...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&od:", 1090, 60, 80, 30, 9 + LTEXT "&do:", 1091, 120, 80, 30, 9 + LTEXT "Kakovost ti&skanja:", 1092, 6, 100, 76, 9 + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "&Tiskanje v datoteko", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Z&biranje kopij", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Priprava za tiskanje" +FONT 8, "MS Sans Serif" +{ + GROUPBOX "Tiskalnik", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Privzeti &tiskalnik", rad1, 16, 20, 80, 12 + LTEXT "(Ni privzetega tiskalnika)", 1088, 35, 35, 120, 9 + RADIOBUTTON "Doloeni ti&skalnik:", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "V redu", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Monosti ...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Usmerjenost", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "P&okonna", rad3, 50, 100, 40, 12 + RADIOBUTTON "L&eea", rad4, 50, 115, 40, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "Papir", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "Veli&kost:", 1089, 130, 95, 30, 9 + LTEXT "&Vir:", 1090, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Pisava" +FONT 8, "MS Sans Serif" +{ + LTEXT "Pis&ava:",1088 ,6,3,40,9 + COMBOBOX cmb1, 6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Slog pi&save:",1089 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Velikost:",1090,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "V redu",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Preklii",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Uporabi", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Uinki",1072,6,72,84,34,WS_GROUP + CHECKBOX "Pr&ertano", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "Po&drtano", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Barva:", 1091 ,6,110,30,9 + COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Vzorec",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Barva" +FONT 8, "MS Sans Serif" +{ + LTEXT "Osno&vne barve:", 1088, 4, 4, 140, 10 + LTEXT "Nameane &barve:", 1089, 4, 106, 140, 10 + LTEXT "Barva | T&emelj", 1090, 150, 151, 48, 10 + LTEXT "&Rdea:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zelena:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Modr&a:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Od&tenek:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Nasienost:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Svetlost:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "V redu", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo", pshHelp,100,166, 44, 14 + PUSHBUTTON "&Dodaj med nameane barve", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Meanje barv >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Iskanje" +FONT 8, "MS Sans Serif" +{ + LTEXT "N&ajdi:", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Samo cele besede", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Razlikovanje malih in velikih rk", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Smer iskanja", grp1, 107, 26, 68, 28 + CONTROL "&Gor", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Dol", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Nadaljuj iskanje", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Preklii", IDCANCEL , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Zamenjava" +FONT 8, "MS Sans Serif" +{ + LTEXT "N&ajdi:", -1, 4, 9, 48, 8 + EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Za&menjaj z:", -1, 4, 26, 48, 8 + EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Samo cele besede", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Razlikovanje malih in velikih rk", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "&Nadaljuj iskanje", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&Zamenjaj", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zamenjaj &vse", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Preklii", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomo", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Tiskanje" +FONT 8, "MS Sans Serif" +{ + DEFPUSHBUTTON "V redu", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Preklii", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Pomo", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Tiskalnik", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "&Tiskanje v datoteko", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Lastnosti", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Ime:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stanje:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Vrsta:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kje:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Komentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Kopije", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "tevilo &kopij:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "Z&biranje", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Obseg tiskanja", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Vse", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "St&rani", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "I&zbor", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&od:", stc2, 52,124, 20,8 + RTEXT "&do:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Priprava za tiskanje" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "V redu",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Preklii",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Omreje...", psh5, 284,156,48,14 */ + + GROUPBOX "Tiskalnik", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Lastnosti", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Ime:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stanje:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Vrsta:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kje:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Komentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papir", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "Veli&kost:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Vir:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Usmerjenost", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "P&okonna", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "L&eea", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Priprava strani" +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Papir", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "Veli&kost:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Vir:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Usmerjenost", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "P&okonna", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "L&eea", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Robovi", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Levo:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Desno:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Zgoraj:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Spodaj:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "V redu", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Preklii", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "&Tiskalnik ...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Odpiranje" +FONT 8, "MS Sans Serif" +{ + LTEXT "&Ii v",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "Ime &datoteke:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "Vrsta da&totek:",IDC_FILETYPESTATIC,5,128,49,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "&Samo za branje",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&Odpri", IDOK,222,110,50,14 + PUSHBUTTON "Preklii", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Pomo", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&O FolderPicker Test" + IDS_DOCUMENTFOLDERS "Mape z dokumenti" + IDS_PERSONAL "Moji dokumenti" + IDS_FAVORITES "Priljubljene" + IDS_PATH "Sistemska pot" + IDS_DESKTOP "Namizje" + IDS_FONTS "Pisave" + IDS_MYCOMPUTER "Moj raunalnik" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Sistemske mape" + IDS_LOCALHARDRIVES "Lokalni trdi diski" + IDS_FILENOTFOUND "Datoteke ni mogoe najti" + IDS_VERIFYFILE "Preverite, ali ste vnesli pravilno ime datoteke" + IDS_CREATEFILE "Datoteka ne obstaja\nAli jo elite ustvariti?" + IDS_OVERWRITEFILE "Datoteka e obstaja.\nAli jo elite zamenjati?" + IDS_INVALID_FILENAME_TITLE "Neustrezni znaki v imenu" + IDS_INVALID_FILENAME "Ime datoteke ne sme vsebovati naslednjih znakov: \n / : < > |" + IDS_PATHNOTEXISTING "Pot ne obstaja" + IDS_FILENOTEXISTING "Datoteka ne obstaja" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "V nadrejeno mapo" + IDS_NEWFOLDER "Ustvari novo mapo" + IDS_LISTVIEW "Seznam" + IDS_REPORTVIEW "Podrobnosti" + IDS_TODESKTOP "Pogled namizja" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Tiskalnik:" + + PD32_VALUE_UREADABLE "Velikost mora biti izraena s tevilko." + PD32_INVALID_PAGE_RANGE "Ta vrednost ni znotraj dovoljenega obsega.\n\ +Vnesite tevilo med %d in %d." + PD32_FROM_NOT_ABOVE_TO "Vrednost 'od' ne more biti veja od vrednosti 'do'." + PD32_MARGINS_OVERLAP "Robovi se ne prekrivajo ali pa niso na listu papirja.\nVnesite nove velikosti robov." + PD32_NR_OF_COPIES_EMPTY "tevilo kopij ne more biti 0 in mora biti pozitivno." + PD32_TOO_LARGE_COPIES "Ta tiskalnik ne omogoa toliknega \ +tevila kopij.\nVnesite tevilo med 1 in %d." + PD32_PRINT_ERROR "Napaka pri tiskanju" + PD32_NO_DEFAULT_PRINTER "Preden lahko tiskate, morate namestiti tiskalnik." + PD32_CANT_FIND_PRINTER "Tiskalnika ni bilo mogoe najti." + PD32_OUT_OF_MEMORY "Na voljo ni dovolj pomnilnika, da bi bilo mogoe dokonati operacijo." + PD32_GENERIC_ERROR "Med operacijo je prilo do napake." + PD32_DRIVER_UNKNOWN "Neznan gonilnik tiskalnika." + + PD32_DEFAULT_PRINTER "Privzeti tiskalnik; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "%d akajoih dok." + PD32_PRINT_ALL_X_PAGES "&Vse strani -- %d" + PD32_MARGINS_IN_INCHES "Robovi [palci]" + PD32_MARGINS_IN_MILIMETERS "Robovi [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Pripravljen" + PD32_PRINTER_STATUS_PAUSED "Zaasno zaustavljen; " + PD32_PRINTER_STATUS_ERROR "Napaka; " + PD32_PRINTER_STATUS_PENDING_DELETION "Prilo bo do brisanja; " + PD32_PRINTER_STATUS_PAPER_JAM "Papir se je zagozdil; " + PD32_PRINTER_STATUS_PAPER_OUT "Ni ve papirja; " + PD32_PRINTER_STATUS_MANUAL_FEED "Rono podajanje; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Teave s papirjem; " + PD32_PRINTER_STATUS_OFFLINE "Ne sprejema podatkov; " + PD32_PRINTER_STATUS_IO_ACTIVE "V/I aktiven; " + PD32_PRINTER_STATUS_BUSY "Zaposlen; " + PD32_PRINTER_STATUS_PRINTING "Tiska; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Izhodni predal je poln; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Ni na voljo; " + PD32_PRINTER_STATUS_WAITING "aka; " + PD32_PRINTER_STATUS_PROCESSING "Obdeluje; " + PD32_PRINTER_STATUS_INITIALIZING "Se inicializira; " + PD32_PRINTER_STATUS_WARMING_UP "Se ogreva; " + PD32_PRINTER_STATUS_TONER_LOW "Zmanjkuje tonerja; " + PD32_PRINTER_STATUS_NO_TONER "Ni tonerja; " + PD32_PRINTER_STATUS_PAGE_PUNT "Predmet strani; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Poseg uporabnika; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Zmanjkalo je pomnilnika; " + PD32_PRINTER_STATUS_DOOR_OPEN "Odprto ohije; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Neznan strenik; " + PD32_PRINTER_STATUS_POWER_SAVE "V pripravljenosti; " +} diff --git a/reactos/lib/comdlg32/cdlg_Sk.rc b/reactos/lib/comdlg32/cdlg_Sk.rc new file mode 100644 index 00000000000..3d03e225309 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Sk.rc @@ -0,0 +1,412 @@ +/* + * Copyright 2000 Simen Zamecnik + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +/* Slovak strings in CP1250 */ + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Otvorenie sboru" +FONT 8, "Helv" +{ + LTEXT "&Meno sboru:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Adresre:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Typ zobrazench sborov:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Diskov jednotky:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Otvori", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zrui", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomoc", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Len na tanie", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Uloi pod menom..." +FONT 8, "Helv" +{ + LTEXT "&Meno sboru:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Adresre:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Typ zobrazench sborov:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Diskov jednotky:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ulo pod menom", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zrui", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomoc", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Len na tanie", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Tla" +FONT 8, "Helv" +{ + LTEXT "Tlaiare:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Rozsah tlae", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "Vytlai &vetko", 1056, 16, 45, 60, 12 + RADIOBUTTON "Vytlai v&ber", 1057, 16, 60, 60, 12 + RADIOBUTTON "Vytlai &zadan strany", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Tla", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zrui", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Nastavi...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Od:", 1090, 60, 80, 30, 9 + LTEXT "&Po:", 1091, 120, 80, 30, 9 + LTEXT "&Kvalita tlae:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Tlai do &sboru", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kondenzovan", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Nastavenie spsobu tlae" +FONT 8, "Helv" +{ + GROUPBOX "Tlaiare", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Predvolen tlaiare", 1056, 16, 20, 80, 12 + LTEXT "[iadna]", 1088, 35, 35, 120, 9 + RADIOBUTTON "pecifick &tlaiare", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zrui", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ai&e voby...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientcia", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "Na &vku", 1058, 50, 100, 40, 12 + RADIOBUTTON "Na &rku", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Papier", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Formt", 1089, 130, 95, 30, 9 + LTEXT "&Odkia", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Font" +FONT 8, "Helv" +{ + LTEXT "&Font:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&tl fontu:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Vekos:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Zrui",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aplikova", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomoc" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Efekty",1072,6,72,84,34,WS_GROUP + CHECKBOX "P&reiarknut", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Podiarknut", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Farba:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Vzorka",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Farby" +FONT 8, "Helv" +{ + LTEXT "&Zkladn farby:", 1088, 4, 4, 140, 10 + LTEXT "&Uvatesk farby:", 1089, 4, 106, 140, 10 + LTEXT "Farba | Spoj&it", 1090, 150, 151, 48, 10 + LTEXT "e&rven:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zelen:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Modr:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Hue:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "OK", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zrui", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Pomoc", 1038,100,166, 44, 14 + PUSHBUTTON "&Prida k uvateovm farbm", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definova uvatesk farby >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Hadanie" +FONT 8, "Helv" +{ + LTEXT "&Njs:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Len &cel slov", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Rozliova mal a vek psmen", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Smer", 1072, 107, 26, 68, 28 + CONTROL "H&ore", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Dole", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "Njs &alie", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zavrie", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomoc", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Zmena" +FONT 8, "Helv" +{ + LTEXT "&Njs:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Zameni za:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Len &cel slov", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Rozliova mal a vek psmen", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "Njs &alie", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Za&meni", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zameni vo v&bere", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Zavrie", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Pomoc", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Tla" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Zrui", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Pomoc", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Tlaiare", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "tlai do &sboru", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Vlastnosti", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Meno:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stav:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Typ", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kam:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Komentr:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Kpie", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Poet &kpi:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ollate", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Rozsah tlae", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Vetky", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "St&rany", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "V&ber", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&od:", stc2, 52,124, 20,8 + RTEXT "&do:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Nastavenie tlae" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Zrui",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Sie...", psh5, 284,156,48,14 */ + + GROUPBOX "Tlaiare", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Vlastnosti", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Meno:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stav:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kam:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Komentr:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papier", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "&Vekos:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Zdroj:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientcia", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&Na vku", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "Na &rku", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Otvori" +FONT 8, "Helv" +{ + LTEXT "Hada &v",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "&Meno sboru:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "&Typ sborov",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "Otvo&ri iba na tanie",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&Otvori", IDOK,222,110,50,14 + PUSHBUTTON "Zrui", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Pomoc", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&O teste uchopovania adresrov" + IDS_DOCUMENTFOLDERS "Adresr dokumentov" + IDS_PERSONAL "Moje dokumenty" + IDS_FAVORITES "Moji favoriti" + IDS_PATH "Systmov cesta" + IDS_DESKTOP "Pracovn plocha" + IDS_FONTS "Fonty" + IDS_MYCOMPUTER "Mj pota" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Systmov adresre" + IDS_LOCALHARDRIVES "Loklne pevn disky" + IDS_FILENOTFOUND "Sbor nenjden" + IDS_VERIFYFILE "Please verify if the correct file name was given" + IDS_CREATEFILE "File does not exist\nDo you want to create file" + IDS_OVERWRITEFILE "File does already exist.\nDo you want to replace it?" + IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path" + IDS_INVALID_FILENAME "A filename cannot contain any of the following characters: \n / : < > |" + IDS_PATHNOTEXISTING "Cesta neexistuje" + IDS_FILENOTEXISTING "Sbor neexistuje" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "O rove vyie" + IDS_NEWFOLDER "Vytvori nov adresr" + IDS_LISTVIEW "Zoznam" + IDS_REPORTVIEW "Detaily" + IDS_TODESKTOP "Listova pracovn plochu" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Tla" + + PD32_VALUE_UREADABLE "Unreadable Entry" + PD32_INVALID_PAGE_RANGE "This value lies not within Page range\n\ +Please enter a value between %d and %d" + PD32_FROM_NOT_ABOVE_TO "The FROM entry cannot exceed TO:" + PD32_MARGINS_OVERLAP "Margins overlap or fall outside \ +Paper boundaries.\nPlease reenter margins" + PD32_NR_OF_COPIES_EMPTY "The NumberOfCopies entry cannot \ +be empty" + PD32_TOO_LARGE_COPIES "This large amount of prints is not \ +supported by your printer.\nPlease enter a value between 1 and %d" + PD32_PRINT_ERROR "A printer error occurred" + PD32_NO_DEFAULT_PRINTER "Nie je nastaven implicitn tlaiare" + PD32_CANT_FIND_PRINTER "Cannot find the printer" + PD32_OUT_OF_MEMORY "Nedostatok pamte" + PD32_GENERIC_ERROR "Vyskytla sa chyba" + PD32_DRIVER_UNKNOWN "Neznmy ovlda tlaiarne" + + PD32_DEFAULT_PRINTER "Implicitn tlaiare; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "There are %d documents in queue" + PD32_PRINT_ALL_X_PAGES "&Vetky %d strany" + PD32_MARGINS_IN_INCHES "Okraje [palce]" + PD32_MARGINS_IN_MILIMETERS "Okraje [mm]" + PD32_MILIMETERS "mm" + + PD32_PRINTER_STATUS_READY "Pripraven" + PD32_PRINTER_STATUS_PAUSED "Pozastaven; " + PD32_PRINTER_STATUS_ERROR "Chyba; " + PD32_PRINTER_STATUS_PENDING_DELETION "Pending deletion; " + PD32_PRINTER_STATUS_PAPER_JAM "Paper jam; " + PD32_PRINTER_STATUS_PAPER_OUT "Chba papier; " + PD32_PRINTER_STATUS_MANUAL_FEED "Feed paper manual; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Paper problem; " + PD32_PRINTER_STATUS_OFFLINE "Tlaiare v stave offline; " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O Active; " + PD32_PRINTER_STATUS_BUSY "Zaneprzdnen; " + PD32_PRINTER_STATUS_PRINTING "Prebieha tla; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Output tray is full; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Nie je k dispozcii; " + PD32_PRINTER_STATUS_WAITING "Waiting; " + PD32_PRINTER_STATUS_PROCESSING "Prebieha spracovanie; " + PD32_PRINTER_STATUS_INITIALIZING "Inicializcia; " + PD32_PRINTER_STATUS_WARMING_UP "Warming up; " + PD32_PRINTER_STATUS_TONER_LOW "Primlo toneru; " + PD32_PRINTER_STATUS_NO_TONER "Chba toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Preruenie uvateom; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Nedostatok pamte; " + PD32_PRINTER_STATUS_DOOR_OPEN "Dvierka tlaiarne s otvoren; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Neznmy print server; " + PD32_PRINTER_STATUS_POWER_SAVE "Power safe mode; " +} diff --git a/reactos/lib/comdlg32/cdlg_Sv.rc b/reactos/lib/comdlg32/cdlg_Sv.rc new file mode 100644 index 00000000000..9db8e9950c6 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Sv.rc @@ -0,0 +1,432 @@ +/* + * Copyright 1998 Karl Backstrm + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ppna" +FONT 8, "Helv" +{ + LTEXT "Fil&namn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Lista filer av &typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Enheter:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "ppna", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivskyddat", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Spara som ..." +FONT 8, "Helv" +{ + LTEXT "&Filnamn:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Kataloger:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Lista filer av &typen:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Enheter:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Spara som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Skrivskyddad", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Skriv ut" +FONT 8, "Helv" +{ + LTEXT "Skrivare:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Skriv ut del", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Allt", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Markerat", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Sidor", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "Skriv ut", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Instllningar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Frn:", 1090, 60, 80, 30, 9 + LTEXT "&Till:", 1091, 120, 80, 30, 9 + LTEXT "Utskriftskvalitet:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "&Skriv till fil", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sammantryckt", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Skrivarinstllningar" +FONT 8, "Helv" +{ + GROUPBOX "Skrivare", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Standardskrivare", 1056, 16, 20, 80, 12 + LTEXT "[ingen]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Specifierad &skrivare", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Instllningar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Portrtt", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Landskap", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Storlek", 1089, 130, 95, 30, 9 + LTEXT "&Klla", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Typsnitt" +FONT 8, "Helv" +{ + LTEXT "&Typsnitt:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Typsnittss&til:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Storlek:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "Ok",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Avbryt",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Anvnd", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Hjlp" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Effekter",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Genomstruken", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Understruken", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Frg:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Test",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Frg" +FONT 8, "Helv" +{ + LTEXT "&Grundlggande frger:", 1088, 4, 4, 140, 10 + LTEXT "&Egendefinerade frger:", 1089, 4, 106, 140, 10 + LTEXT "Enfrgat", 1090, 150, 151, 48, 10 + LTEXT "&Rd:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Grn:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Bl:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Int:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Met:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Hjlp", 1038,100,166, 44, 14 + PUSHBUTTON "&Lgg till egendefinerad frg", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Defingnera egen frg >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Sk" +FONT 8, "Helv" +{ + LTEXT "&Sk efter:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Bara hela ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Skillnad p stora/sm bokstver", 1041, 4, 42, 100, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Riktning", 1072, 107, 26, 68, 28 + CONTROL "&Upp", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Ner", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Sk efter nsta", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Sk/erstt" +FONT 8, "Helv" +{ + LTEXT "&Sk efter:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Erstt med:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "&Bara hela ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Skillnad p stora/sm bokstver", 1041, 5, 62, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP + DEFPUSHBUTTON "&Sk efter nsta", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Erstt", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Erstt &alla", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjlp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Skriv ut" +FONT 8, "Helv" +{ + DEFPUSHBUTTON "Ok", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Avbryt", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Hjlp", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Skrivare", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Skr&iv till fil",chx1,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Egenskaper", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Namn:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dum status", stc12, 52, 36, 224,10, SS_NOPREFIX |SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dum typ", stc11, 52, 48, 224,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP + LTEXT "Plats:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dum plats", stc14, 52, 60, 224,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP + LTEXT "Kommentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dum kommentar", stc13, 52, 72, 152,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP + + GROUPBOX "Kopior", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Antal k&opior:", stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24,WS_GROUP | SS_CENTERIMAGE + CONTROL "&Sortera", chx2,"Button",BS_AUTOCHECKBOX |WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP |ES_NUMBER + + GROUPBOX "Skriv ut", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Alla", rad1,"Button",BS_AUTORADIOBUTTON |WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Si&dor", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "&Markering", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP |ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP |ES_NUMBER + RTEXT "&frn:", stc2, 52,124, 20,8 + RTEXT "&till:", stc3, 100,124, 16,8 + +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Utskriftsformat" +FONT 8, "Helv" +BEGIN + DEFPUSHBUTTON "Ok",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Avbryt",IDCANCEL,232,156,48,14 + + GROUPBOX "Skrivare", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Egenskaper", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Namn:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18,152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Status:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Dum State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Typ:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dum typ", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Plats:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dum plats", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Kommentar:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Dum kommnetar", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + GROUPBOX "Papper", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "St&orlek:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Klla:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + GROUPBOX "Orientering", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "St&ende", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "L&iggande", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Utskriftsformat" +FONT 8, "Helv" +BEGIN + CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80, SS_WHITERECT + CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT + CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4, SS_GRAYRECT + GROUPBOX "Papper", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Storlek:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160,CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Tray:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160,CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Orientering", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Stende", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Liggande", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Marginaler", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Vnster:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Hger:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&verkant:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Nederkant:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "Ok", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Avbryt", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "&Skrivare...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "ppna" +FONT 8, "Helv" +{ + LTEXT "Leta &i",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "Fil&namn:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "&Filformat",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "ppna som &skrivskyddad",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&ppna", IDOK,222,110,50,14 + PUSHBUTTON "Avbryt", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Hjlp", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&Om FolderPicker Test" + IDS_DOCUMENTFOLDERS "Dokumentmappar" + IDS_PERSONAL "Mina Documents" + IDS_FAVORITES "Mina Favorites" + IDS_PATH "Systemskvg" + IDS_DESKTOP "Skrivbord" + IDS_FONTS "Typsnitt" + IDS_MYCOMPUTER "Den hr datorn" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Systemmappar" + IDS_LOCALHARDRIVES "Lokala hrddiskar" + IDS_FILENOTFOUND "Kunde inte hitta filen" + IDS_VERIFYFILE "Vad god verifiera s korrekt filnamn r angivet" + IDS_CREATEFILE "Filen finns inte\nVill du skapa fil" + IDS_OVERWRITEFILE "Filen finns redan.\nVill du erstta den?" + IDS_INVALID_FILENAME_TITLE "Illegalt tecken i skvg" + IDS_INVALID_FILENAME "Ett filnamn kan inte innehlla ngon av fljande tecken: \n / : < > |" + IDS_PATHNOTEXISTING "Skvgen finns inte" + IDS_FILENOTEXISTING "Filen finns inte" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Upp en niv" + IDS_NEWFOLDER "Skapa ny mapp" + IDS_LISTVIEW "Lista" + IDS_REPORTVIEW "Detaljerat" + IDS_TODESKTOP "Visa Skrivbordet" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Skriv ut" + + PD32_VALUE_UREADABLE "Olsbart flt" + PD32_INVALID_PAGE_RANGE "Detta vrdet ligger inte inom sidourvalet.\n\ +Var god skriv in ett vrde mellan %d och %d." + PD32_FROM_NOT_ABOVE_TO "'frn'-fltet kan inte verskrida 'till'-fltet" + PD32_MARGINS_OVERLAP "Marginalerna verlappar eller r utanfr \ +pappersgrnserna.\nVar god skriv in marginallerna igen." + PD32_NR_OF_COPIES_EMPTY "Numret 'Antal kopior' kan inte vara tomt." + PD32_TOO_LARGE_COPIES "Din skrivare stdjer inte s mnga kopior som du angav. Vad god skriv in ett vrde mellan 1 och %d." + PD32_PRINT_ERROR "Ett skrivarfel intrffade." + PD32_NO_DEFAULT_PRINTER "Det finns ingen standardskrivare." + PD32_CANT_FIND_PRINTER "Kan inte hitta skrivare." + PD32_OUT_OF_MEMORY "Slut p minne." + PD32_GENERIC_ERROR "Ett fel uppstog." + PD32_DRIVER_UNKNOWN "Oknd skrivardrivrutin." + + PD32_DEFAULT_PRINTER "Standardskrivare; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Det r %d dokument i kn" + PD32_PRINT_ALL_X_PAGES "&Alla %d sidor" + PD32_MARGINS_IN_INCHES "Marginaler [inches]" + PD32_MARGINS_IN_MILIMETERS "Marginaler [millimeter]" + PD32_MILIMETERS "millimeter" + + PD32_PRINTER_STATUS_READY "Redo" + PD32_PRINTER_STATUS_PAUSED "Stannad; " + PD32_PRINTER_STATUS_ERROR "Fel; " + PD32_PRINTER_STATUS_PENDING_DELETION "Pendlande borttagning; " + PD32_PRINTER_STATUS_PAPER_JAM "Papperskrngel; " + PD32_PRINTER_STATUS_PAPER_OUT "Slut p papper; " + PD32_PRINTER_STATUS_MANUAL_FEED "Fyll p papper manuellet; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Pappersproblem; " + PD32_PRINTER_STATUS_OFFLINE "Skriverare n avstngd; " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O Aktiv; " + PD32_PRINTER_STATUS_BUSY "Upptagen; " + PD32_PRINTER_STATUS_PRINTING "Skriver ut; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Utmatningsfacket r fullt; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Inte tillgnglig; " + PD32_PRINTER_STATUS_WAITING "Vntar; " + PD32_PRINTER_STATUS_PROCESSING "Proceserar; " + PD32_PRINTER_STATUS_INITIALIZING "Initialiserar; " + PD32_PRINTER_STATUS_WARMING_UP "Vrmer upp; " + PD32_PRINTER_STATUS_TONER_LOW "Toner snart slut; " + PD32_PRINTER_STATUS_NO_TONER "Inga toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Sidopunt; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Avbruten av anvndaren; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Slut p minne; " + PD32_PRINTER_STATUS_DOOR_OPEN "Skrivardrren r ppen; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Skrivarserver oknd; " + PD32_PRINTER_STATUS_POWER_SAVE "Felskert lge; " +} diff --git a/reactos/lib/comdlg32/cdlg_Wa.rc b/reactos/lib/comdlg32/cdlg_Wa.rc new file mode 100644 index 00000000000..5f828fe2707 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Wa.rc @@ -0,0 +1,225 @@ +/* + * Copyright 1999 Pablo Saratxaga + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_WALON, SUBLANG_DEFAULT + +/* + * Si vos voloz aider avou li ratornaedje des libes programes walon, + * vos poloz scrre a l' adresse emile + */ + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Drov" +FONT 8, "Helv" +{ + LTEXT "&No do fitch:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Ridants", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Djveye des fitchs del sr&te:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Plakes:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "I Va", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Rn ki &lere", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Schaper t rlomer..." +FONT 8, "Helv" +{ + LTEXT "&No do fitch:", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "&Ridants:", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Djveye des fitchs del sr&te:", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Plakes:", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "I Va", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Rn ki &lere", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Rexhe" +FONT 8, "Helv" +{ + LTEXT "Sicrirece:", 1088, 6, 6, 40, 9 + LTEXT "", 1089, 60, 6, 150, 9 + GROUPBOX "Cw rexhe", 1072, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Tot", 1056, 16, 45, 60, 12 + RADIOBUTTON "Tch&wez", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Pdjes", 1058, 16, 75, 60, 12 + DEFPUSHBUTTON "I Va", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Apon&tiaedje", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Di:", 1090, 60, 80, 30, 9 + LTEXT "&A:", 1091, 120, 80, 30, 9 + LTEXT "&Cwalit po rexhe:", 1092, 6, 100, 76, 9 + COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Rexhe sol &fitch", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Streu scrijhas", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Apontiaedje del rexhe" +FONT 8, "Helv" +{ + GROUPBOX "Sicrirece", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Sicrirece tchwezi por &vos", 1056, 16, 20, 80, 12 + LTEXT "[nole]", 1088, 35, 35, 120, 9 + RADIOBUTTON "Sicrirece &specifike", 1057, 16, 50, 80, 12 + COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "I Va", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&pontiaaedje", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientation", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "D' &Astamp", 1058, 50, 100, 40, 12 + RADIOBUTTON "Di &Cotch", 1059, 50, 115, 40, 12 + ICON "LANDSCAP", 1097, 10, 95, 32, 32 + ICON "PORTRAIT", 1098, 10, 95, 32, 32 + GROUPBOX "Pap", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Grandeu", 1089, 130, 95, 30, 9 + LTEXT "Ali&mentcion", 1090, 130, 110, 30, 9 + COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Fontes" +FONT 8, "Helv" +{ + LTEXT "&Fonte:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "S&tle del fonte:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Grandeu:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "I Va",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Rinonc",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Mete n Ove", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Aide" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Efets",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Barr", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Sorlign", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Coleur:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Egzimpe",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Coleurs" +FONT 8, "Helv" +{ + LTEXT "&Maisse coleurs:", 1088, 4, 4, 140, 10 + LTEXT "&Coleurs da vosse:", 1089, 4, 106, 140, 10 + LTEXT "Coleur | &Uni", 1090, 150, 151, 48, 10 + LTEXT "&Rodje:", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Vert:",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Bleu:",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Tinte:" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Sat.:" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "&Lum.:" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "I Va", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", 1038,100,166, 44, 14 + PUSHBUTTON "Rad&jouter des coleur da vosse", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Defini les coleurs da vosse >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&u",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Cwer" +FONT 8, "Helv" +{ + LTEXT "C&wer:", -1, 4, 8, 42, 8 + EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Mots &etrs seulmint", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Rispecter les &madjuscules/minuscules", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direccion", 1072, 107, 26, 68, 28 + CONTROL "&Copete", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Bas", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "&Shvant", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Rinonc",IDCANCEL , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Mete el plaece" +FONT 8, "Helv" +{ + LTEXT "C&wer:", -1, 4, 9, 48, 8 + EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "Mete el &place:", -1, 4, 26, 48, 8 + EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Mots &etrs seulmint", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Rispecter les &madjuscules/minuscules", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "&Shvant", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "&Rimplacer", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rimplacer &tot",psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Rinonc",IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aide", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/comdlg32/cdlg_Zh.rc b/reactos/lib/comdlg32/cdlg_Zh.rc new file mode 100644 index 00000000000..aba38527000 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_Zh.rc @@ -0,0 +1,232 @@ +/* + * Copyright 2000 Aric Stewart + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. + */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL +#pragma code_page(936) /* FIXME: default for CHINESE_TRADITIONAL is 950 */ + +OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "_" +FONT 8, "Helv" +{ + LTEXT "nQ(&N):", 1090, 6, 6, 100, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Ŀ(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "n(&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "ŵC(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "_", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Ψx(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + + +SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "™n..." +FONT 8, "Helv" +{ + LTEXT "nQ(&N):", 1090, 6, 6, 76, 9 + EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "Ŀ(&D):", -1, 110, 6, 92, 9 + LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP + LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP + LTEXT "n(&T):", 1089, 6, 104, 90, 9 + COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "ŵC(&V):", 1091, 110, 104, 92, 9 + COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "™n", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "Ψx(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} + +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 294, 147 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "" +FONT 8, "Helv" +{ + LTEXT "(&F):",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,124,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "͘ʽ(&Y):",1089 ,138,3,44,9 + COMBOBOX 1137,138,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "С(&S):",1090,209,3,30,9 + COMBOBOX 1138,209,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "_",IDOK,248,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ",IDCANCEL,248,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&A)", 1026,248,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)" , 1038,248,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Ч",1072,6,72,84,34,WS_GROUP + CHECKBOX "h(&K)", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "׾(&U)", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "ɫ(&C):", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "",grp2,98,72,120,36,WS_GROUP + CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + COMBOBOX cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +} + + +CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ɫ" +FONT 8, "Helv" +{ + LTEXT "ɫ(&B):", 1088, 4, 4, 140, 10 + LTEXT "Զɫ(&C):", 1089, 4, 106, 140, 10 + LTEXT "ɫ | (&I)", 1090, 150, 151, 48, 10 + LTEXT "t(&R):", 726 /*1094*/,249,126,24,10 + EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "G(&G):",727/*1095*/,249,140,24,10 + EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "{(&B):",728 /*1096*/,249,154,24,10 + EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ɫ{(&H):" ,723 /*1091*/,202,126,22,10 + EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&S):" ,724 /*1092*/,202,140,22,10 + EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "(&L):" ,725 /*1093*/,202,154,22,10 + EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP + CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86 + CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28 + CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 + CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 + CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 + DEFPUSHBUTTON "_", 1, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", 1038,100,166, 44, 14 + PUSHBUTTON "Զɫ(&A)", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "xԶɫ(&D) >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ +} + + +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 263, 62 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ь" +FONT 8, "Helv" +{ + LTEXT "ьĿ(&N):", -1, 4, 8, 50, 8 + EDITTEXT 1152, 61, 7, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ȫƴ횷(&W)", 1040, 4, 26, 89, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Сҕஐ(&C)", 1041, 4, 42, 89, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "", 1072, 95, 26, 97, 28 + CONTROL "(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 100, 38, 45, 12 + CONTROL "(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 145, 38, 45, 12 + + DEFPUSHBUTTON "һ(&F)", IDOK, 199, 5, 60, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ", IDCANCEL , 199, 23, 60, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp , 199, 45, 60, 14, WS_GROUP | WS_TABSTOP +} + + +REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 263, 94 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ȡ" +FONT 8, "Helv" +{ + LTEXT "Ŀ(&N):", -1, 4, 9, 50, 8 + EDITTEXT 1152, 61, 7, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "ȡ(&P):", -1, 4, 26, 50, 8 + EDITTEXT 1153, 61, 24, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "ȫƴ횷(&W)", 1040, 5, 46, 89, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Сҕ뮐(&C)", 1041, 5, 62, 89, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "һ(&F)", IDOK, 199, 4, 60, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "ȡ(&R)", psh1 , 199, 21, 60, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡȫ(&A)", psh2 , 199, 38, 60, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "ȡ", IDCANCEL , 199, 55, 60, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "(&H)", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP +} + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "_fn" +FONT 8, "Helv" +{ + LTEXT "ьλ(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,52,3,130,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "nQ(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,59,110,155,12,ES_AUTOHSCROLL + + LTEXT "n(&T):",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,59,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + + CONTROL "_Ψx(&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "_(&O)", IDOK,222,110,50,14 + PUSHBUTTON "ȡ", IDCANCEL,222,128,50,14 + PUSHBUTTON "(&H)", pshHelp,222,145,50,14 +} + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "&About FolderPicker Test" + IDS_DOCUMENTFOLDERS "ļA" + IDS_PERSONAL "ҵļ" + IDS_FAVORITES "ҵ" + IDS_PATH "ϵy·" + IDS_DESKTOP "" + IDS_FONTS "" + IDS_MYCOMPUTER "ҵX" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "System Folders" + IDS_LOCALHARDRIVES "Local Hard Drives" + IDS_FILENOTFOUND "File not found" + IDS_VERIFYFILE "Please verify if the correct file name was given" + IDS_CREATEFILE "File does not exist\nDo you want to create file" + IDS_OVERWRITEFILE "File does already exist.\nDo you want to replace it?" + IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path" + IDS_INVALID_FILENAME "A filename cannot contain any of the following characters: \n / : < > |" + IDS_PATHNOTEXISTING "Path does not exist" + IDS_FILENOTEXISTING "File does not exist" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "һ" + IDS_NEWFOLDER "YϊA" + IDS_LISTVIEW "" + IDS_REPORTVIEW "ԔY" + IDS_TODESKTOP "@ʾ" +} + +#pragma code_page(default) diff --git a/reactos/lib/comdlg32/cdlg_xx.rc b/reactos/lib/comdlg32/cdlg_xx.rc new file mode 100644 index 00000000000..bc6bc605cb0 --- /dev/null +++ b/reactos/lib/comdlg32/cdlg_xx.rc @@ -0,0 +1,620 @@ +/* + * Language neutral resources for Common Dialogs + * + * Copyright 1999 Bertho Stultiens + * Copyright 1999 Klaas van Gend + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windef.h" +#include "winbase.h" +#include "winver.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define WINE_FILEDESCRIPTION_STR "Common Dialog Boxes" +#define WINE_FILENAME_STR "comdlg32.dll" +#define WINE_FILEVERSION 4,0,0,950 /* Maybe 4.1.0.980 for win98?? */ +#define WINE_FILEVERSION_STR "4.0" + +#include "wine/wine_common_ver.rc" + +/* BINRES pd32_collate.ico */ +PD32_COLLATE ICON DISCARDABLE LOADONCALL pd32_collate.ico +/* { + '00 00 01 00 01 00 4C 18 10 00 00 00 00 00 48 05' + '00 00 16 00 00 00 28 00 00 00 4C 00 00 00 30 00' + '00 00 01 00 04 00 00 00 00 00 E0 04 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80' + '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 04 00 00 00 00 00 0F F0 00 00 00' + '00 00 0F F0 00 00 00 00 00 00 00 00 00 0F F0 00' + '00 00 00 00 0F F0 00 00 00 00 00 00 80 04 00 00' + '00 00 00 0F FF F0 00 00 00 0F FF F0 00 00 00 00' + '00 00 00 00 00 0F FF F0 00 00 00 0F FF F0 00 00' + '00 00 00 00 80 04 00 00 00 00 00 FF FF FF FF 00' + '00 00 00 F0 00 00 00 00 00 00 00 00 00 FF FF FF' + 'FF 00 00 00 00 F0 00 00 00 00 00 00 44 03 00 00' + '00 00 00 FF FF FF FF FF 00 FF F0 FF 00 00 00 00' + '00 00 00 00 00 FF FF FF FF FF 00 FF F0 FF 00 00' + '00 00 00 00 80 04 00 00 00 00 0F FF FF FF FF FF' + 'FF 00 F0 FF 00 00 00 00 00 00 00 00 0F FF FF FF' + 'FF FF FF 00 F0 FF 00 00 00 00 00 00 04 00 00 00' + '00 00 0F FF FF FF FF FF FF 0F F0 FF F0 00 00 00' + '00 00 00 00 0F FF FF FF FF FF FF 0F F0 FF F0 00' + '00 00 00 00 62 01 00 00 00 00 0F FF FF FF FF FF' + 'FF 0F F0 FF F0 00 00 00 00 00 00 00 0F FF FF FF' + 'FF FF FF 0F F0 FF F0 00 00 00 00 00 E2 00 00 00' + '00 00 FF FF FF FF FF FF F0 FF F0 FF F0 00 00 00' + '00 00 00 00 FF FF FF FF FF FF F0 FF F0 FF F0 00' + '00 00 00 00 00 A0 00 00 00 00 FF FF FF FF FF FF' + 'F0 FF F0 FF FF 00 00 00 00 00 00 00 FF FF FF FF' + 'FF FF F0 FF F0 FF FF 00 00 00 00 00 FF FF 00 00' + '00 0F FF FF FF FF FF FF 0F FF F0 FF FF 00 00 00' + '00 00 00 0F FF FF FF FF FF FF 0F FF F0 FF FF 00' + '00 00 00 00 FF FF 00 00 00 0F FF FF FF FF FF FF' + '0F FF F0 FF FF 00 00 00 00 00 00 0F FF FF FF FF' + 'FF FF 0F FF F0 FF FF 00 00 00 00 00 FF FF 00 00' + '00 0F FF FF FF FF FF FF 0F FF F0 F0 0F F0 00 00' + '00 00 00 0F FF FF FF FF FF FF 0F FF F0 F0 0F F0' + '00 00 00 00 FF FF 00 00 00 FF FF FF FF FF FF F0' + 'FF FF F0 0F F0 F0 00 00 00 00 00 FF FF FF FF FF' + 'FF F0 FF FF F0 0F F0 F0 00 00 00 00 FF FF 00 00' + '00 FF FF FF FF FF FF F0 FF FF F0 FF F0 FF 00 00' + '00 00 00 FF FF FF FF FF FF F0 FF FF F0 FF F0 FF' + '00 00 00 00 FF FF 00 00 00 FF FF FF FF FF 0F F0' + 'FF FF F0 FF 00 0F 00 00 00 00 00 FF FF FF FF FF' + '0F F0 FF FF F0 FF 00 0F 00 00 00 00 FF FF 00 00' + '0F FF FF FF FF FF 0F 0F 00 00 F0 FF FF 0F 00 00' + '00 00 0F FF FF FF FF FF 0F 0F 00 00 F0 FF FF 0F' + '00 00 00 00 FF FF 00 00 0F FF FF FF FF F0 FF 0F' + 'F0 FF F0 FF 00 FF F0 00 00 00 0F FF FF FF FF F0' + 'FF 0F F0 FF F0 FF 00 FF F0 00 00 00 FF FF 00 00' + '00 0F FF FF F0 F0 F0 FF FF 0F F0 FF F0 00 00 00' + '00 00 00 0F FF FF F0 F0 F0 FF FF 0F F0 FF F0 00' + '00 00 00 00 FF FF 00 00 00 00 00 FF FF 00 F0 FF' + '0F F0 F0 F0 00 00 00 00 00 00 00 00 00 FF FF 00' + 'F0 FF 0F F0 F0 F0 00 00 00 00 00 00 FF FF 00 00' + '00 00 00 00 FF FF 0F FF 0F F0 F0 00 00 00 00 00' + '00 00 00 00 00 00 FF FF 0F FF 0F F0 F0 00 00 00' + '00 00 00 00 FF FF 00 00 00 00 00 00 00 0F 0F FF' + 'F0 0F F0 00 00 00 00 00 00 00 00 00 00 00 00 0F' + '0F FF F0 0F F0 00 00 00 00 00 00 00 FF FF 00 00' + '00 00 00 00 0F F0 FF FF FF FF F0 00 00 00 00 00' + '00 00 00 00 00 00 0F F0 FF FF FF FF F0 00 00 00' + '00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 A0 FF C7' + 'FF 9F FF FC 7F F9 FF F0 00 00 FF C0 FC 0F FF FC' + '0F C0 FF F0 00 00 FF C0 30 0F FF FC 03 00 FF F0' + '00 00 FF 80 00 0F FF F8 00 00 FF F0 00 00 FF 80' + '00 07 FF F8 00 00 7F F0 00 00 FF 00 00 03 FF F0' + '00 00 3F F0 00 00 FF 00 00 03 FF F0 00 00 3F F0' + '00 00 FF 00 00 03 FF F0 00 00 3F F0 00 00 FE 00' + '00 03 FF E0 00 00 3F F0 00 00 FE 00 00 01 FF E0' + '00 00 1F F0 00 00 FC 00 00 01 FF C0 00 00 1F F0' + '00 00 FC 00 00 00 FF C0 00 00 0F F0 00 00 FC 00' + '00 00 FF C0 00 00 0F F0 00 00 F8 00 00 00 FF 80' + '00 00 0F F0 00 00 F8 00 00 00 7F 80 00 00 07 F0' + '00 00 F8 00 00 00 7F 80 00 00 07 F0 00 00 F0 00' + '00 00 7F 00 00 00 07 F0 00 00 F0 00 00 00 3F 00' + '00 00 03 F0 00 00 F8 00 00 00 7F 80 00 00 07 F0' + '00 00 FF 00 00 07 FF F0 00 00 7F F0 00 00 FF C0' + '00 1F FF FC 00 01 FF F0 00 00 FF F0 00 3F FF FF' + '00 03 FF F0 00 00 FF F0 00 3F FF FF 00 03 FF F0' + '00 00 FF F0 00 3F FF FF 00 03 FF F0 00 00' +} */ + + + +/* BINRES pd32_nocollate.ico */ +PD32_NOCOLLATE ICON pd32_nocollate.ico +/* { + '00 00 01 00 01 00 4C 18 10 00 00 00 00 00 48 05' + '00 00 16 00 00 00 28 00 00 00 4C 00 00 00 30 00' + '00 00 01 00 04 00 00 00 00 00 E0 04 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80' + '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 FA 02 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 AD 81 00 FF' + 'FF FF FF FF FF 00 00 00 00 00 00 00 FF FF FF FF' + 'FF FF 00 00 00 00 00 00 00 FF FF FF FF FF FF 00' + '00 00 00 00 13 00 00 FF FF FF FF FF FF 00 00 00' + '00 00 00 00 FF FF FF FF FF FF 00 00 00 00 00 00' + '00 FF FF FF FF FF FF 00 00 00 00 00 32 04 00 FF' + 'FF FF FF FF FF 00 00 00 00 00 00 00 FF FF FF FF' + 'FF FF 0F 00 00 00 00 00 00 FF FF FF FF FF FF 0F' + '00 00 00 00 02 00 00 FF FF FF FF FF FF 0F 00 00' + '00 00 00 00 FF FF FF FF FF FF 0F 00 00 00 00 00' + '00 FF FF FF FF FF FF 0F 00 00 00 00 56 01 00 FF' + 'FF FF FF FF FF 0F F0 00 00 00 00 00 FF FF FF FF' + 'FF FF 0F F0 00 00 00 00 00 FF FF FF FF FF FF 0F' + 'F0 00 00 00 4D 04 00 FF FF FF FF FF FF 0F F0 00' + '00 00 00 00 FF FF FF FF FF FF 0F F0 00 00 00 00' + '00 FF FF FF FF FF FF 0F F0 00 00 00 02 00 00 FF' + 'FF FF FF FF FF 0F FF 00 00 00 00 00 FF FF FF FF' + 'FF FF 0F FF 00 00 00 00 00 FF FF FF FF FF FF 0F' + 'FF 00 00 00 62 01 00 FF FF FF FF FF FF 0F FF 00' + '00 00 00 00 FF FF FF FF FF FF 0F FF 00 00 00 00' + '00 FF FF FF FF FF FF 0F FF 00 00 00 4D 04 00 FF' + 'FF FF FF FF FF 0F FF F0 00 00 00 00 FF FF FF FF' + 'FF FF 0F FF F0 00 00 00 00 FF FF FF FF FF FF 0F' + 'FF F0 00 00 02 00 00 FF FF FF FF FF FF 0F FF F0' + '00 00 00 00 FF FF FF FF FF FF 0F FF 00 00 00 00' + '00 FF FF FF FF FF FF 0F FF F0 00 00 62 01 00 FF' + 'FF FF FF FF FF 0F F0 FF 00 00 00 00 FF FF FF FF' + 'FF FF 0F 00 0F 00 00 00 00 FF FF FF FF FF FF 0F' + '00 FF 00 00 00 00 00 FF FF FF FF FF FF 0F F0 FF' + '00 00 00 00 FF FF FF FF FF FF 00 0F FF 00 00 00' + '00 FF FF FF FF FF FF 00 FF 0F 00 00 02 00 00 FF' + 'FF FF FF F0 FF 0F FF 0F F0 00 00 00 FF FF FF F0' + '00 0F 0F 00 0F F0 00 00 00 FF FF FF FF 00 FF 0F' + 'F0 0F F0 00 62 01 00 FF FF FF FF F0 FF 0F FF F0' + 'FF 00 00 00 FF FF FF F0 FF FF 0F FF F0 F0 00 00' + '00 FF FF FF F0 FF 0F 0F 0F 0F F0 00 00 00 00 FF' + 'FF FF FF F0 FF 0F FF 00 FF 00 00 00 FF FF FF FF' + '0F FF 0F FF F0 FF 00 00 00 FF FF FF FF FF 0F 0F' + 'FF F0 FF 00 02 00 00 FF FF FF FF F0 FF 0F FF FF' + '00 00 00 00 FF FF FF FF F0 FF 0F F0 0F F0 00 00' + '00 FF FF FF FF F0 FF 0F F0 0F F0 00 C4 00 00 FF' + 'FF FF FF F0 FF 0F FF F0 00 00 00 00 FF FF FF F0' + 'FF 0F 0F FF FF 00 00 00 00 FF FF FF F0 FF 0F 0F' + 'FF FF 00 00 32 04 00 FF FF FF FF 00 FF 0F FF 00' + '00 00 00 00 FF FF FF FF 00 FF 0F FF 00 00 00 00' + '00 FF FF FF FF 00 FF 0F FF 00 00 00 02 00 00 FF' + 'FF FF FF FF FF 0F 00 00 00 00 00 00 FF FF FF FF' + 'FF FF 0F 00 00 00 00 00 00 FF FF FF FF FF FF 0F' + '00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 0F F0 00 00 00 00 00 00 00 00 00 00 00' + '0F F0 00 00 00 00 00 00 00 00 00 00 00 0F F0 00' + '00 00 00 00 AD 81 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 FF 07 FF F3' + 'FF FF FC FF FF FF 3F F0 0F FF 80 01 FF E0 00 7F' + 'F8 00 1F F0 00 00 80 01 FF E0 00 3F F8 00 0F FF' + 'FF FF 80 00 FF E0 00 3F F8 00 0F F0 00 00 80 00' + 'FF E0 00 1F F8 00 07 FF F0 FF 80 00 7F E0 00 1F' + 'F8 00 07 F0 00 00 80 00 3F E0 00 0F F8 00 03 FF' + 'F0 00 80 00 3F E0 00 0F F8 00 03 FF FF FF 80 00' + '1F E0 00 07 F8 00 01 F0 E2 00 80 00 1F E0 00 07' + 'F8 00 01 FF F0 FF 80 00 0F E0 00 03 F8 00 00 F0' + 'FF FF 80 00 0F E0 00 03 F8 00 00 F0 00 00 80 00' + '07 E0 00 01 F8 00 00 7F FF FF 80 00 07 E0 00 01' + 'F8 00 00 70 00 00 80 00 03 E0 00 00 F8 00 00 3F' + 'F0 FF 80 00 01 E0 00 00 F8 00 00 30 00 0F 80 00' + '01 E0 00 00 78 00 00 1F FF 00 80 00 03 E0 00 00' + '78 00 00 1F FF FF 80 00 0F E0 00 01 F8 00 00 70' + 'FF FF 80 00 1F E0 00 03 F8 00 00 FF 0F FF 80 00' + '3F E0 00 0F F8 00 03 FF FF FF 80 00 FF E0 00 3F' + 'F8 00 0F F0 00 00 FF C3 FF FF F0 FF FF FC 3F FF' + 'FF FF FF E7 FF FF F9 FF FF FE 7F F0 00 00' +} */ + +/* BINRES pd32_portrait.ico */ +PD32_PORTRAIT ICON pd32_portrait.ico +/* { + '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02' + '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00' + '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80' + '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF F0 00 00 FF FF FF 00 00 00 FF FF 00 00 00 00' + 'FF FF 00 FF FF FF FF FF 00 0F FF FF 00 00 00 00' + 'FF FF F0 FF FF FF FF FF 00 FF FF FF 00 00 00 00' + 'FF FF F0 0F FF FF FF F0 00 FF FF FF 00 00 00 00' + 'FF FF FF 0F FF FF FF F0 0F FF FF FF 00 00 00 00' + 'FF FF FF 00 00 00 00 00 0F FF FF FF 00 00 00 00' + 'FF FF FF F0 FF FF FF 00 FF FF FF FF 00 00 00 00' + 'FF FF FF F0 0F FF F0 00 FF FF FF FF 00 00 00 00' + 'FF FF FF FF 0F FF F0 0F FF FF FF FF 00 00 00 00' + 'FF FF FF FF 00 FF 00 0F FF FF FF FF 00 00 00 00' + 'FF FF FF FF F0 FF 00 FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF F0 00 00 FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF 00 0F FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF 00 0F FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF F0 FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF F0 FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 0F FF F0 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 0F FF 00 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 0F F0 00 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 0F 00 00 00 00 00 00' + 'FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00' + '00 07 E0 00 00 07 E0 00 00 0F E0 00 00 1F E0 00' + '00 3F E0 00 00 7F E0 00 00 FF E0 00 01 FF' +} */ + +/* BINRES pd32_landscape.ico */ +PD32_LANDSCAPE ICON pd32_landscape.ico +/* { + '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02' + '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00' + '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80' + '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F FF' + 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF' + 'FF F0 00 00 FF FF FF 00 00 00 FF FF FF F0 0F FF' + 'FF FF 00 FF FF FF FF FF 00 0F FF FF FF F0 0F FF' + 'FF FF F0 FF FF FF FF FF 00 FF FF FF FF F0 0F FF' + 'FF FF F0 0F FF FF FF F0 00 FF FF FF FF F0 0F FF' + 'FF FF FF 0F FF FF FF F0 0F FF FF FF FF F0 0F FF' + 'FF FF FF 00 00 00 00 00 0F FF FF FF FF F0 0F FF' + 'FF FF FF F0 FF FF FF 00 FF FF FF FF FF F0 0F FF' + 'FF FF FF F0 0F FF F0 00 FF FF FF FF FF F0 0F FF' + 'FF FF FF FF 0F FF F0 0F FF FF FF FF FF F0 0F FF' + 'FF FF FF FF 00 FF 00 0F FF FF FF FF FF F0 0F FF' + 'FF FF FF FF F0 FF 00 FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF F0 00 00 FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF 00 0F FF FF FF FF FF FF F0 0F FF' + 'FF FF FF FF FF 00 0F FF FF FF F0 00 00 00 0F FF' + 'FF FF FF FF FF F0 FF FF FF FF F0 FF FF 00 0F FF' + 'FF FF FF FF FF F0 FF FF FF FF F0 FF F0 00 0F FF' + 'FF FF FF FF FF FF FF FF FF FF F0 FF 00 00 0F FF' + 'FF FF FF FF FF FF FF FF FF FF F0 F0 00 00 0F FF' + 'FF FF FF FF FF FF FF FF FF FF F0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + 'FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00' + '00 03 00 00 00 07 00 00 00 0F 00 00 00 1F 00 00' + '00 3F FF FF FF FF FF FF FF FF FF FF FF FF' +} */ + +/* BINRES 800.bmp */ +800 BITMAP DISCARDABLE LOADONCALL "800.bmp" +/* { + '42 4D 36 05 00 00 00 00 00 00 36 04 00 00 28 00' + '00 00 10 00 00 00 10 00 00 00 01 00 08 00 00 00' + '00 00 00 01 00 00 12 0B 00 00 12 0B 00 00 00 01' + '00 00 00 01 00 00 00 00 00 00 00 00 80 00 00 80' + '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80' + '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF' + '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF' + '00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 07 07 07 08 08 08 08 08 08 08' + '08 08 08 08 08 07 07 07 07 08 08 08 08 08 08 08' + '08 08 08 08 08 07 07 00 00 00 00 00 00 00 00 00' + '00 00 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F' + '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F' + '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F' + '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F' + '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 00 00 00 0F' + '0F 0F 00 08 08 08 07 00 0F 0F 0F 0F 0F 0F 0F 0F' + '0F 0F 00 08 08 07 00 0B 00 0F 0F 0F 0F 0F 0F 0F' + '0F 00 0B 00 07 07 07 00 0B 00 0F 0F 0F 0F 0F 0F' + '00 0B 00 08 07 07 07 07 00 0B 00 0F 0F 0F 0F 00' + '0B 00 08 08 07 07 07 07 07 00 0B 00 0F 0F 00 0B' + '00 00 08 08 07 07 07 07 07 07 00 0B 00 00 0B 00' + '01 00 08 08 07 07 07 07 07 07 07 00 0B 0B 00 07' + '01 00 07 07 07 07 07 07 07 07 07 07 00 00 07 07' + '01 00 07 07 07 07' +} */ + + +/* BINRES folder.ico */ +FOLDER ICON folder.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 77 77 77 77 77 77 77 07 77' + '77 77 77 77 77 77 07 FB 8B 8B 8B 8B 8B 77 07 F8' + 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 F8' + 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 F8' + 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 FF' + 'FF FF FF FF FF 77 07 B8 B8 B8 B7 77 77 70 00 7B' + '8B 8B 70 00 00 00 00 07 77 77 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + '00 00 C0 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 01 00 00 C0 7F' + '00 00 E0 FF 00 00 FF FF 00 00 FF FF 00 00' +} */ + + +/* BINRES folder2.ico */ +FOLDER2 ICON folder2.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 07 77 77 77 77 77 77 00 77' + '77 77 77 77 77 77 00 7F B8 B8 B8 B8 B7 77 07 FB' + '8B 8B 8B 8B 87 77 07 F8 B8 B8 B8 B8 77 77 7F 8B' + '8B 8B 8B 8B 77 77 7F FF FF FF FF F7 77 77 77 77' + '77 77 77 77 7B 77 07 F7 B7 B7 B7 B7 B7 77 07 FB' + '7B 7B 7F FF FF 77 07 F7 B7 B7 F7 77 77 70 00 7F' + 'FF FF 70 00 00 00 00 07 77 77 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + '00 00 E0 00 00 00 C0 00 00 00 C0 00 00 00 80 00' + '00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 80 00 00 00 80 00 00 00 80 01 00 00 C0 7F' + '00 00 E0 FF 00 00 FF FF 00 00 FF FF 00 00' +} */ + + +/* BINRES floppy.ico */ +FLOPPY ICON floppy.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 77' + '77 77 77 77 77 70 00 88 AA 88 88 00 88 70 00 88' + 'AA 88 88 00 88 70 00 88 88 88 88 88 88 70 00 88' + '88 00 00 88 88 70 00 80 00 00 00 00 08 70 00 88' + '88 00 00 88 88 70 00 88 88 88 88 88 88 70 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + '00 00 FF FF 00 00 FF FF 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00' +} */ + + +/* BINRES cdrom.ico */ +CDROM ICON cdrom.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 77 BB 88 80 00 00 00 07' + 'AE EB 88 88 80 00 00 7B AA EB 88 88 88 00 00 7B' + 'BA EE 88 88 88 00 07 BB BB BE FF F8 88 80 07 88' + '88 87 07 F8 88 80 07 88 88 80 00 F8 88 80 07 88' + '88 87 07 88 88 80 07 88 88 88 88 EB BB B0 00 78' + '88 88 88 AE BB 00 00 78 88 88 88 AA EB 00 00 07' + '88 88 88 BA E0 00 00 00 77 88 88 B0 00 00 00 00' + '00 77 77 70 00 00 00 00 00 00 00 00 00 00 FC 1F' + '00 00 F0 07 00 00 E0 03 00 00 C0 01 00 00 C0 01' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 C0 01 00 00 C0 01 00 00 E0 03' + '00 00 F0 07 00 00 FC 1F 00 00 FF FF 00 00' +} */ + + +/* BINRES hdisk.ico */ +HDISK ICON hdisk.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 77' + '77 77 77 77 77 70 00 88 88 88 88 AA 88 70 00 88' + '88 88 88 AA 88 70 00 77 77 77 77 77 77 70 00 88' + '88 88 88 88 88 70 00 88 88 88 88 88 88 70 00 88' + '88 88 88 88 88 70 00 88 88 88 88 88 88 70 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + '00 00 FF FF 00 00 FF FF 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00' + '00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00' +} */ + + +/* BINRES network.ico */ +NETWORK ICON network.ico +/* { + '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01' + '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00' + '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' + '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' + 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' + '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 BF B0 00 00 00 08 88 88 BB B0 88 88 88 00 00' + '00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 07 8F FF FF FF FF 87 00 07 87' + '77 77 77 77 87 70 07 88 88 88 88 88 87 70 07 88' + '88 88 88 8A 87 70 07 FF FF FF FF FF F7 70 00 78' + '88 88 88 88 88 70 00 07 77 77 77 77 77 70 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' + '00 00 FC 3F 00 00 80 00 00 00 80 00 00 00 FE 7F' + '00 00 FE 7F 00 00 C0 03 00 00 80 01 00 00 80 00' + '00 00 80 00 00 00 80 00 00 00 80 00 00 00 C0 00' + '00 00 E0 01 00 00 FF FF 00 00 FF FF 00 00' +} */ + +/* BINRES fontpics.bmp */ +38 BITMAP DISCARDABLE LOADONCALL fontpics.bmp +/*{ + '42 4D E6 02 00 00 00 00 00 00 76 00 00 00 28 00' + '00 00 64 00 00 00 0C 00 00 00 01 00 04 00 00 00' + '00 00 70 02 00 00 00 00 00 00 00 00 00 00 00 00' + '00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80' + '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80' + '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF' + '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF' + '00 00 FF FF FF 00 CC CC CC CC C5 55 55 5C CC CC' + 'CC C0 00 00 00 00 00 00 00 CC CC CC CC 78 06 87' + 'CC CC CC CC CC CC CC 78 06 87 CC CC CC CC CC CC' + 'CC CC CC CC CC CC CC CC 00 00 CC CC CC CC CC C5' + '5C CC CC CC CC 07 77 77 77 77 77 77 77 0C CC CC' + 'C8 87 CC C7 67 CC CC CC CC CC C8 87 CC C7 67 CC' + 'CC CC CC CC C7 97 7C C7 87 CC CC CC 00 00 CC CC' + '66 66 66 C5 5C CC CC CC CC 07 77 77 77 77 99 AA' + '77 0C CC CC 70 7C CC CC 76 7C CC CC CC CC 70 7C' + '66 6C 76 7C CC CC CC CC C9 99 97 C9 99 97 CC CC' + '00 00 CC CC CC 66 CC C5 5C CC CC CC CC C0 00 08' + '88 88 88 00 00 CC CC CC 80 CC CC CC C8 6C CC CC' + 'CC CC 80 CC CC C6 C8 6C CC CC CC CC C9 99 C7 C7' + '99 C7 CC CC 00 00 CC CC CC 66 CC C5 5C CC CC CC' + 'CC C8 0F FF FF FF FF FF 08 CC CC CC 00 CC CC CC' + 'C7 67 CC CC CC CC 00 6C C6 66 C7 67 CC CC CC CC' + 'C7 99 CC 77 99 CC CC CC 00 00 CC CC CC 66 CC C5' + '5C CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC' + '00 CC CC CC CC 67 CC CC CC CC 00 C6 CC 6C CC 67' + 'CC CC CC CC C7 99 CC C8 99 7C CC CC 00 00 CC CC' + 'CC 65 CC C5 5C CC 5C CC CC C8 0F FF FF FF FF FF' + '08 CC CC CC 80 CC CC CC CC 66 CC CC CC CC 80 C6' + '6C 66 6C 66 CC CC CC CC CC 99 7C C7 99 7C CC CC' + '00 00 CC CC CC 65 5C C5 5C C5 5C CC CC C8 FF F8' + '88 88 88 FF F8 CC CC CC 70 7C CC CC CC 66 CC CC' + 'CC CC 70 7C 6C 6C CC 66 CC CC CC CC CC 89 7C CC' + '99 7C CC CC 00 00 CC CC CC 65 55 55 55 55 5C CC' + 'CC C8 0F FF FF FF FF FF 08 CC CC CC C0 8C CC CC' + 'CC 68 CC CC CC CC C0 8C 66 CC CC 68 CC CC CC CC' + 'CC C9 9C CC 99 9C CC CC 00 00 CC 6C CC 66 CC C6' + 'CC CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC' + 'C7 07 CC CC C7 67 CC CC CC CC C7 07 CC CC C7 67' + 'CC CC CC CC CC CC 77 CC 89 9C CC CC 00 00 CC 66' + 'CC 66 CC 66 CC CC CC CC CC C8 0F FF FF FF FF FF' + '08 CC CC CC CC 78 7C CC 78 7C CC CC CC CC CC 78' + '7C CC 78 7C CC CC CC CC CC CC CC 89 97 7C CC CC' + '00 00 CC 66 66 66 66 66 CC CC CC CC CC C8 88 88' + '88 88 88 88 88 CC CC CC CC CC 78 06 77 CC CC CC' + 'CC CC CC CC 78 06 77 CC CC CC CC CC CC CC CC CC' + 'CC CC CC CC 00 00' +}*/ diff --git a/reactos/lib/comdlg32/colordlg.c b/reactos/lib/comdlg32/colordlg.c new file mode 100644 index 00000000000..4490da11e78 --- /dev/null +++ b/reactos/lib/comdlg32/colordlg.c @@ -0,0 +1,1343 @@ +/* + * COMMDLG - Color Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* BUGS : still seems to not refresh correctly + sometimes, especially when 2 instances of the + dialog are loaded at the same time */ + +#include +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "dlgs.h" +#include "wine/debug.h" +#include "cderr.h" +#include "cdlg.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +static INT_PTR CALLBACK ColorDlgProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam ); + +#define CONV_LPARAMTOPOINT(lp,p) do { (p)->x = (short)LOWORD(lp); (p)->y = (short)HIWORD(lp); } while(0) + +static const COLORREF predefcolors[6][8]= +{ + { 0x008080FFL, 0x0080FFFFL, 0x0080FF80L, 0x0080FF00L, + 0x00FFFF80L, 0x00FF8000L, 0x00C080FFL, 0x00FF80FFL }, + { 0x000000FFL, 0x0000FFFFL, 0x0000FF80L, 0x0040FF00L, + 0x00FFFF00L, 0x00C08000L, 0x00C08080L, 0x00FF00FFL }, + + { 0x00404080L, 0x004080FFL, 0x0000FF00L, 0x00808000L, + 0x00804000L, 0x00FF8080L, 0x00400080L, 0x008000FFL }, + { 0x00000080L, 0x000080FFL, 0x00008000L, 0x00408000L, + 0x00FF0000L, 0x00A00000L, 0x00800080L, 0x00FF0080L }, + + { 0x00000040L, 0x00004080L, 0x00004000L, 0x00404000L, + 0x00800000L, 0x00400000L, 0x00400040L, 0x00800040L }, + { 0x00000000L, 0x00008080L, 0x00408080L, 0x00808080L, + 0x00808040L, 0x00C0C0C0L, 0x00400040L, 0x00FFFFFFL }, +}; + +/* Chose Color PRIVATE Structure: + * + * This structure is duplicated in the 16 bit code with + * a extra member + */ + +typedef struct CCPRIVATE +{ + LPCHOOSECOLORW lpcc; /* points to public known data structure */ + int nextuserdef; /* next free place in user defined color array */ + HDC hdcMem; /* color graph used for BitBlt() */ + HBITMAP hbmMem; /* color graph bitmap */ + RECT fullsize; /* original dialog window size */ + UINT msetrgb; /* # of SETRGBSTRING message (today not used) */ + RECT old3angle; /* last position of l-marker */ + RECT oldcross; /* last position of color/satuation marker */ + BOOL updating; /* to prevent recursive WM_COMMAND/EN_UPDATE processing */ + int h; + int s; + int l; /* for temporary storing of hue,sat,lum */ + int capturedGraph; /* control mouse captured */ + RECT focusRect; /* rectangle last focused item */ + HWND hwndFocus; /* handle last focused item */ +} *LCCPRIV; + +/*********************************************************************** + * CC_HSLtoRGB [internal] + */ +int CC_HSLtoRGB(char c, int hue, int sat, int lum) +{ + int res = 0, maxrgb; + + /* hue */ + switch(c) + { + case 'R': if (hue > 80) hue -= 80; else hue += 160; break; + case 'G': if (hue > 160) hue -= 160; else hue += 80; break; + case 'B': break; + } + + /* l below 120 */ + maxrgb = (256 * min(120,lum)) / 120; /* 0 .. 256 */ + if (hue < 80) + res = 0; + else + if (hue < 120) + { + res = (hue - 80) * maxrgb; /* 0...10240 */ + res /= 40; /* 0...256 */ + } + else + if (hue < 200) + res = maxrgb; + else + { + res= (240 - hue) * maxrgb; + res /= 40; + } + res = res - maxrgb / 2; /* -128...128 */ + + /* saturation */ + res = maxrgb / 2 + (sat * res) / 240; /* 0..256 */ + + /* lum above 120 */ + if (lum > 120 && res < 256) + res += ((lum - 120) * (256 - res)) / 120; + + return min(res, 255); +} + +/*********************************************************************** + * CC_RGBtoHSL [internal] + */ +int CC_RGBtoHSL(char c, int r, int g, int b) +{ + WORD maxi, mini, mmsum, mmdif, result = 0; + int iresult = 0; + + maxi = max(r, b); + maxi = max(maxi, g); + mini = min(r, b); + mini = min(mini, g); + + mmsum = maxi + mini; + mmdif = maxi - mini; + + switch(c) + { + /* lum */ + case 'L': mmsum *= 120; /* 0...61200=(255+255)*120 */ + result = mmsum / 255; /* 0...240 */ + break; + /* saturation */ + case 'S': if (!mmsum) + result = 0; + else + if (!mini || maxi == 255) + result = 240; + else + { + result = mmdif * 240; /* 0...61200=255*240 */ + result /= (mmsum > 255 ? mmsum = 510 - mmsum : mmsum); /* 0..255 */ + } + break; + /* hue */ + case 'H': if (!mmdif) + result = 160; + else + { + if (maxi == r) + { + iresult = 40 * (g - b); /* -10200 ... 10200 */ + iresult /= (int) mmdif; /* -40 .. 40 */ + if (iresult < 0) + iresult += 240; /* 0..40 and 200..240 */ + } + else + if (maxi == g) + { + iresult = 40 * (b - r); + iresult /= (int) mmdif; + iresult += 80; /* 40 .. 120 */ + } + else + if (maxi == b) + { + iresult = 40 * (r - g); + iresult /= (int) mmdif; + iresult += 160; /* 120 .. 200 */ + } + result = iresult; + } + break; + } + return result; /* is this integer arithmetic precise enough ? */ +} + + +/*********************************************************************** + * CC_DrawCurrentFocusRect [internal] + */ +void CC_DrawCurrentFocusRect( LCCPRIV lpp ) +{ + if (lpp->hwndFocus) + { + HDC hdc = GetDC(lpp->hwndFocus); + DrawFocusRect(hdc, &lpp->focusRect); + ReleaseDC(lpp->hwndFocus, hdc); + } +} + +/*********************************************************************** + * CC_DrawFocusRect [internal] + */ +void CC_DrawFocusRect( LCCPRIV lpp, HWND hwnd, int x, int y, int rows, int cols) +{ + RECT rect; + int dx, dy; + HDC hdc; + + CC_DrawCurrentFocusRect(lpp); /* remove current focus rect */ + /* calculate new rect */ + GetClientRect(hwnd, &rect); + dx = (rect.right - rect.left) / cols; + dy = (rect.bottom - rect.top) / rows; + rect.left += (x * dx) - 2; + rect.top += (y * dy) - 2; + rect.right = rect.left + dx; + rect.bottom = rect.top + dy; + /* draw it */ + hdc = GetDC(hwnd); + DrawFocusRect(hdc, &rect); + CopyRect(&lpp->focusRect, &rect); + lpp->hwndFocus = hwnd; + ReleaseDC(hwnd, hdc); +} + +#define DISTANCE 4 + +/*********************************************************************** + * CC_MouseCheckPredefColorArray [internal] + * returns 1 if one of the predefined colors is clicked + */ +static int CC_MouseCheckPredefColorArray( LCCPRIV lpp, HWND hDlg, int dlgitem, int rows, int cols, + LPARAM lParam ) +{ + HWND hwnd; + POINT point; + RECT rect; + int dx, dy, x, y; + + CONV_LPARAMTOPOINT(lParam, &point); + ClientToScreen(hDlg, &point); + hwnd = GetDlgItem(hDlg, dlgitem); + GetWindowRect(hwnd, &rect); + if (PtInRect(&rect, point)) + { + dx = (rect.right - rect.left) / cols; + dy = (rect.bottom - rect.top) / rows; + ScreenToClient(hwnd, &point); + + if (point.x % dx < ( dx - DISTANCE) && point.y % dy < ( dy - DISTANCE)) + { + x = point.x / dx; + y = point.y / dy; + lpp->lpcc->rgbResult = predefcolors[y][x]; + CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols); + return 1; + } + } + return 0; +} + +/*********************************************************************** + * CC_MouseCheckUserColorArray [internal] + * return 1 if the user clicked a color + */ +static int CC_MouseCheckUserColorArray( LCCPRIV lpp, HWND hDlg, int dlgitem, int rows, int cols, + LPARAM lParam ) +{ + HWND hwnd; + POINT point; + RECT rect; + int dx, dy, x, y; + COLORREF *crarr = lpp->lpcc->lpCustColors; + + CONV_LPARAMTOPOINT(lParam, &point); + ClientToScreen(hDlg, &point); + hwnd = GetDlgItem(hDlg, dlgitem); + GetWindowRect(hwnd, &rect); + if (PtInRect(&rect, point)) + { + dx = (rect.right - rect.left) / cols; + dy = (rect.bottom - rect.top) / rows; + ScreenToClient(hwnd, &point); + + if (point.x % dx < (dx - DISTANCE) && point.y % dy < (dy - DISTANCE)) + { + x = point.x / dx; + y = point.y / dy; + lpp->lpcc->rgbResult = crarr[x + (cols * y) ]; + CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols); + return 1; + } + } + return 0; +} + +#define MAXVERT 240 +#define MAXHORI 239 + +/* 240 ^...... ^^ 240 + | . || + SAT | . || LUM + | . || + +-----> 239 ---- + HUE +*/ +/*********************************************************************** + * CC_MouseCheckColorGraph [internal] + */ +static int CC_MouseCheckColorGraph( HWND hDlg, int dlgitem, int *hori, int *vert, LPARAM lParam ) +{ + HWND hwnd; + POINT point; + RECT rect; + long x,y; + + CONV_LPARAMTOPOINT(lParam, &point); + ClientToScreen(hDlg, &point); + hwnd = GetDlgItem( hDlg, dlgitem ); + GetWindowRect(hwnd, &rect); + if (PtInRect(&rect, point)) + { + GetClientRect(hwnd, &rect); + ScreenToClient(hwnd, &point); + + x = (long) point.x * MAXHORI; + x /= rect.right; + y = (long) (rect.bottom - point.y) * MAXVERT; + y /= rect.bottom; + + if (hori) + *hori = x; + if (vert) + *vert = y; + return 1; + } + else + return 0; +} +/*********************************************************************** + * CC_MouseCheckResultWindow [internal] + * test if double click one of the result colors + */ +int CC_MouseCheckResultWindow( HWND hDlg, LPARAM lParam ) +{ + HWND hwnd; + POINT point; + RECT rect; + + CONV_LPARAMTOPOINT(lParam, &point); + ClientToScreen(hDlg, &point); + hwnd = GetDlgItem(hDlg, 0x2c5); + GetWindowRect(hwnd, &rect); + if (PtInRect(&rect, point)) + { + PostMessageA(hDlg, WM_COMMAND, 0x2c9, 0); + return 1; + } + return 0; +} + +/*********************************************************************** + * CC_CheckDigitsInEdit [internal] + */ +int CC_CheckDigitsInEdit( HWND hwnd, int maxval ) +{ + int i, k, m, result, value; + long editpos; + char buffer[30]; + + GetWindowTextA(hwnd, buffer, sizeof(buffer)); + m = strlen(buffer); + result = 0; + + for (i = 0 ; i < m ; i++) + if (buffer[i] < '0' || buffer[i] > '9') + { + for (k = i + 1; k <= m; k++) /* delete bad character */ + { + buffer[i] = buffer[k]; + m--; + } + buffer[m] = 0; + result = 1; + } + + value = atoi(buffer); + if (value > maxval) /* build a new string */ + { + sprintf(buffer, "%d", maxval); + result = 2; + } + if (result) + { + editpos = SendMessageA(hwnd, EM_GETSEL, 0, 0); + SetWindowTextA(hwnd, buffer ); + SendMessageA(hwnd, EM_SETSEL, 0, editpos); + } + return value; +} + + + +/*********************************************************************** + * CC_PaintSelectedColor [internal] + */ +void CC_PaintSelectedColor( HWND hDlg, COLORREF cr ) +{ + RECT rect; + HDC hdc; + HBRUSH hBrush; + HWND hwnd = GetDlgItem(hDlg, 0x2c5); + if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) )) /* if full size */ + { + hdc = GetDC(hwnd); + GetClientRect(hwnd, &rect) ; + hBrush = CreateSolidBrush(cr); + if (hBrush) + { + hBrush = SelectObject(hdc, hBrush) ; + Rectangle(hdc, rect.left, rect.top, rect.right/2, rect.bottom); + DeleteObject ( SelectObject(hdc, hBrush) ) ; + hBrush = CreateSolidBrush( GetNearestColor(hdc, cr) ); + if (hBrush) + { + hBrush = SelectObject(hdc, hBrush) ; + Rectangle(hdc, rect.right/2-1, rect.top, rect.right, rect.bottom); + DeleteObject(SelectObject(hdc, hBrush)) ; + } + } + ReleaseDC(hwnd, hdc); + } +} + +/*********************************************************************** + * CC_PaintTriangle [internal] + */ +void CC_PaintTriangle( HWND hDlg, int y) +{ + HDC hDC; + long temp; + int w = LOWORD(GetDialogBaseUnits()); + POINT points[3]; + int height; + int oben; + RECT rect; + HWND hwnd = GetDlgItem(hDlg, 0x2be); + LCCPRIV lpp = (LCCPRIV)GetWindowLongA( hDlg, DWL_USER); + + if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6))) /* if full size */ + { + GetClientRect(hwnd, &rect); + height = rect.bottom; + hDC = GetDC(hDlg); + points[0].y = rect.top; + points[0].x = rect.right; /* | /| */ + ClientToScreen(hwnd, points); /* | / | */ + ScreenToClient(hDlg, points); /* |< | */ + oben = points[0].y; /* | \ | */ + /* | \| */ + temp = (long)height * (long)y; + points[0].y = oben + height - temp / (long)MAXVERT; + points[1].y = points[0].y + w; + points[2].y = points[0].y - w; + points[2].x = points[1].x = points[0].x + w; + + FillRect(hDC, &lpp->old3angle, (HBRUSH)GetClassLongA( hwnd, GCL_HBRBACKGROUND)); + lpp->old3angle.left = points[0].x; + lpp->old3angle.right = points[1].x + 1; + lpp->old3angle.top = points[2].y - 1; + lpp->old3angle.bottom= points[1].y + 1; + Polygon(hDC, points, 3); + ReleaseDC(hDlg, hDC); + } +} + + +/*********************************************************************** + * CC_PaintCross [internal] + */ +void CC_PaintCross( HWND hDlg, int x, int y) +{ + HDC hDC; + int w = GetDialogBaseUnits(); + HWND hwnd = GetDlgItem(hDlg, 0x2c6); + LCCPRIV lpp = (LCCPRIV)GetWindowLongA( hDlg, DWL_USER ); + RECT rect; + POINT point, p; + HPEN hPen; + + if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) )) /* if full size */ + { + GetClientRect(hwnd, &rect); + hDC = GetDC(hwnd); + SelectClipRgn( hDC, CreateRectRgnIndirect(&rect)); + hPen = CreatePen(PS_SOLID, 2, 0xffffff); /* -white- color */ + hPen = SelectObject(hDC, hPen); + point.x = ((long)rect.right * (long)x) / (long)MAXHORI; + point.y = rect.bottom - ((long)rect.bottom * (long)y) / (long)MAXVERT; + if ( lpp->oldcross.left != lpp->oldcross.right ) + BitBlt(hDC, lpp->oldcross.left, lpp->oldcross.top, + lpp->oldcross.right - lpp->oldcross.left, + lpp->oldcross.bottom - lpp->oldcross.top, + lpp->hdcMem, lpp->oldcross.left, lpp->oldcross.top, SRCCOPY); + lpp->oldcross.left = point.x - w - 1; + lpp->oldcross.right = point.x + w + 1; + lpp->oldcross.top = point.y - w - 1; + lpp->oldcross.bottom = point.y + w + 1; + + MoveToEx(hDC, point.x - w, point.y, &p); + LineTo(hDC, point.x + w, point.y); + MoveToEx(hDC, point.x, point.y - w, &p); + LineTo(hDC, point.x, point.y + w); + DeleteObject( SelectObject(hDC, hPen)) ; + ReleaseDC(hwnd, hDC); + } +} + + +#define XSTEPS 48 +#define YSTEPS 24 + + +/*********************************************************************** + * CC_PrepareColorGraph [internal] + */ +static void CC_PrepareColorGraph( HWND hDlg ) +{ + int sdif, hdif, xdif, ydif, r, g, b, hue, sat; + HWND hwnd = GetDlgItem(hDlg, 0x2c6); + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + HBRUSH hbrush; + HDC hdc ; + RECT rect, client; + HCURSOR hcursor = SetCursor( LoadCursorA(0, (LPSTR)IDC_WAIT) ); + + GetClientRect(hwnd, &client); + hdc = GetDC(hwnd); + lpp->hdcMem = CreateCompatibleDC(hdc); + lpp->hbmMem = CreateCompatibleBitmap(hdc, client.right, client.bottom); + SelectObject(lpp->hdcMem, lpp->hbmMem); + + xdif = client.right / XSTEPS; + ydif = client.bottom / YSTEPS+1; + hdif = 239 / XSTEPS; + sdif = 240 / YSTEPS; + for (rect.left = hue = 0; hue < 239 + hdif; hue += hdif) + { + rect.right = rect.left + xdif; + rect.bottom = client.bottom; + for(sat = 0; sat < 240 + sdif; sat += sdif) + { + rect.top = rect.bottom - ydif; + r = CC_HSLtoRGB('R', hue, sat, 120); + g = CC_HSLtoRGB('G', hue, sat, 120); + b = CC_HSLtoRGB('B', hue, sat, 120); + hbrush = CreateSolidBrush( RGB(r, g, b)); + FillRect(lpp->hdcMem, &rect, hbrush); + DeleteObject(hbrush); + rect.bottom = rect.top; + } + rect.left = rect.right; + } + ReleaseDC(hwnd, hdc); + SetCursor(hcursor); +} + +/*********************************************************************** + * CC_PaintColorGraph [internal] + */ +static void CC_PaintColorGraph( HWND hDlg ) +{ + HWND hwnd = GetDlgItem( hDlg, 0x2c6 ); + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + HDC hDC; + RECT rect; + if (IsWindowVisible(hwnd)) /* if full size */ + { + if (!lpp->hdcMem) + CC_PrepareColorGraph(hDlg); /* should not be necessary */ + + hDC = GetDC(hwnd); + GetClientRect(hwnd, &rect); + if (lpp->hdcMem) + BitBlt(hDC, 0, 0, rect.right, rect.bottom, lpp->hdcMem, 0, 0, SRCCOPY); + else + WARN("choose color: hdcMem is not defined\n"); + ReleaseDC(hwnd, hDC); + } +} + +/*********************************************************************** + * CC_PaintLumBar [internal] + */ +static void CC_PaintLumBar( HWND hDlg, int hue, int sat ) +{ + HWND hwnd = GetDlgItem(hDlg, 0x2be); + RECT rect, client; + int lum, ldif, ydif, r, g, b; + HBRUSH hbrush; + HDC hDC; + + if (IsWindowVisible(hwnd)) + { + hDC = GetDC(hwnd); + GetClientRect(hwnd, &client); + rect = client; + + ldif = 240 / YSTEPS; + ydif = client.bottom / YSTEPS+1; + for (lum = 0; lum < 240 + ldif; lum += ldif) + { + rect.top = max(0, rect.bottom - ydif); + r = CC_HSLtoRGB('R', hue, sat, lum); + g = CC_HSLtoRGB('G', hue, sat, lum); + b = CC_HSLtoRGB('B', hue, sat, lum); + hbrush = CreateSolidBrush( RGB(r, g, b) ); + FillRect(hDC, &rect, hbrush); + DeleteObject(hbrush); + rect.bottom = rect.top; + } + GetClientRect(hwnd, &rect); + FrameRect(hDC, &rect, GetStockObject(BLACK_BRUSH) ); + ReleaseDC(hwnd, hDC); + } +} + +/*********************************************************************** + * CC_EditSetRGB [internal] + */ +void CC_EditSetRGB( HWND hDlg, COLORREF cr ) +{ + char buffer[10]; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + int r = GetRValue(cr); + int g = GetGValue(cr); + int b = GetBValue(cr); + if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) )) /* if full size */ + { + lpp->updating = TRUE; + sprintf(buffer, "%d", r); + SetWindowTextA( GetDlgItem(hDlg, 0x2c2), buffer); + sprintf(buffer, "%d", g); + SetWindowTextA( GetDlgItem(hDlg, 0x2c3), buffer); + sprintf( buffer, "%d", b ); + SetWindowTextA( GetDlgItem(hDlg, 0x2c4),buffer); + lpp->updating = FALSE; + } +} + +/*********************************************************************** + * CC_EditSetHSL [internal] + */ +void CC_EditSetHSL( HWND hDlg, int h, int s, int l ) +{ + char buffer[10]; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + lpp->updating = TRUE; + if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) )) /* if full size */ + { + lpp->updating = TRUE; + sprintf(buffer, "%d", h); + SetWindowTextA( GetDlgItem(hDlg, 0x2bf), buffer); + sprintf(buffer, "%d", s); + SetWindowTextA( GetDlgItem(hDlg, 0x2c0), buffer); + sprintf(buffer, "%d", l); + SetWindowTextA( GetDlgItem(hDlg, 0x2c1), buffer); + lpp->updating = FALSE; + } + CC_PaintLumBar(hDlg, h, s); +} + +/*********************************************************************** + * CC_SwitchToFullSize [internal] + */ +void CC_SwitchToFullSize( HWND hDlg, COLORREF result, LPRECT lprect ) +{ + int i; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + + EnableWindow( GetDlgItem(hDlg, 0x2cf), FALSE); + CC_PrepareColorGraph(hDlg); + for (i = 0x2bf; i < 0x2c5; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_SHOW); + for (i = 0x2d3; i < 0x2d9; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_SHOW); + ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_SHOW); + ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_SHOW); + ShowWindow( GetDlgItem(hDlg, 1090), SW_SHOW); + + if (lprect) + SetWindowPos(hDlg, 0, 0, 0, lprect->right-lprect->left, + lprect->bottom-lprect->top, SWP_NOMOVE|SWP_NOZORDER); + + ShowWindow( GetDlgItem(hDlg, 0x2be), SW_SHOW); + ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_SHOW); + + CC_EditSetRGB(hDlg, result); + CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l); + ShowWindow( GetDlgItem( hDlg, 0x2c6), SW_SHOW); + UpdateWindow( GetDlgItem(hDlg, 0x2c6) ); +} + +/*********************************************************************** + * CC_PaintPredefColorArray [internal] + * Paints the default standard 48 colors + */ +static void CC_PaintPredefColorArray( HWND hDlg, int rows, int cols) +{ + HWND hwnd = GetDlgItem(hDlg, 0x2d0); + RECT rect; + HDC hdc; + HBRUSH hBrush; + int dx, dy, i, j, k; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + + GetClientRect(hwnd, &rect); + dx = rect.right / cols; + dy = rect.bottom / rows; + k = rect.left; + + hdc = GetDC(hwnd); + GetClientRect(hwnd, &rect); + FillRect(hdc, &rect, (HBRUSH)GetClassLongA(hwnd, GCL_HBRBACKGROUND)); + for ( j = 0; j < rows; j++ ) + { + for ( i = 0; i < cols; i++ ) + { + hBrush = CreateSolidBrush(predefcolors[j][i]); + if (hBrush) + { + hBrush = SelectObject(hdc, hBrush); + Rectangle(hdc, rect.left, rect.top, + rect.left + dx - DISTANCE, rect.top + dy - DISTANCE); + rect.left = rect.left + dx; + DeleteObject(SelectObject(hdc, hBrush)) ; + } + } + rect.top = rect.top + dy; + rect.left = k; + } + ReleaseDC(hwnd, hdc); + if (lpp->hwndFocus == hwnd) + CC_DrawCurrentFocusRect(lpp); +} +/*********************************************************************** + * CC_PaintUserColorArray [internal] + * Paint the 16 user-selected colors + */ +void CC_PaintUserColorArray( HWND hDlg, int rows, int cols, COLORREF* lpcr ) +{ + HWND hwnd = GetDlgItem(hDlg, 0x2d1); + RECT rect; + HDC hdc; + HBRUSH hBrush; + int dx, dy, i, j, k; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + + GetClientRect(hwnd, &rect); + + dx = rect.right / cols; + dy = rect.bottom / rows; + k = rect.left; + + hdc = GetDC(hwnd); + if (hdc) + { + FillRect(hdc, &rect, (HBRUSH)GetClassLongA(hwnd, GCL_HBRBACKGROUND) ); + for (j = 0; j < rows; j++) + { + for (i = 0; i < cols; i++) + { + hBrush = CreateSolidBrush(lpcr[i+j*cols]); + if (hBrush) + { + hBrush = SelectObject(hdc, hBrush) ; + Rectangle(hdc, rect.left, rect.top, + rect.left + dx - DISTANCE, rect.top + dy - DISTANCE); + rect.left = rect.left + dx; + DeleteObject( SelectObject(hdc, hBrush) ) ; + } + } + rect.top = rect.top + dy; + rect.left = k; + } + ReleaseDC(hwnd, hdc); + } + if (lpp->hwndFocus == hwnd) + CC_DrawCurrentFocusRect(lpp); +} + + + +/*********************************************************************** + * CC_HookCallChk [internal] + */ +BOOL CC_HookCallChk( LPCHOOSECOLORW lpcc ) +{ + if (lpcc) + if(lpcc->Flags & CC_ENABLEHOOK) + if (lpcc->lpfnHook) + return TRUE; + return FALSE; +} + +/*********************************************************************** + * CC_WMInitDialog [internal] + */ +LONG CC_WMInitDialog( HWND hDlg, WPARAM wParam, LPARAM lParam ) +{ + int i, res; + int r, g, b; + HWND hwnd; + RECT rect; + POINT point; + LCCPRIV lpp; + + TRACE("WM_INITDIALOG lParam=%08lX\n", lParam); + lpp = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct CCPRIVATE) ); + + lpp->lpcc = (LPCHOOSECOLORW) lParam; + if (lpp->lpcc->lStructSize != sizeof(CHOOSECOLORW) ) + { + HeapFree(GetProcessHeap(), 0, lpp); + EndDialog (hDlg, 0) ; + return FALSE; + } + + SetWindowLongA(hDlg, DWL_USER, (LONG)lpp); + + if (!(lpp->lpcc->Flags & CC_SHOWHELP)) + ShowWindow( GetDlgItem(hDlg,0x40e), SW_HIDE); + lpp->msetrgb = RegisterWindowMessageA(SETRGBSTRINGA); + +#if 0 + cpos = MAKELONG(5,7); /* init */ + if (lpp->lpcc->Flags & CC_RGBINIT) + { + for (i = 0; i < 6; i++) + for (j = 0; j < 8; j++) + if (predefcolors[i][j] == lpp->lpcc->rgbResult) + { + cpos = MAKELONG(i,j); + goto found; + } + } + found: + /* FIXME: Draw_a_focus_rect & set_init_values */ +#endif + + GetWindowRect(hDlg, &lpp->fullsize); + if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN) + { + hwnd = GetDlgItem(hDlg, 0x2cf); + EnableWindow(hwnd, FALSE); + } + if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN) + { + rect = lpp->fullsize; + res = rect.bottom - rect.top; + hwnd = GetDlgItem(hDlg, 0x2c6); /* cut at left border */ + point.x = point.y = 0; + ClientToScreen(hwnd, &point); + ScreenToClient(hDlg,&point); + GetClientRect(hDlg, &rect); + point.x += GetSystemMetrics(SM_CXDLGFRAME); + SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER); + + for (i = 0x2bf; i < 0x2c5; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_HIDE); + for (i = 0x2d3; i < 0x2d9; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c6), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE); + } + else + CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, NULL); + res = TRUE; + for (i = 0x2bf; i < 0x2c5; i++) + SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0); /* max 3 digits: xyz */ + if (CC_HookCallChk(lpp->lpcc)) + { + res = CallWindowProcA( (WNDPROC)lpp->lpcc->lpfnHook, hDlg, WM_INITDIALOG, wParam, lParam); + } + + /* Set the initial values of the color chooser dialog */ + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b = GetBValue(lpp->lpcc->rgbResult); + + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + + /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */ + SetDlgItemInt(hDlg, 703, lpp->h, TRUE); + SetDlgItemInt(hDlg, 704, lpp->s, TRUE); + SetDlgItemInt(hDlg, 705, lpp->l, TRUE); + SetDlgItemInt(hDlg, 706, r, TRUE); + SetDlgItemInt(hDlg, 707, g, TRUE); + SetDlgItemInt(hDlg, 708, b, TRUE); + + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + + return res; +} + + +/*********************************************************************** + * CC_WMCommand [internal] + */ +LRESULT CC_WMCommand( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl ) +{ + int r, g, b, i, xx; + UINT cokmsg; + HDC hdc; + COLORREF *cr; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + TRACE("CC_WMCommand wParam=%x lParam=%lx\n", wParam, lParam); + switch (wParam) + { + case 0x2c2: /* edit notify RGB */ + case 0x2c3: + case 0x2c4: + if (notifyCode == EN_UPDATE && !lpp->updating) + { + i = CC_CheckDigitsInEdit(hwndCtl, 255); + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b= GetBValue(lpp->lpcc->rgbResult); + xx = 0; + switch (wParam) + { + case 0x2c2: if ((xx = (i != r))) r = i; break; + case 0x2c3: if ((xx = (i != g))) g = i; break; + case 0x2c4: if ((xx = (i != b))) b = i; break; + } + if (xx) /* something has changed */ + { + lpp->lpcc->rgbResult = RGB(r, g, b); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + } + } + break; + + case 0x2bf: /* edit notify HSL */ + case 0x2c0: + case 0x2c1: + if (notifyCode == EN_UPDATE && !lpp->updating) + { + i = CC_CheckDigitsInEdit(hwndCtl , wParam == 0x2bf ? 239:240); + xx = 0; + switch (wParam) + { + case 0x2bf: if ((xx = ( i != lpp->h))) lpp->h = i; break; + case 0x2c0: if ((xx = ( i != lpp->s))) lpp->s = i; break; + case 0x2c1: if ((xx = ( i != lpp->l))) lpp->l = i; break; + } + if (xx) /* something has changed */ + { + r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l); + g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l); + b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l); + lpp->lpcc->rgbResult = RGB(r, g, b); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + } + } + break; + + case 0x2cf: + CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, &lpp->fullsize); + SetFocus( GetDlgItem(hDlg, 0x2bf)); + break; + + case 0x2c8: /* add colors ... column by column */ + cr = lpp->lpcc->lpCustColors; + cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult; + if (++lpp->nextuserdef == 16) + lpp->nextuserdef = 0; + CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors); + break; + + case 0x2c9: /* resulting color */ + hdc = GetDC(hDlg); + lpp->lpcc->rgbResult = GetNearestColor(hdc, lpp->lpcc->rgbResult); + ReleaseDC(hDlg, hdc); + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b = GetBValue(lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + break; + + case 0x40e: /* Help! */ /* The Beatles, 1965 ;-) */ + i = RegisterWindowMessageA(HELPMSGSTRINGA); + if (lpp->lpcc->hwndOwner) + SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc); + if ( CC_HookCallChk(lpp->lpcc)) + CallWindowProcA( (WNDPROC) lpp->lpcc->lpfnHook, hDlg, + WM_COMMAND, psh15, (LPARAM)lpp->lpcc); + break; + + case IDOK : + cokmsg = RegisterWindowMessageA(COLOROKSTRINGA); + if (lpp->lpcc->hwndOwner) + if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc)) + break; /* do NOT close */ + EndDialog(hDlg, 1) ; + return TRUE ; + + case IDCANCEL : + EndDialog(hDlg, 0) ; + return TRUE ; + + } + return FALSE; +} + +/*********************************************************************** + * CC_WMPaint [internal] + */ +LRESULT CC_WMPaint( HWND hDlg, WPARAM wParam, LPARAM lParam ) +{ + HDC hdc; + PAINTSTRUCT ps; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + + hdc = BeginPaint(hDlg, &ps); + /* we have to paint dialog children except text and buttons */ + CC_PaintPredefColorArray(hDlg, 6, 8); + CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors); + CC_PaintLumBar(hDlg, lpp->h, lpp->s); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + CC_PaintColorGraph(hDlg); + EndPaint(hDlg, &ps); + + return TRUE; +} + +/*********************************************************************** + * CC_WMLButtonUp [internal] + */ +LRESULT CC_WMLButtonUp( HWND hDlg, WPARAM wParam, LPARAM lParam ) +{ + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + if (lpp->capturedGraph) + { + lpp->capturedGraph = 0; + ReleaseCapture(); + CC_PaintCross(hDlg, lpp->h, lpp->s); + return 1; + } + return 0; +} + +/*********************************************************************** + * CC_WMMouseMove [internal] + */ +LRESULT CC_WMMouseMove( HWND hDlg, LPARAM lParam ) +{ + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + int r, g, b; + + if (lpp->capturedGraph) + { + int *ptrh = NULL, *ptrs = &lpp->l; + if (lpp->capturedGraph == 0x2c6) + { + ptrh = &lpp->h; + ptrs = &lpp->s; + } + if (CC_MouseCheckColorGraph( hDlg, lpp->capturedGraph, ptrh, ptrs, lParam)) + { + r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l); + g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l); + b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l); + lpp->lpcc->rgbResult = RGB(r, g, b); + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_EditSetHSL(hDlg,lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + } + else + { + ReleaseCapture(); + lpp->capturedGraph = 0; + } + return 1; + } + return 0; +} + +/*********************************************************************** + * CC_WMLButtonDown [internal] + */ +LRESULT CC_WMLButtonDown( HWND hDlg, WPARAM wParam, LPARAM lParam ) +{ + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + int r, g, b, i; + i = 0; + + if (CC_MouseCheckPredefColorArray(lpp, hDlg, 0x2d0, 6, 8, lParam)) + i = 1; + else + if (CC_MouseCheckUserColorArray(lpp, hDlg, 0x2d1, 2, 8, lParam)) + i = 1; + else + if (CC_MouseCheckColorGraph(hDlg, 0x2c6, &lpp->h, &lpp->s, lParam)) + { + i = 2; + lpp->capturedGraph = 0x2c6; + } + else + if (CC_MouseCheckColorGraph(hDlg, 0x2be, NULL, &lpp->l, lParam)) + { + i = 2; + lpp->capturedGraph = 0x2be; + } + if ( i == 2 ) + { + SetCapture(hDlg); + r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l); + g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l); + b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l); + lpp->lpcc->rgbResult = RGB(r, g, b); + } + if ( i == 1 ) + { + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b = GetBValue(lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + } + if (i) + { + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_EditSetHSL(hDlg,lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + return TRUE; + } + return FALSE; +} + +/*********************************************************************** + * ColorDlgProc32 [internal] + * + */ +static INT_PTR CALLBACK ColorDlgProc( HWND hDlg, UINT message, + WPARAM wParam, LPARAM lParam ) +{ + + int res; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + if (message != WM_INITDIALOG) + { + if (!lpp) + return FALSE; + res = 0; + if (CC_HookCallChk(lpp->lpcc)) + res = CallWindowProcA( (WNDPROC)lpp->lpcc->lpfnHook, hDlg, message, wParam, lParam); + if ( res ) + return res; + } + + /* FIXME: SetRGB message + if (message && message == msetrgb) + return HandleSetRGB(hDlg, lParam); + */ + + switch (message) + { + case WM_INITDIALOG: + return CC_WMInitDialog(hDlg, wParam, lParam); + case WM_NCDESTROY: + DeleteDC(lpp->hdcMem); + DeleteObject(lpp->hbmMem); + HeapFree(GetProcessHeap(), 0, lpp); + SetWindowLongA(hDlg, DWL_USER, 0L); /* we don't need it anymore */ + break; + case WM_COMMAND: + if (CC_WMCommand( hDlg, wParam, lParam, HIWORD(wParam), (HWND) lParam)) + return TRUE; + break; + case WM_PAINT: + if ( CC_WMPaint(hDlg, wParam, lParam)) + return TRUE; + break; + case WM_LBUTTONDBLCLK: + if (CC_MouseCheckResultWindow(hDlg, lParam)) + return TRUE; + break; + case WM_MOUSEMOVE: + if (CC_WMMouseMove(hDlg, lParam)) + return TRUE; + break; + case WM_LBUTTONUP: /* FIXME: ClipCursor off (if in color graph)*/ + if (CC_WMLButtonUp(hDlg, wParam, lParam)) + return TRUE; + break; + case WM_LBUTTONDOWN:/* FIXME: ClipCursor on (if in color graph)*/ + if (CC_WMLButtonDown(hDlg, wParam, lParam)) + return TRUE; + break; + } + return FALSE ; +} + +/*********************************************************************** + * ChooseColorW (COMDLG32.@) + */ +BOOL WINAPI ChooseColorW( LPCHOOSECOLORW lpChCol ) +{ + HANDLE hDlgTmpl = 0; + BOOL bRet = FALSE; + LPCVOID template; + + TRACE("ChooseColor\n"); + if (!lpChCol) return FALSE; + + if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE) + { + if (!(template = LockResource(lpChCol->hInstance))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + else if (lpChCol->Flags & CC_ENABLETEMPLATE) + { + HRSRC hResInfo; + if (!(hResInfo = FindResourceW((HINSTANCE)lpChCol->hInstance, + lpChCol->lpTemplateName, + (LPWSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource((HINSTANCE)lpChCol->hInstance, hResInfo)) || + !(template = LockResource(hDlgTmpl))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + else + { + HRSRC hResInfo; + HGLOBAL hDlgTmpl; + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_COLOR", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(template = LockResource(hDlgTmpl))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + + bRet = DialogBoxIndirectParamW(COMDLG32_hInstance, template, lpChCol->hwndOwner, + ColorDlgProc, (DWORD)lpChCol); + return bRet; +} + +/*********************************************************************** + * ChooseColorA (COMDLG32.@) + */ +BOOL WINAPI ChooseColorA( LPCHOOSECOLORA lpChCol ) + +{ + BOOL ret; + LPCHOOSECOLORW lpcc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CHOOSECOLORW)); + lpcc->lStructSize = sizeof(*lpcc); + lpcc->hwndOwner = lpChCol->hwndOwner; + lpcc->hInstance = lpChCol->hInstance; + lpcc->rgbResult = lpChCol->rgbResult; + lpcc->lpCustColors = lpChCol->lpCustColors; + lpcc->Flags = lpChCol->Flags; + lpcc->lCustData = lpChCol->lCustData; + lpcc->lpfnHook = (LPCCHOOKPROC) lpChCol->lpfnHook; + if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName)) { + if (HIWORD(lpChCol->lpTemplateName)) { + INT len = MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, NULL, 0); + lpcc->lpTemplateName = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, (LPWSTR)lpcc->lpTemplateName, len ); + } else { + lpcc->lpTemplateName = (LPWSTR)lpChCol->lpTemplateName; + } + } + + ret = ChooseColorW(lpcc); + + if (ret) + lpChCol->rgbResult = lpcc->rgbResult; + if (HIWORD(lpcc->lpTemplateName)) HeapFree(GetProcessHeap(), 0, (LPSTR)lpcc->lpTemplateName); + HeapFree(GetProcessHeap(), 0, lpcc); + return ret; +} diff --git a/reactos/lib/comdlg32/colordlg16.c b/reactos/lib/comdlg32/colordlg16.c new file mode 100644 index 00000000000..0159e47a7b3 --- /dev/null +++ b/reactos/lib/comdlg32/colordlg16.c @@ -0,0 +1,476 @@ +/* + * COMMDLG - Color Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* BUGS : still seems to not refresh correctly + sometimes, especially when 2 instances of the + dialog are loaded at the same time */ + +#include +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "wine/winbase16.h" +#include "wine/winuser16.h" +#include "winuser.h" +#include "commdlg.h" +#include "dlgs.h" +#include "wine/debug.h" +#include "cderr.h" +#include "cdlg.h" +#include "cdlg16.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +/* Chose Color PRIVATE Structure: + * + * This is a duplicate of the 32bit code with + * a extra member + */ +typedef struct CCPRIVATE +{ + LPCHOOSECOLORW lpcc; /* points to public known data structure */ + LPCHOOSECOLOR16 lpcc16; /* save the 16 bits pointer */ + int nextuserdef; /* next free place in user defined color array */ + HDC hdcMem; /* color graph used for BitBlt() */ + HBITMAP hbmMem; /* color graph bitmap */ + RECT fullsize; /* original dialog window size */ + UINT msetrgb; /* # of SETRGBSTRING message (today not used) */ + RECT old3angle; /* last position of l-marker */ + RECT oldcross; /* last position of color/satuation marker */ + BOOL updating; /* to prevent recursive WM_COMMAND/EN_UPDATE processing */ + int h; + int s; + int l; /* for temporary storing of hue,sat,lum */ + int capturedGraph; /* control mouse captured */ + RECT focusRect; /* rectangle last focused item */ + HWND hwndFocus; /* handle last focused item */ +} *LCCPRIV; + +/*********************************************************************** + * CC_WMInitDialog16 [internal] + */ +LONG CC_WMInitDialog16( HWND hDlg, WPARAM wParam, LPARAM lParam ) +{ + int i, res; + int r, g, b; + HWND hwnd; + RECT rect; + POINT point; + LCCPRIV lpp; + CHOOSECOLORW *ch32; + CHOOSECOLOR16 *ch16 = (CHOOSECOLOR16 *) lParam; + + TRACE("WM_INITDIALOG lParam=%08lX\n", lParam); + lpp = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct CCPRIVATE) ); + + if (ch16->lStructSize != sizeof(CHOOSECOLOR16) ) + { + HeapFree(GetProcessHeap(), 0, lpp); + EndDialog (hDlg, 0) ; + return FALSE; + } + ch32 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CHOOSECOLORW) ); + lpp->lpcc = ch32; + lpp->lpcc16 = ch16; + ch32->lStructSize = sizeof(CHOOSECOLORW); + ch32->hwndOwner = HWND_32(ch16->hwndOwner); + /* Should be an HINSTANCE but MS made a typo */ + ch32->hInstance = HWND_32(ch16->hInstance); + ch32->lpCustColors = MapSL(ch16->lpCustColors); + ch32->lpfnHook = (LPCCHOOKPROC) ch16->lpfnHook; /* only used as flag */ + ch32->Flags = ch16->Flags; + + SetWindowLongA(hDlg, DWL_USER, (LONG)lpp); + + if (!(lpp->lpcc->Flags & CC_SHOWHELP)) + ShowWindow( GetDlgItem(hDlg,0x40e), SW_HIDE); + lpp->msetrgb = RegisterWindowMessageA(SETRGBSTRINGA); + +#if 0 + cpos = MAKELONG(5,7); /* init */ + if (lpp->lpcc->Flags & CC_RGBINIT) + { + for (i = 0; i < 6; i++) + for (j = 0; j < 8; j++) + if (predefcolors[i][j] == lpp->lpcc->rgbResult) + { + cpos = MAKELONG(i,j); + goto found; + } + } + found: + /* FIXME: Draw_a_focus_rect & set_init_values */ +#endif + + GetWindowRect(hDlg, &lpp->fullsize); + if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN) + { + hwnd = GetDlgItem(hDlg, 0x2cf); + EnableWindow(hwnd, FALSE); + } + if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN) + { + rect = lpp->fullsize; + res = rect.bottom - rect.top; + hwnd = GetDlgItem(hDlg, 0x2c6); /* cut at left border */ + point.x = point.y = 0; + ClientToScreen(hwnd, &point); + ScreenToClient(hDlg,&point); + GetClientRect(hDlg, &rect); + point.x += GetSystemMetrics(SM_CXDLGFRAME); + SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER); + + for (i = 0x2bf; i < 0x2c5; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_HIDE); + for (i = 0x2d3; i < 0x2d9; i++) + ShowWindow( GetDlgItem(hDlg, i), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c6), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_HIDE); + ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE); + } + else + CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, NULL); + res = TRUE; + for (i = 0x2bf; i < 0x2c5; i++) + SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0); /* max 3 digits: xyz */ + if (CC_HookCallChk(lpp->lpcc)) + { + res = CallWindowProc16( (WNDPROC16)lpp->lpcc16->lpfnHook, + HWND_16(hDlg), WM_INITDIALOG, wParam, lParam); + } + + /* Set the initial values of the color chooser dialog */ + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b = GetBValue(lpp->lpcc->rgbResult); + + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + + /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */ + SetDlgItemInt(hDlg, 703, lpp->h, TRUE); + SetDlgItemInt(hDlg, 704, lpp->s, TRUE); + SetDlgItemInt(hDlg, 705, lpp->l, TRUE); + SetDlgItemInt(hDlg, 706, r, TRUE); + SetDlgItemInt(hDlg, 707, g, TRUE); + SetDlgItemInt(hDlg, 708, b, TRUE); + + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + + return res; +} + +/*********************************************************************** + * CC_WMCommand16 [internal] + */ +LRESULT CC_WMCommand16( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl ) +{ + int r, g, b, i, xx; + UINT cokmsg; + HDC hdc; + COLORREF *cr; + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + TRACE("CC_WMCommand wParam=%x lParam=%lx\n", wParam, lParam); + switch (wParam) + { + case 0x2c2: /* edit notify RGB */ + case 0x2c3: + case 0x2c4: + if (notifyCode == EN_UPDATE && !lpp->updating) + { + i = CC_CheckDigitsInEdit(hwndCtl, 255); + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b= GetBValue(lpp->lpcc->rgbResult); + xx = 0; + switch (wParam) + { + case 0x2c2: if ((xx = (i != r))) r = i; break; + case 0x2c3: if ((xx = (i != g))) g = i; break; + case 0x2c4: if ((xx = (i != b))) b = i; break; + } + if (xx) /* something has changed */ + { + lpp->lpcc->rgbResult = RGB(r, g, b); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + } + } + break; + + case 0x2bf: /* edit notify HSL */ + case 0x2c0: + case 0x2c1: + if (notifyCode == EN_UPDATE && !lpp->updating) + { + i = CC_CheckDigitsInEdit(hwndCtl , wParam == 0x2bf ? 239:240); + xx = 0; + switch (wParam) + { + case 0x2bf: if ((xx = ( i != lpp->h))) lpp->h = i; break; + case 0x2c0: if ((xx = ( i != lpp->s))) lpp->s = i; break; + case 0x2c1: if ((xx = ( i != lpp->l))) lpp->l = i; break; + } + if (xx) /* something has changed */ + { + r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l); + g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l); + b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l); + lpp->lpcc->rgbResult = RGB(r, g, b); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + } + } + break; + + case 0x2cf: + CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, &lpp->fullsize); + SetFocus( GetDlgItem(hDlg, 0x2bf)); + break; + + case 0x2c8: /* add colors ... column by column */ + cr = lpp->lpcc->lpCustColors; + cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult; + if (++lpp->nextuserdef == 16) + lpp->nextuserdef = 0; + CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors); + break; + + case 0x2c9: /* resulting color */ + hdc = GetDC(hDlg); + lpp->lpcc->rgbResult = GetNearestColor(hdc, lpp->lpcc->rgbResult); + ReleaseDC(hDlg, hdc); + CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult); + CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult); + r = GetRValue(lpp->lpcc->rgbResult); + g = GetGValue(lpp->lpcc->rgbResult); + b = GetBValue(lpp->lpcc->rgbResult); + lpp->h = CC_RGBtoHSL('H', r, g, b); + lpp->s = CC_RGBtoHSL('S', r, g, b); + lpp->l = CC_RGBtoHSL('L', r, g, b); + CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l); + CC_PaintCross(hDlg, lpp->h, lpp->s); + CC_PaintTriangle(hDlg, lpp->l); + break; + + case 0x40e: /* Help! */ /* The Beatles, 1965 ;-) */ + i = RegisterWindowMessageA(HELPMSGSTRINGA); + if (lpp->lpcc16) + { + if (lpp->lpcc->hwndOwner) + SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc16); + if ( CC_HookCallChk(lpp->lpcc)) + CallWindowProc16( (WNDPROC16) lpp->lpcc16->lpfnHook, + HWND_16(hDlg), WM_COMMAND, psh15, + (LPARAM)lpp->lpcc16); + } + break; + + case IDOK : + cokmsg = RegisterWindowMessageA(COLOROKSTRINGA); + if (lpp->lpcc16) + { + if (lpp->lpcc->hwndOwner) + if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc16)) + break; /* do NOT close */ + } + if (lpp->lpcc16) + { + BYTE *ptr = MapSL(lpp->lpcc16->lpCustColors); + memcpy(ptr, lpp->lpcc->lpCustColors, sizeof(COLORREF)*16); + lpp->lpcc16->rgbResult = lpp->lpcc->rgbResult; + } + EndDialog(hDlg, 1) ; + return TRUE ; + + case IDCANCEL : + EndDialog(hDlg, 0) ; + return TRUE ; + + } + return FALSE; +} + +/*********************************************************************** + * ColorDlgProc (COMMDLG.8) + */ +BOOL16 CALLBACK ColorDlgProc16( HWND16 hDlg16, UINT16 message, + WPARAM16 wParam, LONG lParam ) +{ + BOOL16 res; + HWND hDlg = HWND_32(hDlg16); + + LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER); + if (message != WM_INITDIALOG) + { + if (!lpp) + return FALSE; + res=0; + if (CC_HookCallChk(lpp->lpcc)) + res = CallWindowProc16( (WNDPROC16)lpp->lpcc16->lpfnHook, hDlg16, message, wParam, lParam); + if (res) + return res; + } + + /* FIXME: SetRGB message + if (message && message == msetrgb) + return HandleSetRGB(hDlg, lParam); + */ + + switch (message) + { + case WM_INITDIALOG: + return CC_WMInitDialog16(hDlg, wParam, lParam); + case WM_NCDESTROY: + DeleteDC(lpp->hdcMem); + DeleteObject(lpp->hbmMem); + HeapFree(GetProcessHeap(), 0, lpp->lpcc); + HeapFree(GetProcessHeap(), 0, lpp); + SetWindowLongA(hDlg, DWL_USER, 0L); /* we don't need it anymore */ + break; + case WM_COMMAND: + if (CC_WMCommand16(hDlg, wParam, lParam, + HIWORD(lParam), HWND_32(LOWORD(lParam)))) + return TRUE; + break; + case WM_PAINT: + if (CC_WMPaint(hDlg, wParam, lParam)) + return TRUE; + break; + case WM_LBUTTONDBLCLK: + if (CC_MouseCheckResultWindow(hDlg,lParam)) + return TRUE; + break; + case WM_MOUSEMOVE: + if (CC_WMMouseMove(hDlg, lParam)) + return TRUE; + break; + case WM_LBUTTONUP: /* FIXME: ClipCursor off (if in color graph)*/ + if (CC_WMLButtonUp(hDlg, wParam, lParam)) + return TRUE; + break; + case WM_LBUTTONDOWN:/* FIXME: ClipCursor on (if in color graph)*/ + if (CC_WMLButtonDown(hDlg, wParam, lParam)) + return TRUE; + break; + } + return FALSE ; +} + +/*********************************************************************** + * ChooseColor (COMMDLG.5) + */ +BOOL16 WINAPI ChooseColor16( LPCHOOSECOLOR16 lpChCol ) +{ + HINSTANCE16 hInst; + HANDLE16 hDlgTmpl16 = 0, hResource16 = 0; + HGLOBAL16 hGlobal16 = 0; + BOOL16 bRet = FALSE; + LPCVOID template; + FARPROC16 ptr; + + TRACE("ChooseColor\n"); + if (!lpChCol) return FALSE; + + if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE) + hDlgTmpl16 = lpChCol->hInstance; + else if (lpChCol->Flags & CC_ENABLETEMPLATE) + { + HANDLE16 hResInfo; + if (!(hResInfo = FindResource16(lpChCol->hInstance, + MapSL(lpChCol->lpTemplateName), + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl16 = LoadResource16(lpChCol->hInstance, hResInfo))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + hResource16 = hDlgTmpl16; + } + else + { + HRSRC hResInfo; + HGLOBAL hDlgTmpl32; + LPCVOID template32; + DWORD size; + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_COLOR", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo)) || + !(template32 = LockResource(hDlgTmpl32))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo); + hGlobal16 = GlobalAlloc16(0, size); + if (!hGlobal16) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + ERR("alloc failure for %ld bytes\n", size); + return FALSE; + } + template = GlobalLock16(hGlobal16); + if (!template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + ERR("global lock failure for %x handle\n", hDlgTmpl16); + GlobalFree16(hGlobal16); + return FALSE; + } + ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template); + hDlgTmpl16 = hGlobal16; + } + + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 8); + hInst = GetWindowLongA(HWND_32(lpChCol->hwndOwner), GWL_HINSTANCE); + bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChCol->hwndOwner, + (DLGPROC16) ptr, (DWORD)lpChCol); + if (hResource16) FreeResource16(hDlgTmpl16); + if (hGlobal16) + { + GlobalUnlock16(hGlobal16); + GlobalFree16(hGlobal16); + } + return bRet; +} diff --git a/reactos/lib/comdlg32/comdlg32.spec b/reactos/lib/comdlg32/comdlg32.spec new file mode 100644 index 00000000000..618ccd00266 --- /dev/null +++ b/reactos/lib/comdlg32/comdlg32.spec @@ -0,0 +1,25 @@ +@ stdcall ChooseColorA(ptr) +@ stdcall ChooseColorW(ptr) +@ stdcall ChooseFontA(ptr) +@ stdcall ChooseFontW(ptr) +@ stdcall CommDlgExtendedError() +@ stdcall FindTextA(ptr) +@ stdcall FindTextW(ptr) +@ stdcall GetFileTitleA(str ptr long) +@ stdcall GetFileTitleW(wstr ptr long) +@ stdcall GetOpenFileNameA(ptr) +@ stdcall GetOpenFileNameW(ptr) +@ stdcall GetSaveFileNameA(ptr) +@ stdcall GetSaveFileNameW(ptr) +@ stub LoadAlterBitmap +@ stdcall PageSetupDlgA(ptr) +@ stdcall PageSetupDlgW(ptr) +@ stdcall PrintDlgA(ptr) +@ stdcall PrintDlgExA(ptr) +@ stdcall PrintDlgExW(ptr) +@ stdcall PrintDlgW(ptr) +@ stdcall ReplaceTextA(ptr) +@ stdcall ReplaceTextW(ptr) +@ stub WantArrows +@ stub dwLBSubclass +@ stub dwOKSubclass diff --git a/reactos/lib/comdlg32/commdlg.spec b/reactos/lib/comdlg32/commdlg.spec new file mode 100644 index 00000000000..d551dc6cdeb --- /dev/null +++ b/reactos/lib/comdlg32/commdlg.spec @@ -0,0 +1,27 @@ +1 pascal -ret16 GetOpenFileName(segptr) GetOpenFileName16 +2 pascal -ret16 GetSaveFileName(segptr) GetSaveFileName16 +5 pascal -ret16 ChooseColor(ptr) ChooseColor16 +6 pascal FileOpenDlgProc(word word word long) FileOpenDlgProc16 +7 pascal FileSaveDlgProc(word word word long) FileSaveDlgProc16 +8 pascal ColorDlgProc(word word word long) ColorDlgProc16 +#9 pascal LOADALTERBITMAP exported, shared data +11 pascal -ret16 FindText(segptr) FindText16 +12 pascal -ret16 ReplaceText(segptr) ReplaceText16 +13 pascal FindTextDlgProc(word word word long) FindTextDlgProc16 +14 pascal ReplaceTextDlgProc(word word word long) ReplaceTextDlgProc16 +15 pascal -ret16 ChooseFont(ptr) ChooseFont16 +16 pascal -ret16 FormatCharDlgProc(word word word long) FormatCharDlgProc16 +18 pascal -ret16 FontStyleEnumProc(ptr ptr word long) FontStyleEnumProc16 +19 pascal -ret16 FontFamilyEnumProc(ptr ptr word long) FontFamilyEnumProc16 +20 pascal -ret16 PrintDlg(ptr) PrintDlg16 +21 pascal PrintDlgProc(word word word long) PrintDlgProc16 +22 pascal PrintSetupDlgProc(word word word long) PrintSetupDlgProc16 +#23 pascal EDITINTEGERONLY exported, shared data +#25 pascal WANTARROWS exported, shared data +26 pascal CommDlgExtendedError() CommDlgExtendedError +27 pascal -ret16 GetFileTitle(str ptr word) GetFileTitle16 +#28 pascal WEP exported, shared data +#29 pascal DWLBSUBCLASS exported, shared data +#30 pascal DWUPARROWHACK exported, shared data +#31 pascal DWOKSUBCLASS exported, shared data +32 pascal DllEntryPoint(long word word word long word) COMMDLG_DllEntryPoint diff --git a/reactos/lib/comdlg32/filedlg.c b/reactos/lib/comdlg32/filedlg.c new file mode 100644 index 00000000000..9fff80d07f7 --- /dev/null +++ b/reactos/lib/comdlg32/filedlg.c @@ -0,0 +1,3283 @@ +/* + * COMMDLG - File Open Dialogs Win95 look and feel + * + * Copyright 1999 Francois Boisvert + * Copyright 1999, 2000 Juergen Schmied + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * FIXME: The whole concept of handling unicode is badly broken. + * many hook-messages expect a pointer to a + * OPENFILENAMEA or W structure. With the current architecture + * we would have to convert the beast at every call to a hook. + * we have to find a better solution but it would likely cause + * a complete rewrite after which we should handle the + * OPENFILENAME structure without any converting (jsch). + * + * FIXME: any hook gets a OPENFILENAMEA structure + * + * FIXME: CDN_FILEOK is wrong implemented, other CDN_ messages likely too + * + * FIXME: old style hook messages are not implemented (except FILEOKSTRING) + * + * FIXME: lpstrCustomFilter not handled + * + * FIXME: if the size of lpstrFile (nMaxFile) is too small the first + * two bytes of lpstrFile should contain the needed size + * + * FIXME: algorithm for selecting the initial directory is too simple + * + * FIXME: add to recent docs + * + * FIXME: flags not implemented: OFN_CREATEPROMPT, OFN_DONTADDTORECENT, + * OFN_ENABLEINCLUDENOTIFY, OFN_ENABLESIZING, + * OFN_NODEREFERENCELINKS, OFN_NOREADONLYRETURN, + * OFN_NOTESTFILECREATE, OFN_USEMONIKERS + * + * FIXME: lCustData for lpfnHook (WM_INITDIALOG) + * + * + */ + +#include "config.h" +#include "wine/port.h" + +#include +#include +#include +#include +#include + +#define NONAMELESSUNION +#define NONAMELESSSTRUCT +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "winternl.h" +#include "winnls.h" +#include "wine/unicode.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "dlgs.h" +#include "cdlg.h" +#include "wine/debug.h" +#include "cderr.h" +#include "shellapi.h" +#include "shlguid.h" +#include "shlobj.h" +#include "filedlgbrowser.h" +#include "shlwapi.h" + +#include "ros.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#define UNIMPLEMENTED_FLAGS \ +(OFN_CREATEPROMPT | OFN_DONTADDTORECENT |\ +OFN_ENABLEINCLUDENOTIFY | OFN_ENABLESIZING |\ +OFN_NODEREFERENCELINKS | OFN_NOREADONLYRETURN |\ +OFN_NOTESTFILECREATE /*| OFN_USEMONIKERS*/) + +#define IsHooked(fodInfos) \ + ((fodInfos->ofnInfos->Flags & OFN_ENABLEHOOK) && fodInfos->ofnInfos->lpfnHook) +/*********************************************************************** + * Data structure and global variables + */ +typedef struct SFolder +{ + int m_iImageIndex; /* Index of picture in image list */ + HIMAGELIST hImgList; + int m_iIndent; /* Indentation index */ + LPITEMIDLIST pidlItem; /* absolute pidl of the item */ + +} SFOLDER,*LPSFOLDER; + +typedef struct tagLookInInfo +{ + int iMaxIndentation; + UINT uSelectedItem; +} LookInInfos; + + +/*********************************************************************** + * Defines and global variables + */ + +/* Draw item constant */ +#define ICONWIDTH 18 +#define XTEXTOFFSET 3 + +/* AddItem flags*/ +#define LISTEND -1 + +/* SearchItem methods */ +#define SEARCH_PIDL 1 +#define SEARCH_EXP 2 +#define ITEM_NOTFOUND -1 + +/* Undefined windows message sent by CreateViewObject*/ +#define WM_GETISHELLBROWSER WM_USER+7 + +/* NOTE + * Those macros exist in windowsx.h. However, you can't really use them since + * they rely on the UNICODE defines and can't be used inside Wine itself. + */ + +/* Combo box macros */ +#define CBAddString(hwnd,str) \ + SendMessageA(hwnd,CB_ADDSTRING,0,(LPARAM)str); +#define CBAddStringW(hwnd,str) \ + SendMessageW(hwnd,CB_ADDSTRING,0,(LPARAM)str); + +#define CBInsertString(hwnd,str,pos) \ + SendMessageA(hwnd,CB_INSERTSTRING,(WPARAM)pos,(LPARAM)str); + +#define CBDeleteString(hwnd,pos) \ + SendMessageA(hwnd,CB_DELETESTRING,(WPARAM)pos,0); + +#define CBSetItemDataPtr(hwnd,iItemId,dataPtr) \ + SendMessageA(hwnd,CB_SETITEMDATA,(WPARAM)iItemId,(LPARAM)dataPtr); + +#define CBGetItemDataPtr(hwnd,iItemId) \ + SendMessageA(hwnd,CB_GETITEMDATA,(WPARAM)iItemId,0) + +#define CBGetLBText(hwnd,iItemId,str) \ + SendMessageA(hwnd,CB_GETLBTEXT,(WPARAM)iItemId,(LPARAM)str); + +#define CBGetCurSel(hwnd) \ + SendMessageA(hwnd,CB_GETCURSEL,0,0); + +#define CBSetCurSel(hwnd,pos) \ + SendMessageA(hwnd,CB_SETCURSEL,(WPARAM)pos,0); + +#define CBGetCount(hwnd) \ + SendMessageA(hwnd,CB_GETCOUNT,0,0); +#define CBShowDropDown(hwnd,show) \ + SendMessageA(hwnd,CB_SHOWDROPDOWN,(WPARAM)show,0); +#define CBSetItemHeight(hwnd,index,height) \ + SendMessageA(hwnd,CB_SETITEMHEIGHT,(WPARAM)index,(LPARAM)height); + +#define CBSetExtendedUI(hwnd,flag) \ + SendMessageA(hwnd,CB_SETEXTENDEDUI,(WPARAM)(flag),0) + +const char *FileOpenDlgInfosStr = "FileOpenDlgInfos"; /* windows property description string */ +const char *LookInInfosStr = "LookInInfos"; /* LOOKIN combo box property */ + +/*********************************************************************** + * Prototypes + */ + +/* Internal functions used by the dialog */ +static LRESULT FILEDLG95_FillControls(HWND hwnd, WPARAM wParam, LPARAM lParam); +static LRESULT FILEDLG95_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam); +static LRESULT FILEDLG95_OnWMGetIShellBrowser(HWND hwnd); + BOOL FILEDLG95_OnOpen(HWND hwnd); +static LRESULT FILEDLG95_InitControls(HWND hwnd); +static void FILEDLG95_Clean(HWND hwnd); + +/* Functions used by the shell navigation */ +static LRESULT FILEDLG95_SHELL_Init(HWND hwnd); +static BOOL FILEDLG95_SHELL_UpFolder(HWND hwnd); +static BOOL FILEDLG95_SHELL_ExecuteCommand(HWND hwnd, LPCSTR lpVerb); +static void FILEDLG95_SHELL_Clean(HWND hwnd); +static BOOL FILEDLG95_SHELL_BrowseToDesktop(HWND hwnd); + +/* Functions used by the filetype combo box */ +static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd); +static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode); +static int FILEDLG95_FILETYPE_SearchExt(HWND hwnd,LPCWSTR lpstrExt); +static void FILEDLG95_FILETYPE_Clean(HWND hwnd); + +/* Functions used by the Look In combo box */ +static HRESULT FILEDLG95_LOOKIN_Init(HWND hwndCombo); +static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct); +static BOOL FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode); +static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId); +static int FILEDLG95_LOOKIN_SearchItem(HWND hwnd,WPARAM searchArg,int iSearchMethod); +static int FILEDLG95_LOOKIN_InsertItemAfterParent(HWND hwnd,LPITEMIDLIST pidl); +static int FILEDLG95_LOOKIN_RemoveMostExpandedItem(HWND hwnd); + int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl); +static void FILEDLG95_LOOKIN_Clean(HWND hwnd); + +/* Miscellaneous tool functions */ +HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName); +HRESULT GetFileName(HWND hwnd, LPITEMIDLIST pidl, LPSTR lpstrFileName); +IShellFolder* GetShellFolderFromPidl(LPITEMIDLIST pidlAbs); +LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl); +LPITEMIDLIST GetPidlFromName(IShellFolder *psf,LPWSTR lpcstrFileName); + +/* Shell memory allocation */ +static void *MemAlloc(UINT size); +static void MemFree(void *mem); + +BOOL WINAPI GetFileName95(FileOpenDlgInfos *fodInfos); +INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode); +HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCount, UINT sizeUsed); +static BOOL BrowseSelectedFolder(HWND hwnd); + +/*********************************************************************** + * GetFileName95 + * + * Creates an Open common dialog box that lets the user select + * the drive, directory, and the name of a file or set of files to open. + * + * IN : The FileOpenDlgInfos structure associated with the dialog + * OUT : TRUE on success + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + */ +BOOL WINAPI GetFileName95(FileOpenDlgInfos *fodInfos) +{ + + LRESULT lRes; + LPCVOID template; + HRSRC hRes; + HANDLE hDlgTmpl = 0; + + /* test for missing functionality */ + if (fodInfos->ofnInfos->Flags & UNIMPLEMENTED_FLAGS) + { + FIXME("Flags 0x%08lx not yet implemented\n", + fodInfos->ofnInfos->Flags & UNIMPLEMENTED_FLAGS); + } + + /* Create the dialog from a template */ + + if(!(hRes = FindResourceA(COMDLG32_hInstance,MAKEINTRESOURCEA(NEWFILEOPENORD),(LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hRes )) || + !(template = LockResource( hDlgTmpl ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + + /* old style hook messages */ + if (IsHooked(fodInfos)) + { + fodInfos->HookMsg.fileokstring = RegisterWindowMessageA(FILEOKSTRINGA); + fodInfos->HookMsg.lbselchstring = RegisterWindowMessageA(LBSELCHSTRINGA); + fodInfos->HookMsg.helpmsgstring = RegisterWindowMessageA(HELPMSGSTRINGA); + fodInfos->HookMsg.sharevistring = RegisterWindowMessageA(SHAREVISTRINGA); + } + + lRes = DialogBoxIndirectParamA(COMDLG32_hInstance, + (LPDLGTEMPLATEA) template, + fodInfos->ofnInfos->hwndOwner, + FileOpenDlgProc95, + (LPARAM) fodInfos); + + /* Unable to create the dialog */ + if( lRes == -1) + return FALSE; + + return lRes; +} + +/*********************************************************************** + * GetFileDialog95A + * + * Call GetFileName95 with this structure and clean the memory. + * + * IN : The OPENFILENAMEA initialisation structure passed to + * GetOpenFileNameA win api function (see filedlg.c) + */ +BOOL WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType) +{ + BOOL ret; + FileOpenDlgInfos fodInfos; + LPSTR lpstrSavDir = NULL; + LPWSTR title = NULL; + LPWSTR defext = NULL; + LPWSTR filter = NULL; + LPWSTR customfilter = NULL; + + /* Initialize FileOpenDlgInfos structure */ + ZeroMemory(&fodInfos, sizeof(FileOpenDlgInfos)); + + /* Pass in the original ofn */ + fodInfos.ofnInfos = ofn; + + /* save current directory */ + if (ofn->Flags & OFN_NOCHANGEDIR) + { + lpstrSavDir = MemAlloc(MAX_PATH); + GetCurrentDirectoryA(MAX_PATH, lpstrSavDir); + } + + fodInfos.unicode = FALSE; + + /* convert all the input strings to unicode */ + if(ofn->lpstrInitialDir) + { + DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrInitialDir, -1, NULL, 0 ); + fodInfos.initdir = MemAlloc((len+1)*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrInitialDir, -1, fodInfos.initdir, len); + } + else + fodInfos.initdir = NULL; + + if(ofn->lpstrFile) + { + fodInfos.filename = MemAlloc(ofn->nMaxFile*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFile, -1, fodInfos.filename, ofn->nMaxFile); + } + else + fodInfos.filename = NULL; + + if(ofn->lpstrDefExt) + { + DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrDefExt, -1, NULL, 0 ); + defext = MemAlloc((len+1)*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrDefExt, -1, defext, len); + } + fodInfos.defext = defext; + + if(ofn->lpstrTitle) + { + DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrTitle, -1, NULL, 0 ); + title = MemAlloc((len+1)*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrTitle, -1, title, len); + } + fodInfos.title = title; + + if (ofn->lpstrFilter) + { + LPCSTR s; + int n, len; + + /* filter is a list... title\0ext\0......\0\0 */ + s = ofn->lpstrFilter; + while (*s) s = s+strlen(s)+1; + s++; + n = s - ofn->lpstrFilter; + len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFilter, n, NULL, 0 ); + filter = MemAlloc(len*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFilter, n, filter, len ); + } + fodInfos.filter = filter; + + /* convert lpstrCustomFilter */ + if (ofn->lpstrCustomFilter) + { + LPCSTR s; + int n, len; + + /* filter is a list... title\0ext\0......\0\0 */ + s = ofn->lpstrCustomFilter; + while (*s) s = s+strlen(s)+1; + s++; + n = s - ofn->lpstrCustomFilter; + len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrCustomFilter, n, NULL, 0 ); + customfilter = MemAlloc(len*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, ofn->lpstrCustomFilter, n, customfilter, len ); + } + fodInfos.customfilter = customfilter; + + /* Initialize the dialog property */ + fodInfos.DlgInfos.dwDlgProp = 0; + fodInfos.DlgInfos.hwndCustomDlg = NULL; + + switch(iDlgType) + { + case OPEN_DIALOG : + ret = GetFileName95(&fodInfos); + break; + case SAVE_DIALOG : + fodInfos.DlgInfos.dwDlgProp |= FODPROP_SAVEDLG; + ret = GetFileName95(&fodInfos); + break; + default : + ret = 0; + } + + if (lpstrSavDir) + { + SetCurrentDirectoryA(lpstrSavDir); + MemFree(lpstrSavDir); + } + + if(title) + MemFree(title); + if(defext) + MemFree(defext); + if(filter) + MemFree(filter); + if(customfilter) + MemFree(customfilter); + if(fodInfos.initdir) + MemFree(fodInfos.initdir); + + if(fodInfos.filename) + MemFree(fodInfos.filename); + + TRACE("selected file: %s\n",ofn->lpstrFile); + + return ret; +} + +/*********************************************************************** + * GetFileDialog95W + * + * Copy the OPENFILENAMEW structure in a FileOpenDlgInfos structure. + * Call GetFileName95 with this structure and clean the memory. + * + * FIXME: lpstrCustomFilter has to be converted back + * + */ +BOOL WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType) +{ + BOOL ret; + FileOpenDlgInfos fodInfos; + LPSTR lpstrSavDir = NULL; + + /* Initialize FileOpenDlgInfos structure */ + ZeroMemory(&fodInfos, sizeof(FileOpenDlgInfos)); + + /* Pass in the original ofn */ + fodInfos.ofnInfos = (LPOPENFILENAMEA) ofn; + + fodInfos.title = ofn->lpstrTitle; + fodInfos.defext = ofn->lpstrDefExt; + fodInfos.filter = ofn->lpstrFilter; + fodInfos.customfilter = ofn->lpstrCustomFilter; + + /* convert string arguments, save others */ + if(ofn->lpstrFile) + { + fodInfos.filename = MemAlloc(ofn->nMaxFile*sizeof(WCHAR)); + strncpyW(fodInfos.filename,ofn->lpstrFile,ofn->nMaxFile); + } + else + fodInfos.filename = NULL; + + if(ofn->lpstrInitialDir) + { + DWORD len = strlenW(ofn->lpstrInitialDir); + fodInfos.initdir = MemAlloc((len+1)*sizeof(WCHAR)); + strcpyW(fodInfos.initdir,ofn->lpstrInitialDir); + } + else + fodInfos.initdir = NULL; + + /* save current directory */ + if (ofn->Flags & OFN_NOCHANGEDIR) + { + lpstrSavDir = MemAlloc(MAX_PATH); + GetCurrentDirectoryA(MAX_PATH, lpstrSavDir); + } + + fodInfos.unicode = TRUE; + + switch(iDlgType) + { + case OPEN_DIALOG : + ret = GetFileName95(&fodInfos); + break; + case SAVE_DIALOG : + fodInfos.DlgInfos.dwDlgProp |= FODPROP_SAVEDLG; + ret = GetFileName95(&fodInfos); + break; + default : + ret = 0; + } + + if (lpstrSavDir) + { + SetCurrentDirectoryA(lpstrSavDir); + MemFree(lpstrSavDir); + } + + /* restore saved IN arguments and convert OUT arguments back */ + MemFree(fodInfos.filename); + MemFree(fodInfos.initdir); + return ret; +} + +/*********************************************************************** + * ArrangeCtrlPositions [internal] + * + * NOTE: Do not change anything here without a lot of testing. + */ +static void ArrangeCtrlPositions(HWND hwndChildDlg, HWND hwndParentDlg, BOOL hide_help) +{ + HWND hwndChild, hwndStc32; + RECT rectParent, rectChild, rectStc32; + INT help_fixup = 0; + + /* Take into account if open as read only checkbox and help button + * are hidden + */ + if (hide_help) + { + RECT rectHelp, rectCancel; + GetWindowRect(GetDlgItem(hwndParentDlg, pshHelp), &rectHelp); + GetWindowRect(GetDlgItem(hwndParentDlg, IDCANCEL), &rectCancel); + /* subtract the height of the help button plus the space between + * the help button and the cancel button to the height of the dialog + */ + help_fixup = rectHelp.bottom - rectCancel.bottom; + } + + /* + There are two possibilities to add components to the default file dialog box. + + By default, all the new components are added below the standard dialog box (the else case). + + However, if there is a static text component with the stc32 id, a special case happens. + The x and y coordinates of stc32 indicate the top left corner where to place the standard file dialog box + in the window and the cx and cy indicate how to size the window. + Moreover, if the new component's coordinates are on the left of the stc32 , it is placed on the left + of the standard file dialog box. If they are above the stc32 component, it is placed above and so on.... + + */ + + GetClientRect(hwndParentDlg, &rectParent); + + /* when arranging controls we have to use fixed parent size */ + rectParent.bottom -= help_fixup; + + hwndStc32 = GetDlgItem(hwndChildDlg, stc32); + if (hwndStc32) + { + GetWindowRect(hwndStc32, &rectStc32); + MapWindowPoints(0, hwndChildDlg, (LPPOINT)&rectStc32, 2); + + /* set the size of the stc32 control according to the size of + * client area of the parent dialog + */ + SetWindowPos(hwndStc32, 0, + 0, 0, + rectParent.right, rectParent.bottom, + SWP_NOMOVE | SWP_NOZORDER); + } + else + SetRectEmpty(&rectStc32); + + /* this part moves controls of the child dialog */ + hwndChild = GetWindow(hwndChildDlg, GW_CHILD); + while (hwndChild) + { + if (hwndChild != hwndStc32) + { + GetWindowRect(hwndChild, &rectChild); + MapWindowPoints(0, hwndChildDlg, (LPPOINT)&rectChild, 2); + + /* move only if stc32 exist */ + if (hwndStc32 && rectChild.left > rectStc32.right) + { + /* move to the right of visible controls of the parent dialog */ + rectChild.left += rectParent.right; + rectChild.left -= rectStc32.right; + } + /* move even if stc32 doesn't exist */ + if (rectChild.top > rectStc32.bottom) + { + /* move below visible controls of the parent dialog */ + rectChild.top += rectParent.bottom; + rectChild.top -= rectStc32.bottom - rectStc32.top; + } + + SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top, + 0, 0, SWP_NOSIZE | SWP_NOZORDER); + } + hwndChild = GetWindow(hwndChild, GW_HWNDNEXT); + } + + /* this part moves controls of the parent dialog */ + hwndChild = GetWindow(hwndParentDlg, GW_CHILD); + while (hwndChild) + { + if (hwndChild != hwndChildDlg) + { + GetWindowRect(hwndChild, &rectChild); + MapWindowPoints(0, hwndParentDlg, (LPPOINT)&rectChild, 2); + + /* left,top of stc32 marks the position of controls + * from the parent dialog + */ + rectChild.left += rectStc32.left; + rectChild.top += rectStc32.top; + + SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top, + 0, 0, SWP_NOSIZE | SWP_NOZORDER); + } + hwndChild = GetWindow(hwndChild, GW_HWNDNEXT); + } + + /* calculate the size of the resulting dialog */ + + /* here we have to use original parent size */ + GetClientRect(hwndParentDlg, &rectParent); + GetClientRect(hwndChildDlg, &rectChild); + + if (hwndStc32) + { + if (rectParent.right > rectChild.right) + { + rectParent.right += rectChild.right; + rectParent.right -= rectStc32.right - rectStc32.left; + } + else + { + rectParent.right = rectChild.right; + } + + if (rectParent.bottom > rectChild.bottom) + { + rectParent.bottom += rectChild.bottom; + rectParent.bottom -= rectStc32.bottom - rectStc32.top; + } + else + { + rectParent.bottom = rectChild.bottom; + } + } + else + { + rectParent.bottom += rectChild.bottom; + } + + /* finally use fixed parent size */ + rectParent.bottom -= help_fixup; + + /* save the size of the parent's client area */ + rectChild.right = rectParent.right; + rectChild.bottom = rectParent.bottom; + + /* set the size of the parent dialog */ + AdjustWindowRectEx(&rectParent, GetWindowLongW(hwndParentDlg, GWL_STYLE), + FALSE, GetWindowLongW(hwndParentDlg, GWL_EXSTYLE)); + SetWindowPos(hwndParentDlg, 0, + 0, 0, + rectParent.right - rectParent.left, + rectParent.bottom - rectParent.top, + SWP_NOMOVE | SWP_NOZORDER); + + /* set the size of the child dialog */ + SetWindowPos(hwndChildDlg, HWND_BOTTOM, + 0, 0, rectChild.right, rectChild.bottom, SWP_NOACTIVATE); +} + +INT_PTR CALLBACK FileOpenDlgProcUserTemplate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + FileOpenDlgInfos *fodInfos; + +#if 0 + TRACE("0x%04x\n", uMsg); +#endif + + switch(uMsg) + { + case WM_INITDIALOG: + { + fodInfos = (FileOpenDlgInfos *)lParam; + lParam = (LPARAM) fodInfos->ofnInfos; + + if(fodInfos && IsHooked(fodInfos)) + return CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook,hwnd,uMsg,wParam,lParam); + return 0; + } + } + + fodInfos = (FileOpenDlgInfos *) GetPropA(GetParent(hwnd),FileOpenDlgInfosStr); + if(fodInfos && IsHooked(fodInfos)) + return CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook,hwnd,uMsg,wParam,lParam); + + return 0; +} + +HWND CreateTemplateDialog(FileOpenDlgInfos *fodInfos, HWND hwnd) +{ + LPCVOID template; + HRSRC hRes; + HANDLE hDlgTmpl = 0; + HWND hChildDlg = 0; + + TRACE("\n"); + + /* + * If OFN_ENABLETEMPLATEHANDLE is specified, the OPENFILENAME + * structure's hInstance parameter is not a HINSTANCE, but + * instead a pointer to a template resource to use. + */ + if (fodInfos->ofnInfos->Flags & (OFN_ENABLETEMPLATE | OFN_ENABLETEMPLATEHANDLE)) + { + HINSTANCE hinst; + if (fodInfos->ofnInfos->Flags & OFN_ENABLETEMPLATEHANDLE) + { + hinst = 0; + if( !(template = LockResource( fodInfos->ofnInfos->hInstance))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return NULL; + } + } + else + { + hinst = fodInfos->ofnInfos->hInstance; + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos; + hRes = FindResourceW( hinst, ofn->lpTemplateName, (LPWSTR)RT_DIALOG); + } + else + { + LPOPENFILENAMEA ofn = fodInfos->ofnInfos; + hRes = FindResourceA( hinst, ofn->lpTemplateName, (LPSTR)RT_DIALOG); + } + if (!hRes) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return NULL; + } + if (!(hDlgTmpl = LoadResource( hinst, hRes )) || + !(template = LockResource( hDlgTmpl ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return NULL; + } + } + hChildDlg= CreateDialogIndirectParamA(COMDLG32_hInstance, template, + hwnd, FileOpenDlgProcUserTemplate, (LPARAM)fodInfos); + if(hChildDlg) + { + ShowWindow(hChildDlg,SW_SHOW); + return hChildDlg; + } + } + else if( IsHooked(fodInfos)) + { + RECT rectHwnd; + struct { + DLGTEMPLATE tmplate; + WORD menu,class,title; + } temp; + GetClientRect(hwnd,&rectHwnd); + temp.tmplate.style = WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | DS_CONTROL | DS_3DLOOK; + temp.tmplate.dwExtendedStyle = 0; + temp.tmplate.cdit = 0; + temp.tmplate.x = 0; + temp.tmplate.y = 0; + temp.tmplate.cx = 0; + temp.tmplate.cy = 0; + temp.menu = temp.class = temp.title = 0; + + hChildDlg = CreateDialogIndirectParamA(COMDLG32_hInstance, &temp.tmplate, + hwnd, FileOpenDlgProcUserTemplate, (LPARAM)fodInfos); + + return hChildDlg; + } + return NULL; +} + +/*********************************************************************** +* SendCustomDlgNotificationMessage +* +* Send CustomDialogNotification (CDN_FIRST -- CDN_LAST) message to the custom template dialog +*/ + +HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwndParentDlg,FileOpenDlgInfosStr); + + TRACE("%p 0x%04x\n",hwndParentDlg, uCode); + + if(!fodInfos) return 0; + + if(fodInfos->unicode) + FIXME("sending OPENFILENAMEA structure. Hook is expecting OPENFILENAMEW!\n"); + + if(fodInfos->DlgInfos.hwndCustomDlg) + { + OFNOTIFYA ofnNotify; + HRESULT ret; + ofnNotify.hdr.hwndFrom=hwndParentDlg; + ofnNotify.hdr.idFrom=0; + ofnNotify.hdr.code = uCode; + ofnNotify.lpOFN = fodInfos->ofnInfos; + ofnNotify.pszFile = NULL; + TRACE("CALL NOTIFY for %x\n", uCode); + ret = SendMessageA(fodInfos->DlgInfos.hwndCustomDlg,WM_NOTIFY,0,(LPARAM)&ofnNotify); + TRACE("RET NOTIFY\n"); + return ret; + } + return TRUE; +} + +HRESULT FILEDLG95_Handle_GetFilePath(HWND hwnd, DWORD size, LPSTR buffer) +{ + UINT sizeUsed = 0, n, total; + LPWSTR lpstrFileList = NULL; + WCHAR lpstrCurrentDir[MAX_PATH]; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("CDM_GETFILEPATH:\n"); + + if ( ! (fodInfos->ofnInfos->Flags & OFN_EXPLORER ) ) + return -1; + + /* get path and filenames */ + SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir); + n = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); + + TRACE("path >%s< filespec >%s< %d files\n", + debugstr_w(lpstrCurrentDir),debugstr_w(lpstrFileList),n); + + total = WideCharToMultiByte(CP_ACP, 0, lpstrCurrentDir, -1, + NULL, 0, NULL, NULL); + total += WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, + NULL, 0, NULL, NULL); + + /* Prepend the current path */ + n = WideCharToMultiByte(CP_ACP, 0, lpstrCurrentDir, -1, + buffer, size, NULL, NULL); + + if(n %s\n",debugstr_a(buffer)); + + return total; +} + +HRESULT FILEDLG95_Handle_GetFileSpec(HWND hwnd, DWORD size, LPSTR buffer) +{ + UINT sizeUsed = 0; + LPWSTR lpstrFileList = NULL; + + TRACE("CDM_GETSPEC:\n"); + + FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); + WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, buffer, size, NULL, NULL); + MemFree(lpstrFileList); + + return sizeUsed; +} + +/*********************************************************************** +* FILEDLG95_HandleCustomDialogMessages +* +* Handle Custom Dialog Messages (CDM_FIRST -- CDM_LAST) messages +*/ +HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + char lpstrPath[MAX_PATH]; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + if(!fodInfos) return -1; + + switch(uMsg) + { + case CDM_GETFILEPATH: + return FILEDLG95_Handle_GetFilePath(hwnd, (UINT)wParam, (LPSTR)lParam); + + case CDM_GETFOLDERPATH: + TRACE("CDM_GETFOLDERPATH:\n"); + SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath); + if ((LPSTR)lParam!=NULL) + lstrcpynA((LPSTR)lParam,lpstrPath,(int)wParam); + return strlen(lpstrPath); + + case CDM_GETSPEC: + return FILEDLG95_Handle_GetFileSpec(hwnd, (UINT)wParam, (LPSTR)lParam); + + case CDM_SETCONTROLTEXT: + TRACE("CDM_SETCONTROLTEXT:\n"); + if ( 0 != lParam ) + SetDlgItemTextA( hwnd, (UINT) wParam, (LPSTR) lParam ); + return TRUE; + + case CDM_HIDECONTROL: + case CDM_SETDEFEXT: + FIXME("CDM_HIDECONTROL,CDM_SETCONTROLTEXT,CDM_SETDEFEXT not implemented\n"); + return -1; + } + return TRUE; +} + +/*********************************************************************** + * FileOpenDlgProc95 + * + * File open dialog procedure + */ +INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ +#if 0 + TRACE("0x%04x 0x%04x\n", hwnd, uMsg); +#endif + + switch(uMsg) + { + case WM_INITDIALOG: + { + FileOpenDlgInfos * fodInfos = (FileOpenDlgInfos *)lParam; + + /* Adds the FileOpenDlgInfos in the property list of the dialog + so it will be easily accessible through a GetPropA(...) */ + SetPropA(hwnd, FileOpenDlgInfosStr, (HANDLE) fodInfos); + + fodInfos->DlgInfos.hwndCustomDlg = + CreateTemplateDialog((FileOpenDlgInfos *)lParam, hwnd); + + FILEDLG95_InitControls(hwnd); + + if (fodInfos->DlgInfos.hwndCustomDlg) + ArrangeCtrlPositions(fodInfos->DlgInfos.hwndCustomDlg, hwnd, + (fodInfos->ofnInfos->Flags & (OFN_HIDEREADONLY | OFN_SHOWHELP)) == OFN_HIDEREADONLY); + + FILEDLG95_FillControls(hwnd, wParam, lParam); + + SendCustomDlgNotificationMessage(hwnd,CDN_INITDONE); + SendCustomDlgNotificationMessage(hwnd,CDN_FOLDERCHANGE); + SendCustomDlgNotificationMessage(hwnd,CDN_SELCHANGE); + return 0; + } + case WM_COMMAND: + return FILEDLG95_OnWMCommand(hwnd, wParam, lParam); + case WM_DRAWITEM: + { + switch(((LPDRAWITEMSTRUCT)lParam)->CtlID) + { + case IDC_LOOKIN: + FILEDLG95_LOOKIN_DrawItem((LPDRAWITEMSTRUCT) lParam); + return TRUE; + } + } + return FALSE; + + case WM_GETISHELLBROWSER: + return FILEDLG95_OnWMGetIShellBrowser(hwnd); + + case WM_DESTROY: + RemovePropA(hwnd, FileOpenDlgInfosStr); + return FALSE; + + case WM_NOTIFY: + { + LPNMHDR lpnmh = (LPNMHDR)lParam; + UINT stringId = -1; + + /* set up the button tooltips strings */ + if(TTN_GETDISPINFOA == lpnmh->code ) + { + LPNMTTDISPINFOA lpdi = (LPNMTTDISPINFOA)lParam; + switch(lpnmh->idFrom ) + { + /* Up folder button */ + case FCIDM_TB_UPFOLDER: + stringId = IDS_UPFOLDER; + break; + /* New folder button */ + case FCIDM_TB_NEWFOLDER: + stringId = IDS_NEWFOLDER; + break; + /* List option button */ + case FCIDM_TB_SMALLICON: + stringId = IDS_LISTVIEW; + break; + /* Details option button */ + case FCIDM_TB_REPORTVIEW: + stringId = IDS_REPORTVIEW; + break; + /* Desktop button */ + case FCIDM_TB_DESKTOP: + stringId = IDS_TODESKTOP; + break; + default: + stringId = 0; + } + lpdi->hinst = COMDLG32_hInstance; + lpdi->lpszText = (LPSTR) stringId; + } + return FALSE; + } + default : + if(uMsg >= CDM_FIRST && uMsg <= CDM_LAST) + return FILEDLG95_HandleCustomDialogMessages(hwnd, uMsg, wParam, lParam); + return FALSE; + } +} + +/*********************************************************************** + * FILEDLG95_InitControls + * + * WM_INITDIALOG message handler (before hook notification) + */ +static LRESULT FILEDLG95_InitControls(HWND hwnd) +{ + int win2000plus = 0; + int win98plus = 0; + int handledPath = FALSE; + OSVERSIONINFOA osVi; + const WCHAR szwSlash[] = { '\\', 0 }; + const WCHAR szwStar[] = { '*',0 }; + + TBBUTTON tbb[] = + { + {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 }, + {VIEW_PARENTFOLDER, FCIDM_TB_UPFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 }, + {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 }, + {VIEW_NEWFOLDER+1, FCIDM_TB_DESKTOP, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 }, + {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 }, + {VIEW_NEWFOLDER, FCIDM_TB_NEWFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 }, + {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 }, + {VIEW_LIST, FCIDM_TB_SMALLICON, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 }, + {VIEW_DETAILS, FCIDM_TB_REPORTVIEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 }, + }; + TBADDBITMAP tba[2]; + RECT rectTB; + RECT rectlook; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + tba[0].hInst = HINST_COMMCTRL; + tba[0].nID = IDB_VIEW_SMALL_COLOR; + tba[1].hInst = COMDLG32_hInstance; + tba[1].nID = 800; + + TRACE("%p\n", fodInfos); + + /* Get windows version emulating */ + osVi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); + GetVersionExA(&osVi); + if (osVi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { + win98plus = ((osVi.dwMajorVersion > 4) || ((osVi.dwMajorVersion == 4) && (osVi.dwMinorVersion > 0))); + } else if (osVi.dwPlatformId == VER_PLATFORM_WIN32_NT) { + win2000plus = (osVi.dwMajorVersion > 4); + if (win2000plus) win98plus = TRUE; + } + TRACE("Running on 2000+ %d, 98+ %d\n", win2000plus, win98plus); + + /* Get the hwnd of the controls */ + fodInfos->DlgInfos.hwndFileName = GetDlgItem(hwnd,IDC_FILENAME); + fodInfos->DlgInfos.hwndFileTypeCB = GetDlgItem(hwnd,IDC_FILETYPE); + fodInfos->DlgInfos.hwndLookInCB = GetDlgItem(hwnd,IDC_LOOKIN); + + GetWindowRect( fodInfos->DlgInfos.hwndLookInCB,&rectlook); + MapWindowPoints( 0, hwnd,(LPPOINT)&rectlook,2); + + /* construct the toolbar */ + GetWindowRect(GetDlgItem(hwnd,IDC_TOOLBARSTATIC),&rectTB); + MapWindowPoints( 0, hwnd,(LPPOINT)&rectTB,2); + + rectTB.right = rectlook.right + rectTB.right - rectTB.left; + rectTB.bottom = rectlook.top - 1 + rectTB.bottom - rectTB.top; + rectTB.left = rectlook.right; + rectTB.top = rectlook.top-1; + + fodInfos->DlgInfos.hwndTB = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, + WS_CHILD | WS_GROUP | WS_VISIBLE | WS_CLIPSIBLINGS | TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NORESIZE, + rectTB.left, rectTB.top, + rectTB.right - rectTB.left, rectTB.bottom - rectTB.top, + hwnd, (HMENU)IDC_TOOLBAR, COMDLG32_hInstance, NULL); + + SendMessageA(fodInfos->DlgInfos.hwndTB, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0); + +/* FIXME: use TB_LOADIMAGES when implemented */ +/* SendMessageA(fodInfos->DlgInfos.hwndTB, TB_LOADIMAGES, (WPARAM) IDB_VIEW_SMALL_COLOR, HINST_COMMCTRL);*/ + SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBITMAP, (WPARAM) 12, (LPARAM) &tba[0]); + SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBITMAP, (WPARAM) 1, (LPARAM) &tba[1]); + + SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBUTTONSA, (WPARAM) 9,(LPARAM) &tbb); + SendMessageA(fodInfos->DlgInfos.hwndTB, TB_AUTOSIZE, 0, 0); + + /* Set the window text with the text specified in the OPENFILENAME structure */ + if(fodInfos->title) + { + SetWindowTextW(hwnd,fodInfos->title); + } + else if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) + { + SetWindowTextA(hwnd,"Save"); + } + + /* Initialise the file name edit control */ + handledPath = FALSE; + TRACE("Before manipilation, file = %s, dir = %s\n", debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir)); + + if(fodInfos->filename) + { + /* 1. If win2000 or higher and filename contains a path, use it + in preference over the lpstrInitialDir */ + if (win2000plus && *fodInfos->filename && strpbrkW(fodInfos->filename, szwSlash)) { + WCHAR tmpBuf[MAX_PATH]; + WCHAR *nameBit; + DWORD result; + + result = GetFullPathNameW(fodInfos->filename, MAX_PATH, tmpBuf, &nameBit); + if (result) { + + /* nameBit is always shorter than the original filename */ + strcpyW(fodInfos->filename,nameBit); + + *nameBit = 0x00; + if (fodInfos->initdir == NULL) + MemFree(fodInfos->initdir); + fodInfos->initdir = MemAlloc((strlenW(tmpBuf) + 1)*sizeof(WCHAR)); + strcpyW(fodInfos->initdir, tmpBuf); + handledPath = TRUE; + TRACE("Value in Filename includes path, overriding InitialDir: %s, %s\n", + debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir)); + } + SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename); + + } else { + SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename); + } + } + + /* 2. (All platforms) If initdir is not null, then use it */ + if ((handledPath == FALSE) && (fodInfos->initdir!=NULL) && + (*fodInfos->initdir!=0x00)) + { + /* Work out the proper path as supplied one might be relative */ + /* (Here because supplying '.' as dir browses to My Computer) */ + if (handledPath==FALSE) { + WCHAR tmpBuf[MAX_PATH]; + WCHAR tmpBuf2[MAX_PATH]; + WCHAR *nameBit; + DWORD result; + + strcpyW(tmpBuf, fodInfos->initdir); + if (tmpBuf[strlenW(tmpBuf)-1] != '\\') { + strcatW(tmpBuf, szwSlash); + } + strcatW(tmpBuf, szwStar); + result = GetFullPathNameW(tmpBuf, MAX_PATH, tmpBuf2, &nameBit); + if (result) { + *nameBit = 0x00; + if (fodInfos->initdir) + MemFree(fodInfos->initdir); + fodInfos->initdir = MemAlloc((strlenW(tmpBuf2) + 1)*sizeof(WCHAR)); + strcpyW(fodInfos->initdir, tmpBuf2); + handledPath = TRUE; + TRACE("Value in InitDir changed to %s\n", debugstr_w(fodInfos->initdir)); + } + } + } + + if ((handledPath == FALSE) && ((fodInfos->initdir==NULL) || + (*fodInfos->initdir==0x00))) + { + /* 3. All except w2k+: if filename contains a path use it */ + if (!win2000plus && fodInfos->filename && + *fodInfos->filename && + strpbrkW(fodInfos->filename, szwSlash)) { + WCHAR tmpBuf[MAX_PATH]; + WCHAR *nameBit; + DWORD result; + + result = GetFullPathNameW(fodInfos->filename, MAX_PATH, + tmpBuf, &nameBit); + if (result) { + int len; + + /* nameBit is always shorter than the original filename */ + strcpyW(fodInfos->filename, nameBit); + *nameBit = 0x00; + + len = strlenW(tmpBuf); + if(fodInfos->initdir) + MemFree(fodInfos->initdir); + fodInfos->initdir = MemAlloc((len+1)*sizeof(WCHAR)); + strcpyW(fodInfos->initdir, tmpBuf); + + handledPath = TRUE; + TRACE("Value in Filename includes path, overriding initdir: %s, %s\n", + debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir)); + } + SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename); + } + + /* 4. win98+ and win2000+ if any files of specified filter types in + current directory, use it */ + if ( win98plus && handledPath == FALSE && + fodInfos->filter && *fodInfos->filter) { + + BOOL searchMore = TRUE; + LPCWSTR lpstrPos = fodInfos->filter; + WIN32_FIND_DATAW FindFileData; + HANDLE hFind; + + while (searchMore) + { + /* filter is a list... title\0ext\0......\0\0 */ + + /* Skip the title */ + if(! *lpstrPos) break; /* end */ + lpstrPos += strlenW(lpstrPos) + 1; + + /* See if any files exist in the current dir with this extension */ + if(! *lpstrPos) break; /* end */ + + hFind = FindFirstFileW(lpstrPos, &FindFileData); + + if (hFind == INVALID_HANDLE_VALUE) { + /* None found - continue search */ + lpstrPos += strlenW(lpstrPos) + 1; + + } else { + searchMore = FALSE; + + if(fodInfos->initdir) + MemFree(fodInfos->initdir); + fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR)); + GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir); + + handledPath = TRUE; + TRACE("No initial dir specified, but files of type %s found in current, so using it\n", + debugstr_w(lpstrPos)); + break; + } + } + } + + /* 5. Win2000+: FIXME: Next, Recently used? Not sure how windows does this */ + + /* 6. Win98+ and 2000+: Use personal files dir, others use current dir */ + if (handledPath == FALSE && (win2000plus || win98plus)) { + fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR)); + + if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_PERSONAL, 0, 0, fodInfos->initdir))) + { + if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, fodInfos->initdir))) + { + /* last fallback */ + GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir); + TRACE("No personal or desktop dir, using cwd as failsafe: %s\n", debugstr_w(fodInfos->initdir)); + } else { + TRACE("No personal dir, using desktop instead: %s\n", debugstr_w(fodInfos->initdir)); + } + } else { + TRACE("No initial dir specified, using personal files dir of %s\n", debugstr_w(fodInfos->initdir)); + } + handledPath = TRUE; + } else if (handledPath==FALSE) { + fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR)); + GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir); + handledPath = TRUE; + TRACE("No initial dir specified, using current dir of %s\n", debugstr_w(fodInfos->initdir)); + } + } + SetFocus(GetDlgItem(hwnd, IDC_FILENAME)); + TRACE("After manipulation, file = %s, dir = %s\n", debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir)); + + /* Must the open as read only check box be checked ?*/ + if(fodInfos->ofnInfos->Flags & OFN_READONLY) + { + SendDlgItemMessageA(hwnd,IDC_OPENREADONLY,BM_SETCHECK,(WPARAM)TRUE,0); + } + + /* Must the open as read only check box be hidden? */ + if(fodInfos->ofnInfos->Flags & OFN_HIDEREADONLY) + { + ShowWindow(GetDlgItem(hwnd,IDC_OPENREADONLY),SW_HIDE); + EnableWindow(GetDlgItem(hwnd, IDC_OPENREADONLY), FALSE); + } + + /* Must the help button be hidden? */ + if (!(fodInfos->ofnInfos->Flags & OFN_SHOWHELP)) + { + ShowWindow(GetDlgItem(hwnd, pshHelp), SW_HIDE); + EnableWindow(GetDlgItem(hwnd, pshHelp), FALSE); + } + + /* Resize the height, if open as read only checkbox ad help button + are hidden and we are not using a custom template nor a customDialog + */ + if ( (fodInfos->ofnInfos->Flags & OFN_HIDEREADONLY) && + (!(fodInfos->ofnInfos->Flags & + (OFN_SHOWHELP|OFN_ENABLETEMPLATE|OFN_ENABLETEMPLATEHANDLE))) && + (!fodInfos->DlgInfos.hwndCustomDlg )) + { + RECT rectDlg, rectHelp, rectCancel; + GetWindowRect(hwnd, &rectDlg); + GetWindowRect(GetDlgItem(hwnd, pshHelp), &rectHelp); + GetWindowRect(GetDlgItem(hwnd, IDCANCEL), &rectCancel); + /* subtract the height of the help button plus the space between + the help button and the cancel button to the height of the dialog */ + SetWindowPos(hwnd, 0, 0, 0, rectDlg.right-rectDlg.left, + (rectDlg.bottom-rectDlg.top) - (rectHelp.bottom - rectCancel.bottom), + SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER); + } + /* change Open to Save FIXME: use resources */ + if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) + { + SetDlgItemTextA(hwnd,IDOK,"&Save"); + SetDlgItemTextA(hwnd,IDC_LOOKINSTATIC,"Save &in"); + } + return 0; +} + +/*********************************************************************** + * FILEDLG95_FillControls + * + * WM_INITDIALOG message handler (after hook notification) + */ +static LRESULT FILEDLG95_FillControls(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + LPITEMIDLIST pidlItemId = NULL; + + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) lParam; + + TRACE("dir=%s file=%s\n", + debugstr_w(fodInfos->initdir), debugstr_w(fodInfos->filename)); + + /* Get the initial directory pidl */ + + if(!(pidlItemId = GetPidlFromName(fodInfos->Shell.FOIShellFolder,fodInfos->initdir))) + { + WCHAR path[MAX_PATH]; + + GetCurrentDirectoryW(MAX_PATH,path); + pidlItemId = GetPidlFromName(fodInfos->Shell.FOIShellFolder, path); + } + + /* Initialise shell objects */ + FILEDLG95_SHELL_Init(hwnd); + + /* Initialize the Look In combo box */ + FILEDLG95_LOOKIN_Init(fodInfos->DlgInfos.hwndLookInCB); + + /* Initialize the filter combo box */ + FILEDLG95_FILETYPE_Init(hwnd); + + /* Browse to the initial directory */ + IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser,pidlItemId, SBSP_ABSOLUTE); + + /* Free pidlItem memory */ + COMDLG32_SHFree(pidlItemId); + + return TRUE; +} +/*********************************************************************** + * FILEDLG95_Clean + * + * Regroups all the cleaning functions of the filedlg + */ +void FILEDLG95_Clean(HWND hwnd) +{ + FILEDLG95_FILETYPE_Clean(hwnd); + FILEDLG95_LOOKIN_Clean(hwnd); + FILEDLG95_SHELL_Clean(hwnd); +} +/*********************************************************************** + * FILEDLG95_OnWMCommand + * + * WM_COMMAND message handler + */ +static LRESULT FILEDLG95_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + WORD wNotifyCode = HIWORD(wParam); /* notification code */ + WORD wID = LOWORD(wParam); /* item, control, or accelerator identifier */ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + switch(wID) + { + /* OK button */ + case IDOK: + FILEDLG95_OnOpen(hwnd); + break; + /* Cancel button */ + case IDCANCEL: + FILEDLG95_Clean(hwnd); + EndDialog(hwnd, FALSE); + break; + /* Filetype combo box */ + case IDC_FILETYPE: + FILEDLG95_FILETYPE_OnCommand(hwnd,wNotifyCode); + break; + /* LookIn combo box */ + case IDC_LOOKIN: + FILEDLG95_LOOKIN_OnCommand(hwnd,wNotifyCode); + break; + + /* --- toolbar --- */ + /* Up folder button */ + case FCIDM_TB_UPFOLDER: + FILEDLG95_SHELL_UpFolder(hwnd); + break; + /* New folder button */ + case FCIDM_TB_NEWFOLDER: + FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_NEWFOLDERA); + break; + /* List option button */ + case FCIDM_TB_SMALLICON: + FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_VIEWLISTA); + break; + /* Details option button */ + case FCIDM_TB_REPORTVIEW: + FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_VIEWDETAILSA); + break; + /* Details option button */ + case FCIDM_TB_DESKTOP: + FILEDLG95_SHELL_BrowseToDesktop(hwnd); + break; + + case IDC_FILENAME: + break; + + } + /* Do not use the listview selection anymore */ + fodInfos->DlgInfos.dwDlgProp &= ~FODPROP_USEVIEW; + return 0; +} + +/*********************************************************************** + * FILEDLG95_OnWMGetIShellBrowser + * + * WM_GETISHELLBROWSER message handler + */ +static LRESULT FILEDLG95_OnWMGetIShellBrowser(HWND hwnd) +{ + + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + SetWindowLongA(hwnd,DWL_MSGRESULT,(LONG)fodInfos->Shell.FOIShellBrowser); + + return TRUE; +} + + +/*********************************************************************** + * FILEDLG95_SendFileOK + * + * Sends the CDN_FILEOK notification if required + * + * RETURNS + * TRUE if the dialog should close + * FALSE if the dialog should not be closed + */ +static BOOL FILEDLG95_SendFileOK( HWND hwnd, FileOpenDlgInfos *fodInfos ) +{ + /* ask the hook if we can close */ + if(IsHooked(fodInfos)) + { + TRACE("---\n"); + /* First send CDN_FILEOK as MSDN doc says */ + SendCustomDlgNotificationMessage(hwnd,CDN_FILEOK); + + /* fodInfos->ofnInfos points to an ASCII or UNICODE structure as appropriate */ + CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook, + fodInfos->DlgInfos.hwndCustomDlg, + fodInfos->HookMsg.fileokstring, 0, (LPARAM)fodInfos->ofnInfos); + if (GetWindowLongA(fodInfos->DlgInfos.hwndCustomDlg, DWL_MSGRESULT)) + { + TRACE("canceled\n"); + return FALSE; + } + } + return TRUE; +} + +/*********************************************************************** + * FILEDLG95_OnOpenMultipleFiles + * + * Handles the opening of multiple files. + * + * FIXME + * check destination buffer size + */ +BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCount, UINT sizeUsed) +{ + WCHAR lpstrPathSpec[MAX_PATH] = {0}; + UINT nCount, nSizePath; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos; + ofn->lpstrFile[0] = '\0'; + } + else + { + LPOPENFILENAMEA ofn = fodInfos->ofnInfos; + ofn->lpstrFile[0] = '\0'; + } + + SHGetPathFromIDListW( fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathSpec ); + + if ( !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE) && + ( fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST) && + ! ( fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG ) ) + { + LPWSTR lpstrTemp = lpstrFileList; + + for ( nCount = 0; nCount < nFileCount; nCount++ ) + { + LPITEMIDLIST pidl; + + pidl = GetPidlFromName(fodInfos->Shell.FOIShellFolder, lpstrTemp); + if (!pidl) + { + WCHAR lpstrNotFound[100]; + WCHAR lpstrMsg[100]; + WCHAR tmp[400]; + WCHAR nl[] = {'\n',0}; + + LoadStringW(COMDLG32_hInstance, IDS_FILENOTFOUND, lpstrNotFound, 100); + LoadStringW(COMDLG32_hInstance, IDS_VERIFYFILE, lpstrMsg, 100); + + strcpyW(tmp, lpstrTemp); + strcatW(tmp, nl); + strcatW(tmp, lpstrNotFound); + strcatW(tmp, nl); + strcatW(tmp, lpstrMsg); + + MessageBoxW(hwnd, tmp, fodInfos->title, MB_OK | MB_ICONEXCLAMATION); + return FALSE; + } + + /* move to the next file in the list of files */ + lpstrTemp += strlenW(lpstrTemp) + 1; + COMDLG32_SHFree(pidl); + } + } + + nSizePath = strlenW(lpstrPathSpec) + 1; + if ( !(fodInfos->ofnInfos->Flags & OFN_EXPLORER) ) + { + /* For "oldstyle" dialog the components have to + be spearated by blanks (not '\0'!) and short + filenames have to be used! */ + FIXME("Components have to be separated by blanks"); + } + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos; + strcpyW( ofn->lpstrFile, lpstrPathSpec); + memcpy( ofn->lpstrFile + nSizePath, lpstrFileList, sizeUsed*sizeof(WCHAR) ); + } + else + { + LPOPENFILENAMEA ofn = fodInfos->ofnInfos; + + if (ofn->lpstrFile != NULL) + { + WideCharToMultiByte(CP_ACP, 0, lpstrPathSpec, -1, + ofn->lpstrFile, ofn->nMaxFile, NULL, NULL); + if (ofn->nMaxFile > nSizePath) + { + WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, + ofn->lpstrFile + nSizePath, + ofn->nMaxFile - nSizePath, NULL, NULL); + } + } + } + + fodInfos->ofnInfos->nFileOffset = nSizePath + 1; + fodInfos->ofnInfos->nFileExtension = 0; + + if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) ) + return FALSE; + + /* clean and exit */ + FILEDLG95_Clean(hwnd); + return EndDialog(hwnd,TRUE); +} + +/*********************************************************************** + * FILEDLG95_OnOpen + * + * Ok button WM_COMMAND message handler + * + * If the function succeeds, the return value is nonzero. + */ +#define ONOPEN_BROWSE 1 +#define ONOPEN_OPEN 2 +#define ONOPEN_SEARCH 3 +static void FILEDLG95_OnOpenMessage(HWND hwnd, int idCaption, int idText) +{ + char strMsgTitle[MAX_PATH]; + char strMsgText [MAX_PATH]; + if (idCaption) + LoadStringA(COMDLG32_hInstance, idCaption, strMsgTitle, sizeof(strMsgTitle)); + else + strMsgTitle[0] = '\0'; + LoadStringA(COMDLG32_hInstance, idText, strMsgText, sizeof(strMsgText)); + MessageBoxA(hwnd,strMsgText, strMsgTitle, MB_OK | MB_ICONHAND); +} + +BOOL FILEDLG95_OnOpen(HWND hwnd) +{ + LPWSTR lpstrFileList; + UINT nFileCount = 0; + UINT sizeUsed = 0; + BOOL ret = TRUE; + WCHAR lpstrPathAndFile[MAX_PATH]; + WCHAR lpstrTemp[MAX_PATH]; + LPSHELLFOLDER lpsf = NULL; + int nOpenAction; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("hwnd=%p\n", hwnd); + + /* get the files from the edit control */ + nFileCount = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); + + /* try if the user selected a folder in the shellview */ + if(nFileCount == 0) + { + BrowseSelectedFolder(hwnd); + return FALSE; + } + + if(nFileCount > 1) + { + ret = FILEDLG95_OnOpenMultipleFiles(hwnd, lpstrFileList, nFileCount, sizeUsed); + goto ret; + } + + TRACE("count=%u len=%u file=%s\n", nFileCount, sizeUsed, debugstr_w(lpstrFileList)); + +/* + Step 1: Build a complete path name from the current folder and + the filename or path in the edit box. + Special cases: + - the path in the edit box is a root path + (with or without drive letter) + - the edit box contains ".." (or a path with ".." in it) +*/ + + /* Get the current directory name */ + if (!SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathAndFile)) + { + /* we are in a special folder, default to desktop */ + if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, lpstrPathAndFile))) + { + /* last fallback */ + GetCurrentDirectoryW(MAX_PATH, lpstrPathAndFile); + } + } + PathAddBackslashW(lpstrPathAndFile); + + TRACE("current directory=%s\n", debugstr_w(lpstrPathAndFile)); + + /* if the user specifyed a fully qualified path use it */ + if(PathIsRelativeW(lpstrFileList)) + { + strcatW(lpstrPathAndFile, lpstrFileList); + } + else + { + /* does the path have a drive letter? */ + if (PathGetDriveNumberW(lpstrFileList) == -1) + strcpyW(lpstrPathAndFile+2, lpstrFileList); + else + strcpyW(lpstrPathAndFile, lpstrFileList); + } + + /* resolve "." and ".." */ + PathCanonicalizeW(lpstrTemp, lpstrPathAndFile ); + strcpyW(lpstrPathAndFile, lpstrTemp); + TRACE("canon=%s\n", debugstr_w(lpstrPathAndFile)); + + MemFree(lpstrFileList); + +/* + Step 2: here we have a cleaned up path + + We have to parse the path step by step to see if we have to browse + to a folder if the path points to a directory or the last + valid element is a directory. + + valid variables: + lpstrPathAndFile: cleaned up path + */ + + nOpenAction = ONOPEN_BROWSE; + + /* dont apply any checks with OFN_NOVALIDATE */ + { + LPWSTR lpszTemp, lpszTemp1; + LPITEMIDLIST pidl = NULL; + WCHAR szwInvalid[] = { '/',':','<','>','|', 0}; + + /* check for invalid chars */ + if((strpbrkW(lpstrPathAndFile+3, szwInvalid) != NULL) && !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE)) + { + FILEDLG95_OnOpenMessage(hwnd, IDS_INVALID_FILENAME_TITLE, IDS_INVALID_FILENAME); + ret = FALSE; + goto ret; + } + + if (FAILED (SHGetDesktopFolder(&lpsf))) return FALSE; + + lpszTemp1 = lpszTemp = lpstrPathAndFile; + while (lpszTemp1) + { + LPSHELLFOLDER lpsfChild; + WCHAR lpwstrTemp[MAX_PATH]; + DWORD dwEaten, dwAttributes; + LPWSTR p; + + strcpyW(lpwstrTemp, lpszTemp); + p = PathFindNextComponentW(lpwstrTemp); + + if (!p) break; /* end of path */ + + *p = 0; + lpszTemp = lpszTemp + strlenW(lpwstrTemp); + + if(*lpszTemp==0) + { + WCHAR wszWild[] = { '*', '?', 0 }; + /* if the last element is a wildcard do a search */ + if(strpbrkW(lpszTemp1, wszWild) != NULL) + { + nOpenAction = ONOPEN_SEARCH; + break; + } + } + lpszTemp1 = lpszTemp; + + TRACE("parse now=%s next=%s sf=%p\n",debugstr_w(lpwstrTemp), debugstr_w(lpszTemp), lpsf); + + if(lstrlenW(lpwstrTemp)==2) PathAddBackslashW(lpwstrTemp); + + dwAttributes = SFGAO_FOLDER; + if(SUCCEEDED(IShellFolder_ParseDisplayName(lpsf, hwnd, NULL, lpwstrTemp, &dwEaten, &pidl, &dwAttributes))) + { + /* the path component is valid, we have a pidl of the next path component */ + TRACE("parse OK attr=0x%08lx pidl=%p\n", dwAttributes, pidl); + if(dwAttributes & SFGAO_FOLDER) + { + if(FAILED(IShellFolder_BindToObject(lpsf, pidl, 0, &IID_IShellFolder, (LPVOID*)&lpsfChild))) + { + ERR("bind to failed\n"); /* should not fail */ + break; + } + IShellFolder_Release(lpsf); + lpsf = lpsfChild; + lpsfChild = NULL; + } + else + { + TRACE("value\n"); + + /* end dialog, return value */ + nOpenAction = ONOPEN_OPEN; + break; + } + COMDLG32_SHFree(pidl); + pidl = NULL; + } + else if (!(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE)) + { + if(*lpszTemp) /* points to trailing null for last path element */ + { + if(fodInfos->ofnInfos->Flags & OFN_PATHMUSTEXIST) + { + FILEDLG95_OnOpenMessage(hwnd, 0, IDS_PATHNOTEXISTING); + break; + } + } + else + { + if( (fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST) && + !( fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG ) ) + { + FILEDLG95_OnOpenMessage(hwnd, 0, IDS_FILENOTEXISTING); + break; + } + } + /* change to the current folder */ + nOpenAction = ONOPEN_OPEN; + break; + } + else + { + nOpenAction = ONOPEN_OPEN; + break; + } + } + if(pidl) COMDLG32_SHFree(pidl); + } + +/* + Step 3: here we have a cleaned up and validated path + + valid variables: + lpsf: ShellFolder bound to the rightmost valid path component + lpstrPathAndFile: cleaned up path + nOpenAction: action to do +*/ + TRACE("end validate sf=%p\n", lpsf); + + switch(nOpenAction) + { + case ONOPEN_SEARCH: /* set the current filter to the file mask and refresh */ + TRACE("ONOPEN_SEARCH %s\n", debugstr_w(lpstrPathAndFile)); + { + int iPos; + LPWSTR lpszTemp = PathFindFileNameW(lpstrPathAndFile); + DWORD len; + + /* replace the current filter */ + if(fodInfos->ShellInfos.lpstrCurrentFilter) + MemFree((LPVOID)fodInfos->ShellInfos.lpstrCurrentFilter); + len = strlenW(lpszTemp)+1; + fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc(len * sizeof(WCHAR)); + strcpyW( fodInfos->ShellInfos.lpstrCurrentFilter, lpszTemp); + + /* set the filter cb to the extension when possible */ + if(-1 < (iPos = FILEDLG95_FILETYPE_SearchExt(fodInfos->DlgInfos.hwndFileTypeCB, lpszTemp))) + CBSetCurSel(fodInfos->DlgInfos.hwndFileTypeCB, iPos); + } + /* fall through */ + case ONOPEN_BROWSE: /* browse to the highest folder we could bind to */ + TRACE("ONOPEN_BROWSE\n"); + { + IPersistFolder2 * ppf2; + if(SUCCEEDED(IShellFolder_QueryInterface( lpsf, &IID_IPersistFolder2, (LPVOID*)&ppf2))) + { + LPITEMIDLIST pidlCurrent; + IPersistFolder2_GetCurFolder(ppf2, &pidlCurrent); + IPersistFolder2_Release(ppf2); + if( ! COMDLG32_PIDL_ILIsEqual(pidlCurrent, fodInfos->ShellInfos.pidlAbsCurrent)) + { + IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidlCurrent, SBSP_ABSOLUTE); + } + else if( nOpenAction == ONOPEN_SEARCH ) + { + IShellView_Refresh(fodInfos->Shell.FOIShellView); + } + COMDLG32_SHFree(pidlCurrent); + } + } + ret = FALSE; + break; + case ONOPEN_OPEN: /* fill in the return struct and close the dialog */ + TRACE("ONOPEN_OPEN %s\n", debugstr_w(lpstrPathAndFile)); + { + /* add default extension */ + if (fodInfos->defext) + { + WCHAR *ext = PathFindExtensionW(lpstrPathAndFile); + + if (! *ext) + { + /* only add "." in case a default extension does exist */ + if (*fodInfos->defext != '\0') + { + const WCHAR szwDot[] = {'.',0}; + int PathLength = strlenW(lpstrPathAndFile); + + strcatW(lpstrPathAndFile, szwDot); + strcatW(lpstrPathAndFile, fodInfos->defext); + + /* In Open dialog: if file does not exist try without extension */ + if (!(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) + && !PathFileExistsW(lpstrPathAndFile)) + lpstrPathAndFile[PathLength] = '\0'; + } + } + + /* Set/clear the output OFN_EXTENSIONDIFFERENT flag */ + if (*ext) + ext++; + if (!lstrcmpiW(fodInfos->defext, ext)) + fodInfos->ofnInfos->Flags &= ~OFN_EXTENSIONDIFFERENT; + else + fodInfos->ofnInfos->Flags |= OFN_EXTENSIONDIFFERENT; + } + + /* In Save dialog: check if the file already exists */ + if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG + && fodInfos->ofnInfos->Flags & OFN_OVERWRITEPROMPT + && PathFileExistsW(lpstrPathAndFile)) + { + WCHAR lpstrOverwrite[100]; + int answer; + + LoadStringW(COMDLG32_hInstance, IDS_OVERWRITEFILE, lpstrOverwrite, 100); + answer = MessageBoxW(hwnd, lpstrOverwrite, fodInfos->title, + MB_YESNO | MB_ICONEXCLAMATION); + if (answer == IDNO) + { + ret = FALSE; + goto ret; + } + } + + /* Check that the size of the file does not exceed buffer size. + (Allow for extra \0 if OFN_MULTISELECT is set.) */ + if(strlenW(lpstrPathAndFile) < fodInfos->ofnInfos->nMaxFile - + ((fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT) ? 1 : 0)) + { + LPWSTR lpszTemp; + + /* fill destination buffer */ + if (fodInfos->ofnInfos->lpstrFile) + { + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos; + + strncpyW(ofn->lpstrFile, lpstrPathAndFile, ofn->nMaxFile); + if (ofn->Flags & OFN_ALLOWMULTISELECT) + ofn->lpstrFile[lstrlenW(ofn->lpstrFile) + 1] = '\0'; + } + else + { + LPOPENFILENAMEA ofn = fodInfos->ofnInfos; + + WideCharToMultiByte(CP_ACP, 0, lpstrPathAndFile, -1, + ofn->lpstrFile, ofn->nMaxFile, NULL, NULL); + if (ofn->Flags & OFN_ALLOWMULTISELECT) + ofn->lpstrFile[lstrlenA(ofn->lpstrFile) + 1] = '\0'; + } + } + + /* set filename offset */ + lpszTemp = PathFindFileNameW(lpstrPathAndFile); + fodInfos->ofnInfos->nFileOffset = (lpszTemp - lpstrPathAndFile); + + /* set extension offset */ + lpszTemp = PathFindExtensionW(lpstrPathAndFile); + fodInfos->ofnInfos->nFileExtension = (*lpszTemp) ? (lpszTemp - lpstrPathAndFile) + 1 : 0; + + /* set the lpstrFileTitle */ + if(fodInfos->ofnInfos->lpstrFileTitle) + { + LPWSTR lpstrFileTitle = PathFindFileNameW(lpstrPathAndFile); + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos; + strncpyW(ofn->lpstrFileTitle, lpstrFileTitle, ofn->nMaxFileTitle); + } + else + { + LPOPENFILENAMEA ofn = fodInfos->ofnInfos; + WideCharToMultiByte(CP_ACP, 0, lpstrFileTitle, -1, + ofn->lpstrFileTitle, ofn->nMaxFileTitle, NULL, NULL); + } + } + + if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) ) + goto ret; + + TRACE("close\n"); + FILEDLG95_Clean(hwnd); + ret = EndDialog(hwnd, TRUE); + } + else + { + /* FIXME set error FNERR_BUFFERTOSMALL */ + FILEDLG95_Clean(hwnd); + ret = EndDialog(hwnd, FALSE); + } + goto ret; + } + break; + } + +ret: + if(lpsf) IShellFolder_Release(lpsf); + return ret; +} + +/*********************************************************************** + * FILEDLG95_SHELL_Init + * + * Initialisation of the shell objects + */ +static HRESULT FILEDLG95_SHELL_Init(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + /* + * Initialisation of the FileOpenDialogInfos structure + */ + + /* Shell */ + + /*ShellInfos */ + fodInfos->ShellInfos.hwndOwner = hwnd; + + /* Disable multi-select if flag not set */ + if (!(fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT)) + { + fodInfos->ShellInfos.folderSettings.fFlags |= FWF_SINGLESEL; + } + fodInfos->ShellInfos.folderSettings.fFlags |= FWF_AUTOARRANGE | FWF_ALIGNLEFT; + fodInfos->ShellInfos.folderSettings.ViewMode = FVM_LIST; + + /* Construct the IShellBrowser interface */ + fodInfos->Shell.FOIShellBrowser = IShellBrowserImpl_Construct(hwnd); + + return NOERROR; +} + +/*********************************************************************** + * FILEDLG95_SHELL_ExecuteCommand + * + * Change the folder option and refresh the view + * If the function succeeds, the return value is nonzero. + */ +static BOOL FILEDLG95_SHELL_ExecuteCommand(HWND hwnd, LPCSTR lpVerb) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + IContextMenu * pcm; + TRACE("(%p,%p)\n", hwnd, lpVerb); + + if(SUCCEEDED(IShellView_GetItemObject(fodInfos->Shell.FOIShellView, + SVGIO_BACKGROUND, + &IID_IContextMenu, + (LPVOID*)&pcm))) + { + CMINVOKECOMMANDINFO ci; + ZeroMemory(&ci, sizeof(CMINVOKECOMMANDINFO)); + ci.cbSize = sizeof(CMINVOKECOMMANDINFO); + ci.lpVerb = lpVerb; + ci.hwnd = hwnd; + + IContextMenu_InvokeCommand(pcm, &ci); + IContextMenu_Release(pcm); + } + + return FALSE; +} + +/*********************************************************************** + * FILEDLG95_SHELL_UpFolder + * + * Browse to the specified object + * If the function succeeds, the return value is nonzero. + */ +static BOOL FILEDLG95_SHELL_UpFolder(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + if(SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, + NULL, + SBSP_PARENT))) + { + return TRUE; + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG95_SHELL_BrowseToDesktop + * + * Browse to the Desktop + * If the function succeeds, the return value is nonzero. + */ +static BOOL FILEDLG95_SHELL_BrowseToDesktop(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + LPITEMIDLIST pidl; + HRESULT hres; + + TRACE("\n"); + + SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidl); + hres = IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidl, SBSP_ABSOLUTE); + COMDLG32_SHFree(pidl); + return SUCCEEDED(hres); +} +/*********************************************************************** + * FILEDLG95_SHELL_Clean + * + * Cleans the memory used by shell objects + */ +static void FILEDLG95_SHELL_Clean(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + COMDLG32_SHFree(fodInfos->ShellInfos.pidlAbsCurrent); + + /* clean Shell interfaces */ + IShellView_DestroyViewWindow(fodInfos->Shell.FOIShellView); + IShellView_Release(fodInfos->Shell.FOIShellView); + IShellFolder_Release(fodInfos->Shell.FOIShellFolder); + IShellBrowser_Release(fodInfos->Shell.FOIShellBrowser); + if (fodInfos->Shell.FOIDataObject) + IDataObject_Release(fodInfos->Shell.FOIDataObject); +} + +/*********************************************************************** + * FILEDLG95_FILETYPE_Init + * + * Initialisation of the file type combo box + */ +static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + if(fodInfos->filter) + { + int nFilters = 0; /* number of filters */ + LPWSTR lpstrFilter; + LPCWSTR lpstrPos = fodInfos->filter; + + for(;;) + { + /* filter is a list... title\0ext\0......\0\0 + * Set the combo item text to the title and the item data + * to the ext + */ + LPCWSTR lpstrDisplay; + LPWSTR lpstrExt; + + /* Get the title */ + if(! *lpstrPos) break; /* end */ + lpstrDisplay = lpstrPos; + lpstrPos += strlenW(lpstrPos) + 1; + + /* Copy the extensions */ + if (! *lpstrPos) return E_FAIL; /* malformed filter */ + if (!(lpstrExt = MemAlloc((strlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL; + strcpyW(lpstrExt,lpstrPos); + lpstrPos += strlenW(lpstrPos) + 1; + + /* Add the item at the end of the combo */ + CBAddStringW(fodInfos->DlgInfos.hwndFileTypeCB, lpstrDisplay); + CBSetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, nFilters, lpstrExt); + nFilters++; + } + /* + * Set the current filter to the one specified + * in the initialisation structure + * FIXME: lpstrCustomFilter not handled at all + */ + + /* set default filter index */ + if(fodInfos->ofnInfos->nFilterIndex == 0 && fodInfos->customfilter == NULL) + fodInfos->ofnInfos->nFilterIndex = 1; + + /* First, check to make sure our index isn't out of bounds. */ + if ( fodInfos->ofnInfos->nFilterIndex > nFilters ) + fodInfos->ofnInfos->nFilterIndex = nFilters; + + /* Set the current index selection. */ + CBSetCurSel(fodInfos->DlgInfos.hwndFileTypeCB, fodInfos->ofnInfos->nFilterIndex-1); + + /* Get the corresponding text string from the combo box. */ + lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, + fodInfos->ofnInfos->nFilterIndex-1); + + if ((INT)lpstrFilter == CB_ERR) /* control is empty */ + lpstrFilter = NULL; + + if(lpstrFilter) + { + DWORD len; + CharLowerW(lpstrFilter); /* lowercase */ + len = strlenW(lpstrFilter)+1; + fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) ); + strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter); + } + } + return NOERROR; +} + +/*********************************************************************** + * FILEDLG95_FILETYPE_OnCommand + * + * WM_COMMAND of the file type combo box + * If the function succeeds, the return value is nonzero. + */ +static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + switch(wNotifyCode) + { + case CBN_SELENDOK: + { + LPWSTR lpstrFilter; + + /* Get the current item of the filetype combo box */ + int iItem = CBGetCurSel(fodInfos->DlgInfos.hwndFileTypeCB); + + /* set the current filter index - indexed from 1 */ + fodInfos->ofnInfos->nFilterIndex = iItem + 1; + + /* Set the current filter with the current selection */ + if(fodInfos->ShellInfos.lpstrCurrentFilter) + MemFree((LPVOID)fodInfos->ShellInfos.lpstrCurrentFilter); + + lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, + iItem); + if((int)lpstrFilter != CB_ERR) + { + DWORD len; + CharLowerW(lpstrFilter); /* lowercase */ + len = strlenW(lpstrFilter)+1; + fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) ); + strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter); + SendCustomDlgNotificationMessage(hwnd,CDN_TYPECHANGE); + } + + /* Refresh the actual view to display the included items*/ + IShellView_Refresh(fodInfos->Shell.FOIShellView); + } + } + return FALSE; +} +/*********************************************************************** + * FILEDLG95_FILETYPE_SearchExt + * + * searches for a extension in the filetype box + */ +static int FILEDLG95_FILETYPE_SearchExt(HWND hwnd,LPCWSTR lpstrExt) +{ + int i, iCount = CBGetCount(hwnd); + + TRACE("%s\n", debugstr_w(lpstrExt)); + + if(iCount != CB_ERR) + { + for(i=0;iDlgInfos.hwndFileTypeCB); + + TRACE("\n"); + + /* Delete each string of the combo and their associated data */ + if(iCount != CB_ERR) + { + for(iPos = iCount-1;iPos>=0;iPos--) + { + MemFree((LPSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,iPos)); + CBDeleteString(fodInfos->DlgInfos.hwndFileTypeCB,iPos); + } + } + /* Current filter */ + if(fodInfos->ShellInfos.lpstrCurrentFilter) + MemFree(fodInfos->ShellInfos.lpstrCurrentFilter); + +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_Init + * + * Initialisation of the look in combo box + */ +static HRESULT FILEDLG95_LOOKIN_Init(HWND hwndCombo) +{ + IShellFolder *psfRoot, *psfDrives; + IEnumIDList *lpeRoot, *lpeDrives; + LPITEMIDLIST pidlDrives, pidlTmp, pidlTmp1, pidlAbsTmp; + + LookInInfos *liInfos = MemAlloc(sizeof(LookInInfos)); + + TRACE("\n"); + + liInfos->iMaxIndentation = 0; + + SetPropA(hwndCombo, LookInInfosStr, (HANDLE) liInfos); + + /* set item height for both text field and listbox */ + CBSetItemHeight(hwndCombo,-1,GetSystemMetrics(SM_CYSMICON)); + CBSetItemHeight(hwndCombo,0,GetSystemMetrics(SM_CYSMICON)); + + /* Turn on the extended UI for the combo box like Windows does */ + CBSetExtendedUI(hwndCombo, TRUE); + + /* Initialise data of Desktop folder */ + SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidlTmp); + FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND); + COMDLG32_SHFree(pidlTmp); + + SHGetSpecialFolderLocation(0,CSIDL_DRIVES,&pidlDrives); + + SHGetDesktopFolder(&psfRoot); + + if (psfRoot) + { + /* enumerate the contents of the desktop */ + if(SUCCEEDED(IShellFolder_EnumObjects(psfRoot, hwndCombo, SHCONTF_FOLDERS, &lpeRoot))) + { + while (S_OK == IEnumIDList_Next(lpeRoot, 1, &pidlTmp, NULL)) + { + FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND); + + /* special handling for CSIDL_DRIVES */ + if (COMDLG32_PIDL_ILIsEqual(pidlTmp, pidlDrives)) + { + if(SUCCEEDED(IShellFolder_BindToObject(psfRoot, pidlTmp, NULL, &IID_IShellFolder, (LPVOID*)&psfDrives))) + { + /* enumerate the drives */ + if(SUCCEEDED(IShellFolder_EnumObjects(psfDrives, hwndCombo,SHCONTF_FOLDERS, &lpeDrives))) + { + while (S_OK == IEnumIDList_Next(lpeDrives, 1, &pidlTmp1, NULL)) + { + pidlAbsTmp = COMDLG32_PIDL_ILCombine(pidlTmp, pidlTmp1); + FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlAbsTmp,LISTEND); + COMDLG32_SHFree(pidlAbsTmp); + COMDLG32_SHFree(pidlTmp1); + } + IEnumIDList_Release(lpeDrives); + } + IShellFolder_Release(psfDrives); + } + } + COMDLG32_SHFree(pidlTmp); + } + IEnumIDList_Release(lpeRoot); + } + } + + IShellFolder_Release(psfRoot); + COMDLG32_SHFree(pidlDrives); + return NOERROR; +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_DrawItem + * + * WM_DRAWITEM message handler + */ +static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct) +{ + COLORREF crWin = GetSysColor(COLOR_WINDOW); + COLORREF crHighLight = GetSysColor(COLOR_HIGHLIGHT); + COLORREF crText = GetSysColor(COLOR_WINDOWTEXT); + RECT rectText; + RECT rectIcon; + SHFILEINFOA sfi; + HIMAGELIST ilItemImage; + int iIndentation; + TEXTMETRICA tm; + LPSFOLDER tmpFolder; + + + LookInInfos *liInfos = (LookInInfos *)GetPropA(pDIStruct->hwndItem,LookInInfosStr); + + TRACE("\n"); + + if(pDIStruct->itemID == -1) + return 0; + + if(!(tmpFolder = (LPSFOLDER) CBGetItemDataPtr(pDIStruct->hwndItem, + pDIStruct->itemID))) + return 0; + + + if(pDIStruct->itemID == liInfos->uSelectedItem) + { + ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem, + 0, + &sfi, + sizeof (SHFILEINFOA), + SHGFI_PIDL | SHGFI_SMALLICON | + SHGFI_OPENICON | SHGFI_SYSICONINDEX | + SHGFI_DISPLAYNAME ); + } + else + { + ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem, + 0, + &sfi, + sizeof (SHFILEINFOA), + SHGFI_PIDL | SHGFI_SMALLICON | + SHGFI_SYSICONINDEX | + SHGFI_DISPLAYNAME); + } + + /* Is this item selected ? */ + if(pDIStruct->itemState & ODS_SELECTED) + { + SetTextColor(pDIStruct->hDC,(0x00FFFFFF & ~(crText))); + SetBkColor(pDIStruct->hDC,crHighLight); + FillRect(pDIStruct->hDC,&pDIStruct->rcItem,GetSysColorBrush(COLOR_HIGHLIGHT)); + } + else + { + SetTextColor(pDIStruct->hDC,crText); + SetBkColor(pDIStruct->hDC,crWin); + FillRect(pDIStruct->hDC,&pDIStruct->rcItem,GetSysColorBrush(COLOR_WINDOW)); + } + + /* Do not indent item if drawing in the edit of the combo */ + if(pDIStruct->itemState & ODS_COMBOBOXEDIT) + { + iIndentation = 0; + ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem, + 0, + &sfi, + sizeof (SHFILEINFOA), + SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_OPENICON + | SHGFI_SYSICONINDEX | SHGFI_DISPLAYNAME ); + + } + else + { + iIndentation = tmpFolder->m_iIndent; + } + /* Draw text and icon */ + + /* Initialise the icon display area */ + rectIcon.left = pDIStruct->rcItem.left + ICONWIDTH/2 * iIndentation; + rectIcon.top = pDIStruct->rcItem.top; + rectIcon.right = rectIcon.left + ICONWIDTH; + rectIcon.bottom = pDIStruct->rcItem.bottom; + + /* Initialise the text display area */ + GetTextMetricsA(pDIStruct->hDC, &tm); + rectText.left = rectIcon.right; + rectText.top = + (pDIStruct->rcItem.top + pDIStruct->rcItem.bottom - tm.tmHeight) / 2; + rectText.right = pDIStruct->rcItem.right + XTEXTOFFSET; + rectText.bottom = + (pDIStruct->rcItem.top + pDIStruct->rcItem.bottom + tm.tmHeight) / 2; + + /* Draw the icon from the image list */ + ImageList_Draw(ilItemImage, + sfi.iIcon, + pDIStruct->hDC, + rectIcon.left, + rectIcon.top, + ILD_TRANSPARENT ); + + /* Draw the associated text */ + if(sfi.szDisplayName) + TextOutA(pDIStruct->hDC,rectText.left,rectText.top,sfi.szDisplayName,strlen(sfi.szDisplayName)); + + + return NOERROR; +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_OnCommand + * + * LookIn combo box WM_COMMAND message handler + * If the function succeeds, the return value is nonzero. + */ +static BOOL FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("%p\n", fodInfos); + + switch(wNotifyCode) + { + case CBN_SELENDOK: + { + LPSFOLDER tmpFolder; + int iItem; + + iItem = CBGetCurSel(fodInfos->DlgInfos.hwndLookInCB); + + if(!(tmpFolder = (LPSFOLDER) CBGetItemDataPtr(fodInfos->DlgInfos.hwndLookInCB, + iItem))) + return FALSE; + + + if(SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, + tmpFolder->pidlItem, + SBSP_ABSOLUTE))) + { + return TRUE; + } + break; + } + + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_AddItem + * + * Adds an absolute pidl item to the lookin combo box + * returns the index of the inserted item + */ +static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId) +{ + LPITEMIDLIST pidlNext; + SHFILEINFOA sfi; + SFOLDER *tmpFolder; + LookInInfos *liInfos; + + TRACE("%08x\n", iInsertId); + + if(!pidl) + return -1; + + if(!(liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr))) + return -1; + + tmpFolder = MemAlloc(sizeof(SFOLDER)); + tmpFolder->m_iIndent = 0; + + /* Calculate the indentation of the item in the lookin*/ + pidlNext = pidl; + while( (pidlNext=COMDLG32_PIDL_ILGetNext(pidlNext)) ) + { + tmpFolder->m_iIndent++; + } + + tmpFolder->pidlItem = COMDLG32_PIDL_ILClone(pidl); + + if(tmpFolder->m_iIndent > liInfos->iMaxIndentation) + liInfos->iMaxIndentation = tmpFolder->m_iIndent; + + sfi.dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM; + SHGetFileInfoA((LPSTR)pidl, + 0, + &sfi, + sizeof(sfi), + SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX + | SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_ATTRIBUTES | SHGFI_ATTR_SPECIFIED); + + TRACE("-- Add %s attr=%08lx\n", sfi.szDisplayName, sfi.dwAttributes); + + if((sfi.dwAttributes & SFGAO_FILESYSANCESTOR) || (sfi.dwAttributes & SFGAO_FILESYSTEM)) + { + int iItemID; + + TRACE("-- Add %s at %u\n", sfi.szDisplayName, tmpFolder->m_iIndent); + + /* Add the item at the end of the list */ + if(iInsertId < 0) + { + iItemID = CBAddString(hwnd,sfi.szDisplayName); + } + /* Insert the item at the iInsertId position*/ + else + { + iItemID = CBInsertString(hwnd,sfi.szDisplayName,iInsertId); + } + + CBSetItemDataPtr(hwnd,iItemID,tmpFolder); + return iItemID; + } + + COMDLG32_SHFree( tmpFolder->pidlItem ); + MemFree( tmpFolder ); + return -1; + +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_InsertItemAfterParent + * + * Insert an item below its parent + */ +static int FILEDLG95_LOOKIN_InsertItemAfterParent(HWND hwnd,LPITEMIDLIST pidl) +{ + + LPITEMIDLIST pidlParent = GetParentPidl(pidl); + int iParentPos; + + TRACE("\n"); + + iParentPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)pidlParent,SEARCH_PIDL); + + if(iParentPos < 0) + { + iParentPos = FILEDLG95_LOOKIN_InsertItemAfterParent(hwnd,pidlParent); + } + + /* Free pidlParent memory */ + COMDLG32_SHFree((LPVOID)pidlParent); + + return FILEDLG95_LOOKIN_AddItem(hwnd,pidl,iParentPos + 1); +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_SelectItem + * + * Adds an absolute pidl item to the lookin combo box + * returns the index of the inserted item + */ +int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl) +{ + int iItemPos; + LookInInfos *liInfos; + + TRACE("\n"); + + iItemPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)pidl,SEARCH_PIDL); + + liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr); + + if(iItemPos < 0) + { + while(FILEDLG95_LOOKIN_RemoveMostExpandedItem(hwnd) > -1); + iItemPos = FILEDLG95_LOOKIN_InsertItemAfterParent(hwnd,pidl); + } + + else + { + SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(hwnd,iItemPos); + while(liInfos->iMaxIndentation > tmpFolder->m_iIndent) + { + int iRemovedItem; + + if(-1 == (iRemovedItem = FILEDLG95_LOOKIN_RemoveMostExpandedItem(hwnd))) + break; + if(iRemovedItem < iItemPos) + iItemPos--; + } + } + + CBSetCurSel(hwnd,iItemPos); + liInfos->uSelectedItem = iItemPos; + + return 0; + +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_RemoveMostExpandedItem + * + * Remove the item with an expansion level over iExpansionLevel + */ +static int FILEDLG95_LOOKIN_RemoveMostExpandedItem(HWND hwnd) +{ + int iItemPos; + + LookInInfos *liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr); + + TRACE("\n"); + + if(liInfos->iMaxIndentation <= 2) + return -1; + + if((iItemPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)liInfos->iMaxIndentation,SEARCH_EXP)) >=0) + { + SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(hwnd,iItemPos); + COMDLG32_SHFree(tmpFolder->pidlItem); + MemFree(tmpFolder); + CBDeleteString(hwnd,iItemPos); + liInfos->iMaxIndentation--; + + return iItemPos; + } + + return -1; +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_SearchItem + * + * Search for pidl in the lookin combo box + * returns the index of the found item + */ +static int FILEDLG95_LOOKIN_SearchItem(HWND hwnd,WPARAM searchArg,int iSearchMethod) +{ + int i = 0; + int iCount = CBGetCount(hwnd); + + TRACE("0x%08x 0x%x\n",searchArg, iSearchMethod); + + if (iCount != CB_ERR) + { + for(;ipidlItem)) + return i; + if(iSearchMethod == SEARCH_EXP && tmpFolder->m_iIndent == (int)searchArg) + return i; + } + } + + return -1; +} + +/*********************************************************************** + * FILEDLG95_LOOKIN_Clean + * + * Clean the memory used by the lookin combo box + */ +static void FILEDLG95_LOOKIN_Clean(HWND hwnd) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + int iPos; + int iCount = CBGetCount(fodInfos->DlgInfos.hwndLookInCB); + + TRACE("\n"); + + /* Delete each string of the combo and their associated data */ + if (iCount != CB_ERR) + { + for(iPos = iCount-1;iPos>=0;iPos--) + { + SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(fodInfos->DlgInfos.hwndLookInCB,iPos); + COMDLG32_SHFree(tmpFolder->pidlItem); + MemFree(tmpFolder); + CBDeleteString(fodInfos->DlgInfos.hwndLookInCB,iPos); + } + } + + /* LookInInfos structure */ + RemovePropA(fodInfos->DlgInfos.hwndLookInCB,LookInInfosStr); + +} +/*********************************************************************** + * FILEDLG95_FILENAME_FillFromSelection + * + * fills the edit box from the cached DataObject + */ +void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd) +{ + FileOpenDlgInfos *fodInfos; + LPITEMIDLIST pidl; + UINT nFiles = 0, nFileToOpen, nFileSelected, nLength = 0; + char lpstrTemp[MAX_PATH]; + LPSTR lpstrAllFile = NULL, lpstrCurrFile = NULL; + + TRACE("\n"); + fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + /* Count how many files we have */ + nFileSelected = GetNumSelected( fodInfos->Shell.FOIDataObject ); + + /* calculate the string length, count files */ + if (nFileSelected >= 1) + { + nLength += 3; /* first and last quotes, trailing \0 */ + for ( nFileToOpen = 0; nFileToOpen < nFileSelected; nFileToOpen++ ) + { + pidl = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, nFileToOpen+1 ); + + if (pidl) + { + /* get the total length of the selected file names */ + lpstrTemp[0] = '\0'; + GetName( fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER|SHGDN_FORPARSING, lpstrTemp ); + + if ( ! IsPidlFolder(fodInfos->Shell.FOIShellFolder, pidl) ) /* Ignore folders */ + { + nLength += strlen( lpstrTemp ) + 3; + nFiles++; + } + COMDLG32_SHFree( pidl ); + } + } + } + + /* allocate the buffer */ + if (nFiles <= 1) nLength = MAX_PATH; + lpstrAllFile = (LPSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nLength); + lpstrAllFile[0] = '\0'; + + /* Generate the string for the edit control */ + if(nFiles >= 1) + { + lpstrCurrFile = lpstrAllFile; + for ( nFileToOpen = 0; nFileToOpen < nFileSelected; nFileToOpen++ ) + { + pidl = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, nFileToOpen+1 ); + + if (pidl) + { + /* get the file name */ + lpstrTemp[0] = '\0'; + GetName( fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER|SHGDN_FORPARSING, lpstrTemp ); + + if (! IsPidlFolder(fodInfos->Shell.FOIShellFolder, pidl)) /* Ignore folders */ + { + if ( nFiles > 1) + { + *lpstrCurrFile++ = '\"'; + strcpy( lpstrCurrFile, lpstrTemp ); + lpstrCurrFile += strlen( lpstrTemp ); + strcpy( lpstrCurrFile, "\" " ); + lpstrCurrFile += 2; + } + else + { + strcpy( lpstrAllFile, lpstrTemp ); + } + } + COMDLG32_SHFree( (LPVOID) pidl ); + } + } + SetWindowTextA( fodInfos->DlgInfos.hwndFileName, lpstrAllFile ); + + /* Select the file name like Windows does */ + SendMessageA(fodInfos->DlgInfos.hwndFileName, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + } + HeapFree(GetProcessHeap(),0, lpstrAllFile ); +} + + +/* copied from shell32 to avoid linking to it */ +static HRESULT COMDLG32_StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) +{ + switch (src->uType) + { + case STRRET_WSTR: + WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL); + COMDLG32_SHFree(src->u.pOleStr); + break; + + case STRRET_CSTR: + lstrcpynA((LPSTR)dest, src->u.cStr, len); + break; + + case STRRET_OFFSET: + lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); + break; + + default: + FIXME("unknown type!\n"); + if (len) + { + *(LPSTR)dest = '\0'; + } + return(FALSE); + } + return S_OK; +} + +/*********************************************************************** + * FILEDLG95_FILENAME_GetFileNames + * + * copies the filenames to a 0-delimited string list (A\0B\0C\0\0) + */ +int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed) +{ + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + UINT nStrCharCount = 0; /* index in src buffer */ + UINT nFileIndex = 0; /* index in dest buffer */ + UINT nFileCount = 0; /* number of files */ + UINT nStrLen = 0; /* length of string in edit control */ + LPWSTR lpstrEdit; /* buffer for string from edit control */ + + TRACE("\n"); + + /* get the filenames from the edit control */ + nStrLen = SendMessageW(fodInfos->DlgInfos.hwndFileName, WM_GETTEXTLENGTH, 0, 0); + lpstrEdit = MemAlloc( (nStrLen+1)*sizeof(WCHAR) ); + GetDlgItemTextW(hwnd, IDC_FILENAME, lpstrEdit, nStrLen+1); + + TRACE("nStrLen=%u str=%s\n", nStrLen, debugstr_w(lpstrEdit)); + + /* we might get single filename without any '"', + * so we need nStrLen + terminating \0 + end-of-list \0 */ + *lpstrFileList = MemAlloc( (nStrLen+2)*sizeof(WCHAR) ); + *sizeUsed = 0; + + /* build 0-delimited file list from filenames */ + while ( nStrCharCount <= nStrLen ) + { + if ( lpstrEdit[nStrCharCount]=='"' ) + { + nStrCharCount++; + while ((lpstrEdit[nStrCharCount]!='"') && (nStrCharCount <= nStrLen)) + { + (*lpstrFileList)[nFileIndex++] = lpstrEdit[nStrCharCount]; + (*sizeUsed)++; + nStrCharCount++; + } + (*lpstrFileList)[nFileIndex++] = '\0'; + (*sizeUsed)++; + nFileCount++; + } + nStrCharCount++; + } + + /* single, unquoted string */ + if ((nStrLen > 0) && (*sizeUsed == 0) ) + { + strcpyW(*lpstrFileList, lpstrEdit); + nFileIndex = strlenW(lpstrEdit) + 1; + (*sizeUsed) = nFileIndex; + nFileCount = 1; + } + + /* trailing \0 */ + (*lpstrFileList)[nFileIndex] = '\0'; + (*sizeUsed)++; + + MemFree(lpstrEdit); + return nFileCount; +} + +#define SETDefFormatEtc(fe,cf,med) \ +{ \ + (fe).cfFormat = cf;\ + (fe).dwAspect = DVASPECT_CONTENT; \ + (fe).ptd =NULL;\ + (fe).tymed = med;\ + (fe).lindex = -1;\ +}; + +/* + * DATAOBJECT Helper functions + */ + +/*********************************************************************** + * COMCTL32_ReleaseStgMedium + * + * like ReleaseStgMedium from ole32 + */ +static void COMCTL32_ReleaseStgMedium (STGMEDIUM medium) +{ + if(medium.pUnkForRelease) + { + IUnknown_Release(medium.pUnkForRelease); + } + else + { + GlobalUnlock(medium.u.hGlobal); + GlobalFree(medium.u.hGlobal); + } +} + +/*********************************************************************** + * GetPidlFromDataObject + * + * Return pidl(s) by number from the cached DataObject + * + * nPidlIndex=0 gets the fully qualified root path + */ +LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex) +{ + + STGMEDIUM medium; + FORMATETC formatetc; + LPITEMIDLIST pidl = NULL; + + TRACE("sv=%p index=%u\n", doSelected, nPidlIndex); + + /* Set the FORMATETC structure*/ + SETDefFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL); + + /* Get the pidls from IDataObject */ + if(SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium))) + { + LPIDA cida = GlobalLock(medium.u.hGlobal); + if(nPidlIndex <= cida->cidl) + { + pidl = COMDLG32_PIDL_ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[nPidlIndex]])); + } + COMCTL32_ReleaseStgMedium(medium); + } + return pidl; +} + +/*********************************************************************** + * GetNumSelected + * + * Return the number of selected items in the DataObject. + * +*/ +UINT GetNumSelected( IDataObject *doSelected ) +{ + UINT retVal = 0; + STGMEDIUM medium; + FORMATETC formatetc; + + TRACE("sv=%p\n", doSelected); + + if (!doSelected) return 0; + + /* Set the FORMATETC structure*/ + SETDefFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL); + + /* Get the pidls from IDataObject */ + if(SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium))) + { + LPIDA cida = GlobalLock(medium.u.hGlobal); + retVal = cida->cidl; + COMCTL32_ReleaseStgMedium(medium); + return retVal; + } + return 0; +} + +/* + * TOOLS + */ + +/*********************************************************************** + * GetName + * + * Get the pidl's display name (relative to folder) and + * put it in lpstrFileName. + * + * Return NOERROR on success, + * E_FAIL otherwise + */ + +HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName) +{ + STRRET str; + HRESULT hRes; + + TRACE("sf=%p pidl=%p\n", lpsf, pidl); + + if(!lpsf) + { + HRESULT hRes; + SHGetDesktopFolder(&lpsf); + hRes = GetName(lpsf,pidl,dwFlags,lpstrFileName); + IShellFolder_Release(lpsf); + return hRes; + } + + /* Get the display name of the pidl relative to the folder */ + if (SUCCEEDED(hRes = IShellFolder_GetDisplayNameOf(lpsf, pidl, dwFlags, &str))) + { + return COMDLG32_StrRetToStrNA(lpstrFileName, MAX_PATH, &str, pidl); + } + return E_FAIL; +} + +/*********************************************************************** + * GetShellFolderFromPidl + * + * pidlRel is the item pidl relative + * Return the IShellFolder of the absolute pidl + */ +IShellFolder *GetShellFolderFromPidl(LPITEMIDLIST pidlAbs) +{ + IShellFolder *psf = NULL,*psfParent; + + TRACE("%p\n", pidlAbs); + + if(SUCCEEDED(SHGetDesktopFolder(&psfParent))) + { + psf = psfParent; + if(pidlAbs && pidlAbs->mkid.cb) + { + if(SUCCEEDED(IShellFolder_BindToObject(psfParent, pidlAbs, NULL, &IID_IShellFolder, (LPVOID*)&psf))) + { + IShellFolder_Release(psfParent); + return psf; + } + } + /* return the desktop */ + return psfParent; + } + return NULL; +} + +/*********************************************************************** + * GetParentPidl + * + * Return the LPITEMIDLIST to the parent of the pidl in the list + */ +LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl) +{ + LPITEMIDLIST pidlParent; + + TRACE("%p\n", pidl); + + pidlParent = COMDLG32_PIDL_ILClone(pidl); + COMDLG32_PIDL_ILRemoveLastID(pidlParent); + + return pidlParent; +} + +/*********************************************************************** + * GetPidlFromName + * + * returns the pidl of the file name relative to folder + * NULL if an error occurred + */ +LPITEMIDLIST GetPidlFromName(IShellFolder *lpsf,LPWSTR lpcstrFileName) +{ + LPITEMIDLIST pidl = NULL; + ULONG ulEaten; + + TRACE("sf=%p file=%s\n", lpsf, debugstr_w(lpcstrFileName)); + + if(!lpcstrFileName) return NULL; + if(!*lpcstrFileName) return NULL; + + if(!lpsf) + { + if (SUCCEEDED(SHGetDesktopFolder(&lpsf))) { + IShellFolder_ParseDisplayName(lpsf, 0, NULL, lpcstrFileName, &ulEaten, &pidl, NULL); + IShellFolder_Release(lpsf); + } + } + else + { + IShellFolder_ParseDisplayName(lpsf, 0, NULL, lpcstrFileName, &ulEaten, &pidl, NULL); + } + return pidl; +} + +/* +*/ +BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl) +{ + ULONG uAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER; + HRESULT ret; + + TRACE("%p, %p\n", psf, pidl); + + ret = IShellFolder_GetAttributesOf( psf, 1, &pidl, &uAttr ); + + TRACE("-- 0x%08lx 0x%08lx\n", uAttr, ret); + /* see documentation shell 4.1*/ + return uAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER); +} + +/*********************************************************************** + * BrowseSelectedFolder + */ +static BOOL BrowseSelectedFolder(HWND hwnd) +{ + BOOL bBrowseSelFolder = FALSE; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); + + TRACE("\n"); + + if (GetNumSelected(fodInfos->Shell.FOIDataObject) == 1) + { + LPITEMIDLIST pidlSelection; + + /* get the file selected */ + pidlSelection = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, 1); + if (IsPidlFolder (fodInfos->Shell.FOIShellFolder, pidlSelection)) + { + if ( FAILED( IShellBrowser_BrowseObject( fodInfos->Shell.FOIShellBrowser, + pidlSelection, SBSP_RELATIVE ) ) ) + { + WCHAR notexist[] = {'P','a','t','h',' ','d','o','e','s', + ' ','n','o','t',' ','e','x','i','s','t',0}; + MessageBoxW( hwnd, notexist, fodInfos->title, MB_OK | MB_ICONEXCLAMATION ); + } + + bBrowseSelFolder = TRUE; + } + COMDLG32_SHFree( pidlSelection ); + } + + return bBrowseSelFolder; +} + +/* + * Memory allocation methods */ +static void *MemAlloc(UINT size) +{ + return HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size); +} + +static void MemFree(void *mem) +{ + if(mem) + { + HeapFree(GetProcessHeap(),0,mem); + } +} + +/* ------------------ APIs ---------------------- */ + +/*********************************************************************** + * GetOpenFileNameA (COMDLG32.@) + * + * Creates a dialog box for the user to select a file to open. + * + * RETURNS + * TRUE on success: user enters a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + */ +BOOL WINAPI GetOpenFileNameA( + LPOPENFILENAMEA ofn) /* [in/out] address of init structure */ +{ + return GetFileDialog95A(ofn, OPEN_DIALOG); +} + +/*********************************************************************** + * GetOpenFileNameW (COMDLG32.@) + * + * Creates a dialog box for the user to select a file to open. + * + * RETURNS + * TRUE on success: user enters a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + */ +BOOL WINAPI GetOpenFileNameW( + LPOPENFILENAMEW ofn) /* [in/out] address of init structure */ +{ + return GetFileDialog95W(ofn, OPEN_DIALOG); +} + +/*********************************************************************** + * GetSaveFileNameA (COMDLG32.@) + * + * Creates a dialog box for the user to select a file to save. + * + * RETURNS + * TRUE on success: user enters a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + */ +BOOL WINAPI GetSaveFileNameA( + LPOPENFILENAMEA ofn) /* [in/out] address of init structure */ +{ + return GetFileDialog95A(ofn, SAVE_DIALOG); +} + +/*********************************************************************** + * GetSaveFileNameW (COMDLG32.@) + * + * Creates a dialog box for the user to select a file to save. + * + * RETURNS + * TRUE on success: user enters a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + */ +BOOL WINAPI GetSaveFileNameW( + LPOPENFILENAMEW ofn) /* [in/out] address of init structure */ +{ + return GetFileDialog95W(ofn, SAVE_DIALOG); +} diff --git a/reactos/lib/comdlg32/filedlg16.c b/reactos/lib/comdlg32/filedlg16.c new file mode 100644 index 00000000000..063a9c0281b --- /dev/null +++ b/reactos/lib/comdlg32/filedlg16.c @@ -0,0 +1,1463 @@ +/* + * COMMDLG - File Dialogs + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "wingdi.h" +#include "winuser.h" +#include "wine/winbase16.h" +#include "wine/winuser16.h" +#include "wine/unicode.h" +#include "wine/debug.h" +#include "cderr.h" +#include "winreg.h" +#include "winternl.h" +#include "winuser.h" +#include "commdlg.h" +#include "cderr.h" +#include "winreg.h" +#include "winternl.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "cdlg16.h" + +#define BUFFILE 512 +#define BUFFILEALLOC 512 * sizeof(WCHAR) + +struct FSPRIVATE +{ + HWND hwnd; /* file dialog window handle */ + BOOL hook; /* TRUE if the dialog is hooked */ + UINT lbselchstring; /* registered message id */ + UINT fileokstring; /* registered message id */ + LPARAM lParam; /* save original lparam */ + HANDLE16 hDlgTmpl16; /* handle for resource 16 */ + HANDLE16 hResource16; /* handle for allocated resource 16 */ + HANDLE16 hGlobal16; /* 16 bits mem block (resources) */ + LPCVOID template; /* template for 32 bits resource */ + BOOL open; /* TRUE if open dialog, FALSE if save dialog */ + OPENFILENAMEW *ofnW; /* original structure or work struct */ + OPENFILENAMEA *ofnA; /* original structure if 32bits ansi dialog */ + OPENFILENAME16 *ofn16; /* original structure if 16 bits dialog */ +}; + +#define LFSPRIVATE struct FSPRIVATE * +#define LFS16 1 +#define LFS32A 2 +#define LFS32W 3 +#define OFN_PROP "FILEDLG_OFN" + +static const WCHAR FILE_star[] = {'*','.','*', 0}; +static const WCHAR FILE_bslash[] = {'\\', 0}; +static const WCHAR FILE_specc[] = {'%','c',':', 0}; +static const int fldrHeight = 16; +static const int fldrWidth = 20; + +static HICON hFolder = 0; +static HICON hFolder2 = 0; +static HICON hFloppy = 0; +static HICON hHDisk = 0; +static HICON hCDRom = 0; +static HICON hNet = 0; +static char defaultopen[]="Open File"; +static char defaultsave[]="Save as"; + +/*********************************************************************** + * FileDlg_Init [internal] + */ +static BOOL FileDlg_Init(void) +{ + static BOOL initialized = 0; + + if (!initialized) { + HINSTANCE inst = GetModuleHandleA( "comdlg32.dll" ); + if (!inst) + { + ERR( "cannot get comdlg32.dll instance\n" ); + return FALSE; + } + hFolder = LoadImageA( inst, "FOLDER", IMAGE_ICON, 16, 16, LR_SHARED ); + hFolder2 = LoadImageA( inst, "FOLDER2", IMAGE_ICON, 16, 16, LR_SHARED ); + hFloppy = LoadImageA( inst, "FLOPPY", IMAGE_ICON, 16, 16, LR_SHARED ); + hHDisk = LoadImageA( inst, "HDISK", IMAGE_ICON, 16, 16, LR_SHARED ); + hCDRom = LoadImageA( inst, "CDROM", IMAGE_ICON, 16, 16, LR_SHARED ); + hNet = LoadImageA( inst, "NETWORK", IMAGE_ICON, 16, 16, LR_SHARED ); + if (hFolder == 0 || hFolder2 == 0 || hFloppy == 0 || + hHDisk == 0 || hCDRom == 0 || hNet == 0) + { + ERR("Error loading icons !\n"); + return FALSE; + } + initialized = TRUE; + } + return TRUE; +} + +/*********************************************************************** + * Get32BitsTemplate [internal] + * + * Get a template (or FALSE if failure) when 16 bits dialogs are used + * by a 32 bits application + * + */ +BOOL Get32BitsTemplate(LFSPRIVATE lfs) +{ + LPOPENFILENAMEW ofnW = lfs->ofnW; + HANDLE hDlgTmpl; + + if (ofnW->Flags & OFN_ENABLETEMPLATEHANDLE) + { + if (!(lfs->template = LockResource( ofnW->hInstance ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + else if (ofnW->Flags & OFN_ENABLETEMPLATE) + { + HRSRC hResInfo; + if (lfs->ofnA) + hResInfo = FindResourceA(lfs->ofnA->hInstance, + lfs->ofnA->lpTemplateName, + (LPSTR)RT_DIALOG); + else + hResInfo = FindResourceW(ofnW->hInstance, + ofnW->lpTemplateName, + (LPWSTR)RT_DIALOG); + if (!hResInfo) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource(ofnW->hInstance, + hResInfo)) || + !(lfs->template = LockResource(hDlgTmpl))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } else { /* get it from internal Wine resource */ + HRSRC hResInfo; + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, + lfs->open? "OPEN_FILE":"SAVE_FILE", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(lfs->template = LockResource( hDlgTmpl ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + return TRUE; +} + +/*********************************************************************** + * Get16BitsTemplate [internal] + * + * Get a template (FALSE if failure) when 16 bits dialogs are used + * by a 16 bits application + * + */ +BOOL Get16BitsTemplate(LFSPRIVATE lfs) +{ + LPOPENFILENAME16 ofn16 = lfs->ofn16; + LPCVOID template; + HGLOBAL16 hGlobal16 = 0; + + if (ofn16->Flags & OFN_ENABLETEMPLATEHANDLE) + lfs->hDlgTmpl16 = ofn16->hInstance; + else if (ofn16->Flags & OFN_ENABLETEMPLATE) + { + HANDLE16 hResInfo; + if (!(hResInfo = FindResource16(ofn16->hInstance, + MapSL(ofn16->lpTemplateName), + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(lfs->hDlgTmpl16 = LoadResource16( ofn16->hInstance, hResInfo ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + lfs->hResource16 = lfs->hDlgTmpl16; + } + else + { /* get resource from (32 bits) own Wine resource; convert it to 16 */ + HRSRC hResInfo; + HGLOBAL hDlgTmpl32; + LPCVOID template32; + DWORD size; + + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, + lfs->open ? "OPEN_FILE":"SAVE_FILE", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(template32 = LockResource( hDlgTmpl32 ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo); + hGlobal16 = GlobalAlloc16(0, size); + if (!hGlobal16) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + ERR("alloc failure for %ld bytes\n", size); + return FALSE; + } + template = GlobalLock16(hGlobal16); + if (!template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + ERR("global lock failure for %x handle\n", hGlobal16); + GlobalFree16(hGlobal16); + return FALSE; + } + ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template); + lfs->hDlgTmpl16 = hGlobal16; + lfs->hGlobal16 = hGlobal16; + } + return TRUE; +} + +/*********************************************************************** + * FILEDLG_StripEditControl [internal] + * Strip pathnames off the contents of the edit control. + */ +static void FILEDLG_StripEditControl(HWND hwnd) +{ + WCHAR temp[BUFFILE], *cp; + + GetDlgItemTextW( hwnd, edt1, temp, sizeof(temp)/sizeof(WCHAR)); + cp = strrchrW(temp, '\\'); + if (cp != NULL) { + strcpyW(temp, cp+1); + } + cp = strrchrW(temp, ':'); + if (cp != NULL) { + strcpyW(temp, cp+1); + } + /* FIXME: shouldn't we do something with the result here? ;-) */ +} + +/*********************************************************************** + * FILEDLG_CallWindowProc [internal] + * + * Call the appropriate hook + */ +static BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam, + LPARAM lParam) +{ + if (lfs->ofnA) + { + return (BOOL) CallWindowProcA( + (WNDPROC)lfs->ofnA->lpfnHook, lfs->hwnd, + wMsg, wParam, lParam); + } + + if (lfs->ofnW) + { + return (BOOL) CallWindowProcW( + (WNDPROC)lfs->ofnW->lpfnHook, lfs->hwnd, + wMsg, wParam, lParam); + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG_ScanDir [internal] + */ +static BOOL FILEDLG_ScanDir(HWND hWnd, LPWSTR newPath) +{ + WCHAR buffer[BUFFILE]; + HWND hdlg, hdlgDir; + LRESULT lRet = TRUE; + HCURSOR hCursorWait, oldCursor; + + TRACE("Trying to change to %s\n", debugstr_w(newPath)); + if ( !SetCurrentDirectoryW( newPath )) + return FALSE; + lstrcpynW(buffer, newPath, sizeof(buffer)/sizeof(WCHAR)); + + /* get the list of spec files */ + GetDlgItemTextW(hWnd, edt1, buffer, sizeof(buffer)/sizeof(WCHAR)); + + hCursorWait = LoadCursorA(0, (LPSTR)IDC_WAIT); + oldCursor = SetCursor(hCursorWait); + + /* list of files */ + if ((hdlg = GetDlgItem(hWnd, lst1)) != 0) { + WCHAR* scptr; /* ptr on semi-colon */ + WCHAR* filter = buffer; + + TRACE("Using filter %s\n", debugstr_w(filter)); + SendMessageW(hdlg, LB_RESETCONTENT, 0, 0); + while (filter) { + scptr = strchrW(filter, ';'); + if (scptr) *scptr = 0; + while (*filter == ' ') filter++; + TRACE("Using file spec %s\n", debugstr_w(filter)); + if (SendMessageW(hdlg, LB_DIR, 0, (LPARAM)filter) == LB_ERR) + return FALSE; + if (scptr) *scptr = ';'; + filter = (scptr) ? (scptr + 1) : 0; + } + } + + /* list of directories */ + strcpyW(buffer, FILE_star); + + if ((hdlgDir = GetDlgItem(hWnd, lst2)) != 0) { + lRet = DlgDirListW(hWnd, buffer, lst2, stc1, DDL_EXCLUSIVE | DDL_DIRECTORY); + } + SetCursor(oldCursor); + return lRet; +} + +/*********************************************************************** + * FILEDLG_GetFileType [internal] + */ + +static LPWSTR FILEDLG_GetFileType(LPWSTR cfptr, LPWSTR fptr, WORD index) +{ + int n, i; + i = 0; + if (cfptr) + for ( ;(n = lstrlenW(cfptr)) != 0; i++) + { + cfptr += n + 1; + if (i == index) + return cfptr; + cfptr += lstrlenW(cfptr) + 1; + } + if (fptr) + for ( ;(n = lstrlenW(fptr)) != 0; i++) + { + fptr += n + 1; + if (i == index) + return fptr; + fptr += lstrlenW(fptr) + 1; + } + return (LPWSTR) FILE_star; /* FIXME */ +} + +/*********************************************************************** + * FILEDLG_WMDrawItem [internal] + */ +static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam, + int savedlg, LPDRAWITEMSTRUCT lpdis) +{ + WCHAR *str; + HICON hIcon; + COLORREF oldText = 0, oldBk = 0; + + if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1) + { + if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC))) return FALSE; + SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, + (LPARAM)str); + + if ((lpdis->itemState & ODS_SELECTED) && !savedlg) + { + oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) ); + oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + } + if (savedlg) + SetTextColor(lpdis->hDC,GetSysColor(COLOR_GRAYTEXT) ); + + ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + 1, + lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED, + &(lpdis->rcItem), str, lstrlenW(str), NULL); + + if (lpdis->itemState & ODS_SELECTED) + DrawFocusRect( lpdis->hDC, &(lpdis->rcItem) ); + + if ((lpdis->itemState & ODS_SELECTED) && !savedlg) + { + SetBkColor( lpdis->hDC, oldBk ); + SetTextColor( lpdis->hDC, oldText ); + } + HeapFree(GetProcessHeap(), 0, str); + return TRUE; + } + + if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2) + { + if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC))) + return FALSE; + SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, + (LPARAM)str); + + if (lpdis->itemState & ODS_SELECTED) + { + oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) ); + oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + } + ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + fldrWidth, + lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED, + &(lpdis->rcItem), str, lstrlenW(str), NULL); + + if (lpdis->itemState & ODS_SELECTED) + DrawFocusRect( lpdis->hDC, &(lpdis->rcItem) ); + + if (lpdis->itemState & ODS_SELECTED) + { + SetBkColor( lpdis->hDC, oldBk ); + SetTextColor( lpdis->hDC, oldText ); + } + DrawIcon(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, hFolder); + HeapFree(GetProcessHeap(), 0, str); + return TRUE; + } + if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2) + { + char root[] = "a:"; + if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC))) + return FALSE; + SendMessageW(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID, + (LPARAM)str); + root[0] += str[2] - 'a'; + switch(GetDriveTypeA(root)) + { + case DRIVE_REMOVABLE: hIcon = hFloppy; break; + case DRIVE_CDROM: hIcon = hCDRom; break; + case DRIVE_REMOTE: hIcon = hNet; break; + case DRIVE_FIXED: + default: hIcon = hHDisk; break; + } + if (lpdis->itemState & ODS_SELECTED) + { + oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) ); + oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + } + ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + fldrWidth, + lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED, + &(lpdis->rcItem), str, lstrlenW(str), NULL); + + if (lpdis->itemState & ODS_SELECTED) + { + SetBkColor( lpdis->hDC, oldBk ); + SetTextColor( lpdis->hDC, oldText ); + } + DrawIcon(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, hIcon); + HeapFree(GetProcessHeap(), 0, str); + return TRUE; + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG_UpdateResult [internal] + * update the displayed file name (with path) + */ +void FILEDLG_UpdateResult(LFSPRIVATE lfs, WCHAR *tmpstr) +{ + int lenstr2; + LPOPENFILENAMEW ofnW = lfs->ofnW; + WCHAR tmpstr2[BUFFILE]; + WCHAR *bs; + + TRACE("%s\n", debugstr_w(tmpstr)); + if(ofnW->Flags & OFN_NOVALIDATE) + tmpstr2[0] = '\0'; + else + GetCurrentDirectoryW(BUFFILE, tmpstr2); + lenstr2 = strlenW(tmpstr2); + if (lenstr2 > 3) + tmpstr2[lenstr2++]='\\'; + lstrcpynW(tmpstr2+lenstr2, tmpstr, BUFFILE-lenstr2); + if (ofnW->lpstrFile) + lstrcpynW(ofnW->lpstrFile, tmpstr2, ofnW->nMaxFile); + if((bs = strrchrW(tmpstr2, '\\')) != NULL) + ofnW->nFileOffset = bs - tmpstr2 +1; + else + ofnW->nFileOffset = 0; + ofnW->nFileExtension = 0; + while(tmpstr2[ofnW->nFileExtension] != '.' && tmpstr2[ofnW->nFileExtension] != '\0') + ofnW->nFileExtension++; + if (tmpstr2[ofnW->nFileExtension] == '\0') + ofnW->nFileExtension = 0; + else + ofnW->nFileExtension++; + /* update the real client structures if any */ + if (lfs->ofn16) + { /* we have to convert to short (8.3) path */ + char tmp[1024]; /* MAX_PATHNAME_LEN */ + LPOPENFILENAME16 ofn16 = lfs->ofn16; + char *dest = MapSL(ofn16->lpstrFile); + char *bs16; + if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1, + tmp, sizeof(tmp), NULL, NULL )) + tmp[sizeof(tmp)-1] = 0; + GetShortPathNameA(tmp, dest, ofn16->nMaxFile); + + /* the same procedure as every year... */ + if((bs16 = strrchr(dest, '\\')) != NULL) + ofn16->nFileOffset = bs16 - dest +1; + else + ofn16->nFileOffset = 0; + ofn16->nFileExtension = 0; + while(dest[ofn16->nFileExtension] != '.' && dest[ofn16->nFileExtension] != '\0') + ofn16->nFileExtension++; + if (dest[ofn16->nFileExtension] == '\0') + ofn16->nFileExtension = 0; + else + ofn16->nFileExtension++; + } + if (lfs->ofnA) + { + if (ofnW->nMaxFile && + !WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1, + lfs->ofnA->lpstrFile, ofnW->nMaxFile, NULL, NULL )) + lfs->ofnA->lpstrFile[ofnW->nMaxFile-1] = 0; + lfs->ofnA->nFileOffset = ofnW->nFileOffset; + lfs->ofnA->nFileExtension = ofnW->nFileExtension; + } +} + +/*********************************************************************** + * FILEDLG_UpdateFileTitle [internal] + * update the displayed file name (without path) + */ +void FILEDLG_UpdateFileTitle(LFSPRIVATE lfs) +{ + LONG lRet; + LPOPENFILENAMEW ofnW = lfs->ofnW; + if (ofnW->lpstrFileTitle != NULL) + { + lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0); + SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETTEXT, lRet, + (LPARAM)ofnW->lpstrFileTitle ); + if (lfs->ofn16) + { + char *dest = MapSL(lfs->ofn16->lpstrFileTitle); + if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1, + dest, ofnW->nMaxFileTitle, NULL, NULL )) + dest[ofnW->nMaxFileTitle-1] = 0; + } + if (lfs->ofnA) + { + if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1, + lfs->ofnA->lpstrFileTitle, ofnW->nMaxFileTitle, NULL, NULL )) + lfs->ofnA->lpstrFileTitle[ofnW->nMaxFileTitle-1] = 0; + } + } +} + +/*********************************************************************** + * FILEDLG_DirListDblClick [internal] + */ +static LRESULT FILEDLG_DirListDblClick( LFSPRIVATE lfs ) +{ + LONG lRet; + HWND hWnd = lfs->hwnd; + LPWSTR pstr; + WCHAR tmpstr[BUFFILE]; + + /* get the raw string (with brackets) */ + lRet = SendDlgItemMessageW(hWnd, lst2, LB_GETCURSEL, 0, 0); + if (lRet == LB_ERR) return TRUE; + pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC); + SendDlgItemMessageW(hWnd, lst2, LB_GETTEXT, lRet, + (LPARAM)pstr); + strcpyW( tmpstr, pstr ); + HeapFree(GetProcessHeap(), 0, pstr); + /* get the selected directory in tmpstr */ + if (tmpstr[0] == '[') + { + tmpstr[lstrlenW(tmpstr) - 1] = 0; + strcpyW(tmpstr,tmpstr+1); + } + strcatW(tmpstr, FILE_bslash); + + FILEDLG_ScanDir(hWnd, tmpstr); + /* notify the app */ + if (lfs->hook) + { + if (FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, lst2, + MAKELONG(lRet,CD_LBSELCHANGE))) + return TRUE; + } + return TRUE; +} + +/*********************************************************************** + * FILEDLG_FileListSelect [internal] + * called when a new item is picked in the file list + */ +static LRESULT FILEDLG_FileListSelect( LFSPRIVATE lfs ) +{ + LONG lRet; + HWND hWnd = lfs->hwnd; + LPWSTR pstr; + + lRet = SendDlgItemMessageW(hWnd, lst1, LB_GETCURSEL16, 0, 0); + if (lRet == LB_ERR) + return TRUE; + + /* set the edit control to the choosen file */ + if ((pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC))) + { + SendDlgItemMessageW(hWnd, lst1, LB_GETTEXT, lRet, + (LPARAM)pstr); + SetDlgItemTextW( hWnd, edt1, pstr ); + HeapFree(GetProcessHeap(), 0, pstr); + } + if (lfs->hook) + { + FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, lst1, + MAKELONG(lRet,CD_LBSELCHANGE)); + } + /* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD, + CD_LBSELNOITEMS */ + return TRUE; +} + +/*********************************************************************** + * FILEDLG_TestPath [internal] + * before accepting the file name, test if it includes wild cards + * tries to scan the directory and returns TRUE if no error. + */ +static LRESULT FILEDLG_TestPath( LFSPRIVATE lfs, LPWSTR path ) +{ + HWND hWnd = lfs->hwnd; + LPWSTR pBeginFileName, pstr2; + WCHAR tmpstr2[BUFFILE]; + + pBeginFileName = strrchrW(path, '\\'); + if (pBeginFileName == NULL) + pBeginFileName = strrchrW(path, ':'); + + if (strchrW(path,'*') != NULL || strchrW(path,'?') != NULL) + { + /* edit control contains wildcards */ + if (pBeginFileName != NULL) + { + lstrcpynW(tmpstr2, pBeginFileName + 1, BUFFILE); + *(pBeginFileName + 1) = 0; + } + else + { + strcpyW(tmpstr2, path); + if(!(lfs->ofnW->Flags & OFN_NOVALIDATE)) + *path = 0; + } + + TRACE("path=%s, tmpstr2=%s\n", debugstr_w(path), debugstr_w(tmpstr2)); + SetDlgItemTextW( hWnd, edt1, tmpstr2 ); + FILEDLG_ScanDir(hWnd, path); + return (lfs->ofnW->Flags & OFN_NOVALIDATE) ? TRUE : FALSE; + } + + /* no wildcards, we might have a directory or a filename */ + /* try appending a wildcard and reading the directory */ + + pstr2 = path + lstrlenW(path); + if (pBeginFileName == NULL || *(pBeginFileName + 1) != 0) + strcatW(path, FILE_bslash); + + /* if ScanDir succeeds, we have changed the directory */ + if (FILEDLG_ScanDir(hWnd, path)) + return FALSE; /* and path is not a valid file name */ + + /* if not, this must be a filename */ + + *pstr2 = 0; /* remove the wildcard added before */ + + if (pBeginFileName != NULL) + { + /* strip off the pathname */ + *pBeginFileName = 0; + SetDlgItemTextW( hWnd, edt1, pBeginFileName + 1 ); + + lstrcpynW(tmpstr2, pBeginFileName + 1, sizeof(tmpstr2)/sizeof(WCHAR) ); + /* Should we MessageBox() if this fails? */ + if (!FILEDLG_ScanDir(hWnd, path)) + { + return FALSE; + } + strcpyW(path, tmpstr2); + } + else + SetDlgItemTextW( hWnd, edt1, path ); + return TRUE; +} + +/*********************************************************************** + * FILEDLG_Validate [internal] + * called on: click Ok button, Enter in edit, DoubleClick in file list + */ +static LRESULT FILEDLG_Validate( LFSPRIVATE lfs, LPWSTR path, UINT control, INT itemIndex, + BOOL internalUse ) +{ + LONG lRet; + HWND hWnd = lfs->hwnd; + OPENFILENAMEW ofnsav; + LPOPENFILENAMEW ofnW = lfs->ofnW; + WCHAR filename[BUFFILE]; + + ofnsav = *ofnW; /* for later restoring */ + + /* get current file name */ + if (path) + lstrcpynW(filename, path, sizeof(filename)/sizeof(WCHAR)); + else + GetDlgItemTextW( hWnd, edt1, filename, sizeof(filename)/sizeof(WCHAR)); + + TRACE("got filename = %s\n", debugstr_w(filename)); + /* if we did not click in file list to get there */ + if (control != lst1) + { + if (!FILEDLG_TestPath( lfs, filename) ) + return FALSE; + } + FILEDLG_UpdateResult(lfs, filename); + + if (internalUse) + { /* called internally after a change in a combo */ + if (lfs->hook) + { + FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, control, + MAKELONG(itemIndex,CD_LBSELCHANGE)); + } + return TRUE; + } + + FILEDLG_UpdateFileTitle(lfs); + if (lfs->hook) + { + lRet = (BOOL)FILEDLG_CallWindowProc(lfs, lfs->fileokstring, + 0, lfs->lParam ); + if (lRet) + { + *ofnW = ofnsav; /* restore old state */ + return FALSE; + } + } + if ((ofnW->Flags & OFN_ALLOWMULTISELECT) && (ofnW->Flags & OFN_EXPLORER)) + { + if (ofnW->lpstrFile) + { + LPWSTR str = (LPWSTR)ofnW->lpstrFile; + LPWSTR ptr = strrchrW(str, '\\'); + str[lstrlenW(str) + 1] = '\0'; + *ptr = 0; + } + } + return TRUE; +} + +/*********************************************************************** + * FILEDLG_DiskChange [internal] + * called when a new item is picked in the disk selection combo + */ +static LRESULT FILEDLG_DiskChange( LFSPRIVATE lfs ) +{ + LONG lRet; + HWND hWnd = lfs->hwnd; + LPWSTR pstr; + WCHAR diskname[BUFFILE]; + + FILEDLG_StripEditControl(hWnd); + lRet = SendDlgItemMessageW(hWnd, cmb2, CB_GETCURSEL, 0, 0L); + if (lRet == LB_ERR) + return 0; + pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC); + SendDlgItemMessageW(hWnd, cmb2, CB_GETLBTEXT, lRet, + (LPARAM)pstr); + wsprintfW(diskname, FILE_specc, pstr[2]); + HeapFree(GetProcessHeap(), 0, pstr); + + return FILEDLG_Validate( lfs, diskname, cmb2, lRet, TRUE ); +} + +/*********************************************************************** + * FILEDLG_FileTypeChange [internal] + * called when a new item is picked in the file type combo + */ +static LRESULT FILEDLG_FileTypeChange( LFSPRIVATE lfs ) +{ + LONG lRet; + WCHAR diskname[BUFFILE]; + LPWSTR pstr; + + diskname[0] = 0; + + lRet = SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETCURSEL, 0, 0); + if (lRet == LB_ERR) + return TRUE; + pstr = (LPWSTR)SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETITEMDATA, lRet, 0); + TRACE("Selected filter : %s\n", debugstr_w(pstr)); + SetDlgItemTextW( lfs->hwnd, edt1, pstr ); + + return FILEDLG_Validate( lfs, NULL, cmb1, lRet, TRUE ); +} + +/*********************************************************************** + * FILEDLG_WMCommand [internal] + */ +static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification, + UINT control, LFSPRIVATE lfs ) +{ + switch (control) + { + case lst1: /* file list */ + FILEDLG_StripEditControl(hWnd); + if (notification == LBN_DBLCLK) + { + if (FILEDLG_Validate( lfs, NULL, control, 0, FALSE )) + EndDialog(hWnd, TRUE); + return TRUE; + } + else if (notification == LBN_SELCHANGE) + return FILEDLG_FileListSelect( lfs ); + break; + + case lst2: /* directory list */ + FILEDLG_StripEditControl(hWnd); + if (notification == LBN_DBLCLK) + return FILEDLG_DirListDblClick( lfs ); + break; + + case cmb1: /* file type drop list */ + if (notification == CBN_SELCHANGE) + return FILEDLG_FileTypeChange( lfs ); + break; + + case chx1: + break; + + case pshHelp: + break; + + case cmb2: /* disk dropdown combo */ + if (notification == CBN_SELCHANGE) + return FILEDLG_DiskChange( lfs ); + break; + + case IDOK: + TRACE("OK pressed\n"); + if (FILEDLG_Validate( lfs, NULL, control, 0, FALSE )) + EndDialog(hWnd, TRUE); + return TRUE; + + case IDCANCEL: + EndDialog(hWnd, FALSE); + return TRUE; + + case IDABORT: /* can be sent by the hook procedure */ + EndDialog(hWnd, TRUE); + return TRUE; + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG_MapDrawItemStruct [internal] + * map a 16 bits drawitem struct to 32 + */ +static void FILEDLG_MapDrawItemStruct(LPDRAWITEMSTRUCT16 lpdis16, LPDRAWITEMSTRUCT lpdis) +{ + lpdis->CtlType = lpdis16->CtlType; + lpdis->CtlID = lpdis16->CtlID; + lpdis->itemID = lpdis16->itemID; + lpdis->itemAction = lpdis16->itemAction; + lpdis->itemState = lpdis16->itemState; + lpdis->hwndItem = HWND_32(lpdis16->hwndItem); + lpdis->hDC = HDC_32(lpdis16->hDC); + lpdis->rcItem.right = lpdis16->rcItem.right; + lpdis->rcItem.left = lpdis16->rcItem.left; + lpdis->rcItem.top = lpdis16->rcItem.top; + lpdis->rcItem.bottom = lpdis16->rcItem.bottom; + lpdis->itemData = lpdis16->itemData; +} + +/************************************************************************ + * FILEDLG_MapStringPairsToW [internal] + * map string pairs to Unicode + */ +static LPWSTR FILEDLG_MapStringPairsToW(LPCSTR strA, UINT size) +{ + LPCSTR s; + LPWSTR x; + int n, len; + + s = strA; + while (*s) + s = s+strlen(s)+1; + s++; + n = s + 1 - strA; /* Don't forget the other \0 */ + if (n < size) n = size; + + len = MultiByteToWideChar( CP_ACP, 0, strA, n, NULL, 0 ); + x = HeapAlloc(GetProcessHeap(),0, len * sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, strA, n, x, len ); + return x; +} + + +/************************************************************************ + * FILEDLG_DupToW [internal] + * duplicates an Ansi string to unicode, with a buffer size + */ +LPWSTR FILEDLG_DupToW(LPCSTR str, DWORD size) +{ + LPWSTR strW = NULL; + if (str && (size > 0)) + { + strW = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)); + if (strW) MultiByteToWideChar( CP_ACP, 0, str, -1, strW, size ); + } + return strW; +} + + +/************************************************************************ + * FILEDLG_MapOfnStructA [internal] + * map a 32 bits Ansi structure to an Unicode one + */ +void FILEDLG_MapOfnStructA(LPOPENFILENAMEA ofnA, LPOPENFILENAMEW ofnW, BOOL open) +{ + LPCSTR str; + UNICODE_STRING usBuffer; + + ofnW->lStructSize = sizeof(OPENFILENAMEW); + ofnW->hwndOwner = ofnA->hwndOwner; + ofnW->hInstance = ofnA->hInstance; + if (ofnA->lpstrFilter) + ofnW->lpstrFilter = FILEDLG_MapStringPairsToW(ofnA->lpstrFilter, 0); + + if ((ofnA->lpstrCustomFilter) && (*(ofnA->lpstrCustomFilter))) + ofnW->lpstrCustomFilter = FILEDLG_MapStringPairsToW(ofnA->lpstrCustomFilter, ofnA->nMaxCustFilter); + ofnW->nMaxCustFilter = ofnA->nMaxCustFilter; + ofnW->nFilterIndex = ofnA->nFilterIndex; + ofnW->nMaxFile = ofnA->nMaxFile; + ofnW->lpstrFile = FILEDLG_DupToW(ofnA->lpstrFile, ofnW->nMaxFile); + ofnW->nMaxFileTitle = ofnA->nMaxFileTitle; + ofnW->lpstrFileTitle = FILEDLG_DupToW(ofnA->lpstrFileTitle, ofnW->nMaxFileTitle); + if (ofnA->lpstrInitialDir) + { + RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpstrInitialDir); + ofnW->lpstrInitialDir = usBuffer.Buffer; + } + if (ofnA->lpstrTitle) + str = ofnA->lpstrTitle; + else + /* Allocates default title (FIXME : get it from resource) */ + str = open ? defaultopen:defaultsave; + RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpstrTitle); + ofnW->lpstrTitle = usBuffer.Buffer; + ofnW->Flags = ofnA->Flags; + ofnW->nFileOffset = ofnA->nFileOffset; + ofnW->nFileExtension = ofnA->nFileExtension; + ofnW->lpstrDefExt = FILEDLG_DupToW(ofnA->lpstrDefExt, 3); + if ((ofnA->Flags & OFN_ENABLETEMPLATE) && (ofnA->lpTemplateName)) + { + if (HIWORD(ofnA->lpTemplateName)) + { + RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpTemplateName); + ofnW->lpTemplateName = usBuffer.Buffer; + } + else /* numbered resource */ + ofnW->lpTemplateName = (LPWSTR) ofnA->lpTemplateName; + } +} + +/************************************************************************ + * FILEDLG_MapOfnStruct16 [internal] + * map a 16 bits structure to an Unicode one + */ +void FILEDLG_MapOfnStruct16(LPOPENFILENAME16 ofn16, LPOPENFILENAMEW ofnW, BOOL open) +{ + OPENFILENAMEA ofnA; + /* first convert to linear pointers */ + memset(&ofnA, 0, sizeof(OPENFILENAMEA)); + ofnA.lStructSize = sizeof(OPENFILENAMEA); + ofnA.hwndOwner = HWND_32(ofn16->hwndOwner); + ofnA.hInstance = HINSTANCE_32(ofn16->hInstance); + if (ofn16->lpstrFilter) + ofnA.lpstrFilter = MapSL(ofn16->lpstrFilter); + if (ofn16->lpstrCustomFilter) + ofnA.lpstrCustomFilter = MapSL(ofn16->lpstrCustomFilter); + ofnA.nMaxCustFilter = ofn16->nMaxCustFilter; + ofnA.nFilterIndex = ofn16->nFilterIndex; + ofnA.lpstrFile = MapSL(ofn16->lpstrFile); + ofnA.nMaxFile = ofn16->nMaxFile; + ofnA.lpstrFileTitle = MapSL(ofn16->lpstrFileTitle); + ofnA.nMaxFileTitle = ofn16->nMaxFileTitle; + ofnA.lpstrInitialDir = MapSL(ofn16->lpstrInitialDir); + ofnA.lpstrTitle = MapSL(ofn16->lpstrTitle); + ofnA.Flags = ofn16->Flags; + ofnA.nFileOffset = ofn16->nFileOffset; + ofnA.nFileExtension = ofn16->nFileExtension; + ofnA.lpstrDefExt = MapSL(ofn16->lpstrDefExt); + if (HIWORD(ofn16->lpTemplateName)) + ofnA.lpTemplateName = MapSL(ofn16->lpTemplateName); + else + ofnA.lpTemplateName = (LPSTR) ofn16->lpTemplateName; /* ressource number */ + /* now calls the 32 bits Ansi to Unicode version to complete the job */ + FILEDLG_MapOfnStructA(&ofnA, ofnW, open); +} + +/************************************************************************ + * FILEDLG_DestroyPrivate [internal] + * destroys the private object + */ +static void FILEDLG_DestroyPrivate(LFSPRIVATE lfs) +{ + HWND hwnd; + if (!lfs) return; + hwnd = lfs->hwnd; + /* free resources for a 16 bits dialog */ + if (lfs->hResource16) FreeResource16(lfs->hResource16); + if (lfs->hGlobal16) + { + GlobalUnlock16(lfs->hGlobal16); + GlobalFree16(lfs->hGlobal16); + } + /* if ofnW has been allocated, have to free everything in it */ + if (lfs->ofn16 || lfs->ofnA) + { + LPOPENFILENAMEW ofnW = lfs->ofnW; + if (ofnW->lpstrFilter) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrFilter); + if (ofnW->lpstrCustomFilter) HeapFree(GetProcessHeap(), 0, ofnW->lpstrCustomFilter); + if (ofnW->lpstrFile) HeapFree(GetProcessHeap(), 0, ofnW->lpstrFile); + if (ofnW->lpstrFileTitle) HeapFree(GetProcessHeap(), 0, ofnW->lpstrFileTitle); + if (ofnW->lpstrInitialDir) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrInitialDir); + if (ofnW->lpstrTitle) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrTitle); + if ((ofnW->lpTemplateName) && (HIWORD(ofnW->lpTemplateName))) + HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpTemplateName); + HeapFree(GetProcessHeap(), 0, ofnW); + } + TRACE("destroying private allocation %p\n", lfs); + HeapFree(GetProcessHeap(), 0, lfs); + RemovePropA(hwnd, OFN_PROP); +} + +/************************************************************************ + * FILEDLG_AllocPrivate [internal] + * allocate a private object to hold 32 bits Unicode + * structure that will be used throughtout the calls, while + * keeping available the original structures and a few variables + * On entry : type = dialog procedure type (16,32A,32W) + * dlgType = dialog type (open or save) + */ +static LFSPRIVATE FILEDLG_AllocPrivate(LPARAM lParam, int type, UINT dlgType) +{ + LFSPRIVATE lfs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FSPRIVATE)); + LFSPRIVATE ret; + TRACE("alloc private buf %p\n", lfs); + if (!lfs) return NULL; + lfs->hook = FALSE; + lfs->lParam = lParam; + if (dlgType == OPEN_DIALOG) + lfs->open = TRUE; + else + lfs->open = FALSE; + lfs->lbselchstring = RegisterWindowMessageA(LBSELCHSTRINGA); + lfs->fileokstring = RegisterWindowMessageA(FILEOKSTRINGA); + switch(type) + { + case LFS16: + lfs->ofn16 = MapSL(lParam); + if (lfs->ofn16->Flags & OFN_ENABLEHOOK) + if (lfs->ofn16->lpfnHook) + lfs->hook = TRUE; + + break; + + case LFS32A: + lfs->ofnA = (LPOPENFILENAMEA) lParam; + if (lfs->ofnA->Flags & OFN_ENABLEHOOK) + if (lfs->ofnA->lpfnHook) + lfs->hook = TRUE; + break; + + case LFS32W: + lfs->ofnW = (LPOPENFILENAMEW) lParam; + if (lfs->ofnW->Flags & OFN_ENABLEHOOK) + if (lfs->ofnW->lpfnHook) + lfs->hook = TRUE; + break; + } + ret = lfs; + if (!lfs->ofnW) + { /* this structure is needed internally, so create it */ + lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(OPENFILENAMEW)); + if (lfs->ofnW) + { + if (lfs->ofn16) + FILEDLG_MapOfnStruct16(lfs->ofn16, lfs->ofnW, lfs->open); + if (lfs->ofnA) + FILEDLG_MapOfnStructA(lfs->ofnA, lfs->ofnW, lfs->open); + } + else + ret = NULL; + } + if (lfs->ofn16) + { + if (!Get16BitsTemplate(lfs)) ret = NULL; + } + else + if (!Get32BitsTemplate(lfs)) ret = NULL; + if (!ret) FILEDLG_DestroyPrivate(lfs); + return ret; +} + +/*********************************************************************** + * FILEDLG_CallWindowProc16 [internal] + * + * Call the appropriate hook + */ +static BOOL FILEDLG_CallWindowProc16(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam, + LPARAM lParam) +{ + if (lfs->ofn16) + { + return (BOOL16) CallWindowProc16( + (WNDPROC16)lfs->ofn16->lpfnHook, HWND_16(lfs->hwnd), + (UINT16)wMsg, (WPARAM16)wParam, lParam); + } + return FALSE; +} + +/*********************************************************************** + * FILEDLG_WMInitDialog16 [internal] + * The is a duplicate of the 32bit FILEDLG_WMInitDialog function + * The only differnce is that it calls FILEDLG_CallWindowProc16 + * for a 16 bit Window Proc. + */ + +static LONG FILEDLG_WMInitDialog16(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + int i, n; + WCHAR tmpstr[BUFFILE]; + LPWSTR pstr, old_pstr; + LPOPENFILENAMEW ofn; + LFSPRIVATE lfs = (LFSPRIVATE) lParam; + + if (!lfs) return FALSE; + SetPropA(hWnd, OFN_PROP, (HANDLE)lfs); + lfs->hwnd = hWnd; + ofn = lfs->ofnW; + + TRACE("flags=%lx initialdir=%s\n", ofn->Flags, debugstr_w(ofn->lpstrInitialDir)); + + SetWindowTextW( hWnd, ofn->lpstrTitle ); + /* read custom filter information */ + if (ofn->lpstrCustomFilter) + { + pstr = ofn->lpstrCustomFilter; + n = 0; + TRACE("lpstrCustomFilter = %p\n", pstr); + while(*pstr) + { + old_pstr = pstr; + i = SendDlgItemMessageW(hWnd, cmb1, CB_ADDSTRING, 0, + (LPARAM)(ofn->lpstrCustomFilter) + n ); + n += lstrlenW(pstr) + 1; + pstr += lstrlenW(pstr) + 1; + TRACE("add str=%s associated to %s\n", + debugstr_w(old_pstr), debugstr_w(pstr)); + SendDlgItemMessageW(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr); + n += lstrlenW(pstr) + 1; + pstr += lstrlenW(pstr) + 1; + } + } + /* read filter information */ + if (ofn->lpstrFilter) { + pstr = (LPWSTR) ofn->lpstrFilter; + n = 0; + while(*pstr) { + old_pstr = pstr; + i = SendDlgItemMessageW(hWnd, cmb1, CB_ADDSTRING, 0, + (LPARAM)(ofn->lpstrFilter + n) ); + n += lstrlenW(pstr) + 1; + pstr += lstrlenW(pstr) + 1; + TRACE("add str=%s associated to %s\n", + debugstr_w(old_pstr), debugstr_w(pstr)); + SendDlgItemMessageW(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr); + n += lstrlenW(pstr) + 1; + pstr += lstrlenW(pstr) + 1; + } + } + /* set default filter */ + if (ofn->nFilterIndex == 0 && ofn->lpstrCustomFilter == NULL) + ofn->nFilterIndex = 1; + SendDlgItemMessageW(hWnd, cmb1, CB_SETCURSEL, ofn->nFilterIndex - 1, 0); + lstrcpynW(tmpstr, FILEDLG_GetFileType(ofn->lpstrCustomFilter, + (LPWSTR)ofn->lpstrFilter, ofn->nFilterIndex - 1),BUFFILE); + TRACE("nFilterIndex = %ld, SetText of edt1 to %s\n", + ofn->nFilterIndex, debugstr_w(tmpstr)); + SetDlgItemTextW( hWnd, edt1, tmpstr ); + /* get drive list */ + *tmpstr = 0; + DlgDirListComboBoxW(hWnd, tmpstr, cmb2, 0, DDL_DRIVES | DDL_EXCLUSIVE); + /* read initial directory */ + /* FIXME: Note that this is now very version-specific (See MSDN description of + * the OPENFILENAME structure). For example under 2000/XP any path in the + * lpstrFile overrides the lpstrInitialDir, but not under 95/98/ME + */ + if (ofn->lpstrInitialDir != NULL) + { + int len; + lstrcpynW(tmpstr, ofn->lpstrInitialDir, 511); + len = lstrlenW(tmpstr); + if (len > 0 && tmpstr[len-1] != '\\' && tmpstr[len-1] != ':') { + tmpstr[len]='\\'; + tmpstr[len+1]='\0'; + } + } + else + *tmpstr = 0; + if (!FILEDLG_ScanDir(hWnd, tmpstr)) { + *tmpstr = 0; + if (!FILEDLG_ScanDir(hWnd, tmpstr)) + WARN("Couldn't read initial directory %s!\n", debugstr_w(tmpstr)); + } + /* select current drive in combo 2, omit missing drives */ + { + char dir[MAX_PATH]; + char str[4] = "a:\\"; + GetCurrentDirectoryA( sizeof(dir), dir ); + for(i = 0, n = -1; i < 26; i++) + { + str[0] = 'a' + i; + if (GetDriveTypeA(str) > DRIVE_NO_ROOT_DIR) n++; + if (toupper(str[0]) == toupper(dir[0])) break; + } + } + SendDlgItemMessageW(hWnd, cmb2, CB_SETCURSEL, n, 0); + if (!(ofn->Flags & OFN_SHOWHELP)) + ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE); + if (ofn->Flags & OFN_HIDEREADONLY) + ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE); + if (lfs->hook) + return (BOOL) FILEDLG_CallWindowProc16(lfs, WM_INITDIALOG, wParam, lfs->lParam); + return TRUE; +} + +/*********************************************************************** + * FILEDLG_WMMeasureItem16 [internal] + */ +static LONG FILEDLG_WMMeasureItem16(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam) +{ + LPMEASUREITEMSTRUCT16 lpmeasure; + + lpmeasure = MapSL(lParam); + lpmeasure->itemHeight = fldrHeight; + return TRUE; +} + +/* ------------------ Dialog procedures ---------------------- */ + +/*********************************************************************** + * FileOpenDlgProc (COMMDLG.6) + */ +BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hWnd = HWND_32(hWnd16); + LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP); + DRAWITEMSTRUCT dis; + + TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam); + if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook) + { + LRESULT lRet = (BOOL16)FILEDLG_CallWindowProc16(lfs, wMsg, wParam, lParam); + if (lRet) + return lRet; /* else continue message processing */ + } + switch (wMsg) + { + case WM_INITDIALOG: + return FILEDLG_WMInitDialog16(hWnd, wParam, lParam); + + case WM_MEASUREITEM: + return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam); + + case WM_DRAWITEM: + FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis); + return FILEDLG_WMDrawItem(hWnd, wParam, lParam, FALSE, &dis); + + case WM_COMMAND: + return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam),wParam, lfs); +#if 0 + case WM_CTLCOLOR: + SetBkColor((HDC16)wParam, 0x00C0C0C0); + switch (HIWORD(lParam)) + { + case CTLCOLOR_BTN: + SetTextColor((HDC16)wParam, 0x00000000); + return hGRAYBrush; + case CTLCOLOR_STATIC: + SetTextColor((HDC16)wParam, 0x00000000); + return hGRAYBrush; + } + break; +#endif + } + return FALSE; +} + +/*********************************************************************** + * FileSaveDlgProc (COMMDLG.7) + */ +BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hWnd = HWND_32(hWnd16); + LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP); + DRAWITEMSTRUCT dis; + + TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam); + if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook) + { + LRESULT lRet; + lRet = (BOOL16)FILEDLG_CallWindowProc16(lfs, wMsg, wParam, lParam); + if (lRet) + return lRet; /* else continue message processing */ + } + switch (wMsg) { + case WM_INITDIALOG: + return FILEDLG_WMInitDialog16(hWnd, wParam, lParam); + + case WM_MEASUREITEM: + return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam); + + case WM_DRAWITEM: + FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis); + return FILEDLG_WMDrawItem(hWnd, wParam, lParam, TRUE, &dis); + + case WM_COMMAND: + return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam), wParam, lfs); + } + + /* + case WM_CTLCOLOR: + SetBkColor((HDC16)wParam, 0x00C0C0C0); + switch (HIWORD(lParam)) + { + case CTLCOLOR_BTN: + SetTextColor((HDC16)wParam, 0x00000000); + return hGRAYBrush; + case CTLCOLOR_STATIC: + SetTextColor((HDC16)wParam, 0x00000000); + return hGRAYBrush; + } + return FALSE; + + */ + return FALSE; +} + +/* ------------------ APIs ---------------------- */ + +/*********************************************************************** + * GetOpenFileName (COMMDLG.1) + * + * Creates a dialog box for the user to select a file to open. + * + * RETURNS + * TRUE on success: user selected a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + * BUGS + * unknown, there are some FIXME's left. + */ +BOOL16 WINAPI GetOpenFileName16( + SEGPTR ofn /* [in/out] address of structure with data*/ + ) +{ + HINSTANCE16 hInst; + BOOL bRet = FALSE; + LPOPENFILENAME16 lpofn = MapSL(ofn); + LFSPRIVATE lfs; + FARPROC16 ptr; + + if (!lpofn || !FileDlg_Init()) return FALSE; + + lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, OPEN_DIALOG); + if (lfs) + { + hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE ); + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 6); + bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner, + (DLGPROC16) ptr, (LPARAM) lfs); + FILEDLG_DestroyPrivate(lfs); + } + + TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile)); + return bRet; +} + +/*********************************************************************** + * GetSaveFileName (COMMDLG.2) + * + * Creates a dialog box for the user to select a file to save. + * + * RETURNS + * TRUE on success: user enters a valid file + * FALSE on cancel, error, close or filename-does-not-fit-in-buffer. + * + * BUGS + * unknown. There are some FIXME's left. + */ +BOOL16 WINAPI GetSaveFileName16( + SEGPTR ofn /* [in/out] addess of structure with data*/ + ) +{ + HINSTANCE16 hInst; + BOOL bRet = FALSE; + LPOPENFILENAME16 lpofn = MapSL(ofn); + LFSPRIVATE lfs; + FARPROC16 ptr; + + if (!lpofn || !FileDlg_Init()) return FALSE; + + lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, SAVE_DIALOG); + if (lfs) + { + hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE ); + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 7); + bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner, + (DLGPROC16) ptr, (LPARAM) lfs); + FILEDLG_DestroyPrivate(lfs); + } + + TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile)); + return bRet; +} diff --git a/reactos/lib/comdlg32/filedlgbrowser.c b/reactos/lib/comdlg32/filedlgbrowser.c new file mode 100644 index 00000000000..db1ade8b0c9 --- /dev/null +++ b/reactos/lib/comdlg32/filedlgbrowser.c @@ -0,0 +1,957 @@ +/* + * Implementation of IShellBrowser for the File Open common dialog + * + * Copyright 1999 Francois Boisvert + * Copyright 1999, 2000 Juergen Schmied + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include + +#define NONAMELESSUNION +#define NONAMELESSSTRUCT +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "wingdi.h" +#include "winuser.h" +#include "winreg.h" + +#define NO_SHLWAPI_STREAM +#include "shlwapi.h" +#include "filedlgbrowser.h" +#include "cdlg.h" +#include "shlguid.h" +#include "servprov.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +typedef struct +{ + + ICOM_VTABLE(IShellBrowser) * lpVtbl; + ICOM_VTABLE(ICommDlgBrowser) * lpVtblCommDlgBrowser; + ICOM_VTABLE(IServiceProvider)* lpVtblServiceProvider; + DWORD ref; /* Reference counter */ + HWND hwndOwner; /* Owner dialog of the interface */ + +} IShellBrowserImpl; + +/************************************************************************** +* vtable +*/ +static ICOM_VTABLE(IShellBrowser) IShellBrowserImpl_Vtbl; +static ICOM_VTABLE(ICommDlgBrowser) IShellBrowserImpl_ICommDlgBrowser_Vtbl; +static ICOM_VTABLE(IServiceProvider) IShellBrowserImpl_IServiceProvider_Vtbl; + +/************************************************************************** +* Local Prototypes +*/ + +HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IShellView *ppshv); +#if 0 +LPITEMIDLIST GetSelectedPidl(IShellView *ppshv); +#endif + +/************************************************************************** +* External Prototypes +*/ +extern const char *FileOpenDlgInfosStr; + +extern HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName); +extern HRESULT GetFileName(HWND hwnd, LPITEMIDLIST pidl, LPSTR lpstrFileName); +extern IShellFolder* GetShellFolderFromPidl(LPITEMIDLIST pidlAbs); +extern LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl); +extern LPITEMIDLIST GetPidlFromName(IShellFolder *psf,LPCSTR lpcstrFileName); + +extern BOOL FILEDLG95_SHELL_FillIncludedItemList(HWND hwnd, + LPITEMIDLIST pidlCurrentFolder, + LPSTR lpstrMask); + +extern int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl); +extern BOOL FILEDLG95_OnOpen(HWND hwnd); +extern HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode); + + +/* + * Helper functions + */ + +static void COMDLG32_UpdateCurrentDir(FileOpenDlgInfos *fodInfos) +{ + char lpstrPath[MAX_PATH]; + if(SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath)) { + SetCurrentDirectoryA(lpstrPath); + TRACE("new current folder %s\n", lpstrPath); + } +} + +/* copied from shell32 to avoid linking to it */ +static HRESULT COMDLG32_StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPCITEMIDLIST pidl) +{ + TRACE("dest=%p len=0x%lx strret=%p pidl=%p stub\n",dest,len,src,pidl); + + switch (src->uType) + { + case STRRET_WSTR: + lstrcpynW((LPWSTR)dest, src->u.pOleStr, len); + COMDLG32_SHFree(src->u.pOleStr); + break; + + case STRRET_CSTR: + if (len && !MultiByteToWideChar( CP_ACP, 0, src->u.cStr, -1, (LPWSTR)dest, len )) + ((LPWSTR)dest)[len-1] = 0; + break; + + case STRRET_OFFSET: + if (pidl) + { + if (len && !MultiByteToWideChar( CP_ACP, 0, ((LPCSTR)&pidl->mkid)+src->u.uOffset, + -1, (LPWSTR)dest, len )) + ((LPWSTR)dest)[len-1] = 0; + } + break; + + default: + FIXME("unknown type!\n"); + if (len) + { *(LPWSTR)dest = '\0'; + } + return(FALSE); + } + return S_OK; +} + +/* + * IShellBrowser + */ + +/************************************************************************** +* IShellBrowserImpl_Construct +*/ +IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner) +{ + IShellBrowserImpl *sb; + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwndOwner,FileOpenDlgInfosStr); + + sb=(IShellBrowserImpl*)COMDLG32_SHAlloc(sizeof(IShellBrowserImpl)); + + /* Initialisation of the member variables */ + sb->ref=1; + sb->hwndOwner = hwndOwner; + + /* Initialisation of the vTables */ + sb->lpVtbl = &IShellBrowserImpl_Vtbl; + sb->lpVtblCommDlgBrowser = &IShellBrowserImpl_ICommDlgBrowser_Vtbl; + sb->lpVtblServiceProvider = &IShellBrowserImpl_IServiceProvider_Vtbl; + SHGetSpecialFolderLocation(hwndOwner, CSIDL_DESKTOP, + &fodInfos->ShellInfos.pidlAbsCurrent); + + TRACE("%p\n", sb); + + return (IShellBrowser *) sb; +} + +/*************************************************************************** +* IShellBrowserImpl_QueryInterface +*/ +HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface, + REFIID riid, + LPVOID *ppvObj) +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n\t%s\n", This, debugstr_guid(riid)); + + *ppvObj = NULL; + + if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ + { *ppvObj = This; + } + else if(IsEqualIID(riid, &IID_IOleWindow)) /*IOleWindow*/ + { *ppvObj = (IOleWindow*)This; + } + + else if(IsEqualIID(riid, &IID_IShellBrowser)) /*IShellBrowser*/ + { *ppvObj = (IShellBrowser*)This; + } + + else if(IsEqualIID(riid, &IID_ICommDlgBrowser)) /*ICommDlgBrowser*/ + { *ppvObj = (ICommDlgBrowser*) &(This->lpVtblCommDlgBrowser); + } + + else if(IsEqualIID(riid, &IID_IServiceProvider)) /* IServiceProvider */ + { *ppvObj = (ICommDlgBrowser*) &(This->lpVtblServiceProvider); + } + + if(*ppvObj) + { IUnknown_AddRef( (IShellBrowser*) *ppvObj); + return S_OK; + } + FIXME("Unknown interface requested\n"); + return E_NOINTERFACE; +} + +/************************************************************************** +* IShellBrowser::AddRef +*/ +ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser * iface) +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p,%lu)\n", This, This->ref); + + return ++(This->ref); +} + +/************************************************************************** +* IShellBrowserImpl_Release +*/ +ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser * iface) +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p,%lu)\n", This, This->ref); + + if (!--(This->ref)) + { + COMDLG32_SHFree(This); + TRACE("-- destroyed\n"); + return 0; + } + return This->ref; +} + +/* + * IOleWindow + */ + +/************************************************************************** +* IShellBrowserImpl_GetWindow (IOleWindow) +* +* Inherited from IOleWindow::GetWindow +* +* See Windows documentation for more details +* +* Note : We will never be window less in the File Open dialog +* +*/ +HRESULT WINAPI IShellBrowserImpl_GetWindow(IShellBrowser * iface, + HWND * phwnd) +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + if(!This->hwndOwner) + return E_FAIL; + + *phwnd = This->hwndOwner; + + return (*phwnd) ? S_OK : E_UNEXPECTED; + +} + +/************************************************************************** +* IShellBrowserImpl_ContextSensitiveHelp +*/ +HRESULT WINAPI IShellBrowserImpl_ContextSensitiveHelp(IShellBrowser * iface, + BOOL fEnterMode) +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} + +/* + * IShellBrowser + */ + +/************************************************************************** +* IShellBrowserImpl_BrowseObject +* +* See Windows documentation on IShellBrowser::BrowseObject for more details +* +* This function will override user specified flags and will always +* use SBSP_DEFBROWSER and SBSP_DEFMODE. +*/ +HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface, + LPCITEMIDLIST pidl, + UINT wFlags) +{ + HRESULT hRes; + IShellFolder *psfTmp; + IShellView *psvTmp; + FileOpenDlgInfos *fodInfos; + LPITEMIDLIST pidlTmp; + HWND hwndView; + HWND hDlgWnd; + BOOL bViewHasFocus; + RECT rectView; + + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)(pidl=%p,flags=0x%08x(%s))\n", This, pidl, wFlags, + (wFlags & SBSP_RELATIVE) ? "SBSP_RELATIVE" : + (wFlags & SBSP_PARENT) ? "SBSP_PARENT" : + (wFlags & SBSP_ABSOLUTE) ? "SBSP_ABSOLUTE" : "SBPS_????"); + + fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + + /* Format the pidl according to its parameter's category */ + if(wFlags & SBSP_RELATIVE) + { + + /* SBSP_RELATIVE A relative pidl (relative from the current folder) */ + if(FAILED(hRes = IShellFolder_BindToObject(fodInfos->Shell.FOIShellFolder, + pidl, NULL, &IID_IShellFolder, (LPVOID *)&psfTmp))) + { + ERR("bind to object failed\n"); + return hRes; + } + /* create an absolute pidl */ + pidlTmp = COMDLG32_PIDL_ILCombine(fodInfos->ShellInfos.pidlAbsCurrent, + (LPITEMIDLIST)pidl); + } + else if(wFlags & SBSP_PARENT) + { + /* Browse the parent folder (ignores the pidl) */ + pidlTmp = GetParentPidl(fodInfos->ShellInfos.pidlAbsCurrent); + psfTmp = GetShellFolderFromPidl(pidlTmp); + + } + else /* SBSP_ABSOLUTE is 0x0000 */ + { + /* An absolute pidl (relative from the desktop) */ + pidlTmp = COMDLG32_PIDL_ILClone((LPITEMIDLIST)pidl); + psfTmp = GetShellFolderFromPidl(pidlTmp); + } + + if(!psfTmp) + { + ERR("could not browse to folder\n"); + return E_FAIL; + } + + /* If the pidl to browse to is equal to the actual pidl ... + do nothing and pretend you did it*/ + if(COMDLG32_PIDL_ILIsEqual(pidlTmp,fodInfos->ShellInfos.pidlAbsCurrent)) + { + IShellFolder_Release(psfTmp); + COMDLG32_SHFree(pidlTmp); + TRACE("keep current folder\n"); + return NOERROR; + } + + /* Release the current DataObject */ + if (fodInfos->Shell.FOIDataObject) + { + IDataObject_Release(fodInfos->Shell.FOIDataObject); + fodInfos->Shell.FOIDataObject = NULL; + } + + /* Create the associated view */ + TRACE("create view object\n"); + if(FAILED(hRes = IShellFolder_CreateViewObject(psfTmp, fodInfos->ShellInfos.hwndOwner, + &IID_IShellView, (LPVOID *)&psvTmp))) goto error; + + /* Check if listview has focus */ + bViewHasFocus = IsChild(fodInfos->ShellInfos.hwndView,GetFocus()); + + /* Get the foldersettings from the old view */ + if(fodInfos->Shell.FOIShellView) + IShellView_GetCurrentInfo(fodInfos->Shell.FOIShellView, &fodInfos->ShellInfos.folderSettings); + + /* Release the old fodInfos->Shell.FOIShellView and update its value. + We have to update this early since ShellView_CreateViewWindow of native + shell32 calls OnStateChange and needs the correct view here.*/ + if(fodInfos->Shell.FOIShellView) + { + IShellView_DestroyViewWindow(fodInfos->Shell.FOIShellView); + IShellView_Release(fodInfos->Shell.FOIShellView); + } + fodInfos->Shell.FOIShellView = psvTmp; + + /* Release old FOIShellFolder and update its value */ + if (fodInfos->Shell.FOIShellFolder) + IShellFolder_Release(fodInfos->Shell.FOIShellFolder); + fodInfos->Shell.FOIShellFolder = psfTmp; + + /* Release old pidlAbsCurrent and update its value */ + COMDLG32_SHFree((LPVOID)fodInfos->ShellInfos.pidlAbsCurrent); + fodInfos->ShellInfos.pidlAbsCurrent = pidlTmp; + + COMDLG32_UpdateCurrentDir(fodInfos); + + GetWindowRect(GetDlgItem(This->hwndOwner, IDC_SHELLSTATIC), &rectView); + MapWindowPoints(0, This->hwndOwner, (LPPOINT)&rectView, 2); + + /* Create the window */ + TRACE("create view window\n"); + if(FAILED(hRes = IShellView_CreateViewWindow(psvTmp, NULL, + &fodInfos->ShellInfos.folderSettings, fodInfos->Shell.FOIShellBrowser, + &rectView, &hwndView))) goto error; + + fodInfos->ShellInfos.hwndView = hwndView; + + /* Select the new folder in the Look In combo box of the Open file dialog */ + FILEDLG95_LOOKIN_SelectItem(fodInfos->DlgInfos.hwndLookInCB,fodInfos->ShellInfos.pidlAbsCurrent); + + /* changes the tab order of the ListView to reflect the window's File Dialog */ + hDlgWnd = GetDlgItem(GetParent(hwndView), IDC_LOOKIN); + SetWindowPos(hwndView, hDlgWnd, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); + + /* Since we destroyed the old view if it had focus set focus to the newly created view */ + if (bViewHasFocus) + SetFocus(fodInfos->ShellInfos.hwndView); + + return hRes; +error: + ERR("Failed with error 0x%08lx\n", hRes); + return hRes; +} + +/************************************************************************** +* IShellBrowserImpl_EnableModelessSB +*/ +HRESULT WINAPI IShellBrowserImpl_EnableModelessSB(IShellBrowser *iface, + BOOL fEnable) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} + +/************************************************************************** +* IShellBrowserImpl_GetControlWindow +*/ +HRESULT WINAPI IShellBrowserImpl_GetControlWindow(IShellBrowser *iface, + UINT id, + HWND *lphwnd) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_GetViewStateStream +*/ +HRESULT WINAPI IShellBrowserImpl_GetViewStateStream(IShellBrowser *iface, + DWORD grfMode, + LPSTREAM *ppStrm) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + FIXME("(%p 0x%08lx %p)\n", This, grfMode, ppStrm); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_InsertMenusSB +*/ +HRESULT WINAPI IShellBrowserImpl_InsertMenusSB(IShellBrowser *iface, + HMENU hmenuShared, + LPOLEMENUGROUPWIDTHS lpMenuWidths) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_OnViewWindowActive +*/ +HRESULT WINAPI IShellBrowserImpl_OnViewWindowActive(IShellBrowser *iface, + IShellView *ppshv) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_QueryActiveShellView +*/ +HRESULT WINAPI IShellBrowserImpl_QueryActiveShellView(IShellBrowser *iface, + IShellView **ppshv) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + FileOpenDlgInfos *fodInfos; + + TRACE("(%p)\n", This); + + fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + + if(!(*ppshv = fodInfos->Shell.FOIShellView)) + { + return E_FAIL; + } + IShellView_AddRef(fodInfos->Shell.FOIShellView); + return NOERROR; +} +/************************************************************************** +* IShellBrowserImpl_RemoveMenusSB +*/ +HRESULT WINAPI IShellBrowserImpl_RemoveMenusSB(IShellBrowser *iface, + HMENU hmenuShared) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_SendControlMsg +*/ +HRESULT WINAPI IShellBrowserImpl_SendControlMsg(IShellBrowser *iface, + UINT id, + UINT uMsg, + WPARAM wParam, + LPARAM lParam, + LRESULT *pret) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + LRESULT lres; + + TRACE("(%p)->(0x%08x 0x%08x 0x%08x 0x%08lx %p)\n", This, id, uMsg, wParam, lParam, pret); + + switch (id) + { + case FCW_TOOLBAR: + lres = SendDlgItemMessageA( This->hwndOwner, IDC_TOOLBAR, uMsg, wParam, lParam); + break; + default: + FIXME("ctrl id: %x\n", id); + return E_NOTIMPL; + } + if (pret) *pret = lres; + return S_OK; +} +/************************************************************************** +* IShellBrowserImpl_SetMenuSB +*/ +HRESULT WINAPI IShellBrowserImpl_SetMenuSB(IShellBrowser *iface, + HMENU hmenuShared, + HOLEMENU holemenuReserved, + HWND hwndActiveObject) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_SetStatusTextSB +*/ +HRESULT WINAPI IShellBrowserImpl_SetStatusTextSB(IShellBrowser *iface, + LPCOLESTR lpszStatusText) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_SetToolbarItems +*/ +HRESULT WINAPI IShellBrowserImpl_SetToolbarItems(IShellBrowser *iface, + LPTBBUTTON lpButtons, + UINT nButtons, + UINT uFlags) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} +/************************************************************************** +* IShellBrowserImpl_TranslateAcceleratorSB +*/ +HRESULT WINAPI IShellBrowserImpl_TranslateAcceleratorSB(IShellBrowser *iface, + LPMSG lpmsg, + WORD wID) + +{ + ICOM_THIS(IShellBrowserImpl, iface); + + TRACE("(%p)\n", This); + + /* Feature not implemented */ + return E_NOTIMPL; +} + +static ICOM_VTABLE(IShellBrowser) IShellBrowserImpl_Vtbl = +{ + ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE + /* IUnknown */ + IShellBrowserImpl_QueryInterface, + IShellBrowserImpl_AddRef, + IShellBrowserImpl_Release, + /* IOleWindow */ + IShellBrowserImpl_GetWindow, + IShellBrowserImpl_ContextSensitiveHelp, + /* IShellBrowser */ + IShellBrowserImpl_InsertMenusSB, + IShellBrowserImpl_SetMenuSB, + IShellBrowserImpl_RemoveMenusSB, + IShellBrowserImpl_SetStatusTextSB, + IShellBrowserImpl_EnableModelessSB, + IShellBrowserImpl_TranslateAcceleratorSB, + IShellBrowserImpl_BrowseObject, + IShellBrowserImpl_GetViewStateStream, + IShellBrowserImpl_GetControlWindow, + IShellBrowserImpl_SendControlMsg, + IShellBrowserImpl_QueryActiveShellView, + IShellBrowserImpl_OnViewWindowActive, + IShellBrowserImpl_SetToolbarItems +}; + + + +/* + * ICommDlgBrowser + */ + +/*************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_QueryInterface +*/ +HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface( + ICommDlgBrowser *iface, + REFIID riid, + LPVOID *ppvObj) +{ + _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + + TRACE("(%p)\n", This); + + return IShellBrowserImpl_QueryInterface(This,riid,ppvObj); +} + +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_AddRef +*/ +ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser * iface) +{ + _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + + TRACE("(%p)\n", This); + + return IShellBrowserImpl_AddRef(This); +} + +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_Release +*/ +ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser * iface) +{ + _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + + TRACE("(%p)\n", This); + + return IShellBrowserImpl_Release(This); +} +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand +* +* Called when a user double-clicks in the view or presses the ENTER key +*/ +HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser *iface, + IShellView *ppshv) +{ + LPITEMIDLIST pidl; + FileOpenDlgInfos *fodInfos; + + _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + + TRACE("(%p)\n", This); + + fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + + /* If the selected object is not a folder, send a IDOK command to parent window */ + if((pidl = GetPidlFromDataObject(fodInfos->Shell.FOIDataObject, 1))) + { + HRESULT hRes; + + ULONG ulAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER; + IShellFolder_GetAttributesOf(fodInfos->Shell.FOIShellFolder, 1, (LPCITEMIDLIST *)&pidl, &ulAttr); + if (ulAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER) ) + { + hRes = IShellBrowser_BrowseObject((IShellBrowser *)This,pidl,SBSP_RELATIVE); + SendCustomDlgNotificationMessage(This->hwndOwner, CDN_FOLDERCHANGE); + } + else + { + /* Tell the dialog that the user selected a file */ + hRes = PostMessageA(This->hwndOwner, WM_COMMAND, IDOK, 0L); + } + + /* Free memory used by pidl */ + COMDLG32_SHFree((LPVOID)pidl); + + return hRes; + } + + return E_FAIL; +} + +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_OnStateChange +*/ +HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser *iface, + IShellView *ppshv, + ULONG uChange) +{ + + _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + + TRACE("(%p shv=%p)\n", This, ppshv); + + switch (uChange) + { + case CDBOSC_SETFOCUS: + /* FIXME: Reset the default button. + This should be taken care of by defdlg. If control + other than button receives focus the default button + should be restored. */ + SendMessageA(This->hwndOwner, DM_SETDEFID, IDOK, 0); + + break; + case CDBOSC_KILLFOCUS: + { + FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + if(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) + SetDlgItemTextA(fodInfos->ShellInfos.hwndOwner,IDOK,"&Save"); + } + break; + case CDBOSC_SELCHANGE: + return IShellBrowserImpl_ICommDlgBrowser_OnSelChange(iface,ppshv); + case CDBOSC_RENAME: + /* nothing to do */ + break; + } + + return NOERROR; +} + +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_IncludeObject +*/ +HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *iface, + IShellView * ppshv, + LPCITEMIDLIST pidl) +{ + FileOpenDlgInfos *fodInfos; + ULONG ulAttr; + STRRET str; + WCHAR szPathW[MAX_PATH]; + + _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + + TRACE("(%p)\n", This); + + fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + + ulAttr = SFGAO_HIDDEN | SFGAO_FOLDER | SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR | SFGAO_LINK; + IShellFolder_GetAttributesOf(fodInfos->Shell.FOIShellFolder, 1, &pidl, &ulAttr); + + if( (ulAttr & SFGAO_HIDDEN) /* hidden */ + | !(ulAttr & (SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR))) /* special folder */ + return S_FALSE; + + /* always include directories and links */ + if(ulAttr & (SFGAO_FOLDER | SFGAO_LINK)) + return S_OK; + + /* Check if there is a mask to apply if not */ + if(!fodInfos->ShellInfos.lpstrCurrentFilter || !lstrlenW(fodInfos->ShellInfos.lpstrCurrentFilter)) + return S_OK; + + if (SUCCEEDED(IShellFolder_GetDisplayNameOf(fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER | SHGDN_FORPARSING, &str))) + { + if (SUCCEEDED(COMDLG32_StrRetToStrNW(szPathW, MAX_PATH, &str, pidl))) + { + if (PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter)) + return S_OK; + } + } + return S_FALSE; + +} + +/************************************************************************** +* IShellBrowserImpl_ICommDlgBrowser_OnSelChange +*/ +HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IShellView *ppshv) +{ + FileOpenDlgInfos *fodInfos; + + _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + + fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); + TRACE("(%p do=%p view=%p)\n", This, fodInfos->Shell.FOIDataObject, fodInfos->Shell.FOIShellView); + + /* release old selections */ + if (fodInfos->Shell.FOIDataObject) + IDataObject_Release(fodInfos->Shell.FOIDataObject); + + /* get a new DataObject from the ShellView */ + if(FAILED(IShellView_GetItemObject(fodInfos->Shell.FOIShellView, SVGIO_SELECTION, + &IID_IDataObject, (LPVOID*)&fodInfos->Shell.FOIDataObject))) + return E_FAIL; + + FILEDLG95_FILENAME_FillFromSelection(This->hwndOwner); + + SendCustomDlgNotificationMessage(This->hwndOwner, CDN_SELCHANGE); + return S_OK; +} + +static ICOM_VTABLE(ICommDlgBrowser) IShellBrowserImpl_ICommDlgBrowser_Vtbl = +{ + ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE + /* IUnknown */ + IShellBrowserImpl_ICommDlgBrowser_QueryInterface, + IShellBrowserImpl_ICommDlgBrowser_AddRef, + IShellBrowserImpl_ICommDlgBrowser_Release, + /* ICommDlgBrowser */ + IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand, + IShellBrowserImpl_ICommDlgBrowser_OnStateChange, + IShellBrowserImpl_ICommDlgBrowser_IncludeObject +}; + + + + +/* + * IServiceProvider + */ + +/*************************************************************************** +* IShellBrowserImpl_IServiceProvider_QueryInterface +*/ +HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface( + IServiceProvider *iface, + REFIID riid, + LPVOID *ppvObj) +{ + _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + + FIXME("(%p)\n", This); + + return IShellBrowserImpl_QueryInterface(This,riid,ppvObj); +} + +/************************************************************************** +* IShellBrowserImpl_IServiceProvider_AddRef +*/ +ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider * iface) +{ + _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + + FIXME("(%p)\n", This); + + return IShellBrowserImpl_AddRef(This); +} + +/************************************************************************** +* IShellBrowserImpl_IServiceProvider_Release +*/ +ULONG WINAPI IShellBrowserImpl_IServiceProvider_Release(IServiceProvider * iface) +{ + _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + + FIXME("(%p)\n", This); + + return IShellBrowserImpl_Release(This); +} + +/************************************************************************** +* IShellBrowserImpl_IServiceProvider_Release +* +* NOTES +* the w2k shellview asks for (guidService = SID_STopLevelBrowser, +* riid = IShellBrowser) to call SendControlMsg (). +* +* FIXME +* this is a hack! +*/ + +HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryService( + IServiceProvider * iface, + REFGUID guidService, + REFIID riid, + void** ppv) +{ + _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + + FIXME("(%p)\n\t%s\n\t%s\n", This,debugstr_guid(guidService), debugstr_guid(riid) ); + + *ppv = NULL; + if(guidService && IsEqualIID(guidService, &SID_STopLevelBrowser)) + { + return IShellBrowserImpl_QueryInterface(This,riid,ppv); + } + FIXME("(%p) unknown interface requested\n", This); + return E_NOINTERFACE; + +} + +static ICOM_VTABLE(IServiceProvider) IShellBrowserImpl_IServiceProvider_Vtbl = +{ + ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE + /* IUnknown */ + IShellBrowserImpl_IServiceProvider_QueryInterface, + IShellBrowserImpl_IServiceProvider_AddRef, + IShellBrowserImpl_IServiceProvider_Release, + /* IServiceProvider */ + IShellBrowserImpl_IServiceProvider_QueryService +}; diff --git a/reactos/lib/comdlg32/filedlgbrowser.h b/reactos/lib/comdlg32/filedlgbrowser.h new file mode 100644 index 00000000000..694e3a0acdf --- /dev/null +++ b/reactos/lib/comdlg32/filedlgbrowser.h @@ -0,0 +1,166 @@ +/* + * Implementation of IShellBrowser for the File Open common dialog + * + * Copyright 1999 Francois Boisvert + * Copyright 1999, 2000 Juergen Schmied + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SHBROWSER_H +#define SHBROWSER_H + +#ifndef RC_INVOKED +#include +#endif + +#define COM_NO_WINDOWS_H +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "shlobj.h" +#include "objbase.h" +#include "commdlg.h" + +/*********************************************************************** + * Defines and global variables + */ +#define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser))) +#define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset); + +#define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider))) +#define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset); + +/* dialog internal property */ + +#define FODPROP_SAVEDLG 0x0001 /* File dialog is a Save file dialog */ +#define FODPROP_USEVIEW 0x0002 /* Indicates the user selection must be taken + from the IShellView */ + +/*********************************************************************** + * Data structure + */ + + +typedef struct +{ + LPOPENFILENAMEA ofnInfos; + BOOL unicode; + LPWSTR initdir; + LPWSTR filename; + LPCWSTR title; + LPCWSTR defext; + LPCWSTR filter; + LPCWSTR customfilter; + struct { + IShellBrowser *FOIShellBrowser; + IShellFolder *FOIShellFolder; + IShellView *FOIShellView; + IDataObject *FOIDataObject; + } Shell; + + struct { + HWND hwndOwner; + HWND hwndView; + FOLDERSETTINGS folderSettings; + LPITEMIDLIST pidlAbsCurrent; + LPWSTR lpstrCurrentFilter; + } ShellInfos; + + struct { + HWND hwndFileTypeCB; + HWND hwndLookInCB; + HWND hwndFileName; + HWND hwndTB; + HWND hwndCustomDlg; + DWORD dwDlgProp; + } DlgInfos; + + struct { + UINT fileokstring; + UINT lbselchstring; + UINT helpmsgstring; + UINT sharevistring; + } HookMsg; + +} FileOpenDlgInfos; + +/*********************************************************************** + * Control ID's + */ +#define IDS_ABOUTBOX 101 +#define IDS_DOCUMENTFOLDERS 102 +#define IDS_PERSONAL 103 +#define IDS_FAVORITES 104 +#define IDS_PATH 105 +#define IDS_DESKTOP 106 + +#define IDS_FONTS 108 +#define IDS_MYCOMPUTER 110 +#define IDS_SYSTEMFOLDERS 112 +#define IDS_LOCALHARDRIVES 113 +#define IDS_FILENOTFOUND 114 +#define IDS_VERIFYFILE 115 +#define IDS_CREATEFILE 116 +#define IDS_CREATEFOLDER_DENIED 117 +#define IDS_FILEOPEN_CAPTION 118 +#define IDS_OVERWRITEFILE 119 +#define IDS_INVALID_FILENAME_TITLE 120 +#define IDS_INVALID_FILENAME 121 +#define IDS_PATHNOTEXISTING 122 +#define IDS_FILENOTEXISTING 123 + +/* File Dialog Tooltips string IDs */ + +#define IDS_UPFOLDER 150 +#define IDS_NEWFOLDER 151 +#define IDS_LISTVIEW 152 +#define IDS_REPORTVIEW 153 +#define IDS_TODESKTOP 154 + +#define IDC_OPENREADONLY chx1 + +#define IDC_TOOLBARSTATIC stc1 +#define IDC_FILETYPESTATIC stc2 +#define IDC_FILENAMESTATIC stc3 +#define IDC_LOOKINSTATIC stc4 + +#define IDC_SHELLSTATIC lst1 + +#define IDC_FILETYPE cmb1 +#define IDC_LOOKIN cmb2 + +#define IDC_FILENAME edt1 + +#define IDC_TOOLBAR 1 + +/*********************************************************************** + * Prototypes for the methods of the IShellBrowserImpl class + */ +/* Constructor */ +IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner); + + +LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex); +UINT GetNumSelected(IDataObject *doSelected); + +/* pidl handling */ +BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl); + +/* Functions used by the EDIT box */ +void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd); +int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed); + +#endif /*SHBROWSER_H*/ diff --git a/reactos/lib/comdlg32/filetitle.c b/reactos/lib/comdlg32/filetitle.c new file mode 100644 index 00000000000..6d2b9fe6c0b --- /dev/null +++ b/reactos/lib/comdlg32/filetitle.c @@ -0,0 +1,114 @@ +/* + * COMMDLG - File Dialogs + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "winreg.h" +#include "winternl.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "cdlg.h" +#include "wine/unicode.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +/*********************************************************************** + * GetFileTitleA (COMDLG32.@) + * + */ +short WINAPI GetFileTitleA(LPCSTR lpFile, LPSTR lpTitle, WORD cbBuf) +{ + int ret; + UNICODE_STRING strWFile; + LPWSTR lpWTitle; + + RtlCreateUnicodeStringFromAsciiz(&strWFile, lpFile); + lpWTitle = RtlAllocateHeap( GetProcessHeap(), 0, cbBuf*sizeof(WCHAR)); + ret = GetFileTitleW(strWFile.Buffer, lpWTitle, cbBuf); + if (!ret) WideCharToMultiByte( CP_ACP, 0, lpWTitle, -1, lpTitle, cbBuf, NULL, NULL ); + RtlFreeUnicodeString( &strWFile ); + RtlFreeHeap( GetProcessHeap(), 0, lpWTitle ); + return ret; +} + + +/*********************************************************************** + * GetFileTitleW (COMDLG32.@) + * + */ +short WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf) +{ + int i, len; + static const WCHAR brkpoint[] = {'*','[',']',0}; + TRACE("(%p %p %d); \n", lpFile, lpTitle, cbBuf); + + if(lpFile == NULL || lpTitle == NULL) + return -1; + + len = strlenW(lpFile); + + if (len == 0) + return -1; + + if(strpbrkW(lpFile, brkpoint)) + return -1; + + len--; + + if(lpFile[len] == '/' || lpFile[len] == '\\' || lpFile[len] == ':') + return -1; + + for(i = len; i >= 0; i--) + { + if (lpFile[i] == '/' || lpFile[i] == '\\' || lpFile[i] == ':') + { + i++; + break; + } + } + + if(i == -1) + i++; + + TRACE("---> '%s' \n", debugstr_w(&lpFile[i])); + + len = strlenW(lpFile+i)+1; + if(cbBuf < len) + return len; + + strcpyW(lpTitle, &lpFile[i]); + return 0; +} + + +/*********************************************************************** + * GetFileTitle (COMMDLG.27) + */ +short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf) +{ + return GetFileTitleA(lpFile, lpTitle, cbBuf); +} diff --git a/reactos/lib/comdlg32/finddlg.c b/reactos/lib/comdlg32/finddlg.c new file mode 100644 index 00000000000..70e8ad4f1c9 --- /dev/null +++ b/reactos/lib/comdlg32/finddlg.c @@ -0,0 +1,496 @@ +/* + * COMMDLG - 16 bits Find & Replace Text Dialogs + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "wine/winbase16.h" +#include "wine/winuser16.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "wine/debug.h" +#include "cderr.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "cdlg16.h" + +struct FRPRIVATE +{ + HANDLE16 hDlgTmpl16; /* handle for resource 16 */ + HANDLE16 hResource16; /* handle for allocated resource 16 */ + HANDLE16 hGlobal16; /* 16 bits mem block (resources) */ + LPCVOID template; /* template for 32 bits resource */ + BOOL find; /* TRUE if find dialog, FALSE if replace dialog */ + FINDREPLACE16 *fr16; +}; + +#define LFRPRIVATE struct FRPRIVATE * + +BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam); +BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam); + +/*********************************************************************** + * FINDDLG_Get16BitsTemplate [internal] + * + * Get a template (FALSE if failure) when 16 bits dialogs are used + * by a 16 bits application + * FIXME : no test was done for the user-provided template cases + */ +BOOL FINDDLG_Get16BitsTemplate(LFRPRIVATE lfr) +{ + LPFINDREPLACE16 fr16 = lfr->fr16; + + if (fr16->Flags & FR_ENABLETEMPLATEHANDLE) + { + lfr->template = GlobalLock16(fr16->hInstance); + if (!lfr->template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + return FALSE; + } + } + else if (fr16->Flags & FR_ENABLETEMPLATE) + { + HANDLE16 hResInfo; + if (!(hResInfo = FindResource16(fr16->hInstance, + MapSL(fr16->lpTemplateName), + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(lfr->hDlgTmpl16 = LoadResource16( fr16->hInstance, hResInfo ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + lfr->hResource16 = lfr->hDlgTmpl16; + lfr->template = LockResource16(lfr->hResource16); + if (!lfr->template) + { + FreeResource16(lfr->hResource16); + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + return FALSE; + } + } + else + { /* get resource from (32 bits) own Wine resource; convert it to 16 */ + HRSRC hResInfo; + HGLOBAL hDlgTmpl32; + LPCVOID template32; + DWORD size; + HGLOBAL16 hGlobal16; + + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, + lfr->find ? + MAKEINTRESOURCEA(FINDDLGORD):MAKEINTRESOURCEA(REPLACEDLGORD), + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(template32 = LockResource( hDlgTmpl32 ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo); + hGlobal16 = GlobalAlloc16(0, size); + if (!hGlobal16) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + ERR("alloc failure for %ld bytes\n", size); + return FALSE; + } + lfr->template = GlobalLock16(hGlobal16); + if (!lfr->template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + ERR("global lock failure for %x handle\n", hGlobal16); + GlobalFree16(hGlobal16); + return FALSE; + } + ConvertDialog32To16((LPVOID)template32, size, (LPVOID)lfr->template); + lfr->hDlgTmpl16 = hGlobal16; + lfr->hGlobal16 = hGlobal16; + } + return TRUE; +} + + +/*********************************************************************** + * FINDDLG_FreeResources [internal] + * + * Free resources allocated + */ +void FINDDLG_FreeResources(LFRPRIVATE lfr) +{ + /* free resources */ + if (lfr->fr16->Flags & FR_ENABLETEMPLATEHANDLE) + GlobalUnlock16(lfr->fr16->hInstance); + if (lfr->hResource16) + { + GlobalUnlock16(lfr->hResource16); + FreeResource16(lfr->hResource16); + } + if (lfr->hGlobal16) + { + GlobalUnlock16(lfr->hGlobal16); + GlobalFree16(lfr->hGlobal16); + } +} + +/*********************************************************************** + * FindText (COMMDLG.11) + */ +HWND16 WINAPI FindText16( SEGPTR find ) +{ + HANDLE16 hInst; + HWND16 ret = 0; + FARPROC16 ptr; + LFRPRIVATE lfr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FRPRIVATE)); + + if (!lfr) return 0; + lfr->fr16 = MapSL(find); + lfr->find = TRUE; + if (FINDDLG_Get16BitsTemplate(lfr)) + { + hInst = GetWindowLongA( HWND_32(lfr->fr16->hwndOwner), GWL_HINSTANCE); + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 13); + ret = CreateDialogIndirectParam16( hInst, lfr->template, + lfr->fr16->hwndOwner, (DLGPROC16) ptr, find); + FINDDLG_FreeResources(lfr); + } + HeapFree(GetProcessHeap(), 0, lfr); + return ret; +} + + +/*********************************************************************** + * ReplaceText (COMMDLG.12) + */ +HWND16 WINAPI ReplaceText16( SEGPTR find ) +{ + HANDLE16 hInst; + HWND16 ret = 0; + FARPROC16 ptr; + LFRPRIVATE lfr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FRPRIVATE)); + + if (!lfr) return 0; + /* + * FIXME : We should do error checking on the lpFind structure here + * and make CommDlgExtendedError() return the error condition. + */ + lfr->fr16 = MapSL(find); + lfr->find = FALSE; + if (FINDDLG_Get16BitsTemplate(lfr)) + { + hInst = GetWindowLongA( HWND_32(lfr->fr16->hwndOwner), GWL_HINSTANCE); + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 14); + ret = CreateDialogIndirectParam16( hInst, lfr->template, + lfr->fr16->hwndOwner, (DLGPROC16) ptr, find); + + FINDDLG_FreeResources(lfr); + } + HeapFree(GetProcessHeap(), 0, lfr); + return ret; +} + + +/*********************************************************************** + * FINDDLG_WMInitDialog [internal] + */ +static LRESULT FINDDLG_WMInitDialog(HWND hWnd, LPARAM lParam, LPDWORD lpFlags, + LPSTR lpstrFindWhat, BOOL fUnicode) +{ + SetWindowLongA(hWnd, DWL_USER, lParam); + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM); + /* + * FIXME : If the initial FindWhat string is empty, we should disable the + * FindNext (IDOK) button. Only after typing some text, the button should be + * enabled. + */ + if (fUnicode) SetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat); + else SetDlgItemTextA(hWnd, edt1, lpstrFindWhat); + CheckRadioButton(hWnd, rad1, rad2, (*lpFlags & FR_DOWN) ? rad2 : rad1); + if (*lpFlags & (FR_HIDEUPDOWN | FR_NOUPDOWN)) { + EnableWindow(GetDlgItem(hWnd, rad1), FALSE); + EnableWindow(GetDlgItem(hWnd, rad2), FALSE); + } + if (*lpFlags & FR_HIDEUPDOWN) { + ShowWindow(GetDlgItem(hWnd, rad1), SW_HIDE); + ShowWindow(GetDlgItem(hWnd, rad2), SW_HIDE); + ShowWindow(GetDlgItem(hWnd, grp1), SW_HIDE); + } + CheckDlgButton(hWnd, chx1, (*lpFlags & FR_WHOLEWORD) ? 1 : 0); + if (*lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD)) + EnableWindow(GetDlgItem(hWnd, chx1), FALSE); + if (*lpFlags & FR_HIDEWHOLEWORD) + ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE); + CheckDlgButton(hWnd, chx2, (*lpFlags & FR_MATCHCASE) ? 1 : 0); + if (*lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE)) + EnableWindow(GetDlgItem(hWnd, chx2), FALSE); + if (*lpFlags & FR_HIDEMATCHCASE) + ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE); + if (!(*lpFlags & FR_SHOWHELP)) { + EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE); + ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE); + } + ShowWindow(hWnd, SW_SHOWNORMAL); + return TRUE; +} + + +/*********************************************************************** + * FINDDLG_WMCommand [internal] + */ +static LRESULT FINDDLG_WMCommand(HWND hWnd, WPARAM wParam, + HWND hwndOwner, LPDWORD lpFlags, + LPSTR lpstrFindWhat, WORD wFindWhatLen, + BOOL fUnicode) +{ + int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA ); + int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA ); + + switch (wParam) { + case IDOK: + if (fUnicode) + GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2); + else GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen); + if (IsDlgButtonChecked(hWnd, rad2)) + *lpFlags |= FR_DOWN; + else *lpFlags &= ~FR_DOWN; + if (IsDlgButtonChecked(hWnd, chx1)) + *lpFlags |= FR_WHOLEWORD; + else *lpFlags &= ~FR_WHOLEWORD; + if (IsDlgButtonChecked(hWnd, chx2)) + *lpFlags |= FR_MATCHCASE; + else *lpFlags &= ~FR_MATCHCASE; + *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM); + *lpFlags |= FR_FINDNEXT; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + return TRUE; + case IDCANCEL: + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL); + *lpFlags |= FR_DIALOGTERM; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + DestroyWindow(hWnd); + return TRUE; + case pshHelp: + /* FIXME : should lpfr structure be passed as an argument ??? */ + SendMessageA(hwndOwner, uHelpMessage, 0, 0); + return TRUE; + } + return FALSE; +} + + +/*********************************************************************** + * FindTextDlgProc (COMMDLG.13) + */ +BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hWnd = HWND_32(hWnd16); + LPFINDREPLACE16 lpfr; + switch (wMsg) { + case WM_INITDIALOG: + lpfr=MapSL(lParam); + return FINDDLG_WMInitDialog(hWnd, lParam, &(lpfr->Flags), + MapSL(lpfr->lpstrFindWhat), FALSE); + case WM_COMMAND: + lpfr=MapSL(GetWindowLongA(hWnd, DWL_USER)); + return FINDDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner), + &lpfr->Flags, MapSL(lpfr->lpstrFindWhat), + lpfr->wFindWhatLen, FALSE); + } + return FALSE; +} + + +/*********************************************************************** + * REPLACEDLG_WMInitDialog [internal] + */ +static LRESULT REPLACEDLG_WMInitDialog(HWND hWnd, LPARAM lParam, + LPDWORD lpFlags, LPSTR lpstrFindWhat, + LPSTR lpstrReplaceWith, BOOL fUnicode) +{ + SetWindowLongA(hWnd, DWL_USER, lParam); + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM); + /* + * FIXME : If the initial FindWhat string is empty, we should disable the FinNext / + * Replace / ReplaceAll buttons. Only after typing some text, the buttons should be + * enabled. + */ + if (fUnicode) + { + SetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat); + SetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith); + } else + { + SetDlgItemTextA(hWnd, edt1, lpstrFindWhat); + SetDlgItemTextA(hWnd, edt2, lpstrReplaceWith); + } + CheckDlgButton(hWnd, chx1, (*lpFlags & FR_WHOLEWORD) ? 1 : 0); + if (*lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD)) + EnableWindow(GetDlgItem(hWnd, chx1), FALSE); + if (*lpFlags & FR_HIDEWHOLEWORD) + ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE); + CheckDlgButton(hWnd, chx2, (*lpFlags & FR_MATCHCASE) ? 1 : 0); + if (*lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE)) + EnableWindow(GetDlgItem(hWnd, chx2), FALSE); + if (*lpFlags & FR_HIDEMATCHCASE) + ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE); + if (!(*lpFlags & FR_SHOWHELP)) { + EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE); + ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE); + } + ShowWindow(hWnd, SW_SHOWNORMAL); + return TRUE; +} + + +/*********************************************************************** + * REPLACEDLG_WMCommand [internal] + */ +static LRESULT REPLACEDLG_WMCommand(HWND hWnd, WPARAM16 wParam, + HWND hwndOwner, LPDWORD lpFlags, + LPSTR lpstrFindWhat, WORD wFindWhatLen, + LPSTR lpstrReplaceWith, WORD wReplaceWithLen, + BOOL fUnicode) +{ + int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA ); + int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA ); + + switch (wParam) { + case IDOK: + if (fUnicode) + { + GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2); + GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2); + } else + { + GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen); + GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen); + } + if (IsDlgButtonChecked(hWnd, chx1)) + *lpFlags |= FR_WHOLEWORD; + else *lpFlags &= ~FR_WHOLEWORD; + if (IsDlgButtonChecked(hWnd, chx2)) + *lpFlags |= FR_MATCHCASE; + else *lpFlags &= ~FR_MATCHCASE; + *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM); + *lpFlags |= FR_FINDNEXT; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + return TRUE; + case IDCANCEL: + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL); + *lpFlags |= FR_DIALOGTERM; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + DestroyWindow(hWnd); + return TRUE; + case psh1: + if (fUnicode) + { + GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2); + GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2); + } else + { + GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen); + GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen); + } + if (IsDlgButtonChecked(hWnd, chx1)) + *lpFlags |= FR_WHOLEWORD; + else *lpFlags &= ~FR_WHOLEWORD; + if (IsDlgButtonChecked(hWnd, chx2)) + *lpFlags |= FR_MATCHCASE; + else *lpFlags &= ~FR_MATCHCASE; + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACEALL | FR_DIALOGTERM); + *lpFlags |= FR_REPLACE; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + return TRUE; + case psh2: + if (fUnicode) + { + GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2); + GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2); + } else + { + GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen); + GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen); + } + if (IsDlgButtonChecked(hWnd, chx1)) + *lpFlags |= FR_WHOLEWORD; + else *lpFlags &= ~FR_WHOLEWORD; + if (IsDlgButtonChecked(hWnd, chx2)) + *lpFlags |= FR_MATCHCASE; + else *lpFlags &= ~FR_MATCHCASE; + *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_DIALOGTERM); + *lpFlags |= FR_REPLACEALL; + SendMessageA(hwndOwner, uFindReplaceMessage, 0, + GetWindowLongA(hWnd, DWL_USER) ); + return TRUE; + case pshHelp: + /* FIXME : should lpfr structure be passed as an argument ??? */ + SendMessageA(hwndOwner, uHelpMessage, 0, 0); + return TRUE; + } + return FALSE; +} + + +/*********************************************************************** + * ReplaceTextDlgProc (COMMDLG.14) + */ +BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hWnd = HWND_32(hWnd16); + LPFINDREPLACE16 lpfr; + switch (wMsg) { + case WM_INITDIALOG: + lpfr=MapSL(lParam); + return REPLACEDLG_WMInitDialog(hWnd, lParam, &lpfr->Flags, + MapSL(lpfr->lpstrFindWhat), + MapSL(lpfr->lpstrReplaceWith), FALSE); + case WM_COMMAND: + lpfr=MapSL(GetWindowLongA(hWnd, DWL_USER)); + return REPLACEDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner), + &lpfr->Flags, MapSL(lpfr->lpstrFindWhat), + lpfr->wFindWhatLen, MapSL(lpfr->lpstrReplaceWith), + lpfr->wReplaceWithLen, FALSE); + } + return FALSE; +} diff --git a/reactos/lib/comdlg32/finddlg32.c b/reactos/lib/comdlg32/finddlg32.c new file mode 100644 index 00000000000..a75de117774 --- /dev/null +++ b/reactos/lib/comdlg32/finddlg32.c @@ -0,0 +1,557 @@ +/* + * Common Dialog Boxes interface (32 bit) + * Find/Replace + * + * Copyright 1998,1999 Bertho A. Stultiens + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "cderr.h" +#include "dlgs.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" + + +/*-----------------------------------------------------------------------*/ + +static UINT FindReplaceMessage; +static UINT HelpMessage; + +#define FR_MASK (FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD | FR_REPLACEALL | FR_REPLACE | FR_FINDNEXT | FR_DIALOGTERM) +/* CRITICAL_SECTION COMDLG32_CritSect; */ + +/* Notes: + * MS uses a critical section at a few locations. However, I fail to + * see the reason for this. Their comdlg32.dll has a few race conditions + * but _not_ at those places that are protected with the mutex (there are + * globals that seem to hold info for the wndproc). + * + * FindText[AW]/ReplaceText[AW] + * The find/replace calls are passed a structure that is _not_ used + * internally. There is a local copy that holds the running info to + * be able to combine xxxA and xxxW calls. The passed pointer is + * returned upon sendmessage. Apps wont break this way when they rely + * on the original pointer. This will work as long as the sizes of + * FINDREPLACEA == FINDREPLACEW. The local copy will also prevent + * the app to see the wine-specific extra flags to distinguish between + * A/W and Find/Replace. + */ + + +/*********************************************************************** + * COMDLG32_FR_GetFlags [internal] + * Returns the button state that needs to be reported to the caller. + * RETURNS + * Current state of check and radio buttons + */ +static DWORD COMDLG32_FR_GetFlags(HWND hDlgWnd) +{ + DWORD flags = 0; + if(IsDlgButtonChecked(hDlgWnd, rad2) == BST_CHECKED) + flags |= FR_DOWN; + if(IsDlgButtonChecked(hDlgWnd, chx1) == BST_CHECKED) + flags |= FR_WHOLEWORD; + if(IsDlgButtonChecked(hDlgWnd, chx2) == BST_CHECKED) + flags |= FR_MATCHCASE; + return flags; +} + +/*********************************************************************** + * COMDLG32_FR_HandleWMCommand [internal] + * Handle WM_COMMAND messages... + */ +static void COMDLG32_FR_HandleWMCommand(HWND hDlgWnd, COMDLG32_FR_Data *pData, int Id, int NotifyCode) +{ + DWORD flag; + + pData->user_fr.fra->Flags &= ~FR_MASK; /* Clear return flags */ + if(pData->fr.Flags & FR_WINE_REPLACE) /* Replace always goes down... */ + pData->user_fr.fra->Flags |= FR_DOWN; + + if(NotifyCode == BN_CLICKED) + { + switch(Id) + { + case IDOK: /* Find Next */ + if(GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0) + { + pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_FINDNEXT; + if(pData->fr.Flags & FR_WINE_UNICODE) + { + MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrFindWhat, -1, + pData->user_fr.frw->lpstrFindWhat, + 0x7fffffff ); + } + else + { + strcpy(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat); + } + SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); + } + break; + + case IDCANCEL: + pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_DIALOGTERM; + SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); + DestroyWindow(hDlgWnd); + break; + + case psh2: /* Replace All */ + flag = FR_REPLACEALL; + goto Replace; + + case psh1: /* Replace */ + flag = FR_REPLACE; +Replace: + if((pData->fr.Flags & FR_WINE_REPLACE) + && GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0) + { + pData->fr.lpstrReplaceWith[0] = 0; /* In case the next GetDlgItemText Fails */ + GetDlgItemTextA(hDlgWnd, edt2, pData->fr.lpstrReplaceWith, pData->fr.wReplaceWithLen); + pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | flag; + if(pData->fr.Flags & FR_WINE_UNICODE) + { + MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrFindWhat, -1, + pData->user_fr.frw->lpstrFindWhat, + 0x7fffffff ); + MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrReplaceWith, -1, + pData->user_fr.frw->lpstrReplaceWith, + 0x7fffffff ); + } + else + { + strcpy(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat); + strcpy(pData->user_fr.fra->lpstrReplaceWith, pData->fr.lpstrReplaceWith); + } + SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); + } + break; + + case pshHelp: + pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd); + SendMessageA(pData->fr.hwndOwner, HelpMessage, (WPARAM)hDlgWnd, (LPARAM)pData->user_fr.fra); + break; + } + } + else if(NotifyCode == EN_CHANGE && Id == edt1) + { + BOOL enable = SendDlgItemMessageA(hDlgWnd, edt1, WM_GETTEXTLENGTH, 0, 0) > 0; + EnableWindow(GetDlgItem(hDlgWnd, IDOK), enable); + if(pData->fr.Flags & FR_WINE_REPLACE) + { + EnableWindow(GetDlgItem(hDlgWnd, psh1), enable); + EnableWindow(GetDlgItem(hDlgWnd, psh2), enable); + } + } +} + +/*********************************************************************** + * COMDLG32_FindReplaceDlgProc [internal] + * [Find/Replace]Text32[A/W] window procedure. + */ +static INT_PTR CALLBACK COMDLG32_FindReplaceDlgProc(HWND hDlgWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) +{ + COMDLG32_FR_Data *pdata = (COMDLG32_FR_Data *)GetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom); + INT_PTR retval = TRUE; + + if(iMsg == WM_INITDIALOG) + { + pdata = (COMDLG32_FR_Data *)lParam; + if(!SetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom, (HANDLE)pdata)) + { + ERR("Could not Set prop; invent a gracefull exit?...\n"); + DestroyWindow(hDlgWnd); + return FALSE; + } + SendDlgItemMessageA(hDlgWnd, edt1, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wFindWhatLen, 0); + SendDlgItemMessageA(hDlgWnd, edt1, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrFindWhat); + if(pdata->fr.Flags & FR_WINE_REPLACE) + { + SendDlgItemMessageA(hDlgWnd, edt2, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wReplaceWithLen, 0); + SendDlgItemMessageA(hDlgWnd, edt2, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrReplaceWith); + } + + if(!(pdata->fr.Flags & FR_SHOWHELP)) + ShowWindow(GetDlgItem(hDlgWnd, pshHelp), SW_HIDE); + if(pdata->fr.Flags & FR_HIDEUPDOWN) + { + ShowWindow(GetDlgItem(hDlgWnd, rad1), SW_HIDE); + ShowWindow(GetDlgItem(hDlgWnd, rad2), SW_HIDE); + ShowWindow(GetDlgItem(hDlgWnd, grp1), SW_HIDE); + } + else if(pdata->fr.Flags & FR_NOUPDOWN) + { + EnableWindow(GetDlgItem(hDlgWnd, rad1), FALSE); + EnableWindow(GetDlgItem(hDlgWnd, rad2), FALSE); + EnableWindow(GetDlgItem(hDlgWnd, grp1), FALSE); + } + else + { + SendDlgItemMessageA(hDlgWnd, rad1, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? 0 : BST_CHECKED, 0); + SendDlgItemMessageA(hDlgWnd, rad2, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? BST_CHECKED : 0, 0); + } + + if(pdata->fr.Flags & FR_HIDEMATCHCASE) + ShowWindow(GetDlgItem(hDlgWnd, chx2), SW_HIDE); + else if(pdata->fr.Flags & FR_NOMATCHCASE) + EnableWindow(GetDlgItem(hDlgWnd, chx2), FALSE); + else + SendDlgItemMessageA(hDlgWnd, chx2, BM_SETCHECK, pdata->fr.Flags & FR_MATCHCASE ? BST_CHECKED : 0, 0); + + if(pdata->fr.Flags & FR_HIDEWHOLEWORD) + ShowWindow(GetDlgItem(hDlgWnd, chx1), SW_HIDE); + else if(pdata->fr.Flags & FR_NOWHOLEWORD) + EnableWindow(GetDlgItem(hDlgWnd, chx1), FALSE); + else + SendDlgItemMessageA(hDlgWnd, chx1, BM_SETCHECK, pdata->fr.Flags & FR_WHOLEWORD ? BST_CHECKED : 0, 0); + + /* We did the init here, now call the hook if requested */ + + /* We do not do ShowWindow if hook exists and is FALSE */ + /* per MSDN Article Q96135 */ + if((pdata->fr.Flags & FR_ENABLEHOOK) + && ! pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, (LPARAM) &pdata->fr)) + return TRUE; + ShowWindow(hDlgWnd, SW_SHOWNORMAL); + UpdateWindow(hDlgWnd); + return TRUE; + } + + if(pdata && (pdata->fr.Flags & FR_ENABLEHOOK)) + { + retval = pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, lParam); + } + else + retval = FALSE; + + if(pdata && !retval) + { + retval = TRUE; + switch(iMsg) + { + case WM_COMMAND: + COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, LOWORD(wParam), HIWORD(wParam)); + break; + + case WM_CLOSE: + COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, IDCANCEL, BN_CLICKED); + break; + + case WM_HELP: + /* Heeeeelp! */ + FIXME("Got WM_HELP. Who is gonna supply it?\n"); + break; + + case WM_CONTEXTMENU: + /* Heeeeelp! */ + FIXME("Got WM_CONTEXTMENU. Who is gonna supply it?\n"); + break; + /* FIXME: Handle F1 help */ + + default: + retval = FALSE; /* We did not handle the message */ + } + } + + /* WM_DESTROY is a special case. + * We need to ensure that the allocated memory is freed just before + * the dialog is killed. We also need to remove the added prop. + */ + if(iMsg == WM_DESTROY) + { + RemovePropA(hDlgWnd, (LPSTR)COMDLG32_Atom); + HeapFree(GetProcessHeap(), 0, pdata); + } + + return retval; +} + +/*********************************************************************** + * COMDLG32_FR_CheckPartial [internal] + * Check various fault conditions in the supplied parameters that + * cause an extended error to be reported. + * RETURNS + * TRUE: Success + * FALSE: Failure + */ +static BOOL COMDLG32_FR_CheckPartial( + LPFINDREPLACEA pfr, /* [in] Find structure */ + BOOL Replace /* [in] True if called as replace */ +) { + if(!pfr) + { + COMDLG32_SetCommDlgExtendedError(CDERR_GENERALCODES); + return FALSE; + } + + if(pfr->lStructSize != sizeof(FINDREPLACEA)) + { + COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE); + return FALSE; + } + + if(!IsWindow(pfr->hwndOwner)) + { + COMDLG32_SetCommDlgExtendedError(CDERR_DIALOGFAILURE); + return FALSE; + } + + if((pfr->wFindWhatLen < 1 || !pfr->lpstrFindWhat) + ||(Replace && (pfr->wReplaceWithLen < 1 || !pfr->lpstrReplaceWith))) + { + COMDLG32_SetCommDlgExtendedError(FRERR_BUFFERLENGTHZERO); + return FALSE; + } + + if((FindReplaceMessage = RegisterWindowMessageA(FINDMSGSTRINGA)) == 0) + { + COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); + return FALSE; + } + if((HelpMessage = RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) + { + COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); + return FALSE; + } + + if((pfr->Flags & FR_ENABLEHOOK) && !pfr->lpfnHook) + { + COMDLG32_SetCommDlgExtendedError(CDERR_NOHOOK); + return FALSE; + } + + if((pfr->Flags & (FR_ENABLETEMPLATE | FR_ENABLETEMPLATEHANDLE)) && !pfr->hInstance) + { + COMDLG32_SetCommDlgExtendedError(CDERR_NOHINSTANCE); + return FALSE; + } + + if((pfr->Flags & FR_ENABLETEMPLATE) && !pfr->lpTemplateName) + { + COMDLG32_SetCommDlgExtendedError(CDERR_NOTEMPLATE); + return FALSE; + } + + return TRUE; +} + +/*********************************************************************** + * COMDLG32_FR_DoFindReplace [internal] + * Actual load and creation of the Find/Replace dialog. + * RETURNS + * Window handle to created dialog:Success + * NULL:Failure + */ +static HWND COMDLG32_FR_DoFindReplace( + COMDLG32_FR_Data *pdata /* [in] Internal data structure */ +) { + HWND hdlgwnd = 0; + HGLOBAL loadrc; + DWORD error; + LPDLGTEMPLATEW rcs; + + TRACE("hInst=%p, Flags=%08lx\n", pdata->fr.hInstance, pdata->fr.Flags); + + if(!(pdata->fr.Flags & FR_ENABLETEMPLATEHANDLE)) + { + HMODULE hmod = COMDLG32_hInstance; + HRSRC htemplate; + if(pdata->fr.Flags & FR_ENABLETEMPLATE) + { + hmod = (HMODULE)pdata->fr.hInstance; + if(pdata->fr.Flags & FR_WINE_UNICODE) + { + htemplate = FindResourceW(hmod, (LPWSTR)pdata->fr.lpTemplateName, (LPWSTR)RT_DIALOG); + } + else + { + htemplate = FindResourceA(hmod, pdata->fr.lpTemplateName, (LPCSTR)RT_DIALOG); + } + } + else + { + int rcid = pdata->fr.Flags & FR_WINE_REPLACE ? REPLACEDLGORD + : FINDDLGORD; + htemplate = FindResourceA(hmod, MAKEINTRESOURCEA(rcid), (LPCSTR)RT_DIALOG); + } + if(!htemplate) + { + error = CDERR_FINDRESFAILURE; + goto cleanup; + } + + loadrc = LoadResource(hmod, htemplate); + } + else + { + loadrc = (HGLOBAL)pdata->fr.hInstance; + } + + if(!loadrc) + { + error = CDERR_LOADRESFAILURE; + goto cleanup; + } + + if((rcs = (LPDLGTEMPLATEW)LockResource(loadrc)) == NULL) + { + error = CDERR_LOCKRESFAILURE; + goto cleanup; + } + + hdlgwnd = CreateDialogIndirectParamA(COMDLG32_hInstance, + rcs, + pdata->fr.hwndOwner, + COMDLG32_FindReplaceDlgProc, + (LPARAM)pdata); + if(!hdlgwnd) + { + error = CDERR_DIALOGFAILURE; +cleanup: + COMDLG32_SetCommDlgExtendedError(error); + HeapFree(GetProcessHeap(), 0, pdata); + } + return hdlgwnd; +} + +/*********************************************************************** + * FindTextA [COMDLG32.@] + * RETURNS + * Window handle to created dialog: Success + * NULL: Failure + */ +HWND WINAPI FindTextA( + LPFINDREPLACEA pfr /* [in] Find/replace structure*/ +) { + COMDLG32_FR_Data *pdata; + + TRACE("LPFINDREPLACE=%p\n", pfr); + + if(!COMDLG32_FR_CheckPartial(pfr, FALSE)) + return 0; + + if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL) + return 0; /* Error has been set */ + + pdata->user_fr.fra = pfr; + pdata->fr = *pfr; + return COMDLG32_FR_DoFindReplace(pdata); +} + +/*********************************************************************** + * ReplaceTextA [COMDLG32.@] + * RETURNS + * Window handle to created dialog: Success + * NULL: Failure + */ +HWND WINAPI ReplaceTextA( + LPFINDREPLACEA pfr /* [in] Find/replace structure*/ +) { + COMDLG32_FR_Data *pdata; + + TRACE("LPFINDREPLACE=%p\n", pfr); + + if(!COMDLG32_FR_CheckPartial(pfr, TRUE)) + return 0; + + if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL) + return 0; /* Error has been set */ + + pdata->user_fr.fra = pfr; + pdata->fr = *pfr; + pdata->fr.Flags |= FR_WINE_REPLACE; + return COMDLG32_FR_DoFindReplace(pdata); +} + +/*********************************************************************** + * FindTextW [COMDLG32.@] + * RETURNS + * Window handle to created dialog: Success + * NULL: Failure + */ +HWND WINAPI FindTextW( + LPFINDREPLACEW pfr /* [in] Find/replace structure*/ +) { + COMDLG32_FR_Data *pdata; + DWORD len; + + TRACE("LPFINDREPLACE=%p\n", pfr); + + if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE)) + return 0; + + len = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen, + NULL, 0, NULL, NULL ); + if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data) + len)) == NULL) + return 0; /* Error has been set */ + + pdata->user_fr.frw = pfr; + pdata->fr = *(LPFINDREPLACEA)pfr; /* FINDREPLACEx have same size */ + pdata->fr.Flags |= FR_WINE_UNICODE; + pdata->fr.lpstrFindWhat = (LPSTR)(pdata + 1); /* Set string pointer */ + WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen, + pdata->fr.lpstrFindWhat, len, NULL, NULL ); + return COMDLG32_FR_DoFindReplace(pdata); +} + +/*********************************************************************** + * ReplaceTextW [COMDLG32.@] + * RETURNS + * Window handle to created dialog: Success + * NULL: Failure + */ +HWND WINAPI ReplaceTextW( + LPFINDREPLACEW pfr /* [in] Find/replace structure*/ +) { + COMDLG32_FR_Data *pdata; + DWORD len1, len2; + + TRACE("LPFINDREPLACE=%p\n", pfr); + + if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE)) + return 0; + + len1 = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen, + NULL, 0, NULL, NULL ); + len2 = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrReplaceWith, pfr->wReplaceWithLen, + NULL, 0, NULL, NULL ); + if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data) + + len1 + len2)) == NULL) + return 0; /* Error has been set */ + + pdata->user_fr.frw = pfr; + pdata->fr = *(LPFINDREPLACEA)pfr; /* FINDREPLACEx have same size */ + pdata->fr.Flags |= FR_WINE_REPLACE | FR_WINE_UNICODE; + pdata->fr.lpstrFindWhat = (LPSTR)(pdata + 1); /* Set string pointer */ + pdata->fr.lpstrReplaceWith = pdata->fr.lpstrFindWhat + len1; + + WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen, + pdata->fr.lpstrFindWhat, len1, NULL, NULL ); + WideCharToMultiByte( CP_ACP, 0, pfr->lpstrReplaceWith, pfr->wReplaceWithLen, + pdata->fr.lpstrReplaceWith, len2, NULL, NULL ); + return COMDLG32_FR_DoFindReplace(pdata); +} diff --git a/reactos/lib/comdlg32/fontdlg.c b/reactos/lib/comdlg32/fontdlg.c new file mode 100644 index 00000000000..0fdc718503a --- /dev/null +++ b/reactos/lib/comdlg32/fontdlg.c @@ -0,0 +1,1281 @@ +/* + * COMMDLG - Font Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "wingdi.h" +#include "winuser.h" +#include "wine/winuser16.h" /* Needed for CB_SETITEMDATA16 */ +#include "heap.h" /* HEAP_strdupWtoA */ +#include "commdlg.h" +#include "dlgs.h" +#include "wine/debug.h" +#include "cderr.h" + +#include "ros.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#define WINE_FONTDATA "__WINE_FONTDLGDATA" + +#include "cdlg.h" + +/* image list with TrueType bitmaps and more */ +static HIMAGELIST himlTT = 0; +#define TTBITMAP_XSIZE 20 /* x-size of the bitmaps */ + + +INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam); +INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam); + +/* There is a table here of all charsets, and the sample text for each. + * There is a second table that translates a charset into an index into + * the first table. + */ + +#define CI(cs) ((IDS_CHARSET_##cs)-IDS_CHARSET_ANSI) + + +static const WCHAR stWestern[]={'A','a','B','b','Y','y','Z','z',0}; /* Western and default */ +static const WCHAR stSymbol[]={'S','y','m','b','o','l',0}; /* Symbol */ +static const WCHAR stShiftJis[]={'A','a',0x3042,0x3041,0x30a2,0x30a1,0x4e9c,0x5b87,0}; /* Shift JIS */ +static const WCHAR stHangul[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Hangul */ +static const WCHAR stGB2312[]={0x5fae,0x8f6f,0x4e2d,0x6587,0x8f6f,0x4ef6,0}; /* GB2312 */ +static const WCHAR stBIG5[]={0x4e2d,0x6587,0x5b57,0x578b,0x7bc4,0x4f8b,0}; /* BIG5 */ +static const WCHAR stGreek[]={'A','a','B','b',0x0391,0x03b1,0x0392,0x03b2,0}; /* Greek */ +static const WCHAR stTurkish[]={'A','a','B','b',0x011e,0x011f,0x015e,0x015f,0}; /* Turkish */ +static const WCHAR stHebrew[]={'A','a','B','b',0x05e0,0x05e1,0x05e9,0x05ea,0}; /* Hebrew */ +static const WCHAR stArabic[]={'A','a','B','b',0x0627,0x0628,0x062c,0x062f,0x0647,0x0648,0x0632,0};/* Arabic */ +static const WCHAR stBaltic[]={'A','a','B','b','Y','y','Z','z',0}; /* Baltic */ +static const WCHAR stVietname[]={'A','a','B','b',0x01a0,0x01a1,0x01af,0x01b0,0}; /* Vietnamese */ +static const WCHAR stCyrillic[]={'A','a','B','b',0x0411,0x0431,0x0424,0x0444,0}; /* Cyrillic */ +static const WCHAR stEastEur[]={'A','a','B','b',0xc1,0xe1,0xd4,0xf4,0}; /* East European */ +static const WCHAR stThai[]={'A','a','B','b',0x0e2d,0x0e31,0x0e01,0x0e29,0x0e23,0x0e44,0x0e17,0x0e22,0}; /* Thai */ +static const WCHAR stJohab[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Johab */ +static const WCHAR stMac[]={'A','a','B','b','Y','y','Z','z',0}; /* Mac */ +static const WCHAR stOEM[]={'A','a','B','b',0xf8,0xf1,0xfd,0}; /* OEM */ +/* the following character sets actually behave different (Win2K observation): + * the sample string is 'sticky': it uses the sample string of the previous + * selected character set. That behaviour looks like some default, which is + * not (yet) implemented. */ +static const WCHAR stVISCII[]={'A','a','B','b',0}; /* VISCII */ +static const WCHAR stTCVN[]={'A','a','B','b',0}; /* TCVN */ +static const WCHAR stKOI8[]={'A','a','B','b',0}; /* KOI-8 */ +static const WCHAR stIso88593[]={'A','a','B','b',0}; /* ISO-8859-3 */ +static const WCHAR stIso88594[]={'A','a','B','b',0}; /* ISO-8859-4 */ +static const WCHAR stIso885910[]={'A','a','B','b',0}; /* ISO-8859-10 */ +static const WCHAR stCeltic[]={'A','a','B','b',0};/* Celtic */ + +static const WCHAR *sample_lang_text[]={ + stWestern,stSymbol,stShiftJis,stHangul,stGB2312, + stBIG5,stGreek,stTurkish,stHebrew,stArabic, + stBaltic,stVietname,stCyrillic,stEastEur,stThai, + stJohab,stMac,stOEM,stVISCII,stTCVN, + stKOI8,stIso88593,stIso88594,stIso885910,stCeltic}; + + +static const int CHARSET_ORDER[256]={ + CI(ANSI), 0, CI(SYMBOL), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(MAC), 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + CI(JIS), CI(HANGUL), CI(JOHAB), 0, 0, 0, CI(GB2312), 0, CI(BIG5), 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, CI(GREEK), CI(TURKISH), CI(VIETNAMESE), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, CI(HEBREW), CI(ARABIC), 0, 0, 0, 0, 0, 0, 0, CI(BALTIC), 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(RUSSIAN), 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(THAI), 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(EE), 0, + CI(VISCII), CI(TCVN), CI(KOI8), CI(ISO3), CI(ISO4), CI(ISO10), CI(CELTIC), 0, 0, 0, 0, 0, 0, 0, 0, CI(OEM), +}; + +struct { + int mask; + char *name; +} cfflags[] = { +#define XX(x) { x, #x }, + XX(CF_SCREENFONTS) + XX(CF_PRINTERFONTS) + XX(CF_SHOWHELP) + XX(CF_ENABLEHOOK) + XX(CF_ENABLETEMPLATE) + XX(CF_ENABLETEMPLATEHANDLE) + XX(CF_INITTOLOGFONTSTRUCT) + XX(CF_USESTYLE) + XX(CF_EFFECTS) + XX(CF_APPLY) + XX(CF_ANSIONLY) + XX(CF_NOVECTORFONTS) + XX(CF_NOSIMULATIONS) + XX(CF_LIMITSIZE) + XX(CF_FIXEDPITCHONLY) + XX(CF_WYSIWYG) + XX(CF_FORCEFONTEXIST) + XX(CF_SCALABLEONLY) + XX(CF_TTONLY) + XX(CF_NOFACESEL) + XX(CF_NOSTYLESEL) + XX(CF_NOSIZESEL) + XX(CF_SELECTSCRIPT) + XX(CF_NOSCRIPTSEL) + XX(CF_NOVERTFONTS) +#undef XX + {0,NULL}, +}; + +void _dump_cf_flags(DWORD cflags) +{ + int i; + + for (i=0;cfflags[i].name;i++) + if (cfflags[i].mask & cflags) + MESSAGE("%s|",cfflags[i].name); + MESSAGE("\n"); +} + +/*********************************************************************** + * ChooseFontA (COMDLG32.@) + */ +BOOL WINAPI ChooseFontA(LPCHOOSEFONTA lpChFont) +{ + LPCVOID template; + HRSRC hResInfo; + HINSTANCE hDlginst; + HGLOBAL hDlgTmpl; + + if ( (lpChFont->Flags&CF_ENABLETEMPLATEHANDLE)!=0 ) + { + template=(LPCVOID)lpChFont->hInstance; + } else + { + if ( (lpChFont->Flags&CF_ENABLETEMPLATE)!=0 ) + { + hDlginst=lpChFont->hInstance; + if( !(hResInfo = FindResourceA(hDlginst, lpChFont->lpTemplateName, + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + } else + { + hDlginst=COMDLG32_hInstance; + if (!(hResInfo = FindResourceA(hDlginst, "CHOOSE_FONT", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + } + if (!(hDlgTmpl = LoadResource(hDlginst, hResInfo )) || + !(template = LockResource( hDlgTmpl ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + if (TRACE_ON(commdlg)) + _dump_cf_flags(lpChFont->Flags); + + if (lpChFont->Flags & (CF_SELECTSCRIPT | CF_NOVERTFONTS )) + FIXME(": unimplemented flag (ignored)\n"); + + return DialogBoxIndirectParamA(COMDLG32_hInstance, template, + lpChFont->hwndOwner, FormatCharDlgProcA, (LPARAM)lpChFont ); +} + +/*********************************************************************** + * ChooseFontW (COMDLG32.@) + * + * NOTES: + * + * The LOGFONT conversion functions will break if the structure ever + * grows beyond the lfFaceName element. + * + * The CHOOSEFONT conversion functions assume that both versions of + * lpLogFont and lpszStyle (if used) point to pre-allocated objects. + * + * The ASCII version of lpTemplateName is created by ChooseFontAtoW + * and freed by ChooseFontWtoA. + */ +inline static VOID LogFontWtoA(const LOGFONTW *lfw, LOGFONTA *lfa) +{ + memcpy(lfa, lfw, sizeof(LOGFONTA)); + WideCharToMultiByte(CP_ACP, 0, lfw->lfFaceName, -1, lfa->lfFaceName, + LF_FACESIZE, NULL, NULL); + lfa->lfFaceName[LF_FACESIZE - 1] = '\0'; +} + +inline static VOID LogFontAtoW(const LOGFONTA *lfa, LOGFONTW *lfw) +{ + memcpy(lfw, lfa, sizeof(LOGFONTA)); + MultiByteToWideChar(CP_ACP, 0, lfa->lfFaceName, -1, lfw->lfFaceName, + LF_FACESIZE); + lfw->lfFaceName[LF_FACESIZE - 1] = 0; +} + +static BOOL ChooseFontWtoA(const CHOOSEFONTW *cfw, CHOOSEFONTA *cfa) +{ + LOGFONTA *lpLogFont = cfa->lpLogFont; + LPSTR lpszStyle = cfa->lpszStyle; + + memcpy(cfa, cfw, sizeof(CHOOSEFONTA)); + cfa->lpLogFont = lpLogFont; + cfa->lpszStyle = lpszStyle; + + LogFontWtoA(cfw->lpLogFont, lpLogFont); + + if ((cfw->Flags&CF_ENABLETEMPLATE)!=0 && HIWORD(cfw->lpTemplateName)!=0) + { + cfa->lpTemplateName = HEAP_strdupWtoA(GetProcessHeap(), 0, + cfw->lpTemplateName); + if (cfa->lpTemplateName == NULL) + return FALSE; + } + + if ((cfw->Flags & CF_USESTYLE) != 0 && cfw->lpszStyle != NULL) + { + WideCharToMultiByte(CP_ACP, 0, cfw->lpszStyle, -1, cfa->lpszStyle, + LF_FACESIZE, NULL, NULL); + cfa->lpszStyle[LF_FACESIZE - 1] = '\0'; + } + + return TRUE; +} + +static VOID ChooseFontAtoW(const CHOOSEFONTA *cfa, CHOOSEFONTW *cfw) +{ + LOGFONTW *lpLogFont = cfw->lpLogFont; + LPWSTR lpszStyle = cfw->lpszStyle; + LPCWSTR lpTemplateName = cfw->lpTemplateName; + + memcpy(cfw, cfa, sizeof(CHOOSEFONTA)); + cfw->lpLogFont = lpLogFont; + cfw->lpszStyle = lpszStyle; + cfw->lpTemplateName = lpTemplateName; + + LogFontAtoW(cfa->lpLogFont, lpLogFont); + + if ((cfa->Flags&CF_ENABLETEMPLATE)!=0 && HIWORD(cfa->lpTemplateName) != 0) + HeapFree(GetProcessHeap(), 0, (LPSTR)(cfa->lpTemplateName)); + + if ((cfa->Flags & CF_USESTYLE) != 0 && cfa->lpszStyle != NULL) + { + MultiByteToWideChar(CP_ACP, 0, cfa->lpszStyle, -1, cfw->lpszStyle, + LF_FACESIZE); + cfw->lpszStyle[LF_FACESIZE - 1] = 0; + } +} + +BOOL WINAPI ChooseFontW(LPCHOOSEFONTW lpChFont) +{ + CHOOSEFONTA cf_a; + LOGFONTA lf_a; + CHAR style_a[LF_FACESIZE]; + + cf_a.lpLogFont = &lf_a; + cf_a.lpszStyle = style_a; + + if (ChooseFontWtoA(lpChFont, &cf_a) == FALSE) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + return FALSE; + } + + if (ChooseFontA(&cf_a) == FALSE) + { + if (cf_a.lpTemplateName != NULL) + HeapFree(GetProcessHeap(), 0, (LPSTR)(cf_a.lpTemplateName)); + return FALSE; + } + + ChooseFontAtoW(&cf_a, lpChFont); + + return TRUE; +} + +#if 0 +/*********************************************************************** + * ChooseFontW (COMDLG32.@) + */ +BOOL WINAPI ChooseFontW(LPCHOOSEFONTW lpChFont) +{ + BOOL bRet=FALSE; + CHOOSEFONTA cf32a; + LOGFONTA lf32a; + LPCVOID template; + HANDLE hResInfo, hDlgTmpl; + + if (TRACE_ON(commdlg)) + _dump_cf_flags(lpChFont->Flags); + + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_FONT", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(template = LockResource( hDlgTmpl ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + + if (lpChFont->Flags & (CF_SELECTSCRIPT | CF_NOVERTFONTS | CF_ENABLETEMPLATE | + CF_ENABLETEMPLATEHANDLE)) FIXME(": unimplemented flag (ignored)\n"); + memcpy(&cf32a, lpChFont, sizeof(cf32a)); + memcpy(&lf32a, lpChFont->lpLogFont, sizeof(LOGFONTA)); + + WideCharToMultiByte( CP_ACP, 0, lpChFont->lpLogFont->lfFaceName, -1, + lf32a.lfFaceName, LF_FACESIZE, NULL, NULL ); + lf32a.lfFaceName[LF_FACESIZE-1] = 0; + cf32a.lpLogFont=&lf32a; + cf32a.lpszStyle=HEAP_strdupWtoA(GetProcessHeap(), 0, lpChFont->lpszStyle); + lpChFont->lpTemplateName=(LPWSTR)&cf32a; + bRet = DialogBoxIndirectParamW(COMDLG32_hInstance, template, + lpChFont->hwndOwner, FormatCharDlgProcW, (LPARAM)lpChFont ); + HeapFree(GetProcessHeap(), 0, cf32a.lpszStyle); + lpChFont->lpTemplateName=(LPWSTR)cf32a.lpTemplateName; + memcpy(lpChFont->lpLogFont, &lf32a, sizeof(CHOOSEFONTA)); + MultiByteToWideChar( CP_ACP, 0, lf32a.lfFaceName, -1, + lpChFont->lpLogFont->lfFaceName, LF_FACESIZE ); + lpChFont->lpLogFont->lfFaceName[LF_FACESIZE-1] = 0; + return bRet; +} +#endif + +#define TEXT_EXTRAS 4 +#define TEXT_COLORS 16 + +static const COLORREF textcolors[TEXT_COLORS]= +{ + 0x00000000L,0x00000080L,0x00008000L,0x00008080L, + 0x00800000L,0x00800080L,0x00808000L,0x00808080L, + 0x00c0c0c0L,0x000000ffL,0x0000ff00L,0x0000ffffL, + 0x00ff0000L,0x00ff00ffL,0x00ffff00L,0x00FFFFFFL +}; + +/*********************************************************************** + * CFn_HookCallChk32 [internal] + */ +static BOOL CFn_HookCallChk32(LPCHOOSEFONTA lpcf) +{ + if (lpcf) + if(lpcf->Flags & CF_ENABLEHOOK) + if (lpcf->lpfnHook) + return TRUE; + return FALSE; +} + +/************************************************************************* + * AddFontFamily [internal] + */ +INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM, + UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd, LPCFn_ENUMSTRUCT e) +{ + int i; + WORD w; + const LOGFONTA *lplf = &(lpElfex->elfLogFont); + + TRACE("font=%s (nFontType=%d)\n", lplf->lfFaceName,nFontType); + + if (lpcf->Flags & CF_FIXEDPITCHONLY) + if (!(lplf->lfPitchAndFamily & FIXED_PITCH)) + return 1; + if (lpcf->Flags & CF_ANSIONLY) + if (lplf->lfCharSet != ANSI_CHARSET) + return 1; + if (lpcf->Flags & CF_TTONLY) + if (!(nFontType & TRUETYPE_FONTTYPE)) + return 1; + + if (e) e->added++; + + i=SendMessageA(hwnd, CB_FINDSTRINGEXACT, 0, (LPARAM)lplf->lfFaceName); + if (i == CB_ERR) { + i = SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)lplf->lfFaceName); + if( i != CB_ERR) { + /* store some important font information */ + w = (lplf->lfPitchAndFamily) << 8 | + (HIWORD(lpNTM->ntmTm.ntmFlags) & 0xff); + SendMessageA(hwnd, CB_SETITEMDATA, i, MAKELONG(nFontType,w)); + } + } + return 1; +} + +/************************************************************************* + * FontFamilyEnumProc32 [internal] + */ +static INT WINAPI FontFamilyEnumProc(const ENUMLOGFONTEXA *lpElfex, + const TEXTMETRICA *metrics, DWORD dwFontType, LPARAM lParam) +{ + LPCFn_ENUMSTRUCT e; + e=(LPCFn_ENUMSTRUCT)lParam; + return AddFontFamily( lpElfex, (NEWTEXTMETRICEXA *) metrics, + dwFontType, e->lpcf32a, e->hWnd1, e); +} + +/************************************************************************* + * SetFontStylesToCombo2 [internal] + * + * Fill font style information into combobox (without using font.c directly) + */ +static int SetFontStylesToCombo2(HWND hwnd, HDC hdc, const LOGFONTA *lplf) +{ +#define FSTYLES 4 + struct FONTSTYLE + { + int italic; + int weight; + char stname[20]; + }; + static struct FONTSTYLE fontstyles[FSTYLES]={ + { 0,FW_NORMAL,"Regular"}, { 1,FW_NORMAL,"Italic"}, + { 0,FW_BOLD,"Bold"}, { 1,FW_BOLD,"Bold Italic"} + }; + HFONT hf; + TEXTMETRICA tm; + int i,j; + LOGFONTA lf; + + memcpy(&lf, lplf, sizeof(LOGFONTA)); + + for (i=0;iFlags & CF_LIMITSIZE)) || + ((lpcf->Flags & CF_LIMITSIZE) && (h >= lpcf->nSizeMin) && (h <= lpcf->nSizeMax))) + { + sprintf(buffer, "%2d", h); + j=SendMessageA(hwnd, CB_FINDSTRINGEXACT, -1, (LPARAM)buffer); + if (j==CB_ERR) + { + j=SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)buffer); + if (j!=CB_ERR) j = SendMessageA(hwnd, CB_SETITEMDATA, j, h); + if (j==CB_ERR) return 1; + } + } + return 0; +} + +/************************************************************************* + * SetFontSizesToCombo3 [internal] + */ +static int SetFontSizesToCombo3(HWND hwnd, LPCHOOSEFONTA lpcf) +{ + static const int sizes[]={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72,0}; + int i; + + for (i=0; sizes[i]; i++) + if (AddFontSizeToCombo3(hwnd, sizes[i], lpcf)) return 1; + return 0; +} + +/************************************************************************* + * CFn_GetDC [internal] + */ +inline HDC CFn_GetDC(LPCHOOSEFONTA lpcf) +{ + HDC ret = ((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC) ? + lpcf->hDC : + GetDC(0); + if(!ret) ERR("HDC failure!!!\n"); + return ret; +} + +/************************************************************************* + * CFn_ReleaseDC [internal] + */ +inline void CFn_ReleaseDC(LPCHOOSEFONTA lpcf, HDC hdc) +{ + if(!((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC)) + ReleaseDC(0, hdc); +} + +/*********************************************************************** + * AddFontStyle [internal] + */ +INT AddFontStyle( const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM, + UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3, + HWND hDlg, BOOL iswin16) +{ + int i; + const LOGFONTA *lplf = &(lpElfex->elfLogFont); + HWND hcmb5; + HDC hdc; + + TRACE("(nFontType=%d)\n",nFontType); + TRACE(" %s h=%ld w=%ld e=%ld o=%ld wg=%ld i=%d u=%d s=%d" + " ch=%d op=%d cp=%d q=%d pf=%xh\n", + lplf->lfFaceName,lplf->lfHeight,lplf->lfWidth, + lplf->lfEscapement,lplf->lfOrientation, + lplf->lfWeight,lplf->lfItalic,lplf->lfUnderline, + lplf->lfStrikeOut,lplf->lfCharSet, lplf->lfOutPrecision, + lplf->lfClipPrecision,lplf->lfQuality, lplf->lfPitchAndFamily); + if (nFontType & RASTER_FONTTYPE) + { + INT points; + if(!(hdc = CFn_GetDC(lpcf))) return 0; + points = MulDiv( lpNTM->ntmTm.tmHeight - lpNTM->ntmTm.tmInternalLeading, + 72, GetDeviceCaps(hdc, LOGPIXELSY)); + CFn_ReleaseDC(lpcf, hdc); + i = AddFontSizeToCombo3(hcmb3, points, lpcf); + if( i) return 0; + } else if (SetFontSizesToCombo3(hcmb3, lpcf)) return 0; + + if (!SendMessageA(hcmb2, CB_GETCOUNT, 0, 0)) + { + if(!(hdc = CFn_GetDC(lpcf))) return 0; + i=SetFontStylesToCombo2(hcmb2,hdc,lplf); + CFn_ReleaseDC(lpcf, hdc); + if (i) + return 0; + } + if( iswin16 || !( hcmb5 = GetDlgItem(hDlg, cmb5))) return 1; + i = SendMessageA( hcmb5, CB_FINDSTRINGEXACT, 0, + (LPARAM)lpElfex->elfScript); + if( i == CB_ERR) { + i = SendMessageA( hcmb5, CB_ADDSTRING, 0, + (LPARAM)lpElfex->elfScript); + if( i != CB_ERR) + SendMessageA( hcmb5, CB_SETITEMDATA, i, lplf->lfCharSet); + } + return 1 ; +} + +static INT CFn_FitFontSize( HWND hDlg, int points) +{ + int i,n; + int ret = 0; + /* look for fitting font size in combobox3 */ + n=SendDlgItemMessageA(hDlg, cmb3, CB_GETCOUNT, 0, 0); + for (i=0;ihWnd1; + HWND hcmb3=s->hWnd2; + HWND hDlg=GetParent(hcmb3); + return AddFontStyle( lpElfex, (const NEWTEXTMETRICEXA *) metrics, + dwFontType, s->lpcf32a, hcmb2, hcmb3, hDlg, FALSE); +} + +/*********************************************************************** + * CFn_WMInitDialog [internal] + */ +LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf) +{ + HDC hdc; + int i,j,init=0; + long pstyle; + CFn_ENUMSTRUCT s; + LPLOGFONTA lpxx; + HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT)); + + SetPropA(hDlg, WINE_FONTDATA, (HANDLE)lParam); + lpxx=lpcf->lpLogFont; + TRACE("WM_INITDIALOG lParam=%08lX\n", lParam); + + if (lpcf->lStructSize != sizeof(CHOOSEFONTA)) + { + ERR("structure size failure !!!\n"); + EndDialog (hDlg, 0); + return FALSE; + } + if (!himlTT) + himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38), + TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0); + + if (!(lpcf->Flags & CF_SHOWHELP) || !IsWindow(lpcf->hwndOwner)) + ShowWindow(GetDlgItem(hDlg,pshHelp),SW_HIDE); + if (!(lpcf->Flags & CF_APPLY)) + ShowWindow(GetDlgItem(hDlg,psh3),SW_HIDE); + if (lpcf->Flags & CF_EFFECTS) + { + for (i=0;irgbColors) + SendDlgItemMessageA(hDlg,cmb4, CB_SETCURSEL,j,0); + } + } + else + { + ShowWindow(GetDlgItem(hDlg,cmb4),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,chx1),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,chx2),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,grp1),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,stc4),SW_HIDE); + } + if(!(hdc = CFn_GetDC(lpcf))) + { + EndDialog (hDlg, 0); + return FALSE; + } + s.hWnd1=GetDlgItem(hDlg,cmb1); + s.lpcf32a=lpcf; + do { + LOGFONTA elf; + s.added = 0; + elf.lfCharSet = DEFAULT_CHARSET; /* enum all charsets */ + elf.lfPitchAndFamily = 0; + elf.lfFaceName[0] = '\0'; /* enum all fonts */ + if (!EnumFontFamiliesExA(hdc, &elf, (FONTENUMPROCA)FontFamilyEnumProc, (LPARAM)&s, 0)) + { + TRACE("EnumFontFamiliesEx returns 0\n"); + break; + } + if (s.added) break; + if (lpcf->Flags & CF_FIXEDPITCHONLY) { + FIXME("No font found with fixed pitch only, dropping flag.\n"); + lpcf->Flags &= ~CF_FIXEDPITCHONLY; + continue; + } + if (lpcf->Flags & CF_TTONLY) { + FIXME("No font found with truetype only, dropping flag.\n"); + lpcf->Flags &= ~CF_TTONLY; + continue; + } + break; + } while (1); + + + if (lpcf->Flags & CF_INITTOLOGFONTSTRUCT) + { + /* look for fitting font name in combobox1 */ + j=SendDlgItemMessageA(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName); + if (j!=CB_ERR) + { + INT height = lpxx->lfHeight < 0 ? -lpxx->lfHeight : + lpxx->lfHeight; + INT points; + int charset = lpxx->lfCharSet; + points = MulDiv( height, 72, GetDeviceCaps(hdc, LOGPIXELSY)); + pstyle = MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD: + FW_NORMAL,lpxx->lfItalic !=0); + SendDlgItemMessageA(hDlg, cmb1, CB_SETCURSEL, j, 0); + SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE), + (LPARAM)GetDlgItem(hDlg,cmb1)); + init=1; + /* look for fitting font style in combobox2 */ + CFn_FitFontStyle(hDlg, pstyle); + /* look for fitting font size in combobox3 */ + CFn_FitFontSize(hDlg, points); + CFn_FitCharSet( hDlg, charset ); + } + } + if (!init) + { + SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0); + SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE), + (LPARAM)GetDlgItem(hDlg,cmb1)); + } + if (lpcf->Flags & CF_USESTYLE && lpcf->lpszStyle) + { + j=SendDlgItemMessageA(hDlg,cmb2,CB_FINDSTRING,-1,(LONG)lpcf->lpszStyle); + if (j!=CB_ERR) + { + j=SendDlgItemMessageA(hDlg,cmb2,CB_SETCURSEL,j,0); + SendMessageA(hDlg,WM_COMMAND,cmb2, + MAKELONG(HWND_16(GetDlgItem(hDlg,cmb2)),CBN_SELCHANGE)); + } + } + CFn_ReleaseDC(lpcf, hdc); + SetCursor(hcursor); + return TRUE; +} + + +/*********************************************************************** + * CFn_WMMeasureItem [internal] + */ +LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + HDC hdc; + HFONT hfontprev; + TEXTMETRICW tm; + LPMEASUREITEMSTRUCT lpmi=(LPMEASUREITEMSTRUCT)lParam; + if (!himlTT) + himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38), + TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0); + ImageList_GetIconSize( himlTT, 0, &lpmi->itemHeight); + lpmi->itemHeight += 2; + /* use MAX of bitmap height and tm.tmHeight .*/ + hdc=GetDC( hDlg); + if(!hdc) return 0; + hfontprev = SelectObject( hdc, GetStockObject( SYSTEM_FONT)); + GetTextMetricsW( hdc, &tm); + if( tm.tmHeight > lpmi->itemHeight) lpmi->itemHeight = tm.tmHeight; + SelectObject( hdc, hfontprev); + ReleaseDC( hDlg, hdc); + return 0; +} + + +/*********************************************************************** + * CFn_WMDrawItem [internal] + */ +LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + HBRUSH hBrush; + char buffer[40]; + COLORREF cr, oldText=0, oldBk=0; + RECT rect; + int nFontType; + int idx; + LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam; + + if (lpdi->itemID == (UINT)-1) /* got no items */ + DrawFocusRect(lpdi->hDC, &lpdi->rcItem); + else + { + if (lpdi->CtlType == ODT_COMBOBOX) + { + if (lpdi->itemState & ODS_SELECTED) + { + hBrush=GetSysColorBrush(COLOR_HIGHLIGHT); + oldText=SetTextColor(lpdi->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + oldBk=SetBkColor(lpdi->hDC, GetSysColor(COLOR_HIGHLIGHT)); + } else + { + hBrush = SelectObject(lpdi->hDC, GetStockObject(LTGRAY_BRUSH)); + SelectObject(lpdi->hDC, hBrush); + } + FillRect(lpdi->hDC, &lpdi->rcItem, hBrush); + } + else + return TRUE; /* this should never happen */ + + rect=lpdi->rcItem; + switch (lpdi->CtlID) + { + case cmb1: + /* TRACE(commdlg,"WM_Drawitem cmb1\n"); */ + SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)buffer); + TextOutA(lpdi->hDC, lpdi->rcItem.left + TTBITMAP_XSIZE + 10, + lpdi->rcItem.top, buffer, strlen(buffer)); + nFontType = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); + idx = -1; + if (nFontType & TRUETYPE_FONTTYPE) { + idx = 0; /* picture: TT */ + if( nFontType & NTM_TT_OPENTYPE) + idx = 2; /* picture: O */ + } else if( nFontType & NTM_PS_OPENTYPE) + idx = 3; /* picture: O+ps */ + else if( nFontType & NTM_TYPE1) + idx = 4; /* picture: a */ + else if( nFontType & DEVICE_FONTTYPE) + idx = 1; /* picture: printer */ + if( idx >= 0) + ImageList_Draw( himlTT, idx, lpdi->hDC, lpdi->rcItem.left, + lpdi->rcItem.top, ILD_TRANSPARENT); + break; + case cmb2: + case cmb3: + /* TRACE(commdlg,"WM_DRAWITEN cmb2,cmb3\n"); */ + case cmb5: + SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)buffer); + TextOutA(lpdi->hDC, lpdi->rcItem.left, + lpdi->rcItem.top, buffer, strlen(buffer)); + break; + + case cmb4: + /* TRACE(commdlg,"WM_DRAWITEM cmb4 (=COLOR)\n"); */ + SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)buffer); + TextOutA(lpdi->hDC, lpdi->rcItem.left + 25+5, + lpdi->rcItem.top, buffer, strlen(buffer)); + cr = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); + hBrush = CreateSolidBrush(cr); + if (hBrush) + { + hBrush = SelectObject (lpdi->hDC, hBrush) ; + rect.right=rect.left+25; + rect.top++; + rect.left+=5; + rect.bottom--; + Rectangle( lpdi->hDC, rect.left, rect.top, + rect.right, rect.bottom ); + DeleteObject( SelectObject (lpdi->hDC, hBrush)) ; + } + rect=lpdi->rcItem; + rect.left+=25+5; + break; + + default: + return TRUE; /* this should never happen */ + } + if (lpdi->itemState & ODS_SELECTED) + { + SetTextColor(lpdi->hDC, oldText); + SetBkColor(lpdi->hDC, oldBk); + } + } + return TRUE; +} + +/*********************************************************************** + * CFn_WMCommand [internal] + */ +LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf) +{ + int i; + long l; + HDC hdc; + LPLOGFONTA lpxx=lpcf->lpLogFont; + + TRACE("WM_COMMAND wParam=%08lX lParam=%08lX\n", (LONG)wParam, lParam); + switch (LOWORD(wParam)) + { + case cmb1: + if (HIWORD(wParam)==CBN_SELCHANGE) + { + INT pointsize; /* save current pointsize */ + LONG pstyle; /* save current style */ + int charset; + int idx; + if(!(hdc = CFn_GetDC(lpcf))) + { + EndDialog (hDlg, 0); + return TRUE; + } + idx = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0); + pointsize = (int)SendDlgItemMessageA( hDlg, cmb3, CB_GETITEMDATA, + idx, 0); + idx = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0); + pstyle = SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, idx, 0); + idx = SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0); + charset = SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, idx, 0); + + SendDlgItemMessageA(hDlg, cmb2, CB_RESETCONTENT, 0, 0); + SendDlgItemMessageA(hDlg, cmb3, CB_RESETCONTENT, 0, 0); + SendDlgItemMessageA(hDlg, cmb5, CB_RESETCONTENT, 0, 0); + i=SendDlgItemMessageA(hDlg, cmb1, CB_GETCURSEL, 0, 0); + if (i!=CB_ERR) + { + HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT)); + CFn_ENUMSTRUCT s; + LOGFONTA enumlf; + SendDlgItemMessageA(hDlg, cmb1, CB_GETLBTEXT, i, + (LPARAM)enumlf.lfFaceName); + TRACE("WM_COMMAND/cmb1 =>%s\n",enumlf.lfFaceName); + s.hWnd1=GetDlgItem(hDlg, cmb2); + s.hWnd2=GetDlgItem(hDlg, cmb3); + s.lpcf32a=lpcf; + enumlf.lfCharSet = DEFAULT_CHARSET; /* enum all charsets */ + enumlf.lfPitchAndFamily = 0; + EnumFontFamiliesExA(hdc, &enumlf, + (FONTENUMPROCA)FontStyleEnumProc, (LPARAM)&s, 0); + CFn_FitFontStyle(hDlg, pstyle); + if( pointsize != CB_ERR) CFn_FitFontSize(hDlg, pointsize); + if( charset != CB_ERR) CFn_FitCharSet( hDlg, charset ); + SetCursor(hcursor); + } + CFn_ReleaseDC(lpcf, hdc); + } + case chx1: + case chx2: + case cmb2: + case cmb3: + case cmb5: + if (HIWORD(wParam)==CBN_SELCHANGE || HIWORD(wParam)== BN_CLICKED ) + { + char str[256]; + WINDOWINFO wininfo; + + TRACE("WM_COMMAND/cmb2,3 =%08lX\n", lParam); + i=SendDlgItemMessageA(hDlg,cmb1,CB_GETCURSEL,0,0); + if (i==CB_ERR) + i=GetDlgItemTextA( hDlg, cmb1, str, 256 ); + else + { + SendDlgItemMessageA(hDlg,cmb1,CB_GETLBTEXT,i, + (LPARAM)str); + l=SendDlgItemMessageA(hDlg,cmb1,CB_GETITEMDATA,i,0); + lpcf->nFontType = LOWORD(l); + /* FIXME: lpcf->nFontType |= .... SIMULATED_FONTTYPE and so */ + /* same value reported to the EnumFonts + call back with the extra FONTTYPE_... bits added */ + lpxx->lfPitchAndFamily = HIWORD(l) >> 8; + } + strcpy(lpxx->lfFaceName,str); + i=SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0); + if (i!=CB_ERR) + { + l=SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0); + if (0!=(lpxx->lfItalic=HIWORD(l))) + lpcf->nFontType |= ITALIC_FONTTYPE; + if ((lpxx->lfWeight=LOWORD(l)) > FW_MEDIUM) + lpcf->nFontType |= BOLD_FONTTYPE; + } + i=SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0); + if( i != CB_ERR) + lpcf->iPointSize = 10 * LOWORD(SendDlgItemMessageA(hDlg, cmb3, + CB_GETITEMDATA , i, 0)); + else + lpcf->iPointSize = 100; + hdc = CFn_GetDC(lpcf); + if( hdc) + { + lpxx->lfHeight = - MulDiv( lpcf->iPointSize , + GetDeviceCaps(hdc, LOGPIXELSY), 720); + CFn_ReleaseDC(lpcf, hdc); + } else + lpxx->lfHeight = -lpcf->iPointSize / 10; + i=SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0); + if (i!=CB_ERR) + lpxx->lfCharSet=SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, i, 0); + else + lpxx->lfCharSet = DEFAULT_CHARSET; + lpxx->lfStrikeOut=IsDlgButtonChecked(hDlg,chx1); + lpxx->lfUnderline=IsDlgButtonChecked(hDlg,chx2); + lpxx->lfWidth=lpxx->lfOrientation=lpxx->lfEscapement=0; + lpxx->lfOutPrecision=OUT_DEFAULT_PRECIS; + lpxx->lfClipPrecision=CLIP_DEFAULT_PRECIS; + lpxx->lfQuality=DEFAULT_QUALITY; + + wininfo.cbSize=sizeof(wininfo); + + if( GetWindowInfo( GetDlgItem( hDlg, stc5), &wininfo ) ) + { + MapWindowPoints( 0, hDlg, (LPPOINT) &wininfo.rcWindow, 2); + InvalidateRect( hDlg, &wininfo.rcWindow, TRUE ); + } + } + break; + + case cmb4: + i=SendDlgItemMessageA(hDlg, cmb4, CB_GETCURSEL, 0, 0); + if (i!=CB_ERR) + { + WINDOWINFO wininfo; + + lpcf->rgbColors=textcolors[i]; + wininfo.cbSize=sizeof(wininfo); + + if( GetWindowInfo( GetDlgItem( hDlg, stc5), &wininfo ) ) + { + MapWindowPoints( 0, hDlg, (LPPOINT) &wininfo.rcWindow, 2); + InvalidateRect( hDlg, &wininfo.rcWindow, TRUE ); + } + } + break; + + case psh15: + i=RegisterWindowMessageA( HELPMSGSTRINGA ); + if (lpcf->hwndOwner) + SendMessageA(lpcf->hwndOwner, i, 0, (LPARAM)GetPropA(hDlg, WINE_FONTDATA)); + /* if (CFn_HookCallChk(lpcf)) + CallWindowProc16(lpcf->lpfnHook,hDlg,WM_COMMAND,psh15,(LPARAM)lpcf);*/ + break; + + case IDOK: + if ( (!(lpcf->Flags & CF_LIMITSIZE)) || + ( (lpcf->Flags & CF_LIMITSIZE) && + (lpcf->iPointSize >= 10 * lpcf->nSizeMin) && + (lpcf->iPointSize <= 10 * lpcf->nSizeMax))) + EndDialog(hDlg, TRUE); + else + { + char buffer[80]; + sprintf(buffer,"Select a font size between %d and %d points.", + lpcf->nSizeMin,lpcf->nSizeMax); + MessageBoxA(hDlg, buffer, NULL, MB_OK); + } + return(TRUE); + case IDCANCEL: + EndDialog(hDlg, FALSE); + return(TRUE); + } + return(FALSE); +} + +LRESULT CFn_WMDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + return TRUE; +} + +LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam, + LPCHOOSEFONTA lpcf ) +{ + WINDOWINFO info; + + info.cbSize=sizeof(info); + + if( GetWindowInfo( GetDlgItem( hDlg, stc5), &info ) ) + { + PAINTSTRUCT ps; + HDC hdc; + HPEN hOrigPen; + HFONT hOrigFont; + COLORREF rgbPrev; + LOGFONTA lf = *(lpcf->lpLogFont); + + MapWindowPoints( 0, hDlg, (LPPOINT) &info.rcWindow, 2); + hdc=BeginPaint( hDlg, &ps ); + + /* Paint frame */ + MoveToEx( hdc, info.rcWindow.left, info.rcWindow.bottom, NULL ); + hOrigPen=SelectObject( hdc, CreatePen( PS_SOLID, 2, + GetSysColor( COLOR_3DSHADOW ) )); + LineTo( hdc, info.rcWindow.left, info.rcWindow.top ); + LineTo( hdc, info.rcWindow.right, info.rcWindow.top ); + DeleteObject(SelectObject( hdc, CreatePen( PS_SOLID, 2, + GetSysColor( COLOR_3DLIGHT ) ))); + LineTo( hdc, info.rcWindow.right, info.rcWindow.bottom ); + LineTo( hdc, info.rcWindow.left, info.rcWindow.bottom ); + DeleteObject(SelectObject( hdc, hOrigPen )); + + /* Draw the sample text itself */ + info.rcWindow.right--; + info.rcWindow.bottom--; + info.rcWindow.top++; + info.rcWindow.left++; + hOrigFont = SelectObject( hdc, CreateFontIndirectA( &lf ) ); + rgbPrev=SetTextColor( hdc, lpcf->rgbColors ); + + DrawTextW( hdc, + sample_lang_text[CHARSET_ORDER[lpcf->lpLogFont->lfCharSet]], + -1, &info.rcWindow, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); + + DeleteObject(SelectObject( hdc, hOrigFont )); + EndPaint( hDlg, &ps ); + } + + return FALSE; +} + +/*********************************************************************** + * FormatCharDlgProcA [internal] + */ +INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam) +{ + LPCHOOSEFONTA lpcf; + INT_PTR res = FALSE; + if (uMsg!=WM_INITDIALOG) + { + lpcf=(LPCHOOSEFONTA)GetPropA(hDlg, WINE_FONTDATA); + if (!lpcf && uMsg != WM_MEASUREITEM) + return FALSE; + if (CFn_HookCallChk32(lpcf)) + res=CallWindowProcA((WNDPROC)lpcf->lpfnHook, hDlg, uMsg, wParam, lParam); + if (res) + return res; + } + else + { + lpcf=(LPCHOOSEFONTA)lParam; + if (!CFn_WMInitDialog(hDlg, wParam, lParam, lpcf)) + { + TRACE("CFn_WMInitDialog returned FALSE\n"); + return FALSE; + } + if (CFn_HookCallChk32(lpcf)) + return CallWindowProcA((WNDPROC)lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam); + } + switch (uMsg) + { + case WM_MEASUREITEM: + return CFn_WMMeasureItem(hDlg, wParam, lParam); + case WM_DRAWITEM: + return CFn_WMDrawItem(hDlg, wParam, lParam); + case WM_COMMAND: + return CFn_WMCommand(hDlg, wParam, lParam, lpcf); + case WM_DESTROY: + return CFn_WMDestroy(hDlg, wParam, lParam); + case WM_CHOOSEFONT_GETLOGFONT: + TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n", + lParam); + FIXME("current logfont back to caller\n"); + break; + case WM_PAINT: + return CFn_WMPaint(hDlg, wParam, lParam, lpcf); + } + return res; +} + +/*********************************************************************** + * FormatCharDlgProcW [internal] + */ +INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam) +{ + LPCHOOSEFONTW lpcf32w; + LPCHOOSEFONTA lpcf32a; + INT_PTR res = FALSE; + if (uMsg!=WM_INITDIALOG) + { + lpcf32w=(LPCHOOSEFONTW)GetPropA(hDlg, WINE_FONTDATA); + if (!lpcf32w) + return FALSE; + if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w)) + res=CallWindowProcW((WNDPROC)lpcf32w->lpfnHook, hDlg, uMsg, wParam, lParam); + if (res) + return res; + } + else + { + lpcf32w=(LPCHOOSEFONTW)lParam; + lpcf32a=(LPCHOOSEFONTA)lpcf32w->lpTemplateName; + if (!CFn_WMInitDialog(hDlg, wParam, lParam, lpcf32a)) + { + TRACE("CFn_WMInitDialog returned FALSE\n"); + return FALSE; + } + if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w)) + return CallWindowProcW((WNDPROC)lpcf32w->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam); + } + lpcf32a=(LPCHOOSEFONTA)lpcf32w->lpTemplateName; + switch (uMsg) + { + case WM_MEASUREITEM: + return CFn_WMMeasureItem(hDlg, wParam, lParam); + case WM_DRAWITEM: + return CFn_WMDrawItem(hDlg, wParam, lParam); + case WM_COMMAND: + return CFn_WMCommand(hDlg, wParam, lParam, lpcf32a); + case WM_DESTROY: + return CFn_WMDestroy(hDlg, wParam, lParam); + case WM_CHOOSEFONT_GETLOGFONT: + TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n", + lParam); + FIXME("current logfont back to caller\n"); + break; + } + return res; +} diff --git a/reactos/lib/comdlg32/fontdlg16.c b/reactos/lib/comdlg32/fontdlg16.c new file mode 100644 index 00000000000..bb10e40ed7f --- /dev/null +++ b/reactos/lib/comdlg32/fontdlg16.c @@ -0,0 +1,351 @@ +/* + * COMMDLG - Font Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winnls.h" +#include "wine/winbase16.h" +#include "wine/winuser16.h" +#include "commdlg.h" +#include "dlgs.h" +#include "wine/debug.h" +#include "cderr.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "cdlg16.h" + +static void FONT_LogFont16To32A( const LPLOGFONT16 font16, LPLOGFONTA font32 ) +{ + font32->lfHeight = font16->lfHeight; + font32->lfWidth = font16->lfWidth; + font32->lfEscapement = font16->lfEscapement; + font32->lfOrientation = font16->lfOrientation; + font32->lfWeight = font16->lfWeight; + font32->lfItalic = font16->lfItalic; + font32->lfUnderline = font16->lfUnderline; + font32->lfStrikeOut = font16->lfStrikeOut; + font32->lfCharSet = font16->lfCharSet; + font32->lfOutPrecision = font16->lfOutPrecision; + font32->lfClipPrecision = font16->lfClipPrecision; + font32->lfQuality = font16->lfQuality; + font32->lfPitchAndFamily = font16->lfPitchAndFamily; + lstrcpynA( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE ); +}; + +static void FONT_Metrics16To32A( const TEXTMETRIC16 *pm16, + NEWTEXTMETRICEXA *pnm32a) +{ + ZeroMemory( pnm32a, sizeof(NEWTEXTMETRICEXA)); + /* NOTE: only the fields used by AddFontStyle() are filled in */ + pnm32a->ntmTm.tmHeight = pm16->tmHeight; + pnm32a->ntmTm.tmExternalLeading = pm16->tmExternalLeading; +}; + +static void CFn_CHOOSEFONT16to32A(LPCHOOSEFONT16 chf16, LPCHOOSEFONTA chf32a) +{ + chf32a->lStructSize=sizeof(CHOOSEFONTA); + chf32a->hwndOwner=HWND_32(chf16->hwndOwner); + chf32a->hDC=HDC_32(chf16->hDC); + chf32a->iPointSize=chf16->iPointSize; + chf32a->Flags=chf16->Flags; + chf32a->rgbColors=chf16->rgbColors; + chf32a->lCustData=chf16->lCustData; + chf32a->lpfnHook=NULL; + chf32a->lpTemplateName=MapSL(chf16->lpTemplateName); + chf32a->hInstance=HINSTANCE_32(chf16->hInstance); + chf32a->lpszStyle=MapSL(chf16->lpszStyle); + chf32a->nFontType=chf16->nFontType; + chf32a->nSizeMax=chf16->nSizeMax; + chf32a->nSizeMin=chf16->nSizeMin; + FONT_LogFont16To32A(MapSL(chf16->lpLogFont), chf32a->lpLogFont); +}; + +/*********************************************************************** + * CFn_HookCallChk [internal] + */ +static BOOL CFn_HookCallChk(LPCHOOSEFONT16 lpcf) +{ + if (lpcf) + if(lpcf->Flags & CF_ENABLEHOOK) + if (lpcf->lpfnHook) + return TRUE; + return FALSE; +} + +/*********************************************************************** + * FontFamilyEnumProc (COMMDLG.19) + */ +INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics, + UINT16 nFontType, LPARAM lParam ) +{ + HWND hwnd=HWND_32(LOWORD(lParam)); + HWND hDlg=GetParent(hwnd); + LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER); + LOGFONT16 *lplf = MapSL( logfont ); + TEXTMETRIC16 *lpmtrx16 = MapSL(metrics); + ENUMLOGFONTEXA elf32a; + NEWTEXTMETRICEXA nmtrx32a; + FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont)); + FONT_Metrics16To32A(lpmtrx16, &nmtrx32a); + return AddFontFamily(&elf32a, &nmtrx32a, nFontType, + (LPCHOOSEFONTA)lpcf->lpTemplateName, hwnd,NULL); +} + +/*********************************************************************** + * FontStyleEnumProc (COMMDLG.18) + */ +INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics, + UINT16 nFontType, LPARAM lParam ) +{ + HWND hcmb2=HWND_32(LOWORD(lParam)); + HWND hcmb3=HWND_32(HIWORD(lParam)); + HWND hDlg=GetParent(hcmb3); + LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER); + LOGFONT16 *lplf = MapSL(logfont); + TEXTMETRIC16 *lpmtrx16 = MapSL(metrics); + ENUMLOGFONTEXA elf32a; + NEWTEXTMETRICEXA nmtrx32a; + FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont)); + FONT_Metrics16To32A(lpmtrx16, &nmtrx32a); + return AddFontStyle(&elf32a, &nmtrx32a, nFontType, + (LPCHOOSEFONTA)lpcf->lpTemplateName, hcmb2, hcmb3, hDlg, TRUE); +} + +/*********************************************************************** + * ChooseFont (COMMDLG.15) + */ +BOOL16 WINAPI ChooseFont16(LPCHOOSEFONT16 lpChFont) +{ + HINSTANCE16 hInst; + HANDLE16 hDlgTmpl16 = 0, hResource16 = 0; + HGLOBAL16 hGlobal16 = 0; + BOOL16 bRet = FALSE; + LPCVOID template; + FARPROC16 ptr; + CHOOSEFONTA cf32a; + LOGFONTA lf32a; + LOGFONT16 *font16; + SEGPTR lpTemplateName; + + cf32a.lpLogFont=&lf32a; + CFn_CHOOSEFONT16to32A(lpChFont, &cf32a); + + TRACE("ChooseFont\n"); + if (!lpChFont) return FALSE; + + if (TRACE_ON(commdlg)) + _dump_cf_flags(lpChFont->Flags); + + if (lpChFont->Flags & CF_ENABLETEMPLATEHANDLE) + { + if (!(template = LockResource16( lpChFont->hInstance ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + else if (lpChFont->Flags & CF_ENABLETEMPLATE) + { + HANDLE16 hResInfo; + if (!(hResInfo = FindResource16( lpChFont->hInstance, + MapSL(lpChFont->lpTemplateName), + (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl16 = LoadResource16( lpChFont->hInstance, hResInfo )) || + !(template = LockResource16( hDlgTmpl16 ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + } + else + { + HRSRC hResInfo; + HGLOBAL hDlgTmpl32; + LPCVOID template32; + DWORD size; + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_FONT", (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return FALSE; + } + if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo)) || + !(template32 = LockResource(hDlgTmpl32))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo); + hGlobal16 = GlobalAlloc16(0, size); + if (!hGlobal16) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + ERR("alloc failure for %ld bytes\n", size); + return FALSE; + } + template = GlobalLock16(hGlobal16); + if (!template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + ERR("global lock failure for %x handle\n", hGlobal16); + GlobalFree16(hGlobal16); + return FALSE; + } + ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template); + hDlgTmpl16 = hGlobal16; + + } + + /* lpTemplateName is not used in the dialog */ + lpTemplateName=lpChFont->lpTemplateName; + lpChFont->lpTemplateName=(SEGPTR)&cf32a; + + ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 16); + hInst = GetWindowLongA(HWND_32(lpChFont->hwndOwner), GWL_HINSTANCE); + bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChFont->hwndOwner, + (DLGPROC16) ptr, (DWORD)lpChFont); + if (hResource16) FreeResource16(hDlgTmpl16); + if (hGlobal16) + { + GlobalUnlock16(hGlobal16); + GlobalFree16(hGlobal16); + } + lpChFont->lpTemplateName=lpTemplateName; + + lpChFont->iPointSize = cf32a.iPointSize; + lpChFont->Flags = cf32a.Flags; + lpChFont->rgbColors = cf32a.rgbColors; + lpChFont->lCustData = cf32a.lCustData; + lpChFont->nFontType = cf32a.nFontType; + + font16 = MapSL(lpChFont->lpLogFont); + font16->lfHeight = cf32a.lpLogFont->lfHeight; + font16->lfWidth = cf32a.lpLogFont->lfWidth; + font16->lfEscapement = cf32a.lpLogFont->lfEscapement; + font16->lfOrientation = cf32a.lpLogFont->lfOrientation; + font16->lfWeight = cf32a.lpLogFont->lfWeight; + font16->lfItalic = cf32a.lpLogFont->lfItalic; + font16->lfUnderline = cf32a.lpLogFont->lfUnderline; + font16->lfStrikeOut = cf32a.lpLogFont->lfStrikeOut; + font16->lfCharSet = cf32a.lpLogFont->lfCharSet; + font16->lfOutPrecision = cf32a.lpLogFont->lfOutPrecision; + font16->lfClipPrecision = cf32a.lpLogFont->lfClipPrecision; + font16->lfQuality = cf32a.lpLogFont->lfQuality; + font16->lfPitchAndFamily = cf32a.lpLogFont->lfPitchAndFamily; + lstrcpynA( font16->lfFaceName, cf32a.lpLogFont->lfFaceName, LF_FACESIZE ); + return bRet; +} + +/*********************************************************************** + * FormatCharDlgProc (COMMDLG.16) + FIXME: 1. some strings are "hardcoded", but it's better load from sysres + 2. some CF_.. flags are not supported + 3. some TType extensions + */ +BOOL16 CALLBACK FormatCharDlgProc16(HWND16 hDlg16, UINT16 message, + WPARAM16 wParam, LPARAM lParam) +{ + HWND hDlg = HWND_32(hDlg16); + LPCHOOSEFONT16 lpcf; + BOOL16 res=0; + if (message!=WM_INITDIALOG) + { + lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER); + if (!lpcf && message != WM_MEASUREITEM) + return FALSE; + if (CFn_HookCallChk(lpcf)) + res=CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg16,message,wParam,lParam); + if (res) + return res; + } + else + { + lpcf=(LPCHOOSEFONT16)lParam; + if (!CFn_WMInitDialog(hDlg, wParam, lParam, (LPCHOOSEFONTA)lpcf->lpTemplateName)) + { + TRACE("CFn_WMInitDialog returned FALSE\n"); + return FALSE; + } + if (CFn_HookCallChk(lpcf)) + return CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg16,WM_INITDIALOG,wParam,lParam); + } + switch (message) + { + case WM_MEASUREITEM: + { + MEASUREITEMSTRUCT16* mis16 = MapSL(lParam); + MEASUREITEMSTRUCT mis; + mis.CtlType = mis16->CtlType; + mis.CtlID = mis16->CtlID; + mis.itemID = mis16->itemID; + mis.itemWidth = mis16->itemWidth; + mis.itemHeight = mis16->itemHeight; + mis.itemData = mis16->itemData; + res = CFn_WMMeasureItem(hDlg, wParam, (LPARAM)&mis); + mis16->itemWidth = (UINT16)mis.itemWidth; + mis16->itemHeight = (UINT16)mis.itemHeight; + } + break; + case WM_DRAWITEM: + { + DRAWITEMSTRUCT16* dis16 = MapSL(lParam); + DRAWITEMSTRUCT dis; + dis.CtlType = dis16->CtlType; + dis.CtlID = dis16->CtlID; + dis.itemID = dis16->itemID; + dis.itemAction = dis16->itemAction; + dis.itemState = dis16->itemState; + dis.hwndItem = HWND_32(dis16->hwndItem); + dis.hDC = HDC_32(dis16->hDC); + dis.itemData = dis16->itemData; + CONV_RECT16TO32( &dis16->rcItem, &dis.rcItem ); + res = CFn_WMDrawItem(hDlg, wParam, (LPARAM)&dis); + } + break; + case WM_COMMAND: + res=CFn_WMCommand(hDlg, MAKEWPARAM( wParam, HIWORD(lParam) ), LOWORD(lParam), + (LPCHOOSEFONTA)lpcf->lpTemplateName); + break; + case WM_DESTROY: + res=CFn_WMDestroy(hDlg, wParam, lParam); + break; + case WM_CHOOSEFONT_GETLOGFONT: + TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n", lParam); + FIXME("current logfont back to caller\n"); + break; + case WM_PAINT: + res= CFn_WMPaint(hDlg, wParam, lParam, (LPCHOOSEFONTA)lpcf->lpTemplateName); + break; + } + return res; +} diff --git a/reactos/lib/comdlg32/generic.c b/reactos/lib/comdlg32/generic.c new file mode 100644 index 00000000000..cf69d8d197b --- /dev/null +++ b/reactos/lib/comdlg32/generic.c @@ -0,0 +1,63 @@ +/* + * COMMDLG/COMDLG32 functions + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * Copyright 1998,1999 Bertho Stultiens + * Copyright 1999 Klaas van Gend + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "commdlg.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "cdlg16.h" + +/*********************************************************************** + * DllEntryPoint [COMMDLG.32] + * + * Initialization code for the COMMDLG DLL + * + * RETURNS: + */ +BOOL WINAPI COMMDLG_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ds, WORD HeapSize, DWORD res1, WORD res2) +{ + TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2); + return TRUE; +} + + +/*********************************************************************** + * CommDlgExtendedError16 [COMMDLG.26] + * + * Get the last error value if a commdlg function fails. + * RETURNS + * Current error value which might not be valid + * if a previous call succeeded. + */ +DWORD WINAPI CommDlgExtendedError16(void) +{ + return CommDlgExtendedError(); +} diff --git a/reactos/lib/comdlg32/makefile b/reactos/lib/comdlg32/makefile new file mode 100644 index 00000000000..39e056f703e --- /dev/null +++ b/reactos/lib/comdlg32/makefile @@ -0,0 +1,9 @@ +# $Id: makefile,v 1.1 2004/01/09 01:58:22 sedwards Exp $ + +PATH_TO_TOP = ../.. + +TARGET_TYPE = winedll + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk diff --git a/reactos/lib/comdlg32/printdlg.c b/reactos/lib/comdlg32/printdlg.c new file mode 100644 index 00000000000..b0742b69261 --- /dev/null +++ b/reactos/lib/comdlg32/printdlg.c @@ -0,0 +1,2928 @@ +/* + * COMMDLG - Print Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * Copyright 1999 Klaas van Gend + * Copyright 2000 Huw D M 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include + +//#define NONAMELESSUNION +//#define NONAMELESSSTRUCT +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winspool.h" +#include "winerror.h" + +#include "wine/debug.h" + +#include "commdlg.h" +#include "dlgs.h" +#include "cderr.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "printdlg.h" + +#include "ros.h" + +/* Yes these constants are the same, but we're just copying win98 */ +#define UPDOWN_ID 0x270f +#define MAX_COPIES 9999 + +/* Debugging info */ +static struct pd_flags psd_flags[] = { + {PSD_MINMARGINS,"PSD_MINMARGINS"}, + {PSD_MARGINS,"PSD_MARGINS"}, + {PSD_INTHOUSANDTHSOFINCHES,"PSD_INTHOUSANDTHSOFINCHES"}, + {PSD_INHUNDREDTHSOFMILLIMETERS,"PSD_INHUNDREDTHSOFMILLIMETERS"}, + {PSD_DISABLEMARGINS,"PSD_DISABLEMARGINS"}, + {PSD_DISABLEPRINTER,"PSD_DISABLEPRINTER"}, + {PSD_NOWARNING,"PSD_NOWARNING"}, + {PSD_DISABLEORIENTATION,"PSD_DISABLEORIENTATION"}, + {PSD_RETURNDEFAULT,"PSD_RETURNDEFAULT"}, + {PSD_DISABLEPAPER,"PSD_DISABLEPAPER"}, + {PSD_SHOWHELP,"PSD_SHOWHELP"}, + {PSD_ENABLEPAGESETUPHOOK,"PSD_ENABLEPAGESETUPHOOK"}, + {PSD_ENABLEPAGESETUPTEMPLATE,"PSD_ENABLEPAGESETUPTEMPLATE"}, + {PSD_ENABLEPAGESETUPTEMPLATEHANDLE,"PSD_ENABLEPAGESETUPTEMPLATEHANDLE"}, + {PSD_ENABLEPAGEPAINTHOOK,"PSD_ENABLEPAGEPAINTHOOK"}, + {PSD_DISABLEPAGEPAINTING,"PSD_DISABLEPAGEPAINTING"}, + {-1, NULL} +}; + +/*********************************************************************** + * PRINTDLG_OpenDefaultPrinter + * + * Returns a winspool printer handle to the default printer in *hprn + * Caller must call ClosePrinter on the handle + * + * Returns TRUE on success else FALSE + */ +BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn) +{ + char buf[260]; + DWORD dwBufLen = sizeof(buf); + BOOL res; + if(!GetDefaultPrinterA(buf, &dwBufLen)) + return FALSE; + res = OpenPrinterA(buf, hprn, NULL); + if (!res) + FIXME("Could not open printer %s?!\n",buf); + return res; +} + +/*********************************************************************** + * PRINTDLG_SetUpPrinterListCombo + * + * Initializes printer list combox. + * hDlg: HWND of dialog + * id: Control id of combo + * name: Name of printer to select + * + * Initializes combo with list of available printers. Selects printer 'name' + * If name is NULL or does not exist select the default printer. + * + * Returns number of printers added to list. + */ +INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name) +{ + DWORD needed, num; + INT i; + LPPRINTER_INFO_2A pi; + EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num); + pi = HeapAlloc(GetProcessHeap(), 0, needed); + EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed, + &num); + + for(i = 0; i < num; i++) { + SendDlgItemMessageA(hDlg, id, CB_ADDSTRING, 0, + (LPARAM)pi[i].pPrinterName ); + } + HeapFree(GetProcessHeap(), 0, pi); + if(!name || + (i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1, + (LPARAM)name)) == CB_ERR) { + + char buf[260]; + DWORD dwBufLen = sizeof(buf); + FIXME("Can't find '%s' in printer list so trying to find default\n", + name); + if(!GetDefaultPrinterA(buf, &dwBufLen)) + return num; + i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1, (LPARAM)buf); + if(i == CB_ERR) + FIXME("Can't find default printer in printer list\n"); + } + SendDlgItemMessageA(hDlg, id, CB_SETCURSEL, i, 0); + return num; +} + +static INT PRINTDLG_SetUpPrinterListComboW(HWND hDlg, UINT id, LPCWSTR name) +{ + DWORD needed, num; + INT i; + LPPRINTER_INFO_2W pi; + EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num); + pi = HeapAlloc(GetProcessHeap(), 0, needed); + EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed, + &num); + + for(i = 0; i < num; i++) { + SendDlgItemMessageW(hDlg, id, CB_ADDSTRING, 0, + (LPARAM)pi[i].pPrinterName ); + } + HeapFree(GetProcessHeap(), 0, pi); + if(!name || + (i = SendDlgItemMessageW(hDlg, id, CB_FINDSTRINGEXACT, -1, + (LPARAM)name)) == CB_ERR) { + + /* ansi is ok */ + char buf[260]; + DWORD dwBufLen = sizeof(buf); + FIXME("Can't find '%s' in printer list so trying to find default\n", + debugstr_w(name)); + if(!GetDefaultPrinterA(buf, &dwBufLen)) + return num; + i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1, (LPARAM)buf); + if(i == CB_ERR) + FIXME("Can't find default printer in printer list\n"); + } + SendDlgItemMessageW(hDlg, id, CB_SETCURSEL, i, 0); + return num; +} + +/*********************************************************************** + * PRINTDLG_CreateDevNames [internal] + * + * + * creates a DevNames structure. + * + * (NB. when we handle unicode the offsets will be in wchars). + */ +static BOOL PRINTDLG_CreateDevNames(HGLOBAL *hmem, char* DeviceDriverName, + char* DeviceName, char* OutputPort) +{ + long size; + char* pDevNamesSpace; + char* pTempPtr; + LPDEVNAMES lpDevNames; + char buf[260]; + DWORD dwBufLen = sizeof(buf); + + size = strlen(DeviceDriverName) + 1 + + strlen(DeviceName) + 1 + + strlen(OutputPort) + 1 + + sizeof(DEVNAMES); + + if(*hmem) + *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE); + else + *hmem = GlobalAlloc(GMEM_MOVEABLE, size); + if (*hmem == 0) + return FALSE; + + pDevNamesSpace = GlobalLock(*hmem); + lpDevNames = (LPDEVNAMES) pDevNamesSpace; + + pTempPtr = pDevNamesSpace + sizeof(DEVNAMES); + strcpy(pTempPtr, DeviceDriverName); + lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += strlen(DeviceDriverName) + 1; + strcpy(pTempPtr, DeviceName); + lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += strlen(DeviceName) + 1; + strcpy(pTempPtr, OutputPort); + lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace; + + GetDefaultPrinterA(buf, &dwBufLen); + lpDevNames->wDefault = (strcmp(buf, DeviceName) == 0) ? 1 : 0; + GlobalUnlock(*hmem); + return TRUE; +} + +static BOOL PRINTDLG_CreateDevNamesW(HGLOBAL *hmem, LPCWSTR DeviceDriverName, + LPCWSTR DeviceName, LPCWSTR OutputPort) +{ + long size; + LPWSTR pDevNamesSpace; + LPWSTR pTempPtr; + LPDEVNAMES lpDevNames; + WCHAR bufW[260]; + DWORD dwBufLen = sizeof(bufW) / sizeof(WCHAR); + + size = sizeof(WCHAR)*lstrlenW(DeviceDriverName) + 2 + + sizeof(WCHAR)*lstrlenW(DeviceName) + 2 + + sizeof(WCHAR)*lstrlenW(OutputPort) + 2 + + sizeof(DEVNAMES); + + if(*hmem) + *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE); + else + *hmem = GlobalAlloc(GMEM_MOVEABLE, size); + if (*hmem == 0) + return FALSE; + + pDevNamesSpace = GlobalLock(*hmem); + lpDevNames = (LPDEVNAMES) pDevNamesSpace; + + pTempPtr = (LPWSTR)((LPDEVNAMES)pDevNamesSpace + 1); + lstrcpyW(pTempPtr, DeviceDriverName); + lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += lstrlenW(DeviceDriverName) + 1; + lstrcpyW(pTempPtr, DeviceName); + lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += lstrlenW(DeviceName) + 1; + lstrcpyW(pTempPtr, OutputPort); + lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace; + + GetDefaultPrinterW(bufW, &dwBufLen); + lpDevNames->wDefault = (lstrcmpW(bufW, DeviceName) == 0) ? 1 : 0; + GlobalUnlock(*hmem); + return TRUE; +} + +/*********************************************************************** + * PRINTDLG_UpdatePrintDlg [internal] + * + * + * updates the PrintDlg structure for return values. + * + * RETURNS + * FALSE if user is not allowed to close (i.e. wrong nTo or nFrom values) + * TRUE if successful. + */ +static BOOL PRINTDLG_UpdatePrintDlgA(HWND hDlg, + PRINT_PTRA* PrintStructures) +{ + LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg; + PDEVMODEA lpdm = PrintStructures->lpDevMode; + LPPRINTER_INFO_2A pi = PrintStructures->lpPrinterInfo; + + + if(!lpdm) { + FIXME("No lpdm ptr?\n"); + return FALSE; + } + + + if(!(lppd->Flags & PD_PRINTSETUP)) { + /* check whether nFromPage and nToPage are within range defined by + * nMinPage and nMaxPage + */ + if (IsDlgButtonChecked(hDlg, rad3) == BST_CHECKED) { /* Pages */ + WORD nToPage; + WORD nFromPage; + nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE); + nToPage = GetDlgItemInt(hDlg, edt2, NULL, FALSE); + if (nFromPage < lppd->nMinPage || nFromPage > lppd->nMaxPage || + nToPage < lppd->nMinPage || nToPage > lppd->nMaxPage) { + char resourcestr[256]; + char resultstr[256]; + LoadStringA(COMDLG32_hInstance, PD32_INVALID_PAGE_RANGE, + resourcestr, 255); + sprintf(resultstr,resourcestr, lppd->nMinPage, lppd->nMaxPage); + LoadStringA(COMDLG32_hInstance, PD32_PRINT_TITLE, + resourcestr, 255); + MessageBoxA(hDlg, resultstr, resourcestr, + MB_OK | MB_ICONWARNING); + return FALSE; + } + lppd->nFromPage = nFromPage; + lppd->nToPage = nToPage; + lppd->Flags |= PD_PAGENUMS; + } + else + lppd->Flags &= ~PD_PAGENUMS; + + if (IsDlgButtonChecked(hDlg, chx1) == BST_CHECKED) {/* Print to file */ + lppd->Flags |= PD_PRINTTOFILE; + pi->pPortName = "FILE:"; + } + + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) { /* Collate */ + FIXME("Collate lppd not yet implemented as output\n"); + } + + /* set PD_Collate and nCopies */ + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* The application doesn't support multiple copies or collate... + */ + lppd->Flags &= ~PD_COLLATE; + lppd->nCopies = 1; + /* if the printer driver supports it... store info there + * otherwise no collate & multiple copies ! + */ + if (lpdm->dmFields & DM_COLLATE) + lpdm->dmCollate = + (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED); + if (lpdm->dmFields & DM_COPIES) + lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + } else { + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) + lppd->Flags |= PD_COLLATE; + else + lppd->Flags &= ~PD_COLLATE; + lppd->nCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + } + } + return TRUE; +} + +static BOOL PRINTDLG_UpdatePrintDlgW(HWND hDlg, + PRINT_PTRW* PrintStructures) +{ + LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg; + PDEVMODEW lpdm = PrintStructures->lpDevMode; + LPPRINTER_INFO_2W pi = PrintStructures->lpPrinterInfo; + + + if(!lpdm) { + FIXME("No lpdm ptr?\n"); + return FALSE; + } + + + if(!(lppd->Flags & PD_PRINTSETUP)) { + /* check whether nFromPage and nToPage are within range defined by + * nMinPage and nMaxPage + */ + if (IsDlgButtonChecked(hDlg, rad3) == BST_CHECKED) { /* Pages */ + WORD nToPage; + WORD nFromPage; + nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE); + nToPage = GetDlgItemInt(hDlg, edt2, NULL, FALSE); + if (nFromPage < lppd->nMinPage || nFromPage > lppd->nMaxPage || + nToPage < lppd->nMinPage || nToPage > lppd->nMaxPage) { + char resourcestr[256]; + char resultstr[256]; + LoadStringA(COMDLG32_hInstance, PD32_INVALID_PAGE_RANGE, + resourcestr, 255); + sprintf(resultstr,resourcestr, lppd->nMinPage, lppd->nMaxPage); + LoadStringA(COMDLG32_hInstance, PD32_PRINT_TITLE, + resourcestr, 255); + MessageBoxA(hDlg, resultstr, resourcestr, + MB_OK | MB_ICONWARNING); + return FALSE; + } + lppd->nFromPage = nFromPage; + lppd->nToPage = nToPage; + } + + if (IsDlgButtonChecked(hDlg, chx1) == BST_CHECKED) {/* Print to file */ + static WCHAR file[] = {'F','I','L','E',':',0}; + lppd->Flags |= PD_PRINTTOFILE; + pi->pPortName = file; + } + + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) { /* Collate */ + FIXME("Collate lppd not yet implemented as output\n"); + } + + /* set PD_Collate and nCopies */ + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* The application doesn't support multiple copies or collate... + */ + lppd->Flags &= ~PD_COLLATE; + lppd->nCopies = 1; + /* if the printer driver supports it... store info there + * otherwise no collate & multiple copies ! + */ + if (lpdm->dmFields & DM_COLLATE) + lpdm->dmCollate = + (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED); + if (lpdm->dmFields & DM_COPIES) + lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + } else { + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) + lppd->Flags |= PD_COLLATE; + else + lppd->Flags &= ~PD_COLLATE; + lppd->nCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + } + } + return TRUE; +} + +static BOOL PRINTDLG_PaperSizeA( + PRINTDLGA *pdlga,const char *PaperSize,LPPOINT size +) { + DEVNAMES *dn; + DEVMODEA *dm; + LPSTR devname,portname; + int i; + INT NrOfEntries,ret; + char *Names = NULL; + POINT *points = NULL; + BOOL retval = FALSE; + + dn = GlobalLock(pdlga->hDevNames); + dm = GlobalLock(pdlga->hDevMode); + devname = ((char*)dn)+dn->wDeviceOffset; + portname = ((char*)dn)+dn->wOutputOffset; + + + NrOfEntries = DeviceCapabilitiesA(devname,portname,DC_PAPERNAMES,NULL,dm); + if (!NrOfEntries) { + FIXME("No papernames found for %s/%s\n",devname,portname); + goto out; + } + if (NrOfEntries == -1) { + ERR("Hmm ? DeviceCapabilities() DC_PAPERNAMES failed, ret -1 !\n"); + goto out; + } + + Names = (char*)HeapAlloc(GetProcessHeap(),0,NrOfEntries*64); + if (NrOfEntries != (ret=DeviceCapabilitiesA(devname,portname,DC_PAPERNAMES,Names,dm))) { + FIXME("Number of returned vals %d is not %d\n",NrOfEntries,ret); + goto out; + } + for (i=0;ix=points[i].x; + size->y=points[i].y; + retval = TRUE; +out: + GlobalUnlock(pdlga->hDevNames); + GlobalUnlock(pdlga->hDevMode); + if (Names) HeapFree(GetProcessHeap(),0,Names); + if (points) HeapFree(GetProcessHeap(),0,points); + return retval; +} + +static BOOL PRINTDLG_PaperSizeW( + PRINTDLGW *pdlga,const WCHAR *PaperSize,LPPOINT size +) { + DEVNAMES *dn; + DEVMODEW *dm; + LPWSTR devname,portname; + int i; + INT NrOfEntries,ret; + WCHAR *Names = NULL; + POINT *points = NULL; + BOOL retval = FALSE; + + dn = GlobalLock(pdlga->hDevNames); + dm = GlobalLock(pdlga->hDevMode); + devname = ((WCHAR*)dn)+dn->wDeviceOffset; + portname = ((WCHAR*)dn)+dn->wOutputOffset; + + + NrOfEntries = DeviceCapabilitiesW(devname,portname,DC_PAPERNAMES,NULL,dm); + if (!NrOfEntries) { + FIXME("No papernames found for %s/%s\n",debugstr_w(devname),debugstr_w(portname)); + goto out; + } + if (NrOfEntries == -1) { + ERR("Hmm ? DeviceCapabilities() DC_PAPERNAMES failed, ret -1 !\n"); + goto out; + } + + Names = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*NrOfEntries*64); + if (NrOfEntries != (ret=DeviceCapabilitiesW(devname,portname,DC_PAPERNAMES,Names,dm))) { + FIXME("Number of returned vals %d is not %d\n",NrOfEntries,ret); + goto out; + } + for (i=0;ix=points[i].x; + size->y=points[i].y; + retval = TRUE; +out: + GlobalUnlock(pdlga->hDevNames); + GlobalUnlock(pdlga->hDevMode); + if (Names) HeapFree(GetProcessHeap(),0,Names); + if (points) HeapFree(GetProcessHeap(),0,points); + return retval; +} + + +/************************************************************************ + * PRINTDLG_SetUpPaperComboBox + * + * Initialize either the papersize or inputslot combos of the Printer Setup + * dialog. We store the associated word (eg DMPAPER_A4) as the item data. + * We also try to re-select the old selection. + */ +static BOOL PRINTDLG_SetUpPaperComboBoxA(HWND hDlg, + int nIDComboBox, + char* PrinterName, + char* PortName, + LPDEVMODEA dm) +{ + int i; + int NrOfEntries; + char* Names; + WORD* Words; + DWORD Sel; + WORD oldWord = 0; + int NamesSize; + int fwCapability_Names; + int fwCapability_Words; + + TRACE(" Printer: %s, Port: %s, ComboID: %d\n",PrinterName,PortName,nIDComboBox); + + /* query the dialog box for the current selected value */ + Sel = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) { + /* we enter here only if a different printer is selected after + * the Print Setup dialog is opened. The current settings are + * stored into the newly selected printer. + */ + oldWord = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, + Sel, 0); + if (dm) { + if (nIDComboBox == cmb2) + dm->dmPaperSize = oldWord; + else + dm->dmDefaultSource = oldWord; + } + } + else { + /* we enter here only when the Print setup dialog is initially + * opened. In this case the settings are restored from when + * the dialog was last closed. + */ + if (dm) { + if (nIDComboBox == cmb2) + oldWord = dm->dmPaperSize; + else + oldWord = dm->dmDefaultSource; + } + } + + if (nIDComboBox == cmb2) { + NamesSize = 64; + fwCapability_Names = DC_PAPERNAMES; + fwCapability_Words = DC_PAPERS; + } else { + nIDComboBox = cmb3; + NamesSize = 24; + fwCapability_Names = DC_BINNAMES; + fwCapability_Words = DC_BINS; + } + + /* for some printer drivers, DeviceCapabilities calls a VXD to obtain the + * paper settings. As Wine doesn't allow VXDs, this results in a crash. + */ + WARN(" if your printer driver uses VXDs, expect a crash now!\n"); + NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName, + fwCapability_Names, NULL, dm); + if (NrOfEntries == 0) + WARN("no Name Entries found!\n"); + else if (NrOfEntries < 0) + return FALSE; + + if(DeviceCapabilitiesA(PrinterName, PortName, fwCapability_Words, NULL, dm) + != NrOfEntries) { + ERR("Number of caps is different\n"); + NrOfEntries = 0; + } + + Names = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(char)*NamesSize); + Words = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WORD)); + NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName, + fwCapability_Names, Names, dm); + NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName, + fwCapability_Words, (LPSTR)Words, dm); + + /* reset any current content in the combobox */ + SendDlgItemMessageA(hDlg, nIDComboBox, CB_RESETCONTENT, 0, 0); + + /* store new content */ + for (i = 0; i < NrOfEntries; i++) { + DWORD pos = SendDlgItemMessageA(hDlg, nIDComboBox, CB_ADDSTRING, 0, + (LPARAM)(&Names[i*NamesSize]) ); + SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETITEMDATA, pos, + Words[i]); + } + + /* Look for old selection - can't do this is previous loop since + item order will change as more items are added */ + Sel = 0; + for (i = 0; i < NrOfEntries; i++) { + if(SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, i, 0) == + oldWord) { + Sel = i; + break; + } + } + SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETCURSEL, Sel, 0); + + HeapFree(GetProcessHeap(),0,Words); + HeapFree(GetProcessHeap(),0,Names); + return TRUE; +} + +static BOOL PRINTDLG_SetUpPaperComboBoxW(HWND hDlg, + int nIDComboBox, + WCHAR* PrinterName, + WCHAR* PortName, + LPDEVMODEW dm) +{ + int i; + int NrOfEntries; + WCHAR* Names; + WORD* Words; + DWORD Sel; + WORD oldWord = 0; + int NamesSize; + int fwCapability_Names; + int fwCapability_Words; + + TRACE(" Printer: %s, Port: %s, ComboID: %d\n",debugstr_w(PrinterName),debugstr_w(PortName),nIDComboBox); + + /* query the dialog box for the current selected value */ + Sel = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) { + /* we enter here only if a different printer is selected after + * the Print Setup dialog is opened. The current settings are + * stored into the newly selected printer. + */ + oldWord = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, + Sel, 0); + if (dm) { + if (nIDComboBox == cmb2) + dm->dmPaperSize = oldWord; + else + dm->dmDefaultSource = oldWord; + } + } + else { + /* we enter here only when the Print setup dialog is initially + * opened. In this case the settings are restored from when + * the dialog was last closed. + */ + if (dm) { + if (nIDComboBox == cmb2) + oldWord = dm->dmPaperSize; + else + oldWord = dm->dmDefaultSource; + } + } + + if (nIDComboBox == cmb2) { + NamesSize = 64; + fwCapability_Names = DC_PAPERNAMES; + fwCapability_Words = DC_PAPERS; + } else { + nIDComboBox = cmb3; + NamesSize = 24; + fwCapability_Names = DC_BINNAMES; + fwCapability_Words = DC_BINS; + } + + /* for some printer drivers, DeviceCapabilities calls a VXD to obtain the + * paper settings. As Wine doesn't allow VXDs, this results in a crash. + */ + WARN(" if your printer driver uses VXDs, expect a crash now!\n"); + NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName, + fwCapability_Names, NULL, dm); + if (NrOfEntries == 0) + WARN("no Name Entries found!\n"); + else if (NrOfEntries < 0) + return FALSE; + + if(DeviceCapabilitiesW(PrinterName, PortName, fwCapability_Words, NULL, dm) + != NrOfEntries) { + ERR("Number of caps is different\n"); + NrOfEntries = 0; + } + + Names = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WCHAR)*NamesSize); + Words = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WORD)); + NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName, + fwCapability_Names, Names, dm); + NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName, + fwCapability_Words, (LPWSTR)Words, dm); + + /* reset any current content in the combobox */ + SendDlgItemMessageA(hDlg, nIDComboBox, CB_RESETCONTENT, 0, 0); + + /* store new content */ + for (i = 0; i < NrOfEntries; i++) { + DWORD pos = SendDlgItemMessageW(hDlg, nIDComboBox, CB_ADDSTRING, 0, + (LPARAM)(&Names[i*NamesSize]) ); + SendDlgItemMessageW(hDlg, nIDComboBox, CB_SETITEMDATA, pos, + Words[i]); + } + + /* Look for old selection - can't do this is previous loop since + item order will change as more items are added */ + Sel = 0; + for (i = 0; i < NrOfEntries; i++) { + if(SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, i, 0) == + oldWord) { + Sel = i; + break; + } + } + SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETCURSEL, Sel, 0); + + HeapFree(GetProcessHeap(),0,Words); + HeapFree(GetProcessHeap(),0,Names); + return TRUE; +} + + +/*********************************************************************** + * PRINTDLG_UpdatePrinterInfoTexts [internal] + */ +static void PRINTDLG_UpdatePrinterInfoTextsA(HWND hDlg, LPPRINTER_INFO_2A pi) +{ + char StatusMsg[256]; + char ResourceString[256]; + int i; + + /* Status Message */ + StatusMsg[0]='\0'; + + /* add all status messages */ + for (i = 0; i < 25; i++) { + if (pi->Status & (1<pDriverName); + + if (pi->pLocation != NULL && pi->pLocation[0] != '\0') + SetDlgItemTextA(hDlg, stc14, pi->pLocation); + else + SetDlgItemTextA(hDlg, stc14, pi->pPortName); + SetDlgItemTextA(hDlg, stc13, pi->pComment ? pi->pComment : ""); + return; +} + +static void PRINTDLG_UpdatePrinterInfoTextsW(HWND hDlg, LPPRINTER_INFO_2W pi) +{ + WCHAR StatusMsg[256]; + WCHAR ResourceString[256]; + static const WCHAR emptyW[] = {0}; + int i; + + /* Status Message */ + StatusMsg[0]='\0'; + + /* add all status messages */ + for (i = 0; i < 25; i++) { + if (pi->Status & (1<pDriverName); + if (pi->pLocation != NULL && pi->pLocation[0] != '\0') + SetDlgItemTextW(hDlg, stc14, pi->pLocation); + else + SetDlgItemTextW(hDlg, stc14, pi->pPortName); + SetDlgItemTextW(hDlg, stc13, pi->pComment ? pi->pComment : emptyW); +} + + +/******************************************************************* + * + * PRINTDLG_ChangePrinter + * + */ +BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name, + PRINT_PTRA *PrintStructures) +{ + LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg; + LPDEVMODEA lpdm = NULL; + LONG dmSize; + DWORD needed; + HANDLE hprn; + + if(PrintStructures->lpPrinterInfo) + HeapFree(GetProcessHeap(),0, PrintStructures->lpPrinterInfo); + if(PrintStructures->lpDriverInfo) + HeapFree(GetProcessHeap(),0, PrintStructures->lpDriverInfo); + if(!OpenPrinterA(name, &hprn, NULL)) { + ERR("Can't open printer %s\n", name); + return FALSE; + } + GetPrinterA(hprn, 2, NULL, 0, &needed); + PrintStructures->lpPrinterInfo = HeapAlloc(GetProcessHeap(),0,needed); + GetPrinterA(hprn, 2, (LPBYTE)PrintStructures->lpPrinterInfo, needed, + &needed); + GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed); + PrintStructures->lpDriverInfo = HeapAlloc(GetProcessHeap(),0,needed); + if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)PrintStructures->lpDriverInfo, + needed, &needed)) { + ERR("GetPrinterDriverA failed for %s, fix your config!\n",PrintStructures->lpPrinterInfo->pPrinterName); + return FALSE; + } + ClosePrinter(hprn); + + PRINTDLG_UpdatePrinterInfoTextsA(hDlg, PrintStructures->lpPrinterInfo); + + if(PrintStructures->lpDevMode) { + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode); + PrintStructures->lpDevMode = NULL; + } + + dmSize = DocumentPropertiesA(0, 0, name, NULL, NULL, 0); + if(dmSize == -1) { + ERR("DocumentProperties fails on %s\n", debugstr_a(name)); + return FALSE; + } + PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(), 0, dmSize); + dmSize = DocumentPropertiesA(0, 0, name, PrintStructures->lpDevMode, NULL, + DM_OUT_BUFFER); + if(lppd->hDevMode && (lpdm = GlobalLock(lppd->hDevMode)) && + !strcmp(lpdm->dmDeviceName, + PrintStructures->lpDevMode->dmDeviceName)) { + /* Supplied devicemode matches current printer so try to use it */ + DocumentPropertiesA(0, 0, name, PrintStructures->lpDevMode, lpdm, + DM_OUT_BUFFER | DM_IN_BUFFER); + } + if(lpdm) + GlobalUnlock(lppd->hDevMode); + + lpdm = PrintStructures->lpDevMode; /* use this as a shortcut */ + + if(!(lppd->Flags & PD_PRINTSETUP)) { + /* Print range (All/Range/Selection) */ + SetDlgItemInt(hDlg, edt1, lppd->nFromPage, FALSE); + SetDlgItemInt(hDlg, edt2, lppd->nToPage, FALSE); + CheckRadioButton(hDlg, rad1, rad3, rad1); /* default */ + if (lppd->Flags & PD_NOSELECTION) + EnableWindow(GetDlgItem(hDlg, rad2), FALSE); + else + if (lppd->Flags & PD_SELECTION) + CheckRadioButton(hDlg, rad1, rad3, rad2); + if (lppd->Flags & PD_NOPAGENUMS) { + EnableWindow(GetDlgItem(hDlg, rad3), FALSE); + EnableWindow(GetDlgItem(hDlg, stc2),FALSE); + EnableWindow(GetDlgItem(hDlg, edt1), FALSE); + EnableWindow(GetDlgItem(hDlg, stc3),FALSE); + EnableWindow(GetDlgItem(hDlg, edt2), FALSE); + } else { + if (lppd->Flags & PD_PAGENUMS) + CheckRadioButton(hDlg, rad1, rad3, rad3); + } + /* "All xxx pages"... */ + { + char resourcestr[64]; + char result[64]; + LoadStringA(COMDLG32_hInstance, PD32_PRINT_ALL_X_PAGES, + resourcestr, 49); + sprintf(result,resourcestr,lppd->nMaxPage - lppd->nMinPage + 1); + SendDlgItemMessageA(hDlg, rad1, WM_SETTEXT, 0, (LPARAM) result); + } + + /* Collate pages + * + * FIXME: The ico3 is not displayed for some reason. I don't know why. + */ + if (lppd->Flags & PD_COLLATE) { + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hCollateIcon); + CheckDlgButton(hDlg, chx2, 1); + } else { + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hNoCollateIcon); + CheckDlgButton(hDlg, chx2, 0); + } + + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* if printer doesn't support it: no Collate */ + if (!(lpdm->dmFields & DM_COLLATE)) { + EnableWindow(GetDlgItem(hDlg, chx2), FALSE); + EnableWindow(GetDlgItem(hDlg, ico3), FALSE); + } + } + + /* nCopies */ + { + INT copies; + if (lppd->hDevMode == 0) + copies = lppd->nCopies; + else + copies = lpdm->dmCopies; + if(copies == 0) copies = 1; + else if(copies < 0) copies = MAX_COPIES; + SetDlgItemInt(hDlg, edt3, copies, FALSE); + } + + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* if printer doesn't support it: no nCopies */ + if (!(lpdm->dmFields & DM_COPIES)) { + EnableWindow(GetDlgItem(hDlg, edt3), FALSE); + EnableWindow(GetDlgItem(hDlg, stc5), FALSE); + } + } + + /* print to file */ + CheckDlgButton(hDlg, chx1, (lppd->Flags & PD_PRINTTOFILE) ? 1 : 0); + if (lppd->Flags & PD_DISABLEPRINTTOFILE) + EnableWindow(GetDlgItem(hDlg, chx1), FALSE); + if (lppd->Flags & PD_HIDEPRINTTOFILE) + ShowWindow(GetDlgItem(hDlg, chx1), SW_HIDE); + + } else { /* PD_PRINTSETUP */ + BOOL bPortrait = (lpdm->dmOrientation == DMORIENT_PORTRAIT); + + PRINTDLG_SetUpPaperComboBoxA(hDlg, cmb2, + PrintStructures->lpPrinterInfo->pPrinterName, + PrintStructures->lpPrinterInfo->pPortName, + lpdm); + PRINTDLG_SetUpPaperComboBoxA(hDlg, cmb3, + PrintStructures->lpPrinterInfo->pPrinterName, + PrintStructures->lpPrinterInfo->pPortName, + lpdm); + CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(bPortrait ? PrintStructures->hPortraitIcon : + PrintStructures->hLandscapeIcon)); + + } + + /* help button */ + if ((lppd->Flags & PD_SHOWHELP)==0) { + /* hide if PD_SHOWHELP not specified */ + ShowWindow(GetDlgItem(hDlg, pshHelp), SW_HIDE); + } + return TRUE; +} + +static BOOL PRINTDLG_ChangePrinterW(HWND hDlg, WCHAR *name, + PRINT_PTRW *PrintStructures) +{ + LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg; + LPDEVMODEW lpdm = NULL; + LONG dmSize; + DWORD needed; + HANDLE hprn; + + if(PrintStructures->lpPrinterInfo) + HeapFree(GetProcessHeap(),0, PrintStructures->lpPrinterInfo); + if(PrintStructures->lpDriverInfo) + HeapFree(GetProcessHeap(),0, PrintStructures->lpDriverInfo); + if(!OpenPrinterW(name, &hprn, NULL)) { + ERR("Can't open printer %s\n", debugstr_w(name)); + return FALSE; + } + GetPrinterW(hprn, 2, NULL, 0, &needed); + PrintStructures->lpPrinterInfo = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed); + GetPrinterW(hprn, 2, (LPBYTE)PrintStructures->lpPrinterInfo, needed, + &needed); + GetPrinterDriverW(hprn, NULL, 3, NULL, 0, &needed); + PrintStructures->lpDriverInfo = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed); + if (!GetPrinterDriverW(hprn, NULL, 3, (LPBYTE)PrintStructures->lpDriverInfo, + needed, &needed)) { + ERR("GetPrinterDriverA failed for %s, fix your config!\n",debugstr_w(PrintStructures->lpPrinterInfo->pPrinterName)); + return FALSE; + } + ClosePrinter(hprn); + + PRINTDLG_UpdatePrinterInfoTextsW(hDlg, PrintStructures->lpPrinterInfo); + + if(PrintStructures->lpDevMode) { + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode); + PrintStructures->lpDevMode = NULL; + } + + dmSize = DocumentPropertiesW(0, 0, name, NULL, NULL, 0); + if(dmSize == -1) { + ERR("DocumentProperties fails on %s\n", debugstr_w(name)); + return FALSE; + } + PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(), 0, dmSize); + dmSize = DocumentPropertiesW(0, 0, name, PrintStructures->lpDevMode, NULL, + DM_OUT_BUFFER); + if(lppd->hDevMode && (lpdm = GlobalLock(lppd->hDevMode)) && + !lstrcmpW(lpdm->dmDeviceName, + PrintStructures->lpDevMode->dmDeviceName)) { + /* Supplied devicemode matches current printer so try to use it */ + DocumentPropertiesW(0, 0, name, PrintStructures->lpDevMode, lpdm, + DM_OUT_BUFFER | DM_IN_BUFFER); + } + if(lpdm) + GlobalUnlock(lppd->hDevMode); + + lpdm = PrintStructures->lpDevMode; /* use this as a shortcut */ + + if(!(lppd->Flags & PD_PRINTSETUP)) { + /* Print range (All/Range/Selection) */ + SetDlgItemInt(hDlg, edt1, lppd->nFromPage, FALSE); + SetDlgItemInt(hDlg, edt2, lppd->nToPage, FALSE); + CheckRadioButton(hDlg, rad1, rad3, rad1); /* default */ + if (lppd->Flags & PD_NOSELECTION) + EnableWindow(GetDlgItem(hDlg, rad2), FALSE); + else + if (lppd->Flags & PD_SELECTION) + CheckRadioButton(hDlg, rad1, rad3, rad2); + if (lppd->Flags & PD_NOPAGENUMS) { + EnableWindow(GetDlgItem(hDlg, rad3), FALSE); + EnableWindow(GetDlgItem(hDlg, stc2),FALSE); + EnableWindow(GetDlgItem(hDlg, edt1), FALSE); + EnableWindow(GetDlgItem(hDlg, stc3),FALSE); + EnableWindow(GetDlgItem(hDlg, edt2), FALSE); + } else { + if (lppd->Flags & PD_PAGENUMS) + CheckRadioButton(hDlg, rad1, rad3, rad3); + } + /* "All xxx pages"... */ + { + /* ansi is ok */ + char resourcestr[64]; + char result[64]; + LoadStringA(COMDLG32_hInstance, PD32_PRINT_ALL_X_PAGES, + resourcestr, 49); + sprintf(result,resourcestr,lppd->nMaxPage - lppd->nMinPage + 1); + SendDlgItemMessageA(hDlg, rad1, WM_SETTEXT, 0, (LPARAM) result); + } + + /* Collate pages + * + * FIXME: The ico3 is not displayed for some reason. I don't know why. + */ + if (lppd->Flags & PD_COLLATE) { + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hCollateIcon); + CheckDlgButton(hDlg, chx2, 1); + } else { + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hNoCollateIcon); + CheckDlgButton(hDlg, chx2, 0); + } + + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* if printer doesn't support it: no Collate */ + if (!(lpdm->dmFields & DM_COLLATE)) { + EnableWindow(GetDlgItem(hDlg, chx2), FALSE); + EnableWindow(GetDlgItem(hDlg, ico3), FALSE); + } + } + + /* nCopies */ + { + INT copies; + if (lppd->hDevMode == 0) + copies = lppd->nCopies; + else + copies = lpdm->dmCopies; + if(copies == 0) copies = 1; + else if(copies < 0) copies = MAX_COPIES; + SetDlgItemInt(hDlg, edt3, copies, FALSE); + } + + if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) { + /* if printer doesn't support it: no nCopies */ + if (!(lpdm->dmFields & DM_COPIES)) { + EnableWindow(GetDlgItem(hDlg, edt3), FALSE); + EnableWindow(GetDlgItem(hDlg, stc5), FALSE); + } + } + + /* print to file */ + CheckDlgButton(hDlg, chx1, (lppd->Flags & PD_PRINTTOFILE) ? 1 : 0); + if (lppd->Flags & PD_DISABLEPRINTTOFILE) + EnableWindow(GetDlgItem(hDlg, chx1), FALSE); + if (lppd->Flags & PD_HIDEPRINTTOFILE) + ShowWindow(GetDlgItem(hDlg, chx1), SW_HIDE); + + } else { /* PD_PRINTSETUP */ + BOOL bPortrait = (lpdm->dmOrientation == DMORIENT_PORTRAIT); + + PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb2, + PrintStructures->lpPrinterInfo->pPrinterName, + PrintStructures->lpPrinterInfo->pPortName, + lpdm); + PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb3, + PrintStructures->lpPrinterInfo->pPrinterName, + PrintStructures->lpPrinterInfo->pPortName, + lpdm); + CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(bPortrait ? PrintStructures->hPortraitIcon : + PrintStructures->hLandscapeIcon)); + + } + + /* help button */ + if ((lppd->Flags & PD_SHOWHELP)==0) { + /* hide if PD_SHOWHELP not specified */ + ShowWindow(GetDlgItem(hDlg, pshHelp), SW_HIDE); + } + return TRUE; +} + +/*********************************************************************** + * PRINTDLG_WMInitDialog [internal] + */ +static LRESULT PRINTDLG_WMInitDialog(HWND hDlg, WPARAM wParam, + PRINT_PTRA* PrintStructures) +{ + LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg; + DEVNAMES *pdn; + DEVMODEA *pdm; + char *name = NULL; + UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4; + + /* load Collate ICONs */ + /* We load these with LoadImage because they are not a standard + size and we don't want them rescaled */ + PrintStructures->hCollateIcon = + LoadImageA(COMDLG32_hInstance, "PD32_COLLATE", IMAGE_ICON, 0, 0, 0); + PrintStructures->hNoCollateIcon = + LoadImageA(COMDLG32_hInstance, "PD32_NOCOLLATE", IMAGE_ICON, 0, 0, 0); + + /* These can be done with LoadIcon */ + PrintStructures->hPortraitIcon = + LoadIconA(COMDLG32_hInstance, "PD32_PORTRAIT"); + PrintStructures->hLandscapeIcon = + LoadIconA(COMDLG32_hInstance, "PD32_LANDSCAPE"); + + if(PrintStructures->hCollateIcon == 0 || + PrintStructures->hNoCollateIcon == 0 || + PrintStructures->hPortraitIcon == 0 || + PrintStructures->hLandscapeIcon == 0) { + ERR("no icon in resourcefile\n"); + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + EndDialog(hDlg, FALSE); + } + + /* + * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message + * must be registered and the Help button must be shown. + */ + if (lppd->Flags & PD_SHOWHELP) { + if((PrintStructures->HelpMessageID = + RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) { + COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); + return FALSE; + } + } else + PrintStructures->HelpMessageID = 0; + + if(!(lppd->Flags &PD_PRINTSETUP)) { + PrintStructures->hwndUpDown = + CreateUpDownControl(WS_CHILD | WS_VISIBLE | WS_BORDER | + UDS_NOTHOUSANDS | UDS_ARROWKEYS | + UDS_ALIGNRIGHT | UDS_SETBUDDYINT, 0, 0, 0, 0, + hDlg, UPDOWN_ID, COMDLG32_hInstance, + GetDlgItem(hDlg, edt3), MAX_COPIES, 1, 1); + } + + /* FIXME: I allow more freedom than either Win95 or WinNT, + * which do not agree to what errors should be thrown or not + * in case nToPage or nFromPage is out-of-range. + */ + if (lppd->nMaxPage < lppd->nMinPage) + lppd->nMaxPage = lppd->nMinPage; + if (lppd->nMinPage == lppd->nMaxPage) + lppd->Flags |= PD_NOPAGENUMS; + if (lppd->nToPage < lppd->nMinPage) + lppd->nToPage = lppd->nMinPage; + if (lppd->nToPage > lppd->nMaxPage) + lppd->nToPage = lppd->nMaxPage; + if (lppd->nFromPage < lppd->nMinPage) + lppd->nFromPage = lppd->nMinPage; + if (lppd->nFromPage > lppd->nMaxPage) + lppd->nFromPage = lppd->nMaxPage; + + /* if we have the combo box, fill it */ + if (GetDlgItem(hDlg,comboID)) { + /* Fill Combobox + */ + pdn = GlobalLock(lppd->hDevNames); + pdm = GlobalLock(lppd->hDevMode); + if(pdn) + name = (char*)pdn + pdn->wDeviceOffset; + else if(pdm) + name = pdm->dmDeviceName; + PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name); + if(pdm) GlobalUnlock(lppd->hDevMode); + if(pdn) GlobalUnlock(lppd->hDevNames); + + /* Now find selected printer and update rest of dlg */ + name = HeapAlloc(GetProcessHeap(),0,256); + if (GetDlgItemTextA(hDlg, comboID, name, 255)) + PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures); + HeapFree(GetProcessHeap(),0,name); + } else { + /* else use default printer */ + char name[200]; + DWORD dwBufLen = sizeof(name); + BOOL ret = GetDefaultPrinterA(name, &dwBufLen); + + if (ret) + PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures); + else + FIXME("No default printer found, expect problems!\n"); + } + return TRUE; +} + +static LRESULT PRINTDLG_WMInitDialogW(HWND hDlg, WPARAM wParam, + PRINT_PTRW* PrintStructures) +{ + LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg; + DEVNAMES *pdn; + DEVMODEW *pdm; + WCHAR *name = NULL; + UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4; + + /* load Collate ICONs */ + /* We load these with LoadImage because they are not a standard + size and we don't want them rescaled */ + PrintStructures->hCollateIcon = + LoadImageA(COMDLG32_hInstance, "PD32_COLLATE", IMAGE_ICON, 0, 0, 0); + PrintStructures->hNoCollateIcon = + LoadImageA(COMDLG32_hInstance, "PD32_NOCOLLATE", IMAGE_ICON, 0, 0, 0); + + /* These can be done with LoadIcon */ + PrintStructures->hPortraitIcon = + LoadIconA(COMDLG32_hInstance, "PD32_PORTRAIT"); + PrintStructures->hLandscapeIcon = + LoadIconA(COMDLG32_hInstance, "PD32_LANDSCAPE"); + + if(PrintStructures->hCollateIcon == 0 || + PrintStructures->hNoCollateIcon == 0 || + PrintStructures->hPortraitIcon == 0 || + PrintStructures->hLandscapeIcon == 0) { + ERR("no icon in resourcefile\n"); + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + EndDialog(hDlg, FALSE); + } + + /* + * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message + * must be registered and the Help button must be shown. + */ + if (lppd->Flags & PD_SHOWHELP) { + if((PrintStructures->HelpMessageID = + RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) { + COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); + return FALSE; + } + } else + PrintStructures->HelpMessageID = 0; + + if(!(lppd->Flags &PD_PRINTSETUP)) { + PrintStructures->hwndUpDown = + CreateUpDownControl(WS_CHILD | WS_VISIBLE | WS_BORDER | + UDS_NOTHOUSANDS | UDS_ARROWKEYS | + UDS_ALIGNRIGHT | UDS_SETBUDDYINT, 0, 0, 0, 0, + hDlg, UPDOWN_ID, COMDLG32_hInstance, + GetDlgItem(hDlg, edt3), MAX_COPIES, 1, 1); + } + + /* FIXME: I allow more freedom than either Win95 or WinNT, + * which do not agree to what errors should be thrown or not + * in case nToPage or nFromPage is out-of-range. + */ + if (lppd->nMaxPage < lppd->nMinPage) + lppd->nMaxPage = lppd->nMinPage; + if (lppd->nMinPage == lppd->nMaxPage) + lppd->Flags |= PD_NOPAGENUMS; + if (lppd->nToPage < lppd->nMinPage) + lppd->nToPage = lppd->nMinPage; + if (lppd->nToPage > lppd->nMaxPage) + lppd->nToPage = lppd->nMaxPage; + if (lppd->nFromPage < lppd->nMinPage) + lppd->nFromPage = lppd->nMinPage; + if (lppd->nFromPage > lppd->nMaxPage) + lppd->nFromPage = lppd->nMaxPage; + + /* if we have the combo box, fill it */ + if (GetDlgItem(hDlg,comboID)) { + /* Fill Combobox + */ + pdn = GlobalLock(lppd->hDevNames); + pdm = GlobalLock(lppd->hDevMode); + if(pdn) + name = (WCHAR*)pdn + pdn->wDeviceOffset; + else if(pdm) + name = pdm->dmDeviceName; + PRINTDLG_SetUpPrinterListComboW(hDlg, comboID, name); + if(pdm) GlobalUnlock(lppd->hDevMode); + if(pdn) GlobalUnlock(lppd->hDevNames); + + /* Now find selected printer and update rest of dlg */ + /* ansi is ok here */ + name = HeapAlloc(GetProcessHeap(),0,256*sizeof(WCHAR)); + if (GetDlgItemTextW(hDlg, comboID, name, 255)) + PRINTDLG_ChangePrinterW(hDlg, name, PrintStructures); + HeapFree(GetProcessHeap(),0,name); + } else { + /* else use default printer */ + WCHAR name[200]; + DWORD dwBufLen = sizeof(name) / sizeof(WCHAR); + BOOL ret = GetDefaultPrinterW(name, &dwBufLen); + + if (ret) + PRINTDLG_ChangePrinterW(hDlg, name, PrintStructures); + else + FIXME("No default printer found, expect problems!\n"); + } + return TRUE; +} + +/*********************************************************************** + * PRINTDLG_WMCommand [internal] + */ +LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam, + LPARAM lParam, PRINT_PTRA* PrintStructures) +{ + LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg; + UINT PrinterComboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4; + LPDEVMODEA lpdm = PrintStructures->lpDevMode; + + switch (LOWORD(wParam)) { + case IDOK: + TRACE(" OK button was hit\n"); + if (PRINTDLG_UpdatePrintDlgA(hDlg, PrintStructures)!=TRUE) { + FIXME("Update printdlg was not successful!\n"); + return(FALSE); + } + EndDialog(hDlg, TRUE); + return(TRUE); + + case IDCANCEL: + TRACE(" CANCEL button was hit\n"); + EndDialog(hDlg, FALSE); + return(FALSE); + + case pshHelp: + TRACE(" HELP button was hit\n"); + SendMessageA(lppd->hwndOwner, PrintStructures->HelpMessageID, + (WPARAM) hDlg, (LPARAM) lppd); + break; + + case chx2: /* collate pages checkbox */ + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hCollateIcon); + else + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hNoCollateIcon); + break; + case edt1: /* from page nr editbox */ + case edt2: /* to page nr editbox */ + if (HIWORD(wParam)==EN_CHANGE) { + WORD nToPage; + WORD nFromPage; + nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE); + nToPage = GetDlgItemInt(hDlg, edt2, NULL, FALSE); + if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage) + CheckRadioButton(hDlg, rad1, rad3, rad3); + } + break; + + case edt3: + if(HIWORD(wParam) == EN_CHANGE) { + INT copies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + if(copies <= 1) + EnableWindow(GetDlgItem(hDlg, chx2), FALSE); + else + EnableWindow(GetDlgItem(hDlg, chx2), TRUE); + } + break; + +#if 0 + case psh1: /* Print Setup */ + { + PRINTDLG16 pdlg; + + if (!PrintStructures->dlg.lpPrintDlg16) { + FIXME("The 32bit print dialog does not have this button!?\n"); + break; + } + + memcpy(&pdlg,PrintStructures->dlg.lpPrintDlg16,sizeof(pdlg)); + pdlg.Flags |= PD_PRINTSETUP; + pdlg.hwndOwner = HWND_16(hDlg); + if (!PrintDlg16(&pdlg)) + break; + } + break; +#endif + case psh2: /* Properties button */ + { + HANDLE hPrinter; + char PrinterName[256]; + + GetDlgItemTextA(hDlg, PrinterComboID, PrinterName, 255); + if (!OpenPrinterA(PrinterName, &hPrinter, NULL)) { + FIXME(" Call to OpenPrinter did not succeed!\n"); + break; + } + DocumentPropertiesA(hDlg, hPrinter, PrinterName, + PrintStructures->lpDevMode, + PrintStructures->lpDevMode, + DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT); + ClosePrinter(hPrinter); + break; + } + + case rad1: /* Paperorientation */ + if (lppd->Flags & PD_PRINTSETUP) + { + lpdm->dmOrientation = DMORIENT_PORTRAIT; + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(PrintStructures->hPortraitIcon)); + } + break; + + case rad2: /* Paperorientation */ + if (lppd->Flags & PD_PRINTSETUP) + { + lpdm->dmOrientation = DMORIENT_LANDSCAPE; + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(PrintStructures->hLandscapeIcon)); + } + break; + + case cmb1: /* Printer Combobox in PRINT SETUP, quality combobox in PRINT */ + if (PrinterComboID != wParam) { + FIXME("No handling for print quality combo box yet.\n"); + break; + } + /* FALLTHROUGH */ + case cmb4: /* Printer combobox */ + if (HIWORD(wParam)==CBN_SELCHANGE) { + char PrinterName[256]; + GetDlgItemTextA(hDlg, LOWORD(wParam), PrinterName, 255); + PRINTDLG_ChangePrinterA(hDlg, PrinterName, PrintStructures); + } + break; + + case cmb2: /* Papersize */ + { + DWORD Sel = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) + lpdm->dmPaperSize = SendDlgItemMessageA(hDlg, cmb2, + CB_GETITEMDATA, + Sel, 0); + } + break; + + case cmb3: /* Bin */ + { + DWORD Sel = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) + lpdm->dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3, + CB_GETITEMDATA, Sel, + 0); + } + break; + } + if(lppd->Flags & PD_PRINTSETUP) { + switch (LOWORD(wParam)) { + case rad1: /* orientation */ + case rad2: + if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) { + if(lpdm->dmOrientation != DMORIENT_PORTRAIT) { + lpdm->dmOrientation = DMORIENT_PORTRAIT; + SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hPortraitIcon); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hPortraitIcon); + } + } else { + if(lpdm->dmOrientation != DMORIENT_LANDSCAPE) { + lpdm->dmOrientation = DMORIENT_LANDSCAPE; + SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hLandscapeIcon); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hLandscapeIcon); + } + } + break; + } + } + return FALSE; +} + +static LRESULT PRINTDLG_WMCommandW(HWND hDlg, WPARAM wParam, + LPARAM lParam, PRINT_PTRW* PrintStructures) +{ + LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg; + UINT PrinterComboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4; + LPDEVMODEW lpdm = PrintStructures->lpDevMode; + + switch (LOWORD(wParam)) { + case IDOK: + TRACE(" OK button was hit\n"); + if (PRINTDLG_UpdatePrintDlgW(hDlg, PrintStructures)!=TRUE) { + FIXME("Update printdlg was not successful!\n"); + return(FALSE); + } + EndDialog(hDlg, TRUE); + return(TRUE); + + case IDCANCEL: + TRACE(" CANCEL button was hit\n"); + EndDialog(hDlg, FALSE); + return(FALSE); + + case pshHelp: + TRACE(" HELP button was hit\n"); + SendMessageW(lppd->hwndOwner, PrintStructures->HelpMessageID, + (WPARAM) hDlg, (LPARAM) lppd); + break; + + case chx2: /* collate pages checkbox */ + if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hCollateIcon); + else + SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)PrintStructures->hNoCollateIcon); + break; + case edt1: /* from page nr editbox */ + case edt2: /* to page nr editbox */ + if (HIWORD(wParam)==EN_CHANGE) { + WORD nToPage; + WORD nFromPage; + nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE); + nToPage = GetDlgItemInt(hDlg, edt2, NULL, FALSE); + if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage) + CheckRadioButton(hDlg, rad1, rad3, rad3); + } + break; + + case edt3: + if(HIWORD(wParam) == EN_CHANGE) { + INT copies = GetDlgItemInt(hDlg, edt3, NULL, FALSE); + if(copies <= 1) + EnableWindow(GetDlgItem(hDlg, chx2), FALSE); + else + EnableWindow(GetDlgItem(hDlg, chx2), TRUE); + } + break; + + case psh1: /* Print Setup */ + { + ERR("psh1 is called from 16bit code only, we should not get here.\n"); + } + break; + case psh2: /* Properties button */ + { + HANDLE hPrinter; + WCHAR PrinterName[256]; + + GetDlgItemTextW(hDlg, PrinterComboID, PrinterName, 255); + if (!OpenPrinterW(PrinterName, &hPrinter, NULL)) { + FIXME(" Call to OpenPrinter did not succeed!\n"); + break; + } + DocumentPropertiesW(hDlg, hPrinter, PrinterName, + PrintStructures->lpDevMode, + PrintStructures->lpDevMode, + DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT); + ClosePrinter(hPrinter); + break; + } + + case rad1: /* Paperorientation */ + if (lppd->Flags & PD_PRINTSETUP) + { + lpdm->dmOrientation = DMORIENT_PORTRAIT; + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(PrintStructures->hPortraitIcon)); + } + break; + + case rad2: /* Paperorientation */ + if (lppd->Flags & PD_PRINTSETUP) + { + lpdm->dmOrientation = DMORIENT_LANDSCAPE; + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON, + (LPARAM)(PrintStructures->hLandscapeIcon)); + } + break; + + case cmb1: /* Printer Combobox in PRINT SETUP, quality combobox in PRINT */ + if (PrinterComboID != wParam) { + FIXME("No handling for print quality combo box yet.\n"); + break; + } + /* FALLTHROUGH */ + case cmb4: /* Printer combobox */ + if (HIWORD(wParam)==CBN_SELCHANGE) { + WCHAR PrinterName[256]; + GetDlgItemTextW(hDlg, LOWORD(wParam), PrinterName, 255); + PRINTDLG_ChangePrinterW(hDlg, PrinterName, PrintStructures); + } + break; + + case cmb2: /* Papersize */ + { + DWORD Sel = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) + lpdm->dmPaperSize = SendDlgItemMessageA(hDlg, cmb2, + CB_GETITEMDATA, + Sel, 0); + } + break; + + case cmb3: /* Bin */ + { + DWORD Sel = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0); + if(Sel != CB_ERR) + lpdm->dmDefaultSource = SendDlgItemMessageW(hDlg, cmb3, + CB_GETITEMDATA, Sel, + 0); + } + break; + } + if(lppd->Flags & PD_PRINTSETUP) { + switch (LOWORD(wParam)) { + case rad1: /* orientation */ + case rad2: + if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) { + if(lpdm->dmOrientation != DMORIENT_PORTRAIT) { + lpdm->dmOrientation = DMORIENT_PORTRAIT; + SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hPortraitIcon); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hPortraitIcon); + } + } else { + if(lpdm->dmOrientation != DMORIENT_LANDSCAPE) { + lpdm->dmOrientation = DMORIENT_LANDSCAPE; + SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hLandscapeIcon); + SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)PrintStructures->hLandscapeIcon); + } + } + break; + } + } + return FALSE; +} + +/*********************************************************************** + * PrintDlgProcA [internal] + */ +INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam) +{ + PRINT_PTRA* PrintStructures; + INT_PTR res = FALSE; + + if (uMsg!=WM_INITDIALOG) { + PrintStructures = (PRINT_PTRA*)GetPropA(hDlg,"__WINE_PRINTDLGDATA"); + if (!PrintStructures) + return FALSE; + } else { + PrintStructures = (PRINT_PTRA*) lParam; + SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures); + res = PRINTDLG_WMInitDialog(hDlg, wParam, PrintStructures); + + if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) + res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook( + hDlg, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg + ); + return res; + } + + if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) { + res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg,uMsg,wParam, + lParam); + if(res) return res; + } + + switch (uMsg) { + case WM_COMMAND: + return PRINTDLG_WMCommandA(hDlg, wParam, lParam, PrintStructures); + + case WM_DESTROY: + DestroyIcon(PrintStructures->hCollateIcon); + DestroyIcon(PrintStructures->hNoCollateIcon); + DestroyIcon(PrintStructures->hPortraitIcon); + DestroyIcon(PrintStructures->hLandscapeIcon); + if(PrintStructures->hwndUpDown) + DestroyWindow(PrintStructures->hwndUpDown); + return FALSE; + } + return res; +} + +INT_PTR CALLBACK PrintDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, + LPARAM lParam) +{ + static const WCHAR propW[] = {'_','_','W','I','N','E','_','P','R','I','N','T','D','L','G','D','A','T','A',0}; + PRINT_PTRW* PrintStructures; + INT_PTR res = FALSE; + + if (uMsg!=WM_INITDIALOG) { + PrintStructures = (PRINT_PTRW*) GetPropW(hDlg, propW); + if (!PrintStructures) + return FALSE; + } else { + PrintStructures = (PRINT_PTRW*) lParam; + SetPropW(hDlg, propW, PrintStructures); + res = PRINTDLG_WMInitDialogW(hDlg, wParam, PrintStructures); + + if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) + res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg); + return res; + } + + if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) { + res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg,uMsg,wParam, lParam); + if(res) return res; + } + + switch (uMsg) { + case WM_COMMAND: + return PRINTDLG_WMCommandW(hDlg, wParam, lParam, PrintStructures); + + case WM_DESTROY: + DestroyIcon(PrintStructures->hCollateIcon); + DestroyIcon(PrintStructures->hNoCollateIcon); + DestroyIcon(PrintStructures->hPortraitIcon); + DestroyIcon(PrintStructures->hLandscapeIcon); + if(PrintStructures->hwndUpDown) + DestroyWindow(PrintStructures->hwndUpDown); + return FALSE; + } + return res; +} + +/************************************************************ + * + * PRINTDLG_GetDlgTemplate + * + */ +static HGLOBAL PRINTDLG_GetDlgTemplateA(PRINTDLGA *lppd) +{ + HRSRC hResInfo; + HGLOBAL hDlgTmpl; + + if (lppd->Flags & PD_PRINTSETUP) { + if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) { + hDlgTmpl = lppd->hSetupTemplate; + } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) { + hResInfo = FindResourceA(lppd->hInstance, + lppd->lpSetupTemplateName, (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceA(COMDLG32_hInstance, "PRINT32_SETUP", + (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo); + } + } else { + if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) { + hDlgTmpl = lppd->hPrintTemplate; + } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) { + hResInfo = FindResourceA(lppd->hInstance, + lppd->lpPrintTemplateName, + (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceA(COMDLG32_hInstance, "PRINT32", + (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo); + } + } + return hDlgTmpl; +} + +static HGLOBAL PRINTDLG_GetDlgTemplateW(PRINTDLGW *lppd) +{ + HRSRC hResInfo; + HGLOBAL hDlgTmpl; + const WCHAR xpsetup[] = { 'P','R','I','N','T','3','2','_','S','E','T','U','P',0}; + const WCHAR xprint[] = { 'P','R','I','N','T','3','2',0}; + + if (lppd->Flags & PD_PRINTSETUP) { + if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) { + hDlgTmpl = lppd->hSetupTemplate; + } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) { + hResInfo = FindResourceW(lppd->hInstance, + lppd->lpSetupTemplateName, (LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceW(COMDLG32_hInstance, xpsetup, (LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo); + } + } else { + if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) { + hDlgTmpl = lppd->hPrintTemplate; + } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) { + hResInfo = FindResourceW(lppd->hInstance, + lppd->lpPrintTemplateName, + (LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceW(COMDLG32_hInstance, xprint, (LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo); + } + } + return hDlgTmpl; +} + +/*********************************************************************** + * + * PRINTDLG_CreateDC + * + */ +static BOOL PRINTDLG_CreateDCA(LPPRINTDLGA lppd) +{ + DEVNAMES *pdn = GlobalLock(lppd->hDevNames); + DEVMODEA *pdm = GlobalLock(lppd->hDevMode); + + if(lppd->Flags & PD_RETURNDC) { + lppd->hDC = CreateDCA((char*)pdn + pdn->wDriverOffset, + (char*)pdn + pdn->wDeviceOffset, + (char*)pdn + pdn->wOutputOffset, + pdm ); + } else if(lppd->Flags & PD_RETURNIC) { + lppd->hDC = CreateICA((char*)pdn + pdn->wDriverOffset, + (char*)pdn + pdn->wDeviceOffset, + (char*)pdn + pdn->wOutputOffset, + pdm ); + } + GlobalUnlock(lppd->hDevNames); + GlobalUnlock(lppd->hDevMode); + return lppd->hDC ? TRUE : FALSE; +} + +static BOOL PRINTDLG_CreateDCW(LPPRINTDLGW lppd) +{ + DEVNAMES *pdn = GlobalLock(lppd->hDevNames); + DEVMODEW *pdm = GlobalLock(lppd->hDevMode); + + if(lppd->Flags & PD_RETURNDC) { + lppd->hDC = CreateDCW((WCHAR*)pdn + pdn->wDriverOffset, + (WCHAR*)pdn + pdn->wDeviceOffset, + (WCHAR*)pdn + pdn->wOutputOffset, + pdm ); + } else if(lppd->Flags & PD_RETURNIC) { + lppd->hDC = CreateICW((WCHAR*)pdn + pdn->wDriverOffset, + (WCHAR*)pdn + pdn->wDeviceOffset, + (WCHAR*)pdn + pdn->wOutputOffset, + pdm ); + } + GlobalUnlock(lppd->hDevNames); + GlobalUnlock(lppd->hDevMode); + return lppd->hDC ? TRUE : FALSE; +} + +/*********************************************************************** + * PrintDlgA (COMDLG32.@) + * + * Displays the the PRINT dialog box, which enables the user to specify + * specific properties of the print job. + * + * RETURNS + * nonzero if the user pressed the OK button + * zero if the user cancelled the window or an error occurred + * + * BUGS + * PrintDlg: + * * The Collate Icons do not display, even though they are in the code. + * * The Properties Button(s) should call DocumentPropertiesA(). + * PrintSetupDlg: + * * The Paper Orientation Icons are not implemented yet. + * * The Properties Button(s) should call DocumentPropertiesA(). + * * Settings are not yet taken from a provided DevMode or + * default printer settings. + */ + +BOOL WINAPI PrintDlgA( + LPPRINTDLGA lppd /* [in/out] ptr to PRINTDLG32 struct */ + ) +{ + BOOL bRet = FALSE; + LPVOID ptr; + HINSTANCE hInst = (HINSTANCE)GetWindowLongA( lppd->hwndOwner, GWL_HINSTANCE ); + + if(TRACE_ON(commdlg)) { + char flagstr[1000] = ""; + struct pd_flags *pflag = pd_flags; + for( ; pflag->name; pflag++) { + if(lppd->Flags & pflag->flag) + strcat(flagstr, pflag->name); + } + TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n" + "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n" + "flags %08lx (%s)\n", + lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames, + lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage, + lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr); + } + + if(lppd->lStructSize != sizeof(PRINTDLGA)) { + WARN("structure size failure !!!\n"); + COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE); + return FALSE; + } + + if(lppd->Flags & PD_RETURNDEFAULT) { + PRINTER_INFO_2A *pbuf; + DRIVER_INFO_3A *dbuf; + HANDLE hprn; + DWORD needed; + + if(lppd->hDevMode || lppd->hDevNames) { + WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + if(!PRINTDLG_OpenDefaultPrinter(&hprn)) { + WARN("Can't find default printer\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN); + return FALSE; + } + + GetPrinterA(hprn, 2, NULL, 0, &needed); + pbuf = HeapAlloc(GetProcessHeap(), 0, needed); + GetPrinterA(hprn, 2, (LPBYTE)pbuf, needed, &needed); + + GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed); + dbuf = HeapAlloc(GetProcessHeap(),0,needed); + if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) { + ERR("GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",GetLastError(),pbuf->pPrinterName); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + ClosePrinter(hprn); + + PRINTDLG_CreateDevNames(&(lppd->hDevNames), + dbuf->pDriverPath, + pbuf->pPrinterName, + pbuf->pPortName); + lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, pbuf->pDevMode->dmSize + + pbuf->pDevMode->dmDriverExtra); + ptr = GlobalLock(lppd->hDevMode); + memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize + + pbuf->pDevMode->dmDriverExtra); + GlobalUnlock(lppd->hDevMode); + HeapFree(GetProcessHeap(), 0, pbuf); + HeapFree(GetProcessHeap(), 0, dbuf); + bRet = TRUE; + } else { + HGLOBAL hDlgTmpl; + PRINT_PTRA *PrintStructures; + + /* load Dialog resources, + * depending on Flags indicates Print32 or Print32_setup dialog + */ + hDlgTmpl = PRINTDLG_GetDlgTemplateA(lppd); + if (!hDlgTmpl) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + ptr = LockResource( hDlgTmpl ); + if (!ptr) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + + PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(PRINT_PTRA)); + PrintStructures->dlg.lpPrintDlg = lppd; + + /* and create & process the dialog . + * -1 is failure, 0 is broken hwnd, everything else is ok. + */ + bRet = (0hwndOwner, + PrintDlgProcA, + (LPARAM)PrintStructures)); + + if(bRet) { + DEVMODEA *lpdm = PrintStructures->lpDevMode, *lpdmReturn; + PRINTER_INFO_2A *pi = PrintStructures->lpPrinterInfo; + DRIVER_INFO_3A *di = PrintStructures->lpDriverInfo; + + if (lppd->hDevMode == 0) { + TRACE(" No hDevMode yet... Need to create my own\n"); + lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, + lpdm->dmSize + lpdm->dmDriverExtra); + } else { + WORD locks; + if((locks = (GlobalFlags(lppd->hDevMode) & GMEM_LOCKCOUNT))) { + WARN("hDevMode has %d locks on it. Unlocking it now\n", locks); + while(locks--) { + GlobalUnlock(lppd->hDevMode); + TRACE("Now got %d locks\n", locks); + } + } + lppd->hDevMode = GlobalReAlloc(lppd->hDevMode, + lpdm->dmSize + lpdm->dmDriverExtra, + GMEM_MOVEABLE); + } + lpdmReturn = GlobalLock(lppd->hDevMode); + memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra); + + if (lppd->hDevNames != 0) { + WORD locks; + if((locks = (GlobalFlags(lppd->hDevNames) & GMEM_LOCKCOUNT))) { + WARN("hDevNames has %d locks on it. Unlocking it now\n", locks); + while(locks--) + GlobalUnlock(lppd->hDevNames); + } + } + PRINTDLG_CreateDevNames(&(lppd->hDevNames), + di->pDriverPath, + pi->pPrinterName, + pi->pPortName + ); + GlobalUnlock(lppd->hDevMode); + } + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures); + } + if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC)) + bRet = PRINTDLG_CreateDCA(lppd); + + TRACE("exit! (%d)\n", bRet); + return bRet; +} + +/*********************************************************************** + * PrintDlgW (COMDLG32.@) + */ +BOOL WINAPI PrintDlgW( + LPPRINTDLGW lppd /* [in/out] ptr to PRINTDLG32 struct */ + ) +{ + BOOL bRet = FALSE; + LPVOID ptr; + HINSTANCE hInst = (HINSTANCE)GetWindowLongW( lppd->hwndOwner, GWL_HINSTANCE ); + + if(TRACE_ON(commdlg)) { + char flagstr[1000] = ""; + struct pd_flags *pflag = pd_flags; + for( ; pflag->name; pflag++) { + if(lppd->Flags & pflag->flag) + strcat(flagstr, pflag->name); + } + TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n" + "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n" + "flags %08lx (%s)\n", + lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames, + lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage, + lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr); + } + + if(lppd->lStructSize != sizeof(PRINTDLGW)) { + WARN("structure size failure !!!\n"); + COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE); + return FALSE; + } + + if(lppd->Flags & PD_RETURNDEFAULT) { + PRINTER_INFO_2W *pbuf; + DRIVER_INFO_3W *dbuf; + HANDLE hprn; + DWORD needed; + + if(lppd->hDevMode || lppd->hDevNames) { + WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + if(!PRINTDLG_OpenDefaultPrinter(&hprn)) { + WARN("Can't find default printer\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN); + return FALSE; + } + + GetPrinterW(hprn, 2, NULL, 0, &needed); + pbuf = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*needed); + GetPrinterW(hprn, 2, (LPBYTE)pbuf, needed, &needed); + + GetPrinterDriverW(hprn, NULL, 3, NULL, 0, &needed); + dbuf = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed); + if (!GetPrinterDriverW(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) { + ERR("GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",GetLastError(),debugstr_w(pbuf->pPrinterName)); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + ClosePrinter(hprn); + + PRINTDLG_CreateDevNamesW(&(lppd->hDevNames), + dbuf->pDriverPath, + pbuf->pPrinterName, + pbuf->pPortName); + lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, pbuf->pDevMode->dmSize + + pbuf->pDevMode->dmDriverExtra); + ptr = GlobalLock(lppd->hDevMode); + memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize + + pbuf->pDevMode->dmDriverExtra); + GlobalUnlock(lppd->hDevMode); + HeapFree(GetProcessHeap(), 0, pbuf); + HeapFree(GetProcessHeap(), 0, dbuf); + bRet = TRUE; + } else { + HGLOBAL hDlgTmpl; + PRINT_PTRW *PrintStructures; + + /* load Dialog resources, + * depending on Flags indicates Print32 or Print32_setup dialog + */ + hDlgTmpl = PRINTDLG_GetDlgTemplateW(lppd); + if (!hDlgTmpl) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + ptr = LockResource( hDlgTmpl ); + if (!ptr) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + + PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(PRINT_PTRW)); + PrintStructures->dlg.lpPrintDlg = lppd; + + /* and create & process the dialog . + * -1 is failure, 0 is broken hwnd, everything else is ok. + */ + bRet = (0hwndOwner, + PrintDlgProcW, + (LPARAM)PrintStructures)); + + if(bRet) { + DEVMODEW *lpdm = PrintStructures->lpDevMode, *lpdmReturn; + PRINTER_INFO_2W *pi = PrintStructures->lpPrinterInfo; + DRIVER_INFO_3W *di = PrintStructures->lpDriverInfo; + + if (lppd->hDevMode == 0) { + TRACE(" No hDevMode yet... Need to create my own\n"); + lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, + lpdm->dmSize + lpdm->dmDriverExtra); + } else { + WORD locks; + if((locks = (GlobalFlags(lppd->hDevMode) & GMEM_LOCKCOUNT))) { + WARN("hDevMode has %d locks on it. Unlocking it now\n", locks); + while(locks--) { + GlobalUnlock(lppd->hDevMode); + TRACE("Now got %d locks\n", locks); + } + } + lppd->hDevMode = GlobalReAlloc(lppd->hDevMode, + lpdm->dmSize + lpdm->dmDriverExtra, + GMEM_MOVEABLE); + } + lpdmReturn = GlobalLock(lppd->hDevMode); + memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra); + + if (lppd->hDevNames != 0) { + WORD locks; + if((locks = (GlobalFlags(lppd->hDevNames) & GMEM_LOCKCOUNT))) { + WARN("hDevNames has %d locks on it. Unlocking it now\n", locks); + while(locks--) + GlobalUnlock(lppd->hDevNames); + } + } + PRINTDLG_CreateDevNamesW(&(lppd->hDevNames), + di->pDriverPath, + pi->pPrinterName, + pi->pPortName + ); + GlobalUnlock(lppd->hDevMode); + } + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures); + } + if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC)) + bRet = PRINTDLG_CreateDCW(lppd); + + TRACE("exit! (%d)\n", bRet); + return bRet; +} + +/*********************************************************************** + * + * PageSetupDlg + * rad1 - portrait + * rad2 - landscape + * cmb2 - paper size + * cmb3 - source (tray?) + * edt4 - border left + * edt5 - border top + * edt6 - border right + * edt7 - border bottom + * psh3 - "Printer..." + */ + +typedef struct { + LPPAGESETUPDLGA dlga; + PRINTDLGA pdlg; +} PageSetupDataA; + +typedef struct { + LPPAGESETUPDLGW dlga; + PRINTDLGW pdlg; +} PageSetupDataW; + +static HGLOBAL PRINTDLG_GetPGSTemplateA(PAGESETUPDLGA *lppd) +{ + HRSRC hResInfo; + HGLOBAL hDlgTmpl; + + if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATEHANDLE) { + hDlgTmpl = lppd->hPageSetupTemplate; + } else if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATE) { + hResInfo = FindResourceA(lppd->hInstance, + lppd->lpPageSetupTemplateName, (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceA(COMDLG32_hInstance,(LPCSTR)PAGESETUPDLGORD,(LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance,hResInfo); + } + return hDlgTmpl; +} + +static HGLOBAL PRINTDLG_GetPGSTemplateW(PAGESETUPDLGW *lppd) +{ + HRSRC hResInfo; + HGLOBAL hDlgTmpl; + + if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATEHANDLE) { + hDlgTmpl = lppd->hPageSetupTemplate; + } else if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATE) { + hResInfo = FindResourceW(lppd->hInstance, + lppd->lpPageSetupTemplateName, (LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(lppd->hInstance, hResInfo); + } else { + hResInfo = FindResourceW(COMDLG32_hInstance,(LPCWSTR)PAGESETUPDLGORD,(LPWSTR)RT_DIALOG); + hDlgTmpl = LoadResource(COMDLG32_hInstance,hResInfo); + } + return hDlgTmpl; +} + +static DWORD +_c_10mm2size(PAGESETUPDLGA *dlga,DWORD size) { + if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) + return 10*size*10/25.4; + /* If we don't have a flag, we can choose one. Use millimeters + * to avoid confusing me + */ + dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; + return 10*size; +} + + +static DWORD +_c_inch2size(PAGESETUPDLGA *dlga,DWORD size) { + if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) + return size; + if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) + return (size*254)/10; + /* if we don't have a flag, we can choose one. Use millimeters + * to avoid confusing me + */ + dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; + return (size*254)/10; +} + +static void +_c_size2strA(PageSetupDataA *pda,DWORD size,LPSTR strout) { + strcpy(strout,""); + if (pda->dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) { + sprintf(strout,"%.2fmm",(size*1.0)/100.0); + return; + } + if (pda->dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) { + sprintf(strout,"%.2fin",(size*1.0)/1000.0); + return; + } + pda->dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; + sprintf(strout,"%.2fmm",(size*1.0)/100.0); + return; +} +static void +_c_size2strW(PageSetupDataW *pda,DWORD size,LPSTR strout) { + strcpy(strout,""); + if (pda->dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) { + sprintf(strout,"%.2fmm",(size*1.0)/100.0); + return; + } + if (pda->dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) { + sprintf(strout,"%.2fin",(size*1.0)/1000.0); + return; + } + pda->dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS; + sprintf(strout,"%.2fmm",(size*1.0)/100.0); + return; +} + +static DWORD +_c_str2size(PAGESETUPDLGA *dlga,LPCSTR strin) { + float val; + char rest[200]; + + rest[0]='\0'; + if (!sscanf(strin,"%f%s",&val,rest)) + return 0; + + if (!strcmp(rest,"in") || !strcmp(rest,"inch")) { + if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) + return 1000*val; + else + return val*25.4*100; + } + if (!strcmp(rest,"cm")) { rest[0]='m'; val = val*10.0; } + if (!strcmp(rest,"m")) { strcpy(rest,"mm"); val = val*1000.0; } + + if (!strcmp(rest,"mm")) { + if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) + return 100*val; + else + return 1000.0*val/25.4; + } + if (rest[0]=='\0') { + /* use application supplied default */ + if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) { + /* 100*mm */ + return 100.0*val; + } + if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) { + /* 1000*inch */ + return 1000.0*val; + } + } + ERR("Did not find a conversion for type '%s'!\n",rest); + return 0; +} + + +/* + * This is called on finish and will update the output fields of the + * struct. + */ +static BOOL +PRINTDLG_PS_UpdateDlgStructA(HWND hDlg, PageSetupDataA *pda) { + DEVNAMES *dn; + DEVMODEA *dm; + LPSTR devname,portname; + char papername[64]; + char buf[200]; + + dn = GlobalLock(pda->pdlg.hDevNames); + dm = GlobalLock(pda->pdlg.hDevMode); + devname = ((char*)dn)+dn->wDeviceOffset; + portname = ((char*)dn)+dn->wOutputOffset; + PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb2,devname,portname,dm); + PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb3,devname,portname,dm); + + if (GetDlgItemTextA(hDlg,cmb2,papername,sizeof(papername))>0) { + PRINTDLG_PaperSizeA(&(pda->pdlg),papername,&(pda->dlga->ptPaperSize)); + pda->dlga->ptPaperSize.x = _c_10mm2size(pda->dlga,pda->dlga->ptPaperSize.x); + pda->dlga->ptPaperSize.y = _c_10mm2size(pda->dlga,pda->dlga->ptPaperSize.y); + } else + FIXME("could not get dialog text for papersize cmbbox?\n"); +#define GETVAL(id,val) if (GetDlgItemTextA(hDlg,id,buf,sizeof(buf))>0) { val = _c_str2size(pda->dlga,buf); } else { FIXME("could not get dlgitemtexta for %x\n",id); } + GETVAL(edt4,pda->dlga->rtMargin.left); + GETVAL(edt5,pda->dlga->rtMargin.top); + GETVAL(edt6,pda->dlga->rtMargin.right); + GETVAL(edt7,pda->dlga->rtMargin.bottom); +#undef GETVAL + + /* If we are in landscape, swap x and y of page size */ + if (IsDlgButtonChecked(hDlg, rad2)) { + DWORD tmp; + tmp = pda->dlga->ptPaperSize.x; + pda->dlga->ptPaperSize.x = pda->dlga->ptPaperSize.y; + pda->dlga->ptPaperSize.y = tmp; + } + GlobalUnlock(pda->pdlg.hDevNames); + GlobalUnlock(pda->pdlg.hDevMode); + return TRUE; +} + +static BOOL +PRINTDLG_PS_UpdateDlgStructW(HWND hDlg, PageSetupDataW *pda) { + DEVNAMES *dn; + DEVMODEW *dm; + LPWSTR devname,portname; + WCHAR papername[64]; + + char buf[200]; + + dn = GlobalLock(pda->pdlg.hDevNames); + dm = GlobalLock(pda->pdlg.hDevMode); + devname = ((WCHAR*)dn)+dn->wDeviceOffset; + portname = ((WCHAR*)dn)+dn->wOutputOffset; + PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb2,devname,portname,dm); + PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb3,devname,portname,dm); + + if (GetDlgItemTextW(hDlg,cmb2,papername,sizeof(papername))>0) { + PRINTDLG_PaperSizeW(&(pda->pdlg),papername,&(pda->dlga->ptPaperSize)); + pda->dlga->ptPaperSize.x = _c_10mm2size((LPPAGESETUPDLGA)pda->dlga,pda->dlga->ptPaperSize.x); + pda->dlga->ptPaperSize.y = _c_10mm2size((LPPAGESETUPDLGA)pda->dlga,pda->dlga->ptPaperSize.y); + } else + FIXME("could not get dialog text for papersize cmbbox?\n"); +#define GETVAL(id,val) if (GetDlgItemTextA(hDlg,id,buf,sizeof(buf))>0) { val = _c_str2size((LPPAGESETUPDLGA)pda->dlga,buf); } else { FIXME("could not get dlgitemtexta for %x\n",id); } + GETVAL(edt4,pda->dlga->rtMargin.left); + GETVAL(edt5,pda->dlga->rtMargin.top); + GETVAL(edt6,pda->dlga->rtMargin.right); + GETVAL(edt7,pda->dlga->rtMargin.bottom); +#undef GETVAL + + /* If we are in landscape, swap x and y of page size */ + if (IsDlgButtonChecked(hDlg, rad2)) { + DWORD tmp; + tmp = pda->dlga->ptPaperSize.x; + pda->dlga->ptPaperSize.x = pda->dlga->ptPaperSize.y; + pda->dlga->ptPaperSize.y = tmp; + } + GlobalUnlock(pda->pdlg.hDevNames); + GlobalUnlock(pda->pdlg.hDevMode); + return TRUE; +} + +/* + * This is called after returning from PrintDlg(). + */ +static BOOL +PRINTDLG_PS_ChangePrinterA(HWND hDlg, PageSetupDataA *pda) { + DEVNAMES *dn; + DEVMODEA *dm; + LPSTR devname,portname; + + dn = GlobalLock(pda->pdlg.hDevNames); + dm = GlobalLock(pda->pdlg.hDevMode); + devname = ((char*)dn)+dn->wDeviceOffset; + portname = ((char*)dn)+dn->wOutputOffset; + PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb2,devname,portname,dm); + PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb3,devname,portname,dm); + GlobalUnlock(pda->pdlg.hDevNames); + GlobalUnlock(pda->pdlg.hDevMode); + return TRUE; +} + +static BOOL +PRINTDLG_PS_ChangePrinterW(HWND hDlg, PageSetupDataW *pda) { + DEVNAMES *dn; + DEVMODEW *dm; + LPWSTR devname,portname; + + dn = GlobalLock(pda->pdlg.hDevNames); + dm = GlobalLock(pda->pdlg.hDevMode); + devname = ((WCHAR*)dn)+dn->wDeviceOffset; + portname = ((WCHAR*)dn)+dn->wOutputOffset; + PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb2,devname,portname,dm); + PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb3,devname,portname,dm); + GlobalUnlock(pda->pdlg.hDevNames); + GlobalUnlock(pda->pdlg.hDevMode); + return TRUE; +} + +static BOOL +PRINTDLG_PS_WMCommandA( + HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataA *pda +) { + switch (LOWORD(wParam)) { + case IDOK: + if (!PRINTDLG_PS_UpdateDlgStructA(hDlg, pda)) + return(FALSE); + EndDialog(hDlg, TRUE); + return TRUE ; + + case IDCANCEL: + EndDialog(hDlg, FALSE); + return FALSE ; + + case psh3: { + pda->pdlg.Flags = 0; + pda->pdlg.hwndOwner = hDlg; + if (PrintDlgA(&(pda->pdlg))) + PRINTDLG_PS_ChangePrinterA(hDlg,pda); + return TRUE; + } + } + FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n", + LOWORD(lParam),wParam,lParam + ); + return FALSE; +} + +static BOOL +PRINTDLG_PS_WMCommandW( + HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataW *pda +) { + switch (LOWORD(wParam)) { + case IDOK: + if (!PRINTDLG_PS_UpdateDlgStructW(hDlg, pda)) + return(FALSE); + EndDialog(hDlg, TRUE); + return TRUE ; + + case IDCANCEL: + EndDialog(hDlg, FALSE); + return FALSE ; + + case psh3: { + pda->pdlg.Flags = 0; + pda->pdlg.hwndOwner = hDlg; + if (PrintDlgW(&(pda->pdlg))) + PRINTDLG_PS_ChangePrinterW(hDlg,pda); + return TRUE; + } + } + FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n", + LOWORD(lParam),wParam,lParam + ); + return FALSE; +} + + +static INT_PTR CALLBACK +PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + PageSetupDataA *pda; + INT_PTR res = FALSE; + + if (uMsg==WM_INITDIALOG) { + res = TRUE; + pda = (PageSetupDataA*)lParam; + SetPropA(hDlg,"__WINE_PAGESETUPDLGDATA",pda); + if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) { + res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga); + if (!res) { + FIXME("Setup page hook failed?\n"); + res = TRUE; + } + } + if (pda->dlga->Flags & PSD_ENABLEPAGEPAINTHOOK) { + FIXME("PagePaintHook not yet implemented!\n"); + } + if (pda->dlga->Flags & PSD_DISABLEPRINTER) + EnableWindow(GetDlgItem(hDlg, psh3), FALSE); + if (pda->dlga->Flags & PSD_DISABLEMARGINS) { + EnableWindow(GetDlgItem(hDlg, edt4), FALSE); + EnableWindow(GetDlgItem(hDlg, edt5), FALSE); + EnableWindow(GetDlgItem(hDlg, edt6), FALSE); + EnableWindow(GetDlgItem(hDlg, edt7), FALSE); + } + /* width larger as height -> landscape */ + if (pda->dlga->ptPaperSize.x > pda->dlga->ptPaperSize.y) + CheckRadioButton(hDlg, rad1, rad2, rad2); + else /* this is default if papersize is not set */ + CheckRadioButton(hDlg, rad1, rad2, rad1); + if (pda->dlga->Flags & PSD_DISABLEORIENTATION) { + EnableWindow(GetDlgItem(hDlg,rad1),FALSE); + EnableWindow(GetDlgItem(hDlg,rad2),FALSE); + } + /* We fill them out enabled or not */ + if (pda->dlga->Flags & PSD_MARGINS) { + char str[100]; + _c_size2strA(pda,pda->dlga->rtMargin.left,str); + SetDlgItemTextA(hDlg,edt4,str); + _c_size2strA(pda,pda->dlga->rtMargin.top,str); + SetDlgItemTextA(hDlg,edt5,str); + _c_size2strA(pda,pda->dlga->rtMargin.right,str); + SetDlgItemTextA(hDlg,edt6,str); + _c_size2strA(pda,pda->dlga->rtMargin.bottom,str); + SetDlgItemTextA(hDlg,edt7,str); + } else { + /* default is 1 inch */ + DWORD size = _c_inch2size(pda->dlga,1000); + char str[20]; + _c_size2strA(pda,size,str); + SetDlgItemTextA(hDlg,edt4,str); + SetDlgItemTextA(hDlg,edt5,str); + SetDlgItemTextA(hDlg,edt6,str); + SetDlgItemTextA(hDlg,edt7,str); + } + PRINTDLG_PS_ChangePrinterA(hDlg,pda); + if (pda->dlga->Flags & PSD_DISABLEPAPER) { + EnableWindow(GetDlgItem(hDlg,cmb2),FALSE); + EnableWindow(GetDlgItem(hDlg,cmb3),FALSE); + } + return TRUE; + } else { + pda = (PageSetupDataA*)GetPropA(hDlg,"__WINE_PAGESETUPDLGDATA"); + if (!pda) { + WARN("__WINE_PAGESETUPDLGDATA prop not set?\n"); + return FALSE; + } + if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) { + res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,lParam); + if (res) return res; + } + } + switch (uMsg) { + case WM_COMMAND: + return PRINTDLG_PS_WMCommandA(hDlg, wParam, lParam, pda); + } + return FALSE; +} + +static INT_PTR CALLBACK +PageDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + PageSetupDataW *pda; + BOOL res = FALSE; + + if (uMsg==WM_INITDIALOG) { + res = TRUE; + pda = (PageSetupDataW*)lParam; + SetPropA(hDlg,"__WINE_PAGESETUPDLGDATA",pda); + if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) { + res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga); + if (!res) { + FIXME("Setup page hook failed?\n"); + res = TRUE; + } + } + if (pda->dlga->Flags & PSD_ENABLEPAGEPAINTHOOK) { + FIXME("PagePaintHook not yet implemented!\n"); + } + if (pda->dlga->Flags & PSD_DISABLEPRINTER) + EnableWindow(GetDlgItem(hDlg, psh3), FALSE); + if (pda->dlga->Flags & PSD_DISABLEMARGINS) { + EnableWindow(GetDlgItem(hDlg, edt4), FALSE); + EnableWindow(GetDlgItem(hDlg, edt5), FALSE); + EnableWindow(GetDlgItem(hDlg, edt6), FALSE); + EnableWindow(GetDlgItem(hDlg, edt7), FALSE); + } + /* width larger as height -> landscape */ + if (pda->dlga->ptPaperSize.x > pda->dlga->ptPaperSize.y) + CheckRadioButton(hDlg, rad1, rad2, rad2); + else /* this is default if papersize is not set */ + CheckRadioButton(hDlg, rad1, rad2, rad1); + if (pda->dlga->Flags & PSD_DISABLEORIENTATION) { + EnableWindow(GetDlgItem(hDlg,rad1),FALSE); + EnableWindow(GetDlgItem(hDlg,rad2),FALSE); + } + /* We fill them out enabled or not */ + if (pda->dlga->Flags & PSD_MARGINS) { + char str[100]; + _c_size2strW(pda,pda->dlga->rtMargin.left,str); + SetDlgItemTextA(hDlg,edt4,str); + _c_size2strW(pda,pda->dlga->rtMargin.top,str); + SetDlgItemTextA(hDlg,edt5,str); + _c_size2strW(pda,pda->dlga->rtMargin.right,str); + SetDlgItemTextA(hDlg,edt6,str); + _c_size2strW(pda,pda->dlga->rtMargin.bottom,str); + SetDlgItemTextA(hDlg,edt7,str); + } else { + /* default is 1 inch */ + DWORD size = _c_inch2size((LPPAGESETUPDLGA)pda->dlga,1000); + char str[20]; + _c_size2strW(pda,size,str); + SetDlgItemTextA(hDlg,edt4,str); + SetDlgItemTextA(hDlg,edt5,str); + SetDlgItemTextA(hDlg,edt6,str); + SetDlgItemTextA(hDlg,edt7,str); + } + PRINTDLG_PS_ChangePrinterW(hDlg,pda); + if (pda->dlga->Flags & PSD_DISABLEPAPER) { + EnableWindow(GetDlgItem(hDlg,cmb2),FALSE); + EnableWindow(GetDlgItem(hDlg,cmb3),FALSE); + } + return TRUE; + } else { + pda = (PageSetupDataW*)GetPropA(hDlg,"__WINE_PAGESETUPDLGDATA"); + if (!pda) { + WARN("__WINE_PAGESETUPDLGDATA prop not set?\n"); + return FALSE; + } + if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) { + res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,lParam); + if (res) return res; + } + } + switch (uMsg) { + case WM_COMMAND: + return PRINTDLG_PS_WMCommandW(hDlg, wParam, lParam, pda); + } + return FALSE; +} + +/*********************************************************************** + * PageSetupDlgA (COMDLG32.@) + */ +BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA setupdlg) { + HGLOBAL hDlgTmpl; + LPVOID ptr; + BOOL bRet; + PageSetupDataA *pda; + PRINTDLGA pdlg; + + if(TRACE_ON(commdlg)) { + char flagstr[1000] = ""; + struct pd_flags *pflag = psd_flags; + for( ; pflag->name; pflag++) { + if(setupdlg->Flags & pflag->flag) { + strcat(flagstr, pflag->name); + strcat(flagstr, "|"); + } + } + TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n" + "hinst %p, flags %08lx (%s)\n", + setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode, + setupdlg->hDevNames, + setupdlg->hInstance, setupdlg->Flags, flagstr); + } + + /* First get default printer data, we need it right after that. */ + memset(&pdlg,0,sizeof(pdlg)); + pdlg.lStructSize = sizeof(pdlg); + pdlg.Flags = PD_RETURNDEFAULT; + bRet = PrintDlgA(&pdlg); + if (!bRet) return FALSE; + + /* short cut exit, just return default values */ + if (setupdlg->Flags & PSD_RETURNDEFAULT) { + setupdlg->hDevMode = pdlg.hDevMode; + setupdlg->hDevNames = pdlg.hDevNames; + /* FIXME: Just return "A4" for now. */ + PRINTDLG_PaperSizeA(&pdlg,"A4",&setupdlg->ptPaperSize); + setupdlg->ptPaperSize.x=_c_10mm2size(setupdlg,setupdlg->ptPaperSize.x); + setupdlg->ptPaperSize.y=_c_10mm2size(setupdlg,setupdlg->ptPaperSize.y); + return TRUE; + } + hDlgTmpl = PRINTDLG_GetPGSTemplateA(setupdlg); + if (!hDlgTmpl) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + ptr = LockResource( hDlgTmpl ); + if (!ptr) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + pda = HeapAlloc(GetProcessHeap(),0,sizeof(*pda)); + pda->dlga = setupdlg; + memcpy(&pda->pdlg,&pdlg,sizeof(pdlg)); + + bRet = (0hInstance, + ptr, + setupdlg->hwndOwner, + PageDlgProcA, + (LPARAM)pda) + ); + return bRet; +} +/*********************************************************************** + * PageSetupDlgW (COMDLG32.@) + */ +BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW setupdlg) { + HGLOBAL hDlgTmpl; + LPVOID ptr; + BOOL bRet; + PageSetupDataW *pdw; + PRINTDLGW pdlg; + + if(TRACE_ON(commdlg)) { + char flagstr[1000] = ""; + struct pd_flags *pflag = psd_flags; + for( ; pflag->name; pflag++) { + if(setupdlg->Flags & pflag->flag) { + strcat(flagstr, pflag->name); + strcat(flagstr, "|"); + } + } + TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n" + "hinst %p, flags %08lx (%s)\n", + setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode, + setupdlg->hDevNames, + setupdlg->hInstance, setupdlg->Flags, flagstr); + } + + /* First get default printer data, we need it right after that. */ + memset(&pdlg,0,sizeof(pdlg)); + pdlg.lStructSize = sizeof(pdlg); + pdlg.Flags = PD_RETURNDEFAULT; + bRet = PrintDlgW(&pdlg); + if (!bRet) return FALSE; + + /* short cut exit, just return default values */ + if (setupdlg->Flags & PSD_RETURNDEFAULT) { + const WCHAR a4[] = {'A','4',0}; + setupdlg->hDevMode = pdlg.hDevMode; + setupdlg->hDevNames = pdlg.hDevNames; + /* FIXME: Just return "A4" for now. */ + PRINTDLG_PaperSizeW(&pdlg,a4,&setupdlg->ptPaperSize); + setupdlg->ptPaperSize.x=_c_10mm2size((LPPAGESETUPDLGA)setupdlg,setupdlg->ptPaperSize.x); + setupdlg->ptPaperSize.y=_c_10mm2size((LPPAGESETUPDLGA)setupdlg,setupdlg->ptPaperSize.y); + return TRUE; + } + hDlgTmpl = PRINTDLG_GetPGSTemplateW(setupdlg); + if (!hDlgTmpl) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + ptr = LockResource( hDlgTmpl ); + if (!ptr) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + pdw = HeapAlloc(GetProcessHeap(),0,sizeof(*pdw)); + pdw->dlga = setupdlg; + memcpy(&pdw->pdlg,&pdlg,sizeof(pdlg)); + + bRet = (0hInstance, + ptr, + setupdlg->hwndOwner, + PageDlgProcW, + (LPARAM)pdw) + ); + return bRet; +} + +/*********************************************************************** + * PrintDlgExA (COMDLG32.@) + */ +HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA lpPrintDlgExA) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} +/*********************************************************************** + * PrintDlgExW (COMDLG32.@) + */ +HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW lpPrintDlgExW) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} diff --git a/reactos/lib/comdlg32/printdlg.h b/reactos/lib/comdlg32/printdlg.h new file mode 100644 index 00000000000..a9d80786b94 --- /dev/null +++ b/reactos/lib/comdlg32/printdlg.h @@ -0,0 +1,106 @@ +/* + * COMMDLG - Print Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * Copyright 1999 Klaas van Gend + * Copyright 2000 Huw D M 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _WINE_PRINTDLG_H +#define _WINE_PRINTDLG_H + +#include "cdlg.h" + +/* This PRINTDLGA internal structure stores + * pointers to several throughout useful structures. + */ + +typedef struct +{ + LPDEVMODEA lpDevMode; + struct { + LPPRINTDLGA lpPrintDlg; + } dlg; + LPPRINTER_INFO_2A lpPrinterInfo; + LPDRIVER_INFO_3A lpDriverInfo; + UINT HelpMessageID; + HICON hCollateIcon; /* PrintDlg only */ + HICON hNoCollateIcon; /* PrintDlg only */ + HICON hPortraitIcon; /* PrintSetupDlg only */ + HICON hLandscapeIcon; /* PrintSetupDlg only */ + HWND hwndUpDown; +} PRINT_PTRA; + +typedef struct +{ + LPDEVMODEW lpDevMode; + struct { + LPPRINTDLGW lpPrintDlg; + } dlg; + LPPRINTER_INFO_2W lpPrinterInfo; + LPDRIVER_INFO_3W lpDriverInfo; + UINT HelpMessageID; + HICON hCollateIcon; /* PrintDlg only */ + HICON hNoCollateIcon; /* PrintDlg only */ + HICON hPortraitIcon; /* PrintSetupDlg only */ + HICON hLandscapeIcon; /* PrintSetupDlg only */ + HWND hwndUpDown; +} PRINT_PTRW; + +/* Debugging info */ +static struct pd_flags { + DWORD flag; + LPCSTR name; +} pd_flags[] = { + {PD_SELECTION, "PD_SELECTION "}, + {PD_PAGENUMS, "PD_PAGENUMS "}, + {PD_NOSELECTION, "PD_NOSELECTION "}, + {PD_NOPAGENUMS, "PD_NOPAGENUMS "}, + {PD_COLLATE, "PD_COLLATE "}, + {PD_PRINTTOFILE, "PD_PRINTTOFILE "}, + {PD_PRINTSETUP, "PD_PRINTSETUP "}, + {PD_NOWARNING, "PD_NOWARNING "}, + {PD_RETURNDC, "PD_RETURNDC "}, + {PD_RETURNIC, "PD_RETURNIC "}, + {PD_RETURNDEFAULT, "PD_RETURNDEFAULT "}, + {PD_SHOWHELP, "PD_SHOWHELP "}, + {PD_ENABLEPRINTHOOK, "PD_ENABLEPRINTHOOK "}, + {PD_ENABLESETUPHOOK, "PD_ENABLESETUPHOOK "}, + {PD_ENABLEPRINTTEMPLATE, "PD_ENABLEPRINTTEMPLATE "}, + {PD_ENABLESETUPTEMPLATE, "PD_ENABLESETUPTEMPLATE "}, + {PD_ENABLEPRINTTEMPLATEHANDLE, "PD_ENABLEPRINTTEMPLATEHANDLE "}, + {PD_ENABLESETUPTEMPLATEHANDLE, "PD_ENABLESETUPTEMPLATEHANDLE "}, + {PD_USEDEVMODECOPIES, "PD_USEDEVMODECOPIES[ANDCOLLATE] "}, + {PD_DISABLEPRINTTOFILE, "PD_DISABLEPRINTTOFILE "}, + {PD_HIDEPRINTTOFILE, "PD_HIDEPRINTTOFILE "}, + {PD_NONETWORKBUTTON, "PD_NONETWORKBUTTON "}, + {-1, NULL} +}; + +/* Internal Functions + * Do not Export to other applications or dlls + */ + +INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name); +BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name, + PRINT_PTRA *PrintStructures); +BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn); +LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam, + LPARAM lParam, PRINT_PTRA* PrintStructures); + +#endif /* _WINE_PRINTDLG_H */ diff --git a/reactos/lib/comdlg32/printdlg16.c b/reactos/lib/comdlg32/printdlg16.c new file mode 100644 index 00000000000..157b5d8b991 --- /dev/null +++ b/reactos/lib/comdlg32/printdlg16.c @@ -0,0 +1,610 @@ +/* + * COMMDLG - Print Dialog + * + * Copyright 1994 Martin Ayotte + * Copyright 1996 Albrecht Kleine + * Copyright 1999 Klaas van Gend + * Copyright 2000 Huw D M 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include + +#define NONAMELESSUNION +#define NONAMELESSSTRUCT +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "wine/wingdi16.h" +#include "winuser.h" +#include "wine/winuser16.h" +#include "commdlg.h" +#include "dlgs.h" +#include "wine/debug.h" +#include "cderr.h" +#include "winspool.h" +#include "winerror.h" + +WINE_DEFAULT_DEBUG_CHANNEL(commdlg); + +#include "cdlg.h" +#include "cdlg16.h" +#include "printdlg.h" + +/* This PRINTDLGA16 internal structure stores + * pointers to several throughout useful structures. + * This structure is a duplicate of the PRINT_PTRA + * struct with a extra memeber. + */ + +typedef struct +{ + LPDEVMODEA lpDevMode; + struct { + LPPRINTDLGA lpPrintDlg; + LPPRINTDLG16 lpPrintDlg16; + } dlg; + LPPRINTER_INFO_2A lpPrinterInfo; + LPDRIVER_INFO_3A lpDriverInfo; + UINT HelpMessageID; + HICON hCollateIcon; /* PrintDlg only */ + HICON hNoCollateIcon; /* PrintDlg only */ + HICON hPortraitIcon; /* PrintSetupDlg only */ + HICON hLandscapeIcon; /* PrintSetupDlg only */ + HWND hwndUpDown; +} PRINT_PTRA16; + +/* Internal Functions */ + +static BOOL PRINTDLG_CreateDevNames16(HGLOBAL16 *hmem, char* DeviceDriverName, + char* DeviceName, char* OutputPort) +{ + long size; + char* pDevNamesSpace; + char* pTempPtr; + LPDEVNAMES lpDevNames; + char buf[260]; + DWORD dwBufLen = sizeof(buf); + + size = strlen(DeviceDriverName) + 1 + + strlen(DeviceName) + 1 + + strlen(OutputPort) + 1 + + sizeof(DEVNAMES); + + if(*hmem) + *hmem = GlobalReAlloc16(*hmem, size, GMEM_MOVEABLE); + else + *hmem = GlobalAlloc16(GMEM_MOVEABLE, size); + if (*hmem == 0) + return FALSE; + + pDevNamesSpace = GlobalLock16(*hmem); + lpDevNames = (LPDEVNAMES) pDevNamesSpace; + + pTempPtr = pDevNamesSpace + sizeof(DEVNAMES); + strcpy(pTempPtr, DeviceDriverName); + lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += strlen(DeviceDriverName) + 1; + strcpy(pTempPtr, DeviceName); + lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace; + + pTempPtr += strlen(DeviceName) + 1; + strcpy(pTempPtr, OutputPort); + lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace; + + GetDefaultPrinterA(buf, &dwBufLen); + lpDevNames->wDefault = (strcmp(buf, DeviceName) == 0) ? 1 : 0; + GlobalUnlock16(*hmem); + return TRUE; +} + + +/*********************************************************************** + * PRINTDLG_WMInitDialog [internal] + */ +static LRESULT PRINTDLG_WMInitDialog16(HWND hDlg, WPARAM wParam, + PRINT_PTRA16* PrintStructures) +{ + LPPRINTDLG16 lppd = PrintStructures->dlg.lpPrintDlg16; + DEVNAMES *pdn; + DEVMODEA *pdm; + char *name = NULL; + UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4; + + /* load Collate ICONs */ + PrintStructures->hCollateIcon = + LoadIconA(COMDLG32_hInstance, "PD32_COLLATE"); + PrintStructures->hNoCollateIcon = + LoadIconA(COMDLG32_hInstance, "PD32_NOCOLLATE"); + if(PrintStructures->hCollateIcon == 0 || + PrintStructures->hNoCollateIcon == 0) { + ERR("no icon in resourcefile\n"); + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + EndDialog(hDlg, FALSE); + } + + /* load Paper Orientation ICON */ + /* FIXME: not implemented yet */ + + /* + * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message + * must be registered and the Help button must be shown. + */ + if (lppd->Flags & PD_SHOWHELP) { + if((PrintStructures->HelpMessageID = + RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) { + COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); + return FALSE; + } + } else + PrintStructures->HelpMessageID = 0; + + if (!(lppd->Flags & PD_PRINTSETUP)) { + /* We have a print quality combo box. What shall we do? */ + if (GetDlgItem(hDlg,cmb1)) { + char buf [20]; + + FIXME("Print quality only displaying currently.\n"); + + pdm = GlobalLock16(lppd->hDevMode); + if(pdm) { + switch (pdm->dmPrintQuality) { + case DMRES_HIGH : strcpy(buf,"High");break; + case DMRES_MEDIUM : strcpy(buf,"Medium");break; + case DMRES_LOW : strcpy(buf,"Low");break; + case DMRES_DRAFT : strcpy(buf,"Draft");break; + case 0 : strcpy(buf,"Default");break; + default : sprintf(buf,"%ddpi",pdm->dmPrintQuality);break; + } + GlobalUnlock16(lppd->hDevMode); + } else + strcpy(buf,"Default"); + SendDlgItemMessageA(hDlg,cmb1,CB_ADDSTRING,0,(LPARAM)buf); + SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0); + EnableWindow(GetDlgItem(hDlg,cmb1),FALSE); + } + } + + /* FIXME: I allow more freedom than either Win95 or WinNT, + * which do not agree to what errors should be thrown or not + * in case nToPage or nFromPage is out-of-range. + */ + if (lppd->nMaxPage < lppd->nMinPage) + lppd->nMaxPage = lppd->nMinPage; + if (lppd->nMinPage == lppd->nMaxPage) + lppd->Flags |= PD_NOPAGENUMS; + if (lppd->nToPage < lppd->nMinPage) + lppd->nToPage = lppd->nMinPage; + if (lppd->nToPage > lppd->nMaxPage) + lppd->nToPage = lppd->nMaxPage; + if (lppd->nFromPage < lppd->nMinPage) + lppd->nFromPage = lppd->nMinPage; + if (lppd->nFromPage > lppd->nMaxPage) + lppd->nFromPage = lppd->nMaxPage; + + /* If the printer combo box is in the dialog, fill it */ + if (GetDlgItem(hDlg,comboID)) { + /* Fill Combobox + */ + pdn = GlobalLock16(lppd->hDevNames); + pdm = GlobalLock16(lppd->hDevMode); + if(pdn) + name = (char*)pdn + pdn->wDeviceOffset; + else if(pdm) + name = pdm->dmDeviceName; + PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name); + if(pdm) GlobalUnlock16(lppd->hDevMode); + if(pdn) GlobalUnlock16(lppd->hDevNames); + + /* Now find selected printer and update rest of dlg */ + name = HeapAlloc(GetProcessHeap(),0,256); + if (GetDlgItemTextA(hDlg, comboID, name, 255)) + PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures); + } else { + /* else just use default printer */ + char name[200]; + DWORD dwBufLen = sizeof(name); + BOOL ret = GetDefaultPrinterA(name, &dwBufLen); + + if (ret) + PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures); + else + FIXME("No default printer found, expect problems!\n"); + } + HeapFree(GetProcessHeap(),0,name); + + return TRUE; +} + +/************************************************************ + * + * PRINTDLG_Get16TemplateFrom32 [Internal] + * Generates a 16 bits template from the Wine 32 bits resource + * + */ +static HGLOBAL16 PRINTDLG_Get16TemplateFrom32(LPCSTR PrintResourceName) +{ + HRSRC hResInfo; + HGLOBAL hDlgTmpl32; + LPCVOID template32; + DWORD size; + HGLOBAL16 hGlobal16; + LPVOID template; + + if (!(hResInfo = FindResourceA(COMDLG32_hInstance, + PrintResourceName, (LPSTR)RT_DIALOG))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE); + return 0; + } + if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) || + !(template32 = LockResource( hDlgTmpl32 ))) + { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return 0; + } + size = SizeofResource(COMDLG32_hInstance, hResInfo); + hGlobal16 = GlobalAlloc16(0, size); + if (!hGlobal16) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE); + ERR("alloc failure for %ld bytes\n", size); + return 0; + } + template = GlobalLock16(hGlobal16); + if (!template) + { + COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE); + ERR("global lock failure for %x handle\n", hGlobal16); + GlobalFree16(hGlobal16); + return 0; + } + ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template); + GlobalUnlock16(hGlobal16); + return hGlobal16; +} + +static BOOL PRINTDLG_CreateDC16(LPPRINTDLG16 lppd) +{ + DEVNAMES *pdn = GlobalLock16(lppd->hDevNames); + DEVMODEA *pdm = GlobalLock16(lppd->hDevMode); + + if(lppd->Flags & PD_RETURNDC) { + lppd->hDC = HDC_16(CreateDCA((char*)pdn + pdn->wDriverOffset, + (char*)pdn + pdn->wDeviceOffset, + (char*)pdn + pdn->wOutputOffset, + pdm )); + } else if(lppd->Flags & PD_RETURNIC) { + lppd->hDC = HDC_16(CreateICA((char*)pdn + pdn->wDriverOffset, + (char*)pdn + pdn->wDeviceOffset, + (char*)pdn + pdn->wOutputOffset, + pdm )); + } + GlobalUnlock16(lppd->hDevNames); + GlobalUnlock16(lppd->hDevMode); + return lppd->hDC ? TRUE : FALSE; +} + +/************************************************************ + * + * PRINTDLG_GetDlgTemplate + * + */ +static HGLOBAL16 PRINTDLG_GetDlgTemplate16(PRINTDLG16 *lppd) +{ + HGLOBAL16 hDlgTmpl, hResInfo; + + if (lppd->Flags & PD_PRINTSETUP) { + if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) { + hDlgTmpl = lppd->hSetupTemplate; + } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) { + hResInfo = FindResource16(lppd->hInstance, + MapSL(lppd->lpSetupTemplateName), (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource16(lppd->hInstance, hResInfo); + } else { + hDlgTmpl = PRINTDLG_Get16TemplateFrom32("PRINT32_SETUP"); + } + } else { + if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) { + hDlgTmpl = lppd->hPrintTemplate; + } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) { + hResInfo = FindResource16(lppd->hInstance, + MapSL(lppd->lpPrintTemplateName), + (LPSTR)RT_DIALOG); + hDlgTmpl = LoadResource16(lppd->hInstance, hResInfo); + } else { + hDlgTmpl = PRINTDLG_Get16TemplateFrom32("PRINT32"); + } + } + return hDlgTmpl; +} + +/********************************************************************** + * + * 16 bit commdlg + */ + +/*********************************************************************** + * PrintDlg (COMMDLG.20) + * + * Displays the the PRINT dialog box, which enables the user to specify + * specific properties of the print job. + * + * RETURNS + * nonzero if the user pressed the OK button + * zero if the user cancelled the window or an error occurred + * + * BUGS + * * calls up to the 32-bit versions of the Dialogs, which look different + * * Customizing is *not* implemented. + */ + +BOOL16 WINAPI PrintDlg16( + LPPRINTDLG16 lppd /* [in/out] ptr to PRINTDLG struct */ +) { + BOOL bRet = FALSE; + LPVOID ptr; + HINSTANCE16 hInst = GetWindowWord( HWND_32(lppd->hwndOwner), GWL_HINSTANCE ); + + if(TRACE_ON(commdlg)) { + char flagstr[1000] = ""; + struct pd_flags *pflag = pd_flags; + for( ; pflag->name; pflag++) { + if(lppd->Flags & pflag->flag) + strcat(flagstr, pflag->name); + } + TRACE("(%p): hwndOwner = %08x, hDevMode = %08x, hDevNames = %08x\n" + "pp. %d-%d, min p %d, max p %d, copies %d, hinst %08x\n" + "flags %08lx (%s)\n", + lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames, + lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage, + lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr); + } + + if(lppd->lStructSize != sizeof(PRINTDLG16)) { + ERR("structure size (%ld/%d)\n",lppd->lStructSize,sizeof(PRINTDLG16)); + COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE); + return FALSE; + } + + if(lppd->Flags & PD_RETURNDEFAULT) { + PRINTER_INFO_2A *pbuf; + DRIVER_INFO_3A *dbuf; + HANDLE hprn; + DWORD needed; + + if(lppd->hDevMode || lppd->hDevNames) { + WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + if(!PRINTDLG_OpenDefaultPrinter(&hprn)) { + WARN("Can't find default printer\n"); + COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN); + return FALSE; + } + + GetPrinterA(hprn, 2, NULL, 0, &needed); + pbuf = HeapAlloc(GetProcessHeap(), 0, needed); + GetPrinterA(hprn, 2, (LPBYTE)pbuf, needed, &needed); + GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed); + dbuf = HeapAlloc(GetProcessHeap(),0,needed); + if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) { + ERR("GetPrinterDriverA failed for %s, le %ld, fix your config!\n", + pbuf->pPrinterName,GetLastError()); + HeapFree(GetProcessHeap(), 0, dbuf); + COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); + return FALSE; + } + ClosePrinter(hprn); + PRINTDLG_CreateDevNames16(&(lppd->hDevNames), + dbuf->pDriverPath, + pbuf->pPrinterName, + pbuf->pPortName); + lppd->hDevMode = GlobalAlloc16(GMEM_MOVEABLE,pbuf->pDevMode->dmSize+ + pbuf->pDevMode->dmDriverExtra); + ptr = GlobalLock16(lppd->hDevMode); + memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize + + pbuf->pDevMode->dmDriverExtra); + GlobalUnlock16(lppd->hDevMode); + HeapFree(GetProcessHeap(), 0, pbuf); + HeapFree(GetProcessHeap(), 0, dbuf); + bRet = TRUE; + } else { + HGLOBAL16 hDlgTmpl; + PRINT_PTRA16 *PrintStructures; + + /* load Dialog resources, + * depending on Flags indicates Print32 or Print32_setup dialog + */ + hDlgTmpl = PRINTDLG_GetDlgTemplate16(lppd); + if (!hDlgTmpl) { + COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE); + return FALSE; + } + PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(PRINT_PTRA16)); + PrintStructures->dlg.lpPrintDlg16 = lppd; + PrintStructures->dlg.lpPrintDlg = (LPPRINTDLGA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(PRINTDLGA)); +#define CVAL(x) PrintStructures->dlg.lpPrintDlg->x = lppd->x; +#define MVAL(x) PrintStructures->dlg.lpPrintDlg->x = MapSL(lppd->x); + CVAL(Flags); + PrintStructures->dlg.lpPrintDlg->hwndOwner = HWND_32(lppd->hwndOwner); + PrintStructures->dlg.lpPrintDlg->hDC = HDC_32(lppd->hDC); + CVAL(nFromPage);CVAL(nToPage);CVAL(nMinPage);CVAL(nMaxPage); + CVAL(nCopies); + PrintStructures->dlg.lpPrintDlg->hInstance = HINSTANCE_32(lppd->hInstance); + CVAL(lCustData); + MVAL(lpPrintTemplateName);MVAL(lpSetupTemplateName); + /* Don't copy rest, it is 16 bit specific */ +#undef MVAL +#undef CVAL + + PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(),0,sizeof(DEVMODEA)); + + /* and create & process the dialog . + * -1 is failure, 0 is broken hwnd, everything else is ok. + */ + bRet = (0hwndOwner, + (DLGPROC16)GetProcAddress16(GetModuleHandle16("COMMDLG"),(LPCSTR)21), + (LPARAM)PrintStructures + ) + ); + if (!PrintStructures->lpPrinterInfo) bRet = FALSE; + if(bRet) { + DEVMODEA *lpdm = PrintStructures->lpDevMode, *lpdmReturn; + PRINTER_INFO_2A *pi = PrintStructures->lpPrinterInfo; + DRIVER_INFO_3A *di = PrintStructures->lpDriverInfo; + + if (lppd->hDevMode == 0) { + TRACE(" No hDevMode yet... Need to create my own\n"); + lppd->hDevMode = GlobalAlloc16(GMEM_MOVEABLE, + lpdm->dmSize + lpdm->dmDriverExtra); + } else { + WORD locks; + if((locks = (GlobalFlags16(lppd->hDevMode)&GMEM_LOCKCOUNT))) { + WARN("hDevMode has %d locks on it. Unlocking it now\n", locks); + while(locks--) { + GlobalUnlock16(lppd->hDevMode); + TRACE("Now got %d locks\n", locks); + } + } + lppd->hDevMode = GlobalReAlloc16(lppd->hDevMode, + lpdm->dmSize + lpdm->dmDriverExtra, + GMEM_MOVEABLE); + } + lpdmReturn = GlobalLock16(lppd->hDevMode); + memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra); + + if (lppd->hDevNames != 0) { + WORD locks; + if((locks = (GlobalFlags16(lppd->hDevNames)&GMEM_LOCKCOUNT))) { + WARN("hDevNames has %d locks on it. Unlocking it now\n", locks); + while(locks--) + GlobalUnlock16(lppd->hDevNames); + } + } + PRINTDLG_CreateDevNames16(&(lppd->hDevNames), + di->pDriverPath, + pi->pPrinterName, + pi->pPortName + ); + GlobalUnlock16(lppd->hDevMode); + } + if (!(lppd->Flags & (PD_ENABLESETUPTEMPLATEHANDLE | PD_ENABLESETUPTEMPLATE))) + GlobalFree16(hDlgTmpl); /* created from the 32 bits resource */ + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo); + HeapFree(GetProcessHeap(), 0, PrintStructures); + } + if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC)) + bRet = PRINTDLG_CreateDC16(lppd); + + TRACE("exit! (%d)\n", bRet); + return bRet; +} + +/*********************************************************************** + * PrintDlgProc (COMMDLG.21) + */ +BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hDlg = HWND_32(hDlg16); + PRINT_PTRA16* PrintStructures; + BOOL16 res = FALSE; + + if (uMsg!=WM_INITDIALOG) { + PrintStructures = (PRINT_PTRA16*)GetPropA(hDlg,"__WINE_PRINTDLGDATA"); + if (!PrintStructures) + return FALSE; + } else { + PrintStructures = (PRINT_PTRA16*) lParam; + SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures); + res = PRINTDLG_WMInitDialog16(hDlg, wParam, PrintStructures); + + if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) { + res = CallWindowProc16( + (WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook, + hDlg16, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg16 + ); + } + return res; + } + + if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) { + res = CallWindowProc16( + (WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook, + hDlg16,uMsg, wParam, lParam + ); + if(LOWORD(res)) return res; + } + + switch (uMsg) { + case WM_COMMAND: { + /* We need to map those for the 32bit window procedure, compare + * with 32Ato16 mapper in winproc.c + */ + return PRINTDLG_WMCommandA( + hDlg, + MAKEWPARAM(wParam,HIWORD(lParam)), + LOWORD(lParam), + PrintStructures + ); + } + case WM_DESTROY: + DestroyIcon(PrintStructures->hCollateIcon); + DestroyIcon(PrintStructures->hNoCollateIcon); + /* FIXME: don't forget to delete the paper orientation icons here! */ + + return FALSE; + } + return res; +} + +/*********************************************************************** + * PrintSetupDlgProc (COMMDLG.22) + */ +BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) +{ + HWND hWnd = HWND_32(hWnd16); + switch (wMsg) + { + case WM_INITDIALOG: + TRACE("WM_INITDIALOG lParam=%08lX\n", lParam); + ShowWindow(hWnd, SW_SHOWNORMAL); + return (TRUE); + case WM_COMMAND: + switch (wParam) { + case IDOK: + EndDialog(hWnd, TRUE); + return(TRUE); + case IDCANCEL: + EndDialog(hWnd, FALSE); + return(TRUE); + } + return(FALSE); + } + return FALSE; +} diff --git a/reactos/lib/comdlg32/ros.h b/reactos/lib/comdlg32/ros.h new file mode 100644 index 00000000000..68280ffb228 --- /dev/null +++ b/reactos/lib/comdlg32/ros.h @@ -0,0 +1,17 @@ +//#define NEWFILEOPENORD 1547 /* dlgs.h */ + +#define OFN_DONTADDTORECENT 0x02000000 +#define OFN_ENABLEINCLUDENOTIFY 0x00400000 + +#define SAVE_DIALOG 1 /* comdlg.h */ +#define OPEN_DIALOG 2 /* comdlg.h */ + +#define CB_SETITEMDATA16 (WM_USER+17) /* winuser16.h */ + +#define NTM_PS_OPENTYPE 0x00020000 /* wingdi.h */ +#define NTM_TT_OPENTYPE 0x00040000 /* wingdi.h */ +#define NTM_TYPE1 0x00100000 /* wingdi.h */ + +#define HWND_16(h32) (LOWORD(h32)) /* wownt32.h */ + + diff --git a/reactos/lib/comdlg32/rsrc.rc b/reactos/lib/comdlg32/rsrc.rc new file mode 100644 index 00000000000..dc3558d517d --- /dev/null +++ b/reactos/lib/comdlg32/rsrc.rc @@ -0,0 +1,67 @@ +/* + * Top level resource file for Common Dialogs + * + * Copyright 1999 Bertho Stultiens + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "cdlg.h" +#include "winspool.h" +#include "filedlgbrowser.h" + +/* + * Everything that does not depend on language, + * like textless bitmaps etc, go into the + * neutral language. This will prevent them from + * being duplicated for each language. + */ +#include "cdlg_xx.rc" + +/* + * Everything specific to any language goes + * in one of the specific files. + * Note that you can and may override resources + * which also have a neutral version. This is to + * get localized bitmaps for example. + */ +#include "cdlg_Ca.rc" +#include "cdlg_Cn.rc" +#include "cdlg_Cs.rc" +#include "cdlg_Da.rc" +#include "cdlg_De.rc" +#include "cdlg_En.rc" +#include "cdlg_Eo.rc" +#include "cdlg_Es.rc" +#include "cdlg_Fi.rc" +#include "cdlg_Fr.rc" +#include "cdlg_Hu.rc" +#include "cdlg_It.rc" +#include "cdlg_Ko.rc" +#include "cdlg_Nl.rc" +#include "cdlg_No.rc" +#include "cdlg_Pl.rc" +#include "cdlg_Pt.rc" +#include "cdlg_Ru.rc" +#include "cdlg_Si.rc" +#include "cdlg_Sk.rc" +#include "cdlg_Sv.rc" +#include "cdlg_Wa.rc" +#include "cdlg_Ja.rc" +#include "cdlg_Zh.rc"