| version 1.1, 2003/10/31 16:55:06 | version 1.5, 2003/11/11 16:33:51 | 
| Line 1 | Line 1 | 
 | #include        "compiler.h" | #include        "compiler.h" | 
 | #include        "resource.h" | #include        "resource.h" | 
 | #include        "sysmng.h" | #include        "sysmng.h" | 
 | #include        "dialog.h" |  | 
 | #include        "pccore.h" | #include        "pccore.h" | 
| #include        "fddfile.h" | #include        "dialog.h" | 
 | #include        "diskdrv.h" | #include        "diskdrv.h" | 
 | #if 0 |  | 
 | #include        "newdisk.h" |  | 
 | #endif |  | 
 | #include        "font.h" | #include        "font.h" | 
 | #include        "iocore.h" | #include        "iocore.h" | 
 | #include        "np2.h" | #include        "np2.h" | 
| Line 16 | Line 12 | 
 | #include        "dosio.h" | #include        "dosio.h" | 
 | #include        "menu.h" | #include        "menu.h" | 
 | #include        "s98.h" | #include        "s98.h" | 
|  | #include        "fdefine.h" | 
| static Handle GetDlgItem(DialogPtr hWnd, short pos) { | #include        "toolwin.h" | 
|  |  | 
| Handle  ret; |  | 
| Rect    rct; |  | 
| short   s; |  | 
|  |  | 
| GetDialogItem(hWnd, pos, &s, &ret, &rct); |  | 
| return(ret); |  | 
| } |  | 
|  |  | 
| void AboutDialogProc(void) { |  | 
|  |  | 
| DialogPtr       hDlg; |  | 
| Str255          verstr; |  | 
| int                     done; |  | 
| short           item; |  | 
|  |  | 
| hDlg = GetNewDialog(IDD_ABOUT, NULL, (WindowPtr)-1); |  | 
| if (!hDlg) { |  | 
| return; |  | 
| } |  | 
| mkstr255(verstr, np2version); |  | 
| SetDialogItemText(GetDlgItem(hDlg, IDD_VERSION), verstr); |  | 
| SetDialogDefaultItem(hDlg, IDOK); |  | 
|  |  | 
| done = 0; |  | 
| while(!done) { |  | 
| ModalDialog(NULL, &item); |  | 
| switch(item) { |  | 
| case IDOK: |  | 
| done = 1; |  | 
| break; |  | 
| } |  | 
| } |  | 
| DisposeDialog(hDlg); |  | 
| } |  | 
|  |  | 
 |  |  | 
 | // ---- | // ---- | 
 |  |  | 
