| version 1.1, 2004/08/10 14:38:57 | version 1.5, 2005/02/07 16:09:19 | 
| Line 8 | Line 8 | 
 | #include        "fddfile.h" | #include        "fddfile.h" | 
 | #include        "diskdrv.h" | #include        "diskdrv.h" | 
 | #include        "newdisk.h" | #include        "newdisk.h" | 
|  | #include        "xmil.h" | 
|  | #include        "fdefine.h" | 
 |  |  | 
 | void dialog_changefdd(BYTE drv) { | void dialog_changefdd(BYTE drv) { | 
 |  |  | 
 | char    fname[MAX_PATH]; | char    fname[MAX_PATH]; | 
 |  |  | 
 | if (drv < 4) { | if (drv < 4) { | 
| if (dlgs_selectfile(fname, sizeof(fname))) { | if (dlgs_selectfile(fname, sizeof(fname), hWndMain)) { | 
| diskdrv_setfdd(drv, fname, 0); | diskdrv_setfddex(drv, fname, file_getftype(fname), 0); | 
|  |  | 
|  | switch (drv) { | 
|  | case 0: | 
|  | EnableMenuItem(GetMenuHandle(IDM_FDD0), IDM_FDD0EJECT); | 
|  | break; | 
|  | case 1: | 
|  | EnableMenuItem(GetMenuHandle(IDM_FDD1), IDM_FDD1EJECT); | 
|  | break; | 
|  | case 2: | 
|  | EnableMenuItem(GetMenuHandle(IDM_FDD2), IDM_FDD2EJECT); | 
|  | break; | 
|  | case 3: | 
|  | EnableMenuItem(GetMenuHandle(IDM_FDD3), IDM_FDD3EJECT); | 
|  | break; | 
|  | default: | 
|  | break; | 
|  | } | 
|  |  | 
 | } | } | 
 | } | } | 
 | } | } | 
| Line 31  typedef struct { | Line 50  typedef struct { | 
 | char    label[16+1]; | char    label[16+1]; | 
 | } NEWDISK; | } NEWDISK; | 
 |  |  | 
| static int NewdiskDlgProc(NEWDISK *newdisk) { | static const EventTypeSpec      hicommandEvents[]={ { kEventClassCommand, kEventCommandProcess },}; | 
 |  |  | 
| DialogPtr               hDlg; | static pascal OSStatus cfWinproc(EventHandlerCallRef myHandler, EventRef event, void* userData) { | 
| int                             media; | OSStatus    err = eventNotHandledErr; | 
| int                             done; | HICommand   cmd; | 
| short                   item; | NEWDISK         disk; | 
| Str255                  disklabel; | char            disklabel[256]; | 
| ControlHandle   btn[2]; | char            path[MAX_PATH]; | 
|  | int                     media; | 
| hDlg = GetNewDialog(IDD_NEWFDDDISK, NULL, (WindowPtr)-1); | WindowRef       win; | 
| if (!hDlg) { |  | 
| return(IDCANCEL); | win = (WindowRef)userData; | 
| } | if (GetEventClass(event)==kEventClassCommand && GetEventKind(event)==kEventCommandProcess ) { | 
|  | GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &cmd); | 
| SelectDialogItemText(hDlg, IDC_DISKLABEL, 0x0000, 0x7fff); | switch (cmd.commandID) | 
| btn[0] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2DD); | { | 
| btn[1] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2HD); | case kHICommandOK: | 
| SetControlValue(btn[0], 0); | getFieldText(getControlRefByID('name', 0, win), disklabel); | 
| SetControlValue(btn[1], 1); | media = GetControl32BitValue(getControlRefByID('mode', 0, win)); | 
| media = 1; |  | 
| SetDialogDefaultItem(hDlg, IDOK); |  | 
| SetDialogCancelItem(hDlg, IDCANCEL); |  | 
|  |  | 
| done = 0; |  | 
| while(!done) { |  | 
| ModalDialog(NULL, &item); |  | 
| switch(item) { |  | 
| case IDOK: |  | 
 | if (media == 0) { | if (media == 0) { | 
| newdisk->fdtype = (DISKTYPE_2DD << 4); | disk.fdtype = (DISKTYPE_2DD << 4); | 
 | } | } | 
 | else { | else { | 
| newdisk->fdtype = (DISKTYPE_2HD << 4); | disk.fdtype = (DISKTYPE_2HD << 4); | 
 | } | } | 
| GetDialogItemText(GetDlgItem(hDlg, IDC_DISKLABEL), disklabel); | strncpy(disk.label, disklabel, sizeof(disk.label)); | 
| mkcstr(newdisk->label, sizeof(newdisk->label), disklabel); | if (dlgs_selectwritefile(path, sizeof(path), str_newdisk, '.D88', win)) { | 
| done = IDOK; | newdisk_fdd(path, disk.fdtype, disk.label); | 
| break; | } | 
|  | QuitAppModalLoopForWindow(win); | 
| case IDCANCEL: | err=noErr; | 
| done = IDCANCEL; | break; | 
| break; |  | 
|  | case kHICommandCancel: | 
| case IDC_DISKLABEL: | QuitAppModalLoopForWindow(win); | 
| break; | err=noErr; | 
|  | break; | 
| case IDC_MAKE2DD: |  | 
| SetControlValue(btn[0], 1); | default: | 
| SetControlValue(btn[1], 0); | break; | 
| media = 0; | } | 
| break; | } | 
|  |  | 
| case IDC_MAKE2HD: | (void)myHandler; | 
| SetControlValue(btn[0], 0); | (void)userData; | 
| SetControlValue(btn[1], 1); | return err; | 
| media = 1; |  | 
| break; |  | 
| } |  | 
| } |  | 
| DisposeDialog(hDlg); |  | 
| return(done); |  | 
 | } | } | 
 |  |  | 
| void dialog_newdisk(void) { | static void makeNibWindow (IBNibRef nibRef) { | 
|  | OSStatus            err; | 
| char    path[MAX_PATH]; | EventHandlerRef     ref; | 
| const char      *ext; | WindowRef               diskWin = NULL; | 
| NEWDISK disk; |  | 
|  | err = CreateWindowFromNib(nibRef, CFSTR("NewDiskWindow"), &diskWin); | 
| if (!dlgs_selectwritefile(path, sizeof(path), str_newdisk)) { | if (err == noErr) { | 
| return; | InstallWindowEventHandler (diskWin, NewEventHandlerUPP(cfWinproc), GetEventTypeCount(hicommandEvents), hicommandEvents, (void *)diskWin, &ref); | 
| } | ShowWindow(diskWin); | 
| ext = file_getext(path); | SetKeyboardFocus(diskWin, getControlRefByID('name', 0, diskWin), kControlFocusPrevPart); | 
| if ((!file_cmpname(ext, str_d88)) || (!file_cmpname(ext, str_88d))) { | RunAppModalLoopForWindow(diskWin); | 
| if (NewdiskDlgProc(&disk) == IDOK) { | HideWindow(diskWin); | 
| newdisk_fdd(path, disk.fdtype, disk.label); | DisposeWindow(diskWin); | 
| } | } | 
| } | return; | 
 | } | } | 
 |  |  | 
 |  | void dialog_newdisk( void ) { | 
 |  | OSStatus    err; | 
 |  | IBNibRef    nibRef; | 
 |  |  | 
 |  | err = CreateNibReference(CFSTR("main"), &nibRef); | 
 |  | if (err ==noErr ) { | 
 |  | makeNibWindow (nibRef); | 
 |  | DisposeNibReference ( nibRef); | 
 |  | } | 
 |  | return; | 
 |  | } |