Changeset 551 for trunk/dll/archive.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/archive.c
r378 r551 34 34 #pragma alloc_text(FMARCHIVE,ArchiveDlgProc) 35 35 36 MRESULT EXPENTRY ArchiveDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)36 MRESULT EXPENTRY ArchiveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 37 37 { 38 DIRCNRDATA *arcdata = NULL; 39 40 switch(msg) { 41 case WM_INITDLG: 42 WinSetWindowPtr(hwnd,0,mp2); 43 arcdata = (DIRCNRDATA *)mp2; 44 WinSendDlgItemMsg(hwnd,ARCH_ARCNAME,EM_SETTEXTLIMIT, 45 MPFROM2SHORT(CCHMAXPATH,0),MPVOID); 46 if(!arcdata->namecanchange) { 47 WinSendDlgItemMsg(hwnd,ARCH_ARCNAME,EM_SETREADONLY, 48 MPFROM2SHORT(TRUE,0),MPVOID); 49 WinEnableWindow(WinWindowFromID(hwnd,ARCH_FIND),FALSE); 50 WinShowWindow(WinWindowFromID(hwnd,ARCH_FIND),FALSE); 51 } 52 WinSendDlgItemMsg(hwnd,ARCH_COMMAND,EM_SETTEXTLIMIT, 53 MPFROM2SHORT(256,0),MPVOID); 54 WinSendDlgItemMsg(hwnd,ARCH_MASKS,EM_SETTEXTLIMIT, 55 MPFROM2SHORT(256,0),MPVOID); 56 WinSetDlgItemText(hwnd,ARCH_ARCNAME,arcdata->arcname); 57 if(arcdata->fmoving && arcdata->info->move) { 58 WinSetDlgItemText(hwnd,ARCH_COMMAND,arcdata->info->move); 59 WinSendDlgItemMsg(hwnd,ARCH_MOVE,BM_SETCHECK, 60 MPFROM2SHORT(TRUE,0),MPVOID); 61 } 62 else 63 WinSetDlgItemText(hwnd,ARCH_COMMAND,arcdata->info->create); 64 if(!arcdata->info->createrecurse) 65 WinEnableWindow(WinWindowFromID(hwnd,ARCH_RECURSE),FALSE); 66 if(!arcdata->info->move && !arcdata->info->movewdirs) 67 WinEnableWindow(WinWindowFromID(hwnd,ARCH_MOVE),FALSE); 68 if(!arcdata->info->createwdirs && !arcdata->info->movewdirs) 69 WinEnableWindow(WinWindowFromID(hwnd,ARCH_INCLPATH),FALSE); 70 *arcdata->command = 0; 71 PosOverOkay(hwnd); 72 break; 73 74 case WM_ADJUSTWINDOWPOS: 75 PostMsg(hwnd,UM_SETDIR,MPVOID,MPVOID); 76 break; 77 78 case UM_SETDIR: 79 PaintRecessedWindow(WinWindowFromID(hwnd,ARCH_HELP),(HPS)0,FALSE,TRUE); 38 DIRCNRDATA *arcdata = NULL; 39 40 switch (msg) { 41 case WM_INITDLG: 42 WinSetWindowPtr(hwnd, 0, mp2); 43 arcdata = (DIRCNRDATA *) mp2; 44 WinSendDlgItemMsg(hwnd, ARCH_ARCNAME, EM_SETTEXTLIMIT, 45 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 46 if (!arcdata->namecanchange) { 47 WinSendDlgItemMsg(hwnd, ARCH_ARCNAME, EM_SETREADONLY, 48 MPFROM2SHORT(TRUE, 0), MPVOID); 49 WinEnableWindow(WinWindowFromID(hwnd, ARCH_FIND), FALSE); 50 WinShowWindow(WinWindowFromID(hwnd, ARCH_FIND), FALSE); 51 } 52 WinSendDlgItemMsg(hwnd, ARCH_COMMAND, EM_SETTEXTLIMIT, 53 MPFROM2SHORT(256, 0), MPVOID); 54 WinSendDlgItemMsg(hwnd, ARCH_MASKS, EM_SETTEXTLIMIT, 55 MPFROM2SHORT(256, 0), MPVOID); 56 WinSetDlgItemText(hwnd, ARCH_ARCNAME, arcdata->arcname); 57 if (arcdata->fmoving && arcdata->info->move) { 58 WinSetDlgItemText(hwnd, ARCH_COMMAND, arcdata->info->move); 59 WinSendDlgItemMsg(hwnd, ARCH_MOVE, BM_SETCHECK, 60 MPFROM2SHORT(TRUE, 0), MPVOID); 61 } 62 else 63 WinSetDlgItemText(hwnd, ARCH_COMMAND, arcdata->info->create); 64 if (!arcdata->info->createrecurse) 65 WinEnableWindow(WinWindowFromID(hwnd, ARCH_RECURSE), FALSE); 66 if (!arcdata->info->move && !arcdata->info->movewdirs) 67 WinEnableWindow(WinWindowFromID(hwnd, ARCH_MOVE), FALSE); 68 if (!arcdata->info->createwdirs && !arcdata->info->movewdirs) 69 WinEnableWindow(WinWindowFromID(hwnd, ARCH_INCLPATH), FALSE); 70 *arcdata->command = 0; 71 PosOverOkay(hwnd); 72 break; 73 74 case WM_ADJUSTWINDOWPOS: 75 PostMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 76 break; 77 78 case UM_SETDIR: 79 PaintRecessedWindow(WinWindowFromID(hwnd, ARCH_HELP), (HPS) 0, FALSE, 80 TRUE); 81 return 0; 82 83 case WM_CONTROL: 84 arcdata = (DIRCNRDATA *) WinQueryWindowPtr(hwnd, 0); 85 switch (SHORT1FROMMP(mp1)) { 86 case ARCH_ARCNAME: 87 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 88 WinSetDlgItemText(hwnd, ARCH_HELP, 89 GetPString(IDS_ARCDEFAULTHELPTEXT)); 90 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 91 WinSetDlgItemText(hwnd, ARCH_HELP, 92 GetPString(IDS_ARCARCNAMEHELPTEXT)); 93 break; 94 95 case ARCH_COMMAND: 96 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 97 WinSetDlgItemText(hwnd, ARCH_HELP, 98 GetPString(IDS_ARCDEFAULTHELPTEXT)); 99 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 100 WinSetDlgItemText(hwnd, ARCH_HELP, GetPString(IDS_ARCCMDHELPTEXT)); 101 break; 102 103 case ARCH_MASKS: 104 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 105 WinSetDlgItemText(hwnd, ARCH_HELP, 106 GetPString(IDS_ARCDEFAULTHELPTEXT)); 107 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 108 WinSetDlgItemText(hwnd, ARCH_HELP, GetPString(IDS_ARCMASKHELPTEXT)); 109 110 break; 111 112 case ARCH_INCLPATH: 113 case ARCH_RECURSE: 114 case ARCH_MOVE: 115 { 116 BOOL fRecurse = FALSE, fMove = FALSE, fInclDirs = FALSE; 117 CHAR *cmd; 118 119 if ((BOOL) WinSendDlgItemMsg(hwnd, ARCH_RECURSE, BM_QUERYCHECK, 120 MPVOID, MPVOID)) { 121 fRecurse = TRUE; 122 if (SHORT1FROMMP(mp1) == ARCH_RECURSE) { 123 if (arcdata->info->createrecurse && *arcdata->info->createrecurse) { 124 fMove = FALSE; 125 fInclDirs = FALSE; 126 WinSendDlgItemMsg(hwnd, ARCH_INCLPATH, BM_SETCHECK, 127 MPVOID, MPVOID); 128 WinSendDlgItemMsg(hwnd, ARCH_MOVE, BM_SETCHECK, MPVOID, MPVOID); 129 } 130 else { 131 fRecurse = FALSE; 132 WinSendDlgItemMsg(hwnd, ARCH_RECURSE, BM_SETCHECK, 133 MPVOID, MPVOID); 134 } 135 } 136 } 137 else 138 fRecurse = FALSE; 139 if ((BOOL) WinSendDlgItemMsg(hwnd, ARCH_MOVE, BM_QUERYCHECK, 140 MPVOID, MPVOID)) { 141 fMove = TRUE; 142 fRecurse = FALSE; 143 WinSendDlgItemMsg(hwnd, ARCH_RECURSE, BM_SETCHECK, MPVOID, MPVOID); 144 } 145 else 146 fMove = FALSE; 147 if ((BOOL) WinSendDlgItemMsg(hwnd, ARCH_INCLPATH, BM_QUERYCHECK, 148 MPVOID, MPVOID)) { 149 fInclDirs = TRUE; 150 fRecurse = FALSE; 151 WinSendDlgItemMsg(hwnd, ARCH_RECURSE, BM_SETCHECK, MPVOID, MPVOID); 152 } 153 else 154 fInclDirs = FALSE; 155 cmd = NULL; 156 if (fMove) { 157 if (fInclDirs || fRecurse) 158 cmd = arcdata->info->movewdirs; 159 else 160 cmd = arcdata->info->move; 161 if (!cmd || !*cmd) 162 cmd = arcdata->info->move; 163 } 164 if (!cmd || !*cmd) { 165 if (fInclDirs) { 166 cmd = arcdata->info->createwdirs; 167 if (!cmd || !*cmd) 168 cmd = arcdata->info->createrecurse; 169 } 170 else if (fRecurse) { 171 cmd = arcdata->info->createrecurse; 172 if (!cmd || !*cmd) 173 cmd = arcdata->info->createwdirs; 174 } 175 if (!cmd || !*cmd) 176 cmd = arcdata->info->create; 177 } 178 if (cmd) 179 WinSetDlgItemText(hwnd, ARCH_COMMAND, cmd); 180 } 181 break; 182 } 183 return 0; 184 185 case WM_COMMAND: 186 arcdata = (DIRCNRDATA *) WinQueryWindowPtr(hwnd, 0); 187 if (!arcdata) { 188 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 80 189 return 0; 81 82 case WM_CONTROL: 83 arcdata = (DIRCNRDATA *)WinQueryWindowPtr(hwnd,0); 84 switch(SHORT1FROMMP(mp1)) { 85 case ARCH_ARCNAME: 86 if(SHORT2FROMMP(mp1) == EN_KILLFOCUS) 87 WinSetDlgItemText(hwnd,ARCH_HELP, 88 GetPString(IDS_ARCDEFAULTHELPTEXT)); 89 if(SHORT2FROMMP(mp1) == EN_SETFOCUS) 90 WinSetDlgItemText(hwnd,ARCH_HELP, 91 GetPString(IDS_ARCARCNAMEHELPTEXT)); 92 break; 93 94 case ARCH_COMMAND: 95 if(SHORT2FROMMP(mp1) == EN_KILLFOCUS) 96 WinSetDlgItemText(hwnd,ARCH_HELP, 97 GetPString(IDS_ARCDEFAULTHELPTEXT)); 98 if(SHORT2FROMMP(mp1) == EN_SETFOCUS) 99 WinSetDlgItemText(hwnd,ARCH_HELP, 100 GetPString(IDS_ARCCMDHELPTEXT)); 101 break; 102 103 case ARCH_MASKS: 104 if(SHORT2FROMMP(mp1) == EN_KILLFOCUS) 105 WinSetDlgItemText(hwnd,ARCH_HELP, 106 GetPString(IDS_ARCDEFAULTHELPTEXT)); 107 if(SHORT2FROMMP(mp1) == EN_SETFOCUS) 108 WinSetDlgItemText(hwnd,ARCH_HELP, 109 GetPString(IDS_ARCMASKHELPTEXT)); 110 111 break; 112 113 case ARCH_INCLPATH: 114 case ARCH_RECURSE: 115 case ARCH_MOVE: 116 { 117 BOOL fRecurse = FALSE,fMove = FALSE,fInclDirs = FALSE; 118 CHAR *cmd; 119 120 if((BOOL)WinSendDlgItemMsg(hwnd,ARCH_RECURSE,BM_QUERYCHECK, 121 MPVOID,MPVOID)) { 122 fRecurse = TRUE; 123 if(SHORT1FROMMP(mp1) == ARCH_RECURSE) { 124 if(arcdata->info->createrecurse && 125 *arcdata->info->createrecurse) { 126 fMove = FALSE; 127 fInclDirs = FALSE; 128 WinSendDlgItemMsg(hwnd,ARCH_INCLPATH,BM_SETCHECK, 129 MPVOID,MPVOID); 130 WinSendDlgItemMsg(hwnd,ARCH_MOVE,BM_SETCHECK,MPVOID,MPVOID); 131 } 132 else { 133 fRecurse = FALSE; 134 WinSendDlgItemMsg(hwnd,ARCH_RECURSE,BM_SETCHECK, 135 MPVOID,MPVOID); 136 } 137 } 138 } 139 else 140 fRecurse = FALSE; 141 if((BOOL)WinSendDlgItemMsg(hwnd,ARCH_MOVE,BM_QUERYCHECK, 142 MPVOID,MPVOID)) { 143 fMove = TRUE; 144 fRecurse = FALSE; 145 WinSendDlgItemMsg(hwnd,ARCH_RECURSE,BM_SETCHECK,MPVOID,MPVOID); 146 } 147 else 148 fMove = FALSE; 149 if((BOOL)WinSendDlgItemMsg(hwnd,ARCH_INCLPATH,BM_QUERYCHECK, 150 MPVOID,MPVOID)) { 151 fInclDirs = TRUE; 152 fRecurse = FALSE; 153 WinSendDlgItemMsg(hwnd,ARCH_RECURSE,BM_SETCHECK,MPVOID,MPVOID); 154 } 155 else 156 fInclDirs = FALSE; 157 cmd = NULL; 158 if(fMove) { 159 if(fInclDirs || fRecurse) 160 cmd = arcdata->info->movewdirs; 161 else 162 cmd = arcdata->info->move; 163 if(!cmd || !*cmd) 164 cmd = arcdata->info->move; 165 } 166 if(!cmd || !*cmd) { 167 if(fInclDirs) { 168 cmd = arcdata->info->createwdirs; 169 if(!cmd || !*cmd) 170 cmd = arcdata->info->createrecurse; 171 } 172 else if(fRecurse) { 173 cmd = arcdata->info->createrecurse; 174 if(!cmd || !*cmd) 175 cmd = arcdata->info->createwdirs; 176 } 177 if(!cmd || !*cmd) 178 cmd = arcdata->info->create; 179 } 180 if(cmd) 181 WinSetDlgItemText(hwnd,ARCH_COMMAND,cmd); 182 } 183 break; 184 } 185 return 0; 186 187 case WM_COMMAND: 188 arcdata = (DIRCNRDATA *)WinQueryWindowPtr(hwnd,0); 189 if(!arcdata) { 190 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 191 return 0; 192 } 193 switch(SHORT1FROMMP(mp1)) { 194 case DID_CANCEL: 195 WinDismissDlg(hwnd,0); 196 break; 197 case DID_OK: 198 { 199 CHAR s[CCHMAXPATH + 1]; 200 201 *s = 0; 202 WinQueryDlgItemText(hwnd,ARCH_ARCNAME,CCHMAXPATH,s); 203 bstrip(s); 204 if(*s) { 205 if(DosQueryPathInfo(s, 206 FIL_QUERYFULLNAME, 207 arcdata->arcname, 208 CCHMAXPATH)) 209 strcpy(arcdata->arcname,s); 210 *s = 0; 211 WinQueryDlgItemText(hwnd, 212 ARCH_COMMAND, 213 256, 214 s); 215 if(*s) { 216 strcpy(arcdata->command,s); 217 *s = 0; 218 WinQueryDlgItemText(hwnd, 219 ARCH_MASKS, 220 256, 221 s); 222 *arcdata->mask.szMask = 0; 223 strcpy(arcdata->mask.szMask,s); 224 WinDismissDlg(hwnd,1); 225 break; 226 } 227 } 228 } 229 DosBeep(50,100); 230 break; 231 232 case IDM_HELP: 233 if(hwndHelp) 234 WinSendMsg(hwndHelp, 235 HM_DISPLAY_HELP, 236 MPFROM2SHORT(HELP_ARCHIVE,0), 237 MPFROMSHORT(HM_RESOURCEID)); 238 break; 239 240 case ARCH_FIND: 241 if(arcdata->namecanchange) { 242 243 CHAR arcname[CCHMAXPATH],s[CCHMAXPATH],*p; 244 245 *s = 0; 246 WinQueryDlgItemText(hwnd,ARCH_ARCNAME,CCHMAXPATH,s); 247 bstrip(s); 248 if(DosQueryPathInfo(s, 249 FIL_QUERYFULLNAME, 250 arcname, 251 CCHMAXPATH)) 252 strcpy(arcname,s); 253 p = strrchr(arcname,'\\'); 254 if(p) { 255 p++; 256 p = strrchr(arcname,'.'); 257 } 258 if(!p && 259 arcdata->info->ext && 260 *arcdata->info->ext) { 261 strcat(arcname,"*."); 262 strcat(arcname,arcdata->info->ext); 263 } 264 if(export_filename(hwnd,arcname,FALSE)) 265 WinSetDlgItemText(hwnd,ARCH_ARCNAME,arcname); 266 } 267 break; 268 269 case ARCH_SEE: 270 { 271 CHAR s[1001],*p; 272 273 *s = 0; 274 WinQueryDlgItemText(hwnd,ARCH_COMMAND,256,s); 275 bstrip(s); 276 if(*s) { 277 p = strchr(s,' '); 278 if(p) 279 *p = 0; 280 ExecOnList(hwnd,s,WINDOWED | SEPARATEKEEP | MAXIMIZED | PROMPT, 281 NULL,NULL, 282 GetPString(IDS_ARCEXECHELPTEXT)); 283 } 284 else 285 DosBeep(50,100); 286 } 287 break; 288 } 289 return 0; 290 291 case WM_CLOSE: 292 break; 190 } 191 switch (SHORT1FROMMP(mp1)) { 192 case DID_CANCEL: 193 WinDismissDlg(hwnd, 0); 194 break; 195 case DID_OK: 196 { 197 CHAR s[CCHMAXPATH + 1]; 198 199 *s = 0; 200 WinQueryDlgItemText(hwnd, ARCH_ARCNAME, CCHMAXPATH, s); 201 bstrip(s); 202 if (*s) { 203 if (DosQueryPathInfo(s, 204 FIL_QUERYFULLNAME, 205 arcdata->arcname, CCHMAXPATH)) 206 strcpy(arcdata->arcname, s); 207 *s = 0; 208 WinQueryDlgItemText(hwnd, ARCH_COMMAND, 256, s); 209 if (*s) { 210 strcpy(arcdata->command, s); 211 *s = 0; 212 WinQueryDlgItemText(hwnd, ARCH_MASKS, 256, s); 213 *arcdata->mask.szMask = 0; 214 strcpy(arcdata->mask.szMask, s); 215 WinDismissDlg(hwnd, 1); 216 break; 217 } 218 } 219 } 220 DosBeep(50, 100); 221 break; 222 223 case IDM_HELP: 224 if (hwndHelp) 225 WinSendMsg(hwndHelp, 226 HM_DISPLAY_HELP, 227 MPFROM2SHORT(HELP_ARCHIVE, 0), MPFROMSHORT(HM_RESOURCEID)); 228 break; 229 230 case ARCH_FIND: 231 if (arcdata->namecanchange) { 232 233 CHAR arcname[CCHMAXPATH], s[CCHMAXPATH], *p; 234 235 *s = 0; 236 WinQueryDlgItemText(hwnd, ARCH_ARCNAME, CCHMAXPATH, s); 237 bstrip(s); 238 if (DosQueryPathInfo(s, FIL_QUERYFULLNAME, arcname, CCHMAXPATH)) 239 strcpy(arcname, s); 240 p = strrchr(arcname, '\\'); 241 if (p) { 242 p++; 243 p = strrchr(arcname, '.'); 244 } 245 if (!p && arcdata->info->ext && *arcdata->info->ext) { 246 strcat(arcname, "*."); 247 strcat(arcname, arcdata->info->ext); 248 } 249 if (export_filename(hwnd, arcname, FALSE)) 250 WinSetDlgItemText(hwnd, ARCH_ARCNAME, arcname); 251 } 252 break; 253 254 case ARCH_SEE: 255 { 256 CHAR s[1001], *p; 257 258 *s = 0; 259 WinQueryDlgItemText(hwnd, ARCH_COMMAND, 256, s); 260 bstrip(s); 261 if (*s) { 262 p = strchr(s, ' '); 263 if (p) 264 *p = 0; 265 ExecOnList(hwnd, s, WINDOWED | SEPARATEKEEP | MAXIMIZED | PROMPT, 266 NULL, NULL, GetPString(IDS_ARCEXECHELPTEXT)); 267 } 268 else 269 DosBeep(50, 100); 270 } 271 break; 272 } 273 return 0; 274 275 case WM_CLOSE: 276 break; 293 277 } 294 return WinDefDlgProc(hwnd, msg,mp1,mp2);278 return WinDefDlgProc(hwnd, msg, mp1, mp2); 295 279 } 296
Note:
See TracChangeset
for help on using the changeset viewer.