|
|
1.1 ! root 1: /* ! 2: Hatari - dlgNewDisc.c ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: */ ! 7: char DlgNewDisc_rcsid[] = "Hatari $Id: dlgNewDisc.c,v 1.1 2003/12/29 20:10:04 thothy Exp $"; ! 8: ! 9: #include "main.h" ! 10: #include "configuration.h" ! 11: #include "createBlankImage.h" ! 12: #include "dialog.h" ! 13: #include "sdlgui.h" ! 14: #include "memAlloc.h" ! 15: #include "file.h" ! 16: ! 17: ! 18: #define DLGNEWDISC_DECTRACK 3 ! 19: #define DLGNEWDISC_TRACKSTR 4 ! 20: #define DLGNEWDISC_INCTRACK 5 ! 21: #define DLGNEWDISC_SECTORS9 7 ! 22: #define DLGNEWDISC_SECTORS10 8 ! 23: #define DLGNEWDISC_SECTORS11 9 ! 24: #define DLGNEWDISC_SIDES1 11 ! 25: #define DLGNEWDISC_SIDES2 12 ! 26: #define DLGNEWDISC_SAVE 13 ! 27: #define DLGNEWDISC_EXIT 14 ! 28: ! 29: static char szTracks[3]; ! 30: static int nTracks = 80; ! 31: ! 32: /* The new disc image dialog: */ ! 33: static SGOBJ newdiscdlg[] = ! 34: { ! 35: { SGBOX, 0, 0, 0,0, 28,12, NULL }, ! 36: { SGTEXT, 0, 0, 6,1, 16,1, "New floppy image" }, ! 37: { SGTEXT, 0, 0, 2,3, 7,1, "Tracks:" }, ! 38: { SGBUTTON, 0, 0, 12,3, 1,1, "\x04" }, /* Left-arrow button */ ! 39: { SGTEXT, 0, 0, 14,3, 2,1, szTracks }, ! 40: { SGBUTTON, 0, 0, 17,3, 1,1, "\x03" }, /* Right-arrow button */ ! 41: { SGTEXT, 0, 0, 2,5, 8,1, "Sectors:" }, ! 42: { SGRADIOBUT, 0, SG_SELECTED, 12,5, 4,1, "9" }, ! 43: { SGRADIOBUT, 0, 0, 17,5, 4,1, "10" }, ! 44: { SGRADIOBUT, 0, 0, 22,5, 4,1, "11" }, ! 45: { SGTEXT, 0, 0, 2,7, 6,1, "Sides:" }, ! 46: { SGRADIOBUT, 0, 0, 12,7, 4,1, "1" }, ! 47: { SGRADIOBUT, 0, SG_SELECTED, 17,7, 4,1, "2" }, ! 48: { SGBUTTON, 0, 0, 4,10, 8,1, "Create" }, ! 49: { SGBUTTON, 0, 0, 18,10, 6,1, "Back" }, ! 50: { -1, 0, 0, 0,0, 0,0, NULL } ! 51: }; ! 52: ! 53: ! 54: /*-----------------------------------------------------------------------*/ ! 55: /* ! 56: Show and process the "new blank disc image" dialog. ! 57: */ ! 58: void DlgNewDisc_Main(void) ! 59: { ! 60: int but; ! 61: char *szNewDiscName; ! 62: ! 63: sprintf(szTracks, "%i", nTracks); ! 64: ! 65: SDLGui_CenterDlg(newdiscdlg); ! 66: ! 67: /* Initialize disc image name: */ ! 68: szNewDiscName = Memory_Alloc(FILENAME_MAX); ! 69: strcpy(szNewDiscName, DialogParams.DiscImage.szDiscImageDirectory); ! 70: if (strlen(szNewDiscName) < FILENAME_MAX-12) ! 71: strcat(szNewDiscName, "new_disc.st"); ! 72: ! 73: /* Draw and process the dialog */ ! 74: do ! 75: { ! 76: but = SDLGui_DoDialog(newdiscdlg); ! 77: switch(but) ! 78: { ! 79: case DLGNEWDISC_DECTRACK: ! 80: if (nTracks > 40) ! 81: nTracks -= 1; ! 82: sprintf(szTracks, "%i", nTracks); ! 83: break; ! 84: case DLGNEWDISC_INCTRACK: ! 85: if (nTracks < 85) ! 86: nTracks += 1; ! 87: sprintf(szTracks, "%i", nTracks); ! 88: break; ! 89: case DLGNEWDISC_SAVE: ! 90: if (SDLGui_FileSelect(szNewDiscName, NULL, TRUE)) ! 91: { ! 92: if (!File_DoesFileNameEndWithSlash(szNewDiscName)) ! 93: { ! 94: int nSectors, nSides; ! 95: ! 96: /* Get number of sectors */ ! 97: if (newdiscdlg[DLGNEWDISC_SECTORS11].state & SG_SELECTED) ! 98: nSectors = 11; ! 99: else if (newdiscdlg[DLGNEWDISC_SECTORS10].state & SG_SELECTED) ! 100: nSectors = 10; ! 101: else ! 102: nSectors = 9; ! 103: ! 104: /* Get number of sides */ ! 105: if (newdiscdlg[DLGNEWDISC_SIDES1].state & SG_SELECTED) ! 106: nSides = 1; ! 107: else ! 108: nSides = 2; ! 109: ! 110: CreateBlankImage_CreateFile(szNewDiscName, nTracks, nSectors, nSides); ! 111: } ! 112: } ! 113: break; ! 114: } ! 115: } ! 116: while (but != DLGNEWDISC_EXIT && !bQuitProgram); ! 117: ! 118: Memory_Free(szNewDiscName); ! 119: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.