|
|
| version 1.2, 2004/08/14 05:41:05 | version 1.4, 2004/08/15 11:48:32 |
|---|---|
| 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, OPEN_FDD)) { |
| diskdrv_setfdd(drv, fname, 0); | diskdrv_setfddex(drv, fname, file_getftype(fname), 0); |
| switch (drv) { | switch (drv) { |
| case 0: | case 0: |
| Line 49 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; | |
| int media; | |
| int done; | |
| short item; | |
| Str255 disklabel; | |
| ControlHandle btn[2]; | |
| hDlg = GetNewDialog(IDD_NEWFDDDISK, NULL, (WindowPtr)-1); | |
| if (!hDlg) { | |
| return(IDCANCEL); | |
| } | |
| SelectDialogItemText(hDlg, IDC_DISKLABEL, 0x0000, 0x7fff); | static pascal OSStatus cfWinproc(EventHandlerCallRef myHandler, EventRef event, void* userData) { |
| btn[0] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2DD); | OSStatus err = eventNotHandledErr; |
| btn[1] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2HD); | HICommand cmd; |
| SetControlValue(btn[0], 0); | NEWDISK disk; |
| SetControlValue(btn[1], 1); | char disklabel[256]; |
| media = 1; | char path[MAX_PATH]; |
| SetDialogDefaultItem(hDlg, IDOK); | int media; |
| SetDialogCancelItem(hDlg, IDCANCEL); | WindowRef win; |
| done = 0; | win = (WindowRef)userData; |
| while(!done) { | if (GetEventClass(event)==kEventClassCommand && GetEventKind(event)==kEventCommandProcess ) { |
| ModalDialog(NULL, &item); | GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &cmd); |
| switch(item) { | switch (cmd.commandID) |
| case IDOK: | { |
| case kHICommandOK: | |
| getFieldText(getControlRefByID('name', 0, win), disklabel); | |
| media = GetControl32BitValue(getControlRefByID('mode', 0, win)); | |
| 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; | |
| } |