- Timestamp:
- Apr 23, 2001, 12:47:23 PM (24 years ago)
- Location:
- trunk/src/shell32
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/shell32_main.h
r5544 r5576 1 /* $Id: shell32_main.h,v 1. 7 2001-04-19 08:32:18sandervl Exp $ */1 /* $Id: shell32_main.h,v 1.8 2001-04-23 10:47:23 sandervl Exp $ */ 2 2 /* 3 3 * internal Shell32 Library definitions … … 183 183 #define ASK_DELETE_FOLDER 2 184 184 #define ASK_DELETE_MULTIPLE_ITEM 3 185 #ifdef __WIN32OS2__ 186 #define ASK_CREATE FOLDER 4 187 #define ASK_OVERWRITE_FILE 5 188 #endif 185 189 186 190 BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI); 187 191 BOOL SHELL_DeleteFileA(LPCSTR pszFile, BOOL bShowUI); 192 #ifdef __WIN32OS2__ 193 #define SHELL_WarnItemDelete SHELL_ConfirmDialog 194 BOOL SHELL_ConfirmDialog(int nKindOfDialog, LPCSTR szDir); 195 #else 188 196 BOOL SHELL_WarnItemDelete(int nKindOfDialog, LPCSTR szDir); 197 #endif 189 198 190 199 #ifdef __WIN32OS2__ … … 211 220 212 221 #endif 222 -
trunk/src/shell32/shlfileop.c
r5544 r5576 19 19 DEFAULT_DEBUG_CHANNEL(shell); 20 20 21 22 #ifdef __WIN32OS2__ 23 BOOL SHELL_ConfirmDialog (int nKindOfDialog, LPCSTR szDir) 24 { 25 char szCaption[255], szText[255], szBuffer[MAX_PATH + 256]; 26 UINT caption_resource_id, text_resource_id; 27 28 switch(nKindOfDialog) { 29 30 case ASK_DELETE_FILE: 31 caption_resource_id = IDS_DELETEITEM_CAPTION; 32 text_resource_id = IDS_DELETEITEM_TEXT; 33 break; 34 case ASK_DELETE_FOLDER: 35 caption_resource_id = IDS_DELETEFOLDER_CAPTION; 36 text_resource_id = IDS_DELETEITEM_TEXT; 37 break; 38 case ASK_DELETE_MULTIPLE_ITEM: 39 caption_resource_id = IDS_DELETEITEM_CAPTION; 40 text_resource_id = IDS_DELETEMULTIPLE_TEXT; 41 break; 42 case ASK_OVERWRITE_FILE: 43 caption_resource_id = IDS_OVERWRITEFILE_CAPTION; 44 text_resource_id = IDS_OVERWRITEFILE_TEXT; 45 break; 46 default: 47 FIXME(__FUNCTION__" Unhandled nKindOfDialog %d stub\n", nKindOfDialog); 48 return FALSE; 49 } 50 51 LoadStringA(shell32_hInstance, caption_resource_id, szCaption, sizeof(szCaption)); 52 LoadStringA(shell32_hInstance, text_resource_id, szText, sizeof(szText)); 53 #else 21 54 BOOL SHELL_WarnItemDelete (int nKindOfDialog, LPCSTR szDir) 22 55 { … … 51 84 szCaption, sizeof(szCaption)); 52 85 } 53 86 #endif 54 87 FormatMessageA(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY, 55 88 szText, 0, 0, szBuffer, sizeof(szBuffer), (va_list*)&szDir); … … 152 185 } 153 186 187 #ifdef __WIN32OS2__ 188 /************************************************************************ 189 * Creation from dir for SHFileOperation (FO_COPY) 190 * 191 */ 192 193 LPSTR DirForFileOperationA (LPSTR pTo, DWORD *dwAttr, LPSHFILEOPSTRUCTA lpFileOp, BOOL toSingle) 194 { 195 196 LPSTR pTempTo = NULL; 197 long lenTo; 198 BOOL withFileName = FALSE; 199 if(pTo[0]) { 200 lenTo = strlen(pTo); 201 pTempTo = HeapAlloc(GetProcessHeap(), 0, lenTo + MAX_PATH); 202 203 } 204 *dwAttr = -1; 205 if (pTempTo) { 206 strcpy(pTempTo,pTo); 207 PathRemoveBackslashA(pTempTo); 208 *dwAttr = GetFileAttributesA(pTempTo); 209 if (*(dwAttr) == -1 || !(*(dwAttr) & FILE_ATTRIBUTE_DIRECTORY)) { 210 withFileName = ((lenTo == strlen(pTempTo)) || !toSingle); 211 if (withFileName) { 212 // Target must not be an directory 213 PathRemoveFileSpecA(pTempTo); 214 *(dwAttr) = GetFileAttributesA(pTempTo); 215 } 216 } 217 if ((*(dwAttr) == -1) || 218 ( !(*(dwAttr) & FILE_ATTRIBUTE_DIRECTORY) || (!withFileName && !toSingle) )) { 219 // !toSingle == !(&pTo[strlen(pTo)+1]=="\0") redundant ? 220 if (!withFileName && !toSingle) { 221 FIXME(__FUNCTION__" FO_COPY tagetdir and FOF_MULTIDESTFILES not implemented ? ,stub\n"); 222 }; 223 // never Create directory at this time 224 HeapFree(GetProcessHeap(), 0, pTempTo); 225 pTempTo = NULL; 226 // } 227 } 228 } 229 if (!pTempTo) lpFileOp->fAnyOperationsAborted=TRUE; 230 return pTempTo; 231 } 232 #endif 233 154 234 /************************************************************************* 155 235 * SHFileOperationA [SHELL32.243] … … 162 242 LPSTR pFrom = (LPSTR)lpFileOp->pFrom; 163 243 LPSTR pTo = (LPSTR)lpFileOp->pTo; 244 #ifdef __WIN32OS2__ 245 DWORD ToAttr; 246 DWORD FromAttr; 247 LPSTR pToFile; 248 LPSTR pTempTo = NULL; 249 LPSTR pTempFrom; 250 251 FILEOP_FLAGS OFl = ((FILEOP_FLAGS)lpFileOp->fFlags & 0x7ff); 252 BOOL Multi = (lpFileOp->fFlags & FOF_MULTIDESTFILES); 253 BOOL withFileName = FALSE; 254 BOOL not_overwrite; 255 BOOL copyOk; 256 long lenTo; 257 /* default no error 258 */ 259 lpFileOp->fAnyOperationsAborted=FALSE; 260 #else 164 261 LPSTR pTempTo; 262 #endif 165 263 166 264 switch(lpFileOp->wFunc) { 167 265 case FO_COPY: 168 266 TRACE("File Copy:\n"); 267 #ifdef __WIN32OS2__ 268 /* 269 * FOF_MULTIDESTFILES, FOF_NOCONFIRMATION are implemented 270 * FOF_CONFIRMMOUSE, FOF_SILENT, FOF_NOCONFIRMMKDIR, FOF_SIMPLEPROGRESS are not implemented and ignored 271 * if any other flag set, an error occurs 272 */ 273 OFl = (OFl & (-1 - (FOF_MULTIDESTFILES))); 274 OFl = (OFl ^ (FOF_SILENT | FOF_NOCONFIRMATION | FOF_SIMPLEPROGRESS | FOF_NOCONFIRMMKDIR)); 275 if (OFl) { 276 if (OFl & (-1 - (FOF_CONFIRMMOUSE | FOF_SILENT | FOF_NOCONFIRMATION | FOF_SIMPLEPROGRESS | FOF_NOCONFIRMMKDIR))) { 277 FIXME(__FUNCTION__" FO_COPY with this fFlags not implemented:%2x ,stub\n",lpFileOp->fFlags); 278 lpFileOp->fAnyOperationsAborted=TRUE; 279 } else { 280 // not FOF_SILENT, not FOF_SIMPLEPROGRESS, not FOF_NOCONFIRMMKDIR 281 FIXME(__FUNCTION__" FO_COPY with this fFlags not full implemented:%2x ,stub\n",lpFileOp->fFlags); 282 } /* endif */ 283 } /* endif */ 284 285 not_overwrite = (!(lpFileOp->fFlags & FOF_NOCONFIRMATION)); 286 while(!Multi && !lpFileOp->fAnyOperationsAborted) { 287 // single targetdir 288 pTempTo = DirForFileOperationA(pTo, &ToAttr, lpFileOp, TRUE); 289 290 if (!pTempTo) break; 291 292 lenTo = strlen(pTempTo); 293 withFileName = (((lenTo + 1) < strlen(pTo)) || (PathIsRootA(pTo) && lenTo < strlen(pTo))); 294 PathAddBackslashA(pTempTo); 295 break; 296 } 297 if (!lpFileOp->fAnyOperationsAborted) { 298 TRACE("File Copy:\n"); 299 #ifdef __WIN32OS2__ 300 while(pFrom[0]) { 301 #endif 302 if(!pTo[0]) break; 303 304 TRACE(" From='%s' To='%s'\n", pFrom, pTo); 305 306 if (Multi) { 307 // multi target, each one for one source. ? last 308 pTempTo = DirForFileOperationA(pTo, &ToAttr, lpFileOp, FALSE); 309 if (pTempTo) { 310 311 lenTo = strlen(pTempTo); 312 withFileName = (((lenTo + 1) < strlen(pTo)) || (PathIsRootA(pTo) && lenTo < strlen(pTo))); 313 PathAddBackslashA(pTempTo); 314 } 315 } 316 if (pTempTo) { 317 lenTo = strlen(pTempTo); 318 pToFile = &pTempTo[lenTo]; 319 // target name in target or from source 320 if (withFileName) { 321 if ((pFrom[strlen(pFrom)+1]=='\0') || 322 (Multi && !(pTo[strlen(pTo)+1]=='\0'))) { 323 pTempFrom = pTo; 324 } else { 325 // more then one source for one targetfile 326 lpFileOp->fAnyOperationsAborted=TRUE; 327 break; 328 } /* endif */ 329 } else { 330 pTempFrom = pFrom; 331 } /* endif */ 332 // isolate target filename 333 strcpy(pToFile,pTempFrom); 334 PathRemoveFileSpecA(pToFile); 335 PathAddBackslashA(pToFile); 336 lenTo = strlen(pToFile); 337 338 strcpy(pToFile,&pTempFrom[lenTo]); 339 FromAttr = GetFileAttributesA(pFrom); 340 if (FromAttr & FILE_ATTRIBUTE_DIRECTORY) { 341 if (!(FromAttr == -1)) { 342 FIXME(__FUNCTION__" FO_COPY only with sourcedir not implemented ,stub\n"); 343 }; 344 lpFileOp->fAnyOperationsAborted=TRUE; 345 break; 346 } 347 ToAttr = GetFileAttributesA(pTempTo); 348 if (!(ToAttr == -1) && (ToAttr & FILE_ATTRIBUTE_DIRECTORY)) { 349 lpFileOp->fAnyOperationsAborted=TRUE; 350 break; 351 } 352 // first try to copy 353 copyOk = CopyFileA(pFrom, pTempTo, not_overwrite); 354 355 if (!copyOk && not_overwrite) { 356 if (SHELL_ConfirmDialog (ASK_OVERWRITE_FILE, pTempTo)) 357 // second try to copy after confirm 358 copyOk = CopyFileA(pFrom, pTempTo, FALSE); 359 } /* endif */ 360 if (!copyOk) lpFileOp->fAnyOperationsAborted=TRUE; 361 // fix for mor then one source for one target 362 pToFile[0] = '\0'; 363 364 if (!withFileName && Multi && (pTo[strlen(pTo)+1]=='\0')) { 365 // Win Bug ? 366 Multi = FALSE; 367 } /* endif */ 368 if (Multi) HeapFree(GetProcessHeap(), 0, pTempTo); 369 } 370 371 pFrom += strlen(pFrom) + 1; 372 373 if (Multi) pTo += strlen(pTo) + 1; 374 375 } 376 } /* endif */ 377 if (!Multi && pTempTo) HeapFree(GetProcessHeap(), 0, pTempTo); 378 379 if (lpFileOp->fAnyOperationsAborted==TRUE) { 380 TRACE(__FUNCTION__" Setting AnyOpsAborted=TRUE\n"); 381 return 0x75l; 382 } else { 383 TRACE(__FUNCTION__" Setting AnyOpsAborted=FALSE\n"); 384 } /* endif */ 385 return 0; 386 #else 169 387 while(1) { 170 388 if(!pFrom[0]) break; … … 189 407 lpFileOp->fAnyOperationsAborted=FALSE; 190 408 return 0; 409 #endif 191 410 192 411 case FO_DELETE: -
trunk/src/shell32/shres.orc
r5544 r5576 1 /* $Id: shres.orc,v 1.1 1 2001-04-19 08:32:18sandervl Exp $ */1 /* $Id: shres.orc,v 1.12 2001-04-23 10:47:23 sandervl Exp $ */ 2 2 /* 3 3 * Top level resource file for Common Dialogs … … 142 142 IDS_DELETEITEM_TEXT "Are you sure you want to delete '%1'?" 143 143 IDS_DELETEMULTIPLE_TEXT "Are you sure you want to delete these %1 items?" 144 #ifdef __WIN32OS2__ 145 IDS_OVERWRITEFILE_TEXT "OverWrite File %1?" 146 IDS_OVERWRITEFILE_CAPTION "Confirm File OverWrite" 147 #endif 144 148 } 145 149 … … 285 289 //#include "shell32_Sv.orc" 286 290 //#include "shell32_Wa.orc" 291 -
trunk/src/shell32/shresdef.h
r5544 r5576 1 /* $Id: shresdef.h,v 1. 8 2001-04-19 08:32:19sandervl Exp $ */1 /* $Id: shresdef.h,v 1.9 2001-04-23 10:47:23 sandervl Exp $ */ 2 2 3 3 /* … … 45 45 #define IDS_DELETEITEM_TEXT 34 46 46 #define IDS_DELETEMULTIPLE_TEXT 35 47 #ifdef __WIN32OS2__ 48 #define IDS_OVERWRITEFILE_TEXT 36 49 #define IDS_OVERWRITEFILE_CAPTION 37 50 #endif 47 51 48 52 #define IDS_SHV_INVALID_FILENAME_TITLE 28 … … 81 85 #endif /* __WINE_SHELL_RES_H */ 82 86 87
Note:
See TracChangeset
for help on using the changeset viewer.