|
|
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.