| Line 109  void fsspec2path(FSSpec *fs, char *dst, | Line 69  void fsspec2path(FSSpec *fs, char *dst, | 
 | } while(cipbr.dirInfo.ioDrDirID != fsRtDirID); | } while(cipbr.dirInfo.ioDrDirID != fsRtDirID); | 
 | } | } | 
 |  |  | 
 | #if 1 |  | 
 | static NavDialogRef navWin; | static NavDialogRef navWin; | 
 |  |  | 
 | static pascal void dummyproc(NavEventCallbackMessage sel, NavCBRecPtr prm, | static pascal void dummyproc(NavEventCallbackMessage sel, NavCBRecPtr prm, | 
 | NavCallBackUserData ud) { | NavCallBackUserData ud) { | 
 | switch( sel ) | switch( sel ) | 
| Line 128  static pascal void dummyproc(NavEventCal | Line 88  static pascal void dummyproc(NavEventCal | 
 | (void)ud; | (void)ud; | 
 | } | } | 
 |  |  | 
| static BOOL dialog_fileselect(char *name, int size) { | BOOL dialog_fileselect(char *name, int size, WindowRef parent) { | 
 |  |  | 
 | BOOL                            ret; | BOOL                            ret; | 
 | OSErr                           err; | OSErr                           err; | 
| Line 142  static BOOL dialog_fileselect(char *name | Line 102  static BOOL dialog_fileselect(char *name | 
 | ret = FALSE; | ret = FALSE; | 
 | NavGetDefaultDialogCreationOptions(&optNav); | NavGetDefaultDialogCreationOptions(&optNav); | 
 | optNav.modality=kWindowModalityWindowModal; | optNav.modality=kWindowModalityWindowModal; | 
| optNav.parentWindow=hWndMain; | optNav.parentWindow=parent; | 
 | optNav.optionFlags+=kNavNoTypePopup; | optNav.optionFlags+=kNavNoTypePopup; | 
 | proc = NewNavEventUPP(dummyproc); | proc = NewNavEventUPP(dummyproc); | 
 | ret=NavCreateChooseFileDialog(&optNav,NULL,proc,NULL,NULL,NULL,&navWin); | ret=NavCreateChooseFileDialog(&optNav,NULL,proc,NULL,NULL,NULL,&navWin); | 
| Line 173  static BOOL dialog_fileselect(char *name | Line 133  static BOOL dialog_fileselect(char *name | 
 | fsel_exit: | fsel_exit: | 
 | return(ret); | return(ret); | 
 | } | } | 
 | #else |  | 
 | BOOL dialog_fileselect(char *name, int size) { |  | 
 |  |  | 
| StandardFileReply       sfr; | BOOL dialog_filewriteselect(OSType type, char *title, FSSpec *fsc, WindowRef parentWindow) | 
|  | { | 
|  | OSType                          sign='SMil'; | 
|  | NavEventUPP                     eventUPP; | 
|  | NavReplyRecord          reply; | 
|  | DescType                        rtype; | 
|  | OSErr                           ret; | 
|  | AEKeyword                       key; | 
|  | Size                            len; | 
|  | FSRef                               parent; | 
|  | UniCharCount                ulen; | 
|  | UniChar*                    buffer = NULL; | 
|  | NavDialogCreationOptions    copt; | 
|  |  | 
|  | InitCursor(); | 
|  | NavGetDefaultDialogCreationOptions(&copt); | 
|  | copt.parentWindow = parentWindow; | 
|  | copt.saveFileName = CFStringCreateWithCString(NULL, title, CFStringGetSystemEncoding()); | 
|  | copt.optionFlags += kNavNoTypePopup; | 
|  | copt.modality = kWindowModalityWindowModal; | 
|  | eventUPP=NewNavEventUPP( dummyproc ); | 
|  | NavCreatePutFileDialog(&copt, type, sign, eventUPP, NULL, &navWin); | 
|  |  | 
|  | NavDialogRun(navWin); | 
|  | RunAppModalLoopForWindow(NavDialogGetWindow(navWin)); | 
|  |  | 
|  | NavDialogGetReply(navWin, &reply); | 
|  | NavDialogDispose(navWin); | 
|  | DisposeNavEventUPP(eventUPP); | 
 |  |  | 
| StandardGetFile(NULL, -1, NULL, &sfr); | if( reply.validRecord) | 
| if (sfr.sfGood) { | { | 
| fsspec2path(&sfr.sfFile, name, size); | ret=AEGetNthPtr( &(reply.selection),1,typeFSRef,&key,&rtype,(Ptr)&parent,(long)sizeof(FSRef),&len ); | 
| return(TRUE); | ulen = (UniCharCount)CFStringGetLength(reply.saveFileName); | 
| } | buffer = (UniChar*)NewPtr(ulen); | 
| else { | CFStringGetCharacters(reply.saveFileName, CFRangeMake(0, ulen), buffer); | 
| return(FALSE); | ret = FSCreateFileUnicode(&parent, ulen, buffer, kFSCatInfoNone, NULL, NULL, fsc); | 
|  | DisposePtr((Ptr)buffer); | 
|  | NavDisposeReply( &reply ); | 
|  | if (ret == noErr) { | 
|  | return true; | 
|  | } | 
 | } | } | 
 |  | return( false ); | 
 | } | } | 
 | #endif |  | 
 |  |  | 
 |  | // ---- | 
 |  |  | 
 | 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 (dialog_fileselect(fname, sizeof(fname))) { | if (dialog_fileselect(fname, sizeof(fname), hWndMain)) { | 
| diskdrv_setfdd(drv, fname, 0); | if (file_getftype(fname)==FTYPE_D88 || file_getftype(fname)==FTYPE_BETA) { | 
|  | diskdrv_setfdd(drv, fname, 0); | 
|  | toolwin_setfdd(drv, fname); | 
|  | } | 
 | } | } | 
 | } | } | 
 | } | } | 
| Line 206  void dialog_changehdd(BYTE drv) { | Line 201  void dialog_changehdd(BYTE drv) { | 
 | char    fname[MAX_PATH]; | char    fname[MAX_PATH]; | 
 |  |  | 
 | if (drv < 2) { | if (drv < 2) { | 
| if (dialog_fileselect(fname, sizeof(fname))) { | if (dialog_fileselect(fname, sizeof(fname), hWndMain)) { | 
| diskdrv_sethdd(drv, fname); | if (file_getftype(fname)==FTYPE_HDI || file_getftype(fname)==FTYPE_THD) { | 
|  | diskdrv_sethdd(drv, fname); | 
|  | } | 
 | } | } | 
 | } | } | 
 | } | } | 
| Line 217  void dialog_font(void) { | Line 214  void dialog_font(void) { | 
 |  |  | 
 | char        name[1024]; | char        name[1024]; | 
 |  |  | 
| if (dialog_fileselect(name, 1024)) { | if (dialog_fileselect(name, 1024, hWndMain)) { | 
 | if ((name != NULL) && (font_load(name, FALSE))) { | if ((name != NULL) && (font_load(name, FALSE))) { | 
 | gdcs.textdisp |= GDCSCRN_ALLDRAW2; | gdcs.textdisp |= GDCSCRN_ALLDRAW2; | 
 | milstr_ncpy(np2cfg.fontfile, name, sizeof(np2cfg.fontfile)); | milstr_ncpy(np2cfg.fontfile, name, sizeof(np2cfg.fontfile)); | 
| Line 235  void dialog_writebmp(void) { | Line 232  void dialog_writebmp(void) { | 
 |  |  | 
 | bmp = scrnbmp(); | bmp = scrnbmp(); | 
 | if (bmp) { | if (bmp) { | 
| if (saveFile('BMP ', "np2.bmp", &fss)) { | if (dialog_filewriteselect('BMP ', "np2.bmp", &fss, hWndMain)) { | 
 | fsspec2path(&fss, path, MAX_PATH); | fsspec2path(&fss, path, MAX_PATH); | 
 | fh = file_create(path); | fh = file_create(path); | 
 | if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { | 
| Line 258  void dialog_s98(void) { | Line 255  void dialog_s98(void) { | 
 | if (check) { | if (check) { | 
 | check = FALSE; | check = FALSE; | 
 | } | } | 
| else if (saveFile('.S98', "S98 log.s98", &fsc)) { | else if (dialog_filewriteselect('.S98', "S98 log.s98", &fsc, hWndMain)) { | 
 | fsspec2path(&fsc, fname, MAX_PATH); | fsspec2path(&fsc, fname, MAX_PATH); | 
 | if (S98_open(fname) == SUCCESS) { | if (S98_open(fname) == SUCCESS) { | 
 | check = TRUE; | check = TRUE; |