Esempio n. 1
0
/**
 * Show and process the Boot options dialog.
 */
void DlgSound_Main(void)
{
    int but;
    
    SDLGui_CenterDlg(sounddlg);
    
    /* Set up the dialog from actual values */
    if (ConfigureParams.Sound.bEnableSound)
        sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED;
    else
        sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED;
    
    /* Draw and process the dialog */
    
    do
    {
        but = SDLGui_DoDialog(sounddlg, NULL);
    }
    while (but != DLGSOUND_EXIT && but != SDLGUI_QUIT
           && but != SDLGUI_ERROR && !bQuitProgram);
    
    
    /* Read values from dialog */
    ConfigureParams.Sound.bEnableSound = sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED;
}
Esempio n. 2
0
/**
 * Show and process the Missing Disk dialog.
 */
void DlgMissing_Disk(const char* type, int num, char *imgname, bool *inserted, bool *wp)
{
    int but;
    
    char dlgname_missingdisk[64];
    char missingdisk_alert[64];
    char missingdisk_disk[64];
    
    bool bOldMouseVisibility;
    bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
    SDL_ShowCursor(SDL_ENABLE);

    SDLGui_CenterDlg(missingdiskdlg);
    
    /* Set up dialog to actual values: */
    sprintf(missingdisk_alert, "%s drive %i: disk image not found!", type, num);
    missingdiskdlg[DLGMISDSK_ALERT].txt = missingdisk_alert;
    
    sprintf(missingdisk_disk, "%s %i:", type, num);
    missingdiskdlg[DLGMISDSK_DRIVE].txt = missingdisk_disk;
    
    File_ShrinkName(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w);
    
    missingdiskdlg[DLGMISDSK_NAME].txt = dlgname_missingdisk;
    
    
    /* Draw and process the dialog */
    do
    {
        if (*wp)
            missingdiskdlg[DLGMISDSK_PROTECT].txt = "read-only";
        else
            missingdiskdlg[DLGMISDSK_PROTECT].txt = "";

        but = SDLGui_DoDialog(missingdiskdlg, NULL);
        switch (but)
        {
                
            case DLGMISDSK_BROWSE:
                SDLGui_DiskSelect(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w, wp);
                break;
            case DLGMISDSK_REMOVE:
                *inserted = false;
                *wp = false;
                *imgname = '\0';
                break;
            case DLGMISDSK_QUIT:
                bQuitProgram = true;
                break;
                
            default:
                break;
        }
    }
    while (but != DLGMISDSK_SELECT && but != DLGMISDSK_REMOVE &&
           but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram);
    
    SDL_ShowCursor(bOldMouseVisibility);
}
Esempio n. 3
0
/**
 * Show the "about" dialog:
 */
void Dialog_AboutDlg(void)
{
	/* Center PROG_NAME title string */
	aboutdlg[1].x = (aboutdlg[0].w - strlen(PROG_NAME)) / 2;

	SDLGui_CenterDlg(aboutdlg);
	SDLGui_DoDialog(aboutdlg, NULL);
}
Esempio n. 4
0
/**
 * Show and process the "Keyboard" dialog.
 */
void Dialog_KeyboardDlg(void)
{
	int but;
#if ENABLE_LOADED_OPTION
	char dlgmapfile[44];
#endif
	SDLGui_CenterDlg(keyboarddlg);

	/* Set up dialog from actual values: */
    keyboarddlg[DLGKEY_SCANCODE].state &= ~SG_SELECTED;
    keyboarddlg[DLGKEY_SYMBOLIC].state &= ~SG_SELECTED;
    
    switch (ConfigureParams.Keyboard.nKeymapType) {
        case KEYMAP_SCANCODE:
            keyboarddlg[DLGKEY_SCANCODE].state |= SG_SELECTED;
            break;
        case KEYMAP_SYMBOLIC:
            keyboarddlg[DLGKEY_SYMBOLIC].state |= SG_SELECTED;
            break;
            
        default:
            break;
    }
#if ENABLE_LOADED_OPTION
	File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w);
	keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile;
#endif
	if (ConfigureParams.Keyboard.bDisableKeyRepeat)
		keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED;
	else
		keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED;

	/* Show the dialog: */
	do
	{
		but = SDLGui_DoDialog(keyboarddlg, NULL);
#if ENABLE_LOADED_OPTION
		if (but == DLGKEY_MAPBROWSE)
		{
			SDLGui_FileConfSelect(dlgmapfile,
			                      ConfigureParams.Keyboard.szMappingFileName,
			                      keyboarddlg[DLGKEY_MAPNAME].w, false);
		}
#endif
	}
	while (but != DLGKEY_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read values from dialog: */
	if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED)
		ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE;
	else
		ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC;
#if ENABLE_LOADED_OPTION
	else
Esempio n. 5
0
/**
 * Show and process the joystick dialog.
 */
void Dialog_JoyDlg(void)
{
	int but;

	SDLGui_CenterDlg(joydlg);

	joydlg[DLGJOY_MSJY].state &= ~SG_SELECTED;
	joydlg[DLGJOY_JYJY].state &= ~SG_SELECTED;
	joydlg[DLGJOY_MSMS].state &= ~SG_SELECTED;

	int j0 = currprefs.jports[0].id/ JSEM_JOYS; 
	int j1 = currprefs.jports[1].id/ JSEM_JOYS;

	if (j0 == 2 && j1 == 1) { //mouse & joy-1
		joydlg[DLGJOY_MSJY].state |= SG_SELECTED;
	}
	else if (j0 == 1 && j1 == 1) { //joy-2 & joy-1
		joydlg[DLGJOY_JYJY].state |= SG_SELECTED;
	}
	else {
		joydlg[DLGJOY_MSMS].state |= SG_SELECTED;
	}

	do
	{
    		but = SDLGui_DoDialog(joydlg, NULL);

 		gui_poll_events();
	}
	while (but != DLGJOY_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);
	

	if(joydlg[DLGJOY_MSJY].state & SG_SELECTED){
		changed_prefs.jports[0].id = JSEM_MICE;
		changed_prefs.jports[1].id = JSEM_JOYS;
		changed_prefs.mouse_settings[1]->enabled = 0;
	}
	else if(joydlg[DLGJOY_JYJY].state & SG_SELECTED){
		changed_prefs.jports[0].id = JSEM_JOYS + 1;
		changed_prefs.jports[1].id = JSEM_JOYS;
		changed_prefs.mouse_settings[1]->enabled = 0;
	}
	else if(joydlg[DLGJOY_MSMS].state & SG_SELECTED){
		changed_prefs.jports[0].id = JSEM_MICE;
		changed_prefs.jports[1].id = JSEM_MICE + 1;
		changed_prefs.mouse_settings[1]->enabled = 1;
	}

	inputdevice_config_change();
	check_prefs_changed_custom();


}
Esempio n. 6
0
/**
 * Show and process the "new blank disk image" dialog.
 * Return file name of last created diskimage or NULL if none created.
 * Caller needs to free the name.
 */
char *DlgNewDisk_Main(void)
{
	int but;
	char *szNewDiskName, *tmpname, *retname = NULL;
	sprintf(szTracks, "%i", nTracks);

 	SDLGui_CenterDlg(newdiskdlg);

	/* Initialize disk image name: */
	szNewDiskName = File_MakePath(ConfigureParams.DiskImage.szDiskImageDirectory, "new_disk.st", NULL);
	if (!szNewDiskName)
		return NULL;

	/* Draw and process the dialog */
	do
	{
		but = SDLGui_DoDialog(newdiskdlg, NULL, false);
		switch(but)
		{
		 case DLGNEWDISK_DECTRACK:
			if (nTracks > 40)
				nTracks -= 1;
			sprintf(szTracks, "%i", nTracks);
			break;
		 case DLGNEWDISK_INCTRACK:
			if (nTracks < 85)
				nTracks += 1;
			sprintf(szTracks, "%i", nTracks);
			break;
		 case DLGNEWDISK_SAVE:
			tmpname = SDLGui_FileSelect("New floppy image:", szNewDiskName, NULL, true);
			if (tmpname)
			{
				if (DlgNewDisk_CreateDisk(tmpname))
				{
					if (retname)
						free(retname);
					retname = tmpname;
				}
				else
					free(tmpname);
			}
			break;
		}
	}
	while (but != DLGNEWDISK_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);

	free(szNewDiskName);
	return retname;
}
Esempio n. 7
0
/**
 * Show and process the "Keyboard" dialog.
 */
void Dialog_KeyboardDlg(void)
{
	int i, but;
	char dlgmapfile[44];

	SDLGui_CenterDlg(keyboarddlg);

	/* Set up dialog from actual values: */
	for (i = DLGKEY_SYMBOLIC; i <= DLGKEY_FROMFILE; i++)
	{
		keyboarddlg[i].state &= ~SG_SELECTED;
	}
	keyboarddlg[DLGKEY_SYMBOLIC+ConfigureParams.Keyboard.nKeymapType].state |= SG_SELECTED;

	File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName,
	                keyboarddlg[DLGKEY_MAPNAME].w);
	keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile;

	if (ConfigureParams.Keyboard.bDisableKeyRepeat)
		keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED;
	else
		keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED;

	/* Show the dialog: */
	do
	{
		but = SDLGui_DoDialog(keyboarddlg, NULL);

		if (but == DLGKEY_MAPBROWSE)
		{
			SDLGui_FileConfSelect(dlgmapfile,
			                      ConfigureParams.Keyboard.szMappingFileName,
			                      keyboarddlg[DLGKEY_MAPNAME].w, FALSE);
		}
	}
	while (but != DLGKEY_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read values from dialog: */
	if (keyboarddlg[DLGKEY_SYMBOLIC].state & SG_SELECTED)
		ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC;
	else if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED)
		ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE;
	else
		ConfigureParams.Keyboard.nKeymapType = KEYMAP_LOADED;

	ConfigureParams.Keyboard.bDisableKeyRepeat = (keyboarddlg[DLGKEY_DISREPEAT].state & SG_SELECTED);
}
Esempio n. 8
0
/**
 * Show the "about" dialog:
 */
void Dialog_AboutDlg(void)
{
   int but;
   /* Center PROG_NAME title string */
   aboutdlg[1].x = (aboutdlg[0].w - strlen(PROG_NAME)) / 2;

   SDLGui_CenterDlg(aboutdlg);

   do
   {
      but=SDLGui_DoDialog(aboutdlg, NULL);
      gui_poll_events();

   }
   while (but != DLGABOUT_EXIT && but != SDLGUI_QUIT
         && but != SDLGUI_ERROR && !bQuitProgram);
}
Esempio n. 9
0
/**
 * Show the "alert" dialog. Return true if user pressed "OK".
 */
static int DlgAlert_ShowDlg(const char *text)
{
	static int maxlen = sizeof(dlglines[0])-1;
	char *t = (char *)malloc(strlen(text)+1);
	char *orig_t = t;
	int lines, i, len, offset;
	bool bOldMouseVisibility;
	int nOldMouseX, nOldMouseY;

	strcpy(t, text);
	lines = DlgAlert_FormatTextToBox(t, maxlen, &len);
	offset = (maxlen-len)/2;

	for(i=0; i<MAX_LINES; i++)
	{
		if (i < lines)
		{
			/* center text to current dlgline */
			memset(dlglines[i], ' ', offset);
			strcpy(dlglines[i] + offset, t);
			t += strlen(t)+1;
		}
		else
		{
			dlglines[i][0] = '\0';
		}
	}

	free(orig_t);

	if (SDLGui_SetScreen(sdlscrn))
		return false;
	SDLGui_CenterDlg(alertdlg);

	SDL_GetMouseState(&nOldMouseX, &nOldMouseY);
	bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
	SDL_ShowCursor(SDL_ENABLE);

	i = SDLGui_DoDialog(alertdlg, NULL);

	SDL_UpdateRect(sdlscrn, 0,0, 0,0);
	SDL_ShowCursor(bOldMouseVisibility);
	Main_WarpMouse(nOldMouseX, nOldMouseY);

	return (i == DLGALERT_OK);
}
Esempio n. 10
0
/**
 * Show the "alert" dialog. Return true if user pressed "OK".
 */
static int DlgAlert_ShowDlg(const char *text)
{
	static int maxlen = sizeof(dlglines[0])-1;
	char *t = (char *)malloc(strlen(text)+1);
	char *orig_t = t;
	int lines, i, len, offset;
	bool bOldMouseVisibility;
	int nOldMouseX, nOldMouseY;

	strcpy(t, text);
	lines = DlgAlert_FormatTextToBox(t, maxlen, &len);
	offset = (maxlen-len)/2;

	for(i=0; i<MAX_LINES; i++)
	{
		if (i < lines)
		{
			/* center text to current dlgline */
			memset(dlglines[i], ' ', offset);
			strcpy(dlglines[i] + offset, t);
			t += strlen(t)+1;
		}
		else
		{
			dlglines[i][0] = '\0';
		}
	}

	free(orig_t);

	if (SDLGui_SetScreen(/*sdlscrn*/))
		return false;
	SDLGui_CenterDlg(alertdlg);

        do
	{
	       i = SDLGui_DoDialog(alertdlg, NULL);
               gui_poll_events();

	}
	while (i != DLGALERT_OK && i != DLGALERT_CANCEL && i != SDLGUI_QUIT
	        && i != SDLGUI_ERROR && !bQuitProgram);

	return (i == DLGALERT_OK);
}
Esempio n. 11
0
/**
 * Show and process the ROM dialog.
 */
void DlgRom_Main(void)
{
	char szDlgTosName[47];
	char szDlgCartName[47];
	int but;

	SDLGui_CenterDlg(romdlg);

	File_ShrinkName(szDlgTosName, ConfigureParams.Rom.szTosImageFileName, sizeof(szDlgTosName)-1);
	romdlg[DLGROM_TOSNAME].txt = szDlgTosName;

	File_ShrinkName(szDlgCartName, ConfigureParams.Rom.szCartridgeImageFileName, sizeof(szDlgCartName)-1);
	romdlg[DLGROM_CARTNAME].txt = szDlgCartName;

	do
	{
		but = SDLGui_DoDialog(romdlg, NULL);
		switch (but)
		{
		 case DLGROM_TOSBROWSE:
			/* Show and process the file selection dlg */
			SDLGui_FileConfSelect("TOS ROM image:", szDlgTosName,
					      ConfigureParams.Rom.szTosImageFileName,
					      sizeof(szDlgTosName)-1,
					      false);
			break;

		 case DLGROM_CARTEJECT:
			szDlgCartName[0] = 0;
			ConfigureParams.Rom.szCartridgeImageFileName[0] = 0;
			break;

		 case DLGROM_CARTBROWSE:
			/* Show and process the file selection dlg */
			SDLGui_FileConfSelect("Cartridge image:", szDlgCartName,
					      ConfigureParams.Rom.szCartridgeImageFileName,
					       sizeof(szDlgCartName)-1,
					      false);
			break;
		}
	}
	while (but != DLGROM_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);
}
Esempio n. 12
0
/**
 * Show and process the ROM dialog.
 */
void DlgRom_Main(void)
{
	char szDlgTosName[47];
	char szDlgCartName[47];
	int32_t but;

	SDLGui_CenterDlg(romdlg);

	File_ShrinkName(szDlgTosName, szTosImageFileName, sizeof(szDlgTosName)-1);
	romdlg[DLGROM_TOSNAME].txt = szDlgTosName;

	do
	{
		but = SDLGui_DoDialog(romdlg, NULL);
		switch (but)
		{
		 case DLGROM_TOSBROWSE:
			/* Show and process the file selection dlg */
			SDLGui_FileConfSelect(szDlgTosName,
					      szTosImageFileName,
					      sizeof(szDlgTosName)-1,
					      false);
			break;

		}

                gui_poll_events();

	}
	while (but != DLGROM_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);

	if(szTosImageFileName!=NULL && strcmp(szTosImageFileName,"")!=0 && strcmp(szTosImageFileName,"./")!=0 ){
		printf("rom:(%s)\n",szTosImageFileName);
		strcpy(changed_prefs.romfile,szTosImageFileName );
		MUSTRESET=1;
	}

}
Esempio n. 13
0
/**
 * Ask whether new disk should be inserted to A: or B: and if yes, insert.
 */
static void DlgFloppy_QueryInsert(char *namea, int ida, char *nameb, int idb, const char *path)
{
	const char *realname;
	int diskid, dlgid;
	char *dlgname;

	SDLGui_CenterDlg(alertdlg);

int but;

do{        
	but=SDLGui_DoDialog(alertdlg, NULL);

	{
		if(but== DLGMOUNT_A){
			dlgname = namea;
			dlgid = ida;
			diskid = 0;
                }
		else if(but == DLGMOUNT_B){
			dlgname = nameb;
			dlgid = idb;
			diskid = 1;
                }
		
	}
        gui_poll_events();
}
while (but != DLGMOUNT_CANCEL && but != DLGMOUNT_A  && but != DLGMOUNT_B && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);


	realname = Floppy_SetDiskFileName(diskid, path, NULL);
	if (realname)
		File_ShrinkName(dlgname, realname, floppydlg[dlgid].w);
}
Esempio n. 14
0
/**
 * Show and process the Boot options dialog.
 */
void DlgBoot_Main(void)
{
    int i;
	int but;

	SDLGui_CenterDlg(bootdlg);

    /* Set up the dialog from actual values */
    for (i = DLGBOOT_ROMMONITOR; i <= DLGBOOT_FLOPPY; i++)
	{
		bootdlg[i].state &= ~SG_SELECTED;
	}
    switch (ConfigureParams.Boot.nBootDevice) {
        case BOOT_ROM:
            bootdlg[DLGBOOT_ROMMONITOR].state |= SG_SELECTED;
            break;
        case BOOT_SCSI:
            bootdlg[DLGBOOT_SCSI].state |= SG_SELECTED;
            break;
        case BOOT_ETHERNET:
            bootdlg[DLGBOOT_ETHERNET].state |= SG_SELECTED;
            break;
        case BOOT_MO:
            bootdlg[DLGBOOT_MO].state |= SG_SELECTED;
            break;
        case BOOT_FLOPPY:
            bootdlg[DLGBOOT_FLOPPY].state |= SG_SELECTED;
            break;
            
        default:
            break;
    }
    
    for (i = DLGBOOT_DRAMTEST; i <= DLGBOOT_EXTENDED_POT; i++) {
        bootdlg[i].state &= ~SG_SELECTED;
    }
    if (ConfigureParams.Boot.bEnableDRAMTest)
        bootdlg[DLGBOOT_DRAMTEST].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bEnablePot)
        bootdlg[DLGBOOT_ENABLE_POT].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bEnableSoundTest)
        bootdlg[DLGBOOT_SOUNDTEST].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bEnableSCSITest)
        bootdlg[DLGBOOT_SCSITEST].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bLoopPot)
        bootdlg[DLGBOOT_LOOP].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bVerbose)
        bootdlg[DLGBOOT_VERBOSE].state |= SG_SELECTED;
    if (ConfigureParams.Boot.bExtendedPot)
        bootdlg[DLGBOOT_EXTENDED_POT].state |= SG_SELECTED;
    

    /* Draw and process the dialog */
    
	do
	{
		but = SDLGui_DoDialog(bootdlg, NULL);
		switch (but)
		{
            case DLGBOOT_ENABLE_POT:
                if (!(bootdlg[DLGBOOT_ENABLE_POT].state & SG_SELECTED)) {
                    bootdlg[DLGBOOT_SOUNDTEST].state &= ~SG_SELECTED;
                    bootdlg[DLGBOOT_SCSITEST].state &= ~SG_SELECTED;
                    bootdlg[DLGBOOT_LOOP].state &= ~SG_SELECTED;
                    bootdlg[DLGBOOT_VERBOSE].state &= ~SG_SELECTED;
                }
                
            case DLGBOOT_SOUNDTEST:
            case DLGBOOT_SCSITEST:
            case DLGBOOT_LOOP:
            case DLGBOOT_VERBOSE:
                if (bootdlg[but].state & SG_SELECTED) {
                    bootdlg[DLGBOOT_ENABLE_POT].state |= SG_SELECTED;
                }
                break;
            default: break;
		}
	}
	while (but != DLGBOOT_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);
    
    
    /* Read values from dialog */
    if (bootdlg[DLGBOOT_ROMMONITOR].state & SG_SELECTED)
        ConfigureParams.Boot.nBootDevice = BOOT_ROM;
    else if (bootdlg[DLGBOOT_SCSI].state & SG_SELECTED)
        ConfigureParams.Boot.nBootDevice = BOOT_SCSI;
    else if (bootdlg[DLGBOOT_ETHERNET].state & SG_SELECTED)
        ConfigureParams.Boot.nBootDevice = BOOT_ETHERNET;
    else if (bootdlg[DLGBOOT_MO].state & SG_SELECTED)
        ConfigureParams.Boot.nBootDevice = BOOT_MO;
    else if (bootdlg[DLGBOOT_FLOPPY].state & SG_SELECTED)
        ConfigureParams.Boot.nBootDevice = BOOT_FLOPPY;

    ConfigureParams.Boot.bEnableDRAMTest = bootdlg[DLGBOOT_DRAMTEST].state & SG_SELECTED;
    ConfigureParams.Boot.bEnablePot = bootdlg[DLGBOOT_ENABLE_POT].state & SG_SELECTED;
    ConfigureParams.Boot.bEnableSoundTest = bootdlg[DLGBOOT_SOUNDTEST].state & SG_SELECTED;
    ConfigureParams.Boot.bEnableSCSITest = bootdlg[DLGBOOT_SCSITEST].state & SG_SELECTED;
    ConfigureParams.Boot.bLoopPot = bootdlg[DLGBOOT_LOOP].state & SG_SELECTED;
    ConfigureParams.Boot.bVerbose = bootdlg[DLGBOOT_VERBOSE].state & SG_SELECTED;
    ConfigureParams.Boot.bExtendedPot = bootdlg[DLGBOOT_EXTENDED_POT].state & SG_SELECTED;
}
Esempio n. 15
0
/**
 * Show and process a file selection dialog.
 * Returns path/name user selected or NULL if user canceled
 * input: zip_path = pointer's pointer to buffer to contain file path
 * within a selected zip file, or NULL if browsing zip files is disallowed.
 * bAllowNew: true if the user is allowed to insert new file names.
 */
char* SDLGui_FileSelect(const char *path_and_name, char **zip_path, bool bAllowNew)
{
	struct dirent **files = NULL;
	char *pStringMem;
	char *retpath = NULL;
	const char *home;
	char *path, *fname;                 /* The actual file and path names */
	bool reloaddir = true;              /* Do we have to reload the directory file list? */
	int retbut;
	bool bOldMouseVisibility;
	int selection;                      /* The selection index */
	char *zipfilename;                  /* Filename in zip file */
	char *zipdir;
	bool browsingzip = false;           /* Are we browsing an archive? */
	zip_dir *zipfiles = NULL;
	SDL_Event sdlEvent;
	int yScrolbar_size;				/* Size of the vertical scrollbar */

	ypos = 0;
	scrollbar_Ypos = 0.0;
	refreshentries = true;
	entries = 0;

	/* Allocate memory for the file and path name strings: */
	pStringMem = malloc(4 * FILENAME_MAX);
	path = pStringMem;
	fname = pStringMem + FILENAME_MAX;
	zipdir = pStringMem + 2 * FILENAME_MAX;
	zipfilename = pStringMem + 3 * FILENAME_MAX;
	zipfilename[0] = 0;
	fname[0] = 0;
	path[0] = 0;

	/* Save mouse state and enable cursor */
	bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
	SDL_ShowCursor(SDL_ENABLE);

	SDLGui_CenterDlg(fsdlg);
	if (bAllowNew)
	{
		fsdlg[SGFSDLG_FILENAME].type = SGEDITFIELD;
		fsdlg[SGFSDLG_FILENAME].flags |= SG_EXIT;
	}
	else
	{
		fsdlg[SGFSDLG_FILENAME].type = SGTEXT;
		fsdlg[SGFSDLG_FILENAME].flags &= ~SG_EXIT;
	}

	/* Prepare the path and filename variables */
	if (path_and_name && path_and_name[0])
	{
		strncpy(path, path_and_name, FILENAME_MAX);
		path[FILENAME_MAX-1] = '\0';
	}
	if (!File_DirExists(path))
	{
		File_SplitPath(path, path, fname, NULL);
		if (!(File_DirExists(path) || getcwd(path, FILENAME_MAX)))
		{
			perror("SDLGui_FileSelect: non-existing path and CWD failed");
			goto clean_exit;
		}
	}

	File_MakeAbsoluteName(path);
	File_MakeValidPathName(path);
	File_ShrinkName(dlgpath, path, DLGPATH_SIZE);
	File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE);

	do
	{
		if (reloaddir)
		{
			files = files_free(files);

			if (browsingzip)
			{
				files = ZIP_GetFilesDir(zipfiles, zipdir, &entries);
				if(!files)
				{
					fprintf(stderr, "SDLGui_FileSelect: ZIP_GetFilesDir error!\n");
					goto clean_exit;
				}
			}
			else
			{
				/* Load directory entries: */
				entries = scandir(path, &files, 0, alphasort);
			}
			
			/* Remove hidden files from the list if necessary: */
			if (!(fsdlg[SGFSDLG_SHOWHIDDEN].state & SG_SELECTED))
			{
				DlgFileSelect_RemoveHiddenFiles(files);
			}

			if (entries < 0)
			{
				fprintf(stderr, "SDLGui_FileSelect: Path not found.\n");
				goto clean_exit;
			}

			/* reload always implies refresh */
			reloaddir = false;
			refreshentries = true;
		}/* reloaddir */

		/* Refresh scrollbar size */
 		if (entries <= SGFS_NUMENTRIES)
			yScrolbar_size = (SGFS_NUMENTRIES-2) * sdlgui_fontheight;
		else
			yScrolbar_size = (int)((SGFS_NUMENTRIES-2) / ((float)entries/(float)SGFS_NUMENTRIES) * sdlgui_fontheight);
		fsdlg[SGFSDLG_SCROLLBAR].w = yScrolbar_size;
		
		/* Refresh scrolbar pos */
		fsdlg[SGFSDLG_SCROLLBAR].h = (int) (scrollbar_Ypos * sdlgui_fontheight);
		ypos = (int) (scrollbar_Ypos * ((float)entries/(float)(SGFS_NUMENTRIES-2)) + 0.5);
		
		/* Update the file name strings in the dialog? */
		if (refreshentries)
		{
			if (!DlgFileSelect_RefreshEntries(files, path, browsingzip))
			{
				goto clean_exit;
			}
			refreshentries = false;
		}

		/* Show dialog: */
		retbut = SDLGui_DoDialog(fsdlg, &sdlEvent);

		/* Has the user clicked on a file or folder? */
		if (retbut>=SGFSDLG_ENTRYFIRST && retbut<=SGFSDLG_ENTRYLAST && retbut-SGFSDLG_ENTRYFIRST+ypos<entries)
		{
			char *tempstr;
			
			tempstr = malloc(FILENAME_MAX);
			if (!tempstr)
			{
				perror("Error while allocating temporary memory in SDLGui_FileSelect()");
				goto clean_exit;
			}

			if (browsingzip == true)
			{
				if (!strcat_maxlen(tempstr, FILENAME_MAX,
						   zipdir, files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name))
				{
					fprintf(stderr, "SDLGui_FileSelect: Path name too long!\n");
					goto clean_exit;
				}
				/* directory? */
				if (File_DoesFileNameEndWithSlash(tempstr))
				{
					/* handle the ../ directory */
					if (strcmp(files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name, "../") == 0)
					{
						/* close the zip file */
						if (strcmp(tempstr, "../") == 0)
						{
							/* free zip file entries */
							ZIP_FreeZipDir(zipfiles);
							zipfiles = NULL;
							/* Copy the path name to the dialog */
							File_ShrinkName(dlgpath, path, DLGPATH_SIZE);
							browsingzip = false;
						}
						else
						{
							/* remove "../" and previous dir from path */
							File_PathShorten(tempstr, 2);
							correct_zip_root(tempstr);
							strcpy(zipdir, tempstr);
							File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE);
						}
					}
					else /* not the "../" directory */
					{
						strcpy(zipdir, tempstr);
						File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE);
					}
					reloaddir = true;
					/* Copy the path name to the dialog */
					zipfilename[0] = '\0';
					dlgfname[0] = 0;
					ypos = 0;
					scrollbar_Ypos = 0.0;
				}
				else
				{
					/* not dir, select a file in the zip */
					selection = retbut-SGFSDLG_ENTRYFIRST+ypos;
					strcpy(zipfilename, files[selection]->d_name);
					File_ShrinkName(dlgfname, zipfilename, DLGFNAME_SIZE);
				}

			}
			else /* not browsingzip */
			{
				if (!strcat_maxlen(tempstr, FILENAME_MAX,
						   path, files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name))
				{
					fprintf(stderr, "SDLGui_FileSelect: Path name too long!\n");
					goto clean_exit;
				}
				if (File_DirExists(tempstr))
				{
					File_HandleDotDirs(tempstr);
					File_AddSlashToEndFileName(tempstr);
					/* Copy the path name to the dialog */
					File_ShrinkName(dlgpath, tempstr, DLGPATH_SIZE);
					strcpy(path, tempstr);
					reloaddir = true;
					dlgfname[0] = 0;
					ypos = 0;
					scrollbar_Ypos = 0.0;
				}
				else if (ZIP_FileNameIsZIP(tempstr) && zip_path != NULL)
				{
					/* open a zip file */
					zipfiles = ZIP_GetFiles(tempstr);
					if (zipfiles != NULL && browsingzip == false)
					{
						selection = retbut-SGFSDLG_ENTRYFIRST+ypos;
						strcpy(fname, files[selection]->d_name);
						File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE);
						browsingzip = true;
						zipdir[0] = '\0'; /* zip root */
						File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE);
						reloaddir = true;
						ypos = 0;
						scrollbar_Ypos = 0.0;
					}

				}
				else
				{
					/* Select a file */
					selection = retbut-SGFSDLG_ENTRYFIRST+ypos;
					strcpy(fname, files[selection]->d_name);
					File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE);
				}

			} /* not browsingzip */

			free(tempstr);
		}
		else    /* Has the user clicked on another button? */
		{
			switch(retbut)
			{
			case SGFSDLG_UPDIR:                 /* Change path to parent directory */
				if (browsingzip)
				{
					/* close the zip file? */
					if (!zipdir[0])
					{
						/* free zip file entries */
						ZIP_FreeZipDir(zipfiles);
						browsingzip = false;
						zipfiles = NULL;
						File_ShrinkName(dlgpath, path, DLGPATH_SIZE);
					}
					else
					{
						/* remove last dir from zipdir path */
						File_PathShorten(zipdir, 1);
						correct_zip_root(zipdir);
						File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE);
						zipfilename[0] = '\0';
					}
				}  /* not a zip file: */
				else
				{
					File_PathShorten(path, 1);
					File_ShrinkName(dlgpath, path, DLGPATH_SIZE);
				}
				reloaddir = true;
				break;

			case SGFSDLG_HOMEDIR:               /* Change to home directory */
				home = Paths_GetUserHome();
				if (home == NULL || !*home)
					break;
				if (browsingzip)
				{
					/* free zip file entries */
					ZIP_FreeZipDir(zipfiles);
					zipfiles = NULL;
					browsingzip = false;
				}
				strcpy(path, home);
				File_AddSlashToEndFileName(path);
				File_ShrinkName(dlgpath, path, DLGPATH_SIZE);
				reloaddir = true;
				break;

			case SGFSDLG_ROOTDIR:               /* Change to root directory */
				if (browsingzip)
				{
					/* free zip file entries */
					ZIP_FreeZipDir(zipfiles);
					zipfiles = NULL;
					browsingzip = false;
				}
				path[0] = PATHSEP; path[1] = '\0';
				strcpy(dlgpath, path);
				reloaddir = true;
				break;
			case SGFSDLG_UP:                    /* Scroll up */
				DlgFileSelect_ScrollUp();
				SDL_Delay(10);
				break;
			case SGFSDLG_DOWN:                  /* Scroll down */
				DlgFileSelect_ScrollDown();
				SDL_Delay(10);
				break;
			case SGFSDLG_SCROLLBAR:             /* Scrollbar selected */
				DlgFileSelect_ManageScrollbar();
				SDL_Delay(10);
				break;
			case SGFSDLG_FILENAME:              /* User entered new filename */
				strcpy(fname, dlgfname);
				break;
			case SGFSDLG_SHOWHIDDEN:            /* Show/hide hidden files */
				reloaddir = true;
				ypos = 0;
				scrollbar_Ypos = 0.0;
				break;
			case SDLGUI_UNKNOWNEVENT:
				DlgFileSelect_HandleSdlEvents(&sdlEvent);
				break;
			} /* switch */
      
			if (reloaddir)
			{
				/* Remove old selection */
				fname[0] = 0;
				dlgfname[0] = 0;
				ypos = 0;
				scrollbar_Ypos = 0.0;
			}
		} /* other button code */


	} /* do */
	while (retbut!=SGFSDLG_OKAY && retbut!=SGFSDLG_CANCEL
	       && retbut!=SDLGUI_QUIT && retbut != SDLGUI_ERROR && !bQuitProgram);

	files_free(files);

	if (browsingzip)
	{
		/* free zip file entries */
		ZIP_FreeZipDir(zipfiles);
		zipfiles = NULL;
	}

	if (retbut == SGFSDLG_OKAY)
	{
		if (zip_path)
			*zip_path = zip_get_path(zipdir, zipfilename, browsingzip);
		retpath = File_MakePath(path, fname, NULL);
	}
	else
		retpath = NULL;
clean_exit:
	SDL_ShowCursor(bOldMouseVisibility);
	free(pStringMem);
	return retpath;
}
Esempio n. 16
0
/**
 * Show and process the "System" dialog
 */
void Dialog_SystemDlg(void)
{
	int i;
	MACHINETYPE	mti;

	SDLGui_CenterDlg(systemdlg);

	/* Set up dialog from actual values: */

	for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	systemdlg[DLGSYS_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED;

	for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED;

	/* CPU frequency: */
	for (i = DLGSYS_8MHZ; i <= DLGSYS_32MHZ; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.nCpuFreq == 32)
		systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED;
	else if (ConfigureParams.System.nCpuFreq == 16)
		systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED;

	/* DSP mode: */
	for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE)
		systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED;
	else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY)
		systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_DSPON].state |= SG_SELECTED;

	/* More compatible CPU, Prefetch mode */
	if (ConfigureParams.System.bCompatibleCpu)
		systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED;

	/* Emulate Blitter */
	if (ConfigureParams.System.bBlitter)
		systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED;

	/* Real time clock CPU */
	if (ConfigureParams.System.bRealTimeClock)
		systemdlg[DLGSYS_RTC].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED;

	/* Patch timer D */
	if (ConfigureParams.System.bPatchTimerD)
		systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED;

	/* Boot faster by patching system variables */
	if (ConfigureParams.System.bFastBoot)
		systemdlg[DLGSYS_FASTBOOT].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_FASTBOOT].state &= ~SG_SELECTED;

#ifdef ENABLE_WINUAE_CPU
	/* Address space 24 bits */
	if (ConfigureParams.System.bAddressSpace24)
		systemdlg[DLGSYS_24BITS].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_24BITS].state &= ~SG_SELECTED;
		
	/* Cycle exact CPU */
	if (ConfigureParams.System.bCycleExactCpu)
		systemdlg[DLGSYS_CYC_EXACT].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_CYC_EXACT].state &= ~SG_SELECTED;

	/* FPU emulation */
	for (i = DLGSYS_FPU_NONE; i <= DLGSYS_FPU_CPU_IN; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.n_FPUType == FPU_NONE)
		systemdlg[DLGSYS_FPU_NONE].state |= SG_SELECTED;
	else if (ConfigureParams.System.n_FPUType == FPU_68881)
		systemdlg[DLGSYS_FPU_68881].state |= SG_SELECTED;
	else if (ConfigureParams.System.n_FPUType == FPU_68882)
		systemdlg[DLGSYS_FPU_68882].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_FPU_CPU_IN].state |= SG_SELECTED;

	/* More compatible FPU */
	if (ConfigureParams.System.bCompatibleFPU)
		systemdlg[DLGSYS_FPU_COMPAT].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_FPU_COMPAT].state &= ~SG_SELECTED;

	/* MMU Emulation */
	if (ConfigureParams.System.bMMU)
		systemdlg[DLGSYS_MMU_EMUL].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_MMU_EMUL].state &= ~SG_SELECTED;
#endif

	/* Show the dialog: */
	SDLGui_DoDialog(systemdlg, NULL, false);

	/* Read values from dialog: */

	for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
	{
		if (systemdlg[i].state&SG_SELECTED)
		{
			ConfigureParams.System.nCpuLevel = i-DLGSYS_68000;
			break;
		}
	}

	for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++)
	{
		if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED)
		{
			ConfigureParams.System.nMachineType = mti;
			break;
		}
	}

	if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED)
		ConfigureParams.System.nCpuFreq = 32;
	else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED)
		ConfigureParams.System.nCpuFreq = 16;
	else
		ConfigureParams.System.nCpuFreq = 8;

	if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED)
		ConfigureParams.System.nDSPType = DSP_TYPE_NONE;
	else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED)
		ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY;
	else
		ConfigureParams.System.nDSPType = DSP_TYPE_EMU;

	ConfigureParams.System.bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED);
	ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED);
	ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED);
	ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED);
	ConfigureParams.System.bFastBoot = (systemdlg[DLGSYS_FASTBOOT].state & SG_SELECTED);

#ifdef ENABLE_WINUAE_CPU
	ConfigureParams.System.bCycleExactCpu = (systemdlg[DLGSYS_CYC_EXACT].state & SG_SELECTED);
	ConfigureParams.System.bMMU = (systemdlg[DLGSYS_MMU_EMUL].state & SG_SELECTED);
	ConfigureParams.System.bAddressSpace24 = (systemdlg[DLGSYS_24BITS].state & SG_SELECTED);

	/* FPU emulation */
	if (systemdlg[DLGSYS_FPU_NONE].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_NONE;
	else if (systemdlg[DLGSYS_FPU_68881].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_68881;
	else if (systemdlg[DLGSYS_FPU_68882].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_68882;
	else
		ConfigureParams.System.n_FPUType = FPU_CPU;

	ConfigureParams.System.bCompatibleFPU = (systemdlg[DLGSYS_FPU_COMPAT].state & SG_SELECTED);
#endif
}
Esempio n. 17
0
/**
  * Show and process the "System" dialog (specific to winUAE cpu).
  */
void Dialog_SystemDlg(void)
{
    int i;
    int but;

    SDLGui_CenterDlg(systemdlg);

    /* Set up dialog from actual values: */

    /* System type: */
    for (i = DLGSYS_CUBE030; i <= DLGSYS_SLAB; i++)
    {
        systemdlg[i].state &= ~SG_SELECTED;
    }
    if (ConfigureParams.System.nMachineType == NEXT_CUBE030)
        systemdlg[DLGSYS_CUBE030].state |= SG_SELECTED;
    else if (ConfigureParams.System.nMachineType == NEXT_STATION)
        systemdlg[DLGSYS_SLAB].state |= SG_SELECTED;


    /* System overview */
    print_system_overview();


    /* Draw and process the dialog: */

    do
    {
        but = SDLGui_DoDialog(systemdlg, NULL);
        switch (but) {
        case DLGSYS_CUBE030:
            ConfigureParams.System.nMachineType = NEXT_CUBE030;
            get_default_values();
            break;

        case DLGSYS_CUBE:
            if (ConfigureParams.System.nMachineType!=NEXT_CUBE040) {
                ConfigureParams.System.bTurbo = false;
            }
            ConfigureParams.System.nMachineType = NEXT_CUBE040;
            get_default_values();
            break;

        case DLGSYS_CUBETURBO:
            if (ConfigureParams.System.bTurbo &&
                    ConfigureParams.System.nMachineType==NEXT_CUBE040) {
                ConfigureParams.System.bTurbo = false;
            } else {
                ConfigureParams.System.bTurbo = true;
            }
            ConfigureParams.System.nMachineType = NEXT_CUBE040;
            get_default_values();
            break;

        case DLGSYS_SLAB:
            if (ConfigureParams.System.nMachineType!=NEXT_STATION) {
                ConfigureParams.System.bTurbo = false;
            }
            ConfigureParams.System.nMachineType = NEXT_STATION;
            get_default_values();
            break;

        case DLGSYS_SLABCOLOR:
            if (ConfigureParams.System.nMachineType!=NEXT_STATION) {
                ConfigureParams.System.bTurbo = false;
            }
            if (ConfigureParams.System.bColor) {
                ConfigureParams.System.bColor = false;
            } else {
                ConfigureParams.System.bColor = true;
            }
            ConfigureParams.System.nMachineType = NEXT_STATION;
            get_default_values();
            break;

        case DLGSYS_SLABTURBO:
            if (ConfigureParams.System.bTurbo &&
                    ConfigureParams.System.nMachineType==NEXT_STATION) {
                ConfigureParams.System.bTurbo = false;
            } else {
                ConfigureParams.System.bTurbo = true;
            }
            ConfigureParams.System.nMachineType = NEXT_STATION;
            get_default_values();
            break;

        case DLGSYS_CUSTOMIZE:
            Dialog_AdvancedDlg();
            break;

        case DLGSYS_RESET:
            get_default_values();
            break;

        case DLGSYS_MEMORY:
            Dialog_MemDlg();
            break;

        default:
            break;
        }

        print_system_overview();
    }
    while (but != DLGSYS_EXIT && but != SDLGUI_QUIT
            && but != SDLGUI_ERROR && !bQuitProgram);


    /* Obsolete */
    ConfigureParams.System.bCompatibleCpu = 1;
    ConfigureParams.System.bBlitter = 0;
    ConfigureParams.System.bRealTimeClock = 0;
    ConfigureParams.System.bPatchTimerD = 0;
    ConfigureParams.System.bAddressSpace24 = 0;
    ConfigureParams.System.bCycleExactCpu = 0;
    ConfigureParams.System.bCompatibleFPU = 1;
    ConfigureParams.System.bMMU = 1;
}
Esempio n. 18
0
/**
 * Show and process the monitor dialog.
 */
void Dialog_MonitorDlg(void)
{
	int but;
	unsigned int i;
	MONITORTYPE	mti;

	SDLGui_CenterDlg(monitordlg);

	/* Set up general monitor options in the dialog from actual values: */

	if (ConfigureParams.Screen.bAllowOverscan)
		monitordlg[DLGSCRN_OVERSCAN].state |= SG_SELECTED;
	else
		monitordlg[DLGSCRN_OVERSCAN].state &= ~SG_SELECTED;

	for (i = DLGSCRN_MONO; i <= DLGSCRN_TV; i++)
		monitordlg[i].state &= ~SG_SELECTED;
	monitordlg[DLGSCRN_MONO+ConfigureParams.Screen.nMonitorType].state |= SG_SELECTED;

	/* Initialize VDI resolution options: */

	if (ConfigureParams.Screen.bUseExtVdiResolutions)
		monitordlg[DLGSCRN_USEVDIRES].state |= SG_SELECTED;
	else
		monitordlg[DLGSCRN_USEVDIRES].state &= ~SG_SELECTED;
	for (i=0; i<3; i++)
		monitordlg[DLGSCRN_BPP1 + i].state &= ~SG_SELECTED;
	monitordlg[DLGSCRN_BPP1 + ConfigureParams.Screen.nVdiColors - GEMCOLOR_2].state |= SG_SELECTED;
	sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth);
	sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight);
	DlgMonitor_SetVdiStepping();

	/* The monitor dialog main loop */
	do
	{
		but = SDLGui_DoDialog(monitordlg, NULL);
		switch (but)
		{
		 case DLGSCRN_VDI_WLESS:
			ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth - nVdiStepX,
			                                nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH);
			sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth);
			break;
		 case DLGSCRN_VDI_WMORE:
			ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth + nVdiStepX,
			                                nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH);
			sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth);
			break;

		 case DLGSCRN_VDI_HLESS:
			ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight - nVdiStepY,
			                                 nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT);
			sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight);
			break;
		 case DLGSCRN_VDI_HMORE:
			ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight + nVdiStepY,
			                                 nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT);
			sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight);
			break;

		 case DLGSCRN_BPP1:
		 case DLGSCRN_BPP2:
		 case DLGSCRN_BPP4:
			DlgMonitor_SetVdiStepping();
			/* Align resolution to actual conditions: */
			ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth, nVdiStepX,
			                                MIN_VDI_WIDTH, MAX_VDI_WIDTH);
			ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight, nVdiStepY,
			                                 MIN_VDI_HEIGHT, MAX_VDI_HEIGHT);
			sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth);
			sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight);
			break;
		}
	}
	while (but != DLGSCRN_EXIT_MONITOR && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read new values from dialog: */

	ConfigureParams.Screen.bAllowOverscan = (monitordlg[DLGSCRN_OVERSCAN].state & SG_SELECTED);

	for (mti = MONITOR_TYPE_MONO; mti <= MONITOR_TYPE_TV; mti++)
	{
		if (monitordlg[mti + DLGSCRN_MONO].state & SG_SELECTED)
		{
			ConfigureParams.Screen.nMonitorType = mti;
			break;
		}
	}

	ConfigureParams.Screen.bUseExtVdiResolutions = (monitordlg[DLGSCRN_USEVDIRES].state & SG_SELECTED);
	for (i=0; i<3; i++)
	{
		if (monitordlg[DLGSCRN_BPP1 + i].state & SG_SELECTED)
			ConfigureParams.Screen.nVdiColors = GEMCOLOR_2 + i;
	}
}
Esempio n. 19
0
/**
 * Show and process the sound dialog.
 */
void Dialog_SoundDlg(void)
{
	int but, i;

	SDLGui_CenterDlg(sounddlg);

	/* Set up dialog from actual values: */

	if (ConfigureParams.Sound.bEnableSound)
		sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED;
	else
		sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED;

	if (ConfigureParams.Sound.bEnableSoundSync)
		sounddlg[DLGSOUND_SYNC].state |= SG_SELECTED;
	else
		sounddlg[DLGSOUND_SYNC].state &= ~SG_SELECTED;

	for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++)
		sounddlg[i].state &= ~SG_SELECTED;

	for (i = 0; i <= DLGSOUND_50KHZ-DLGSOUND_11KHZ; i++)
	{
		if (ConfigureParams.Sound.nPlaybackFreq > nSoundFreqs[i]-500
		    && ConfigureParams.Sound.nPlaybackFreq < nSoundFreqs[i]+500)
		{
			sounddlg[DLGSOUND_11KHZ + i].state |= SG_SELECTED;
			break;
		}
	}

	sounddlg[DLGSOUND_MODEL].state &= ~SG_SELECTED;
	sounddlg[DLGSOUND_TABLE].state &= ~SG_SELECTED;
	sounddlg[DLGSOUND_LINEAR].state &= ~SG_SELECTED;
	if (ConfigureParams.Sound.YmVolumeMixing == YM_MODEL_MIXING)
		sounddlg[DLGSOUND_MODEL].state |= SG_SELECTED;
	else
	if (ConfigureParams.Sound.YmVolumeMixing == YM_TABLE_MIXING)
		sounddlg[DLGSOUND_TABLE].state |= SG_SELECTED;
	else
		sounddlg[DLGSOUND_LINEAR].state |= SG_SELECTED;

	File_ShrinkName(dlgRecordName, ConfigureParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w);

	if ( Sound_AreWeRecording() )
		sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
	else
		sounddlg[DLGSOUND_RECORD].txt = "Record sound";

	/* The sound dialog main loop */
	do
	{
		but = SDLGui_DoDialog(sounddlg, NULL);
		switch (but)
		{
		 case DLGSOUND_RECBROWSE:                    /* Choose a new record file */
			SDLGui_FileConfSelect(dlgRecordName,
			                      ConfigureParams.Sound.szYMCaptureFileName,
			                      sounddlg[DLGSOUND_RECNAME].w,
			                      true);
			break;
		 case  DLGSOUND_RECORD:
			if (Sound_AreWeRecording())
			{
				sounddlg[DLGSOUND_RECORD].txt = "Record sound";
				Sound_EndRecording();
			}
			else
			{
				/* make sure that we have a valid file name... */
				if (strlen(ConfigureParams.Sound.szYMCaptureFileName) < 4)
				{
					strcpy(ConfigureParams.Sound.szYMCaptureFileName, "./hatari.wav");
				}
				sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
				Sound_BeginRecording(ConfigureParams.Sound.szYMCaptureFileName);
			}
			break;
		}
                gui_poll_events();
	}
	while (but != DLGSOUND_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram );

	/* Read values from dialog */
	ConfigureParams.Sound.bEnableSound = (sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED);

	ConfigureParams.Sound.bEnableSoundSync = (sounddlg[DLGSOUND_SYNC].state & SG_SELECTED);

	for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++)
	{
		if (sounddlg[i].state & SG_SELECTED)
		{
			ConfigureParams.Sound.nPlaybackFreq = nSoundFreqs[i-DLGSOUND_11KHZ];
			break;
		}
	}

	if (sounddlg[DLGSOUND_MODEL].state & SG_SELECTED)
		ConfigureParams.Sound.YmVolumeMixing = YM_MODEL_MIXING;
	else
	if (sounddlg[DLGSOUND_TABLE].state & SG_SELECTED)
		ConfigureParams.Sound.YmVolumeMixing = YM_TABLE_MIXING;
	else
		ConfigureParams.Sound.YmVolumeMixing = YM_LINEAR_MIXING;
}
Esempio n. 20
0
/**
 * Show and process the ROM dialog.
 */
void DlgRom_Main(void)
{
	char szDlgRom030Name[47];
	char szDlgRom040Name[47];
    char szDlgRomTurboName[47];
	int but;

	SDLGui_CenterDlg(romdlg);

	File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1);
	romdlg[DLGROM_ROM030_NAME].txt = szDlgRom030Name;

	File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1);
	romdlg[DLGROM_ROM040_NAME].txt = szDlgRom040Name;
    
    File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1);
	romdlg[DLGROM_ROMTURBO_NAME].txt = szDlgRomTurboName;

	do
	{
		but = SDLGui_DoDialog(romdlg, NULL);
		switch (but)
		{
            case DLGROM_ROM030_DEFAULT:
                sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN",
                        Paths_GetWorkingDir(), PATHSEP);
                File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1);
                break;
                
            case DLGROM_ROM030_BROWSE:
                /* Show and process the file selection dlg */
                SDLGui_FileConfSelect(szDlgRom030Name,
                                      ConfigureParams.Rom.szRom030FileName,
                                      sizeof(szDlgRom030Name)-1,
                                      false);
                break;
                
            case DLGROM_ROM040_DEFAULT:
                sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN",
                        Paths_GetWorkingDir(), PATHSEP);
                File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1);
                break;
                
            case DLGROM_ROM040_BROWSE:
                /* Show and process the file selection dlg */
                SDLGui_FileConfSelect(szDlgRom040Name,
                                      ConfigureParams.Rom.szRom040FileName,
                                      sizeof(szDlgRom040Name)-1,
                                      false);
                break;
                
            case DLGROM_ROMTURBO_DEFAULT:
                sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN",
                        Paths_GetWorkingDir(), PATHSEP);
                File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1);
                break;
                
            case DLGROM_ROMTURBO_BROWSE:
                /* Show and process the file selection dlg */
                SDLGui_FileConfSelect(szDlgRomTurboName,
                                      ConfigureParams.Rom.szRomTurboFileName,
                                      sizeof(szDlgRomTurboName)-1,
                                      false);
                break;

		}
	}
	while (but != DLGROM_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);
}
Esempio n. 21
0
void Dialog_Advanced(Prefs &prefs)
{
    switch (SDLGui_DoDialog(advanceddlg))
    {
    }
}
Esempio n. 22
0
/**
 * Show and process the "System" dialog (specific to winUAE cpu).
 */
void Dialog_SystemDlg(void)
{
	int32_t i;
	//MACHINETYPE	mti;

//printf("0cpu:%d curr:%d\n",changed_prefs.cpu_model,currprefs.cpu_model);

	SDLGui_CenterDlg(systemdlg);

	/* Set up dialog from actual values: */

	for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	systemdlg[DLGSYS_68000+/*ConfigureParams.System.*/nCpuLevel].state |= SG_SELECTED;
#if 0
	for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED;

	/* CPU frequency: */
	for (i = DLGSYS_8MHZ; i <= DLGSYS_16MHZ; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.nCpuFreq == 32)
		systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED;
	else if (ConfigureParams.System.nCpuFreq == 16)
		systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED;

	/* DSP mode: */
	for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE)
		systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED;
	else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY)
		systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_DSPON].state |= SG_SELECTED;
#endif
	/* More compatible CPU, Prefetch mode */
	if (/*ConfigureParams.System.*/bCompatibleCpu)
		systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED;
#if 0
	/* Emulate Blitter */
	if (ConfigureParams.System.bBlitter)
		systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED;

	/* Real time clock CPU */
	if (ConfigureParams.System.bRealTimeClock)
		systemdlg[DLGSYS_RTC].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED;

	/* Patch timer D */
	if (ConfigureParams.System.bPatchTimerD)
		systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED;

	/* Adress space 24 bits */
	if (ConfigureParams.System.bAddressSpace24)
		systemdlg[DLGSYS_24BITS].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_24BITS].state &= ~SG_SELECTED;
#endif
	/* Cycle exact CPU */
	if (/*ConfigureParams.System.*/bCycleExactCpu)
		systemdlg[DLGSYS_CYC_EXACT].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_CYC_EXACT].state &= ~SG_SELECTED;
#if 0
	/* FPU emulation */
	for (i = DLGSYS_FPU_NONE; i <= DLGSYS_FPU_CPU_IN; i++)
	{
		systemdlg[i].state &= ~SG_SELECTED;
	}
	if (ConfigureParams.System.n_FPUType == FPU_NONE)
		systemdlg[DLGSYS_FPU_NONE].state |= SG_SELECTED;
	else if (ConfigureParams.System.n_FPUType == FPU_68881)
		systemdlg[DLGSYS_FPU_68881].state |= SG_SELECTED;
	else if (ConfigureParams.System.n_FPUType == FPU_68882)
		systemdlg[DLGSYS_FPU_68882].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_FPU_CPU_IN].state |= SG_SELECTED;

	/* More compatible FPU */
	if (ConfigureParams.System.bCompatibleFPU)
		systemdlg[DLGSYS_FPU_COMPAT].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_FPU_COMPAT].state &= ~SG_SELECTED;

	/* MMU Emulation */
	if (ConfigureParams.System.bMMU)
		systemdlg[DLGSYS_MMU_EMUL].state |= SG_SELECTED;
	else
		systemdlg[DLGSYS_MMU_EMUL].state &= ~SG_SELECTED;
#endif
int32_t but;
do
{
	/* Show the dialog: */
	but=SDLGui_DoDialog(systemdlg, NULL);
        gui_poll_events();
}
while (but != DLGSYS_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read values from dialog: */

	for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
	{
		if (systemdlg[i].state&SG_SELECTED)
		{
			/*ConfigureParams.System.*/nCpuLevel = i-DLGSYS_68000;
			break;
		}
	}

	int32_t index = nCpuLevel;
	if(index==5)index=6;

	changed_prefs.cpu_model=68000+index*10;

//currprefs.cpu_model=68000;
//printf("1cpu:%d curr:%d\n",changed_prefs.cpu_model,currprefs.cpu_model);

	if (changed_prefs.cpu_model <= 68020)changed_prefs.address_space_24=1;


/*
	for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++)
	{
		if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED)
		{
			ConfigureParams.System.nMachineType = mti;
			break;
		}
	}
*/
/*
	if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED)
		ConfigureParams.System.nCpuFreq = 32;
	else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED)
		ConfigureParams.System.nCpuFreq = 16;
	else
		ConfigureParams.System.nCpuFreq = 8;

	if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED)
		ConfigureParams.System.nDSPType = DSP_TYPE_NONE;
	else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED)
		ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY;
	else
		ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
*/
	/*ConfigureParams.System.*/bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED);

changed_prefs.cpu_compatible =bCompatibleCpu;
	if (changed_prefs.cpu_compatible && currprefs.cpu_cycle_exact) {
				changed_prefs.cpu_cycle_exact = 0;
	}
/*
	ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED);
	ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED);
	ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED);
	ConfigureParams.System.bAddressSpace24 = (systemdlg[DLGSYS_24BITS].state & SG_SELECTED);
*/
	/*ConfigureParams.System.*/bCycleExactCpu = (systemdlg[DLGSYS_CYC_EXACT].state & SG_SELECTED);

	changed_prefs.cpu_cycle_exact = bCycleExactCpu;
	if (changed_prefs.cpu_cycle_exact && currprefs.cpu_compatible) {
				changed_prefs.cpu_compatible = 0;
	}

	config_changed = 1;
	check_prefs_changed_cpu();
	/* FPU emulation */
/*
	if (systemdlg[DLGSYS_FPU_NONE].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_NONE;
	else if (systemdlg[DLGSYS_FPU_68881].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_68881;
	else if (systemdlg[DLGSYS_FPU_68882].state & SG_SELECTED)
		ConfigureParams.System.n_FPUType = FPU_68882;
	else
		ConfigureParams.System.n_FPUType = FPU_CPU;

	ConfigureParams.System.bCompatibleFPU = (systemdlg[DLGSYS_FPU_COMPAT].state & SG_SELECTED);
	ConfigureParams.System.bMMU = (systemdlg[DLGSYS_MMU_EMUL].state & SG_SELECTED);
*/
}
Esempio n. 23
0
/**
 * This functions sets up the actual font and then displays the main dialog.
 */
int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot)
{
	int retbut;
	bool bOldMouseVisibility;
	int nOldMouseX, nOldMouseY;
	char *psNewCfg;

	*bReset = false;
	*bLoadedSnapshot = false;

	if (SDLGui_SetScreen(sdlscrn))
		return false;

	SDL_GetMouseState(&nOldMouseX, &nOldMouseY);
	bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
	SDL_ShowCursor(SDL_ENABLE);

	SDLGui_CenterDlg(maindlg);

	maindlg[MAINDLG_NORESET].state |= SG_SELECTED;
	maindlg[MAINDLG_RESET].state &= ~SG_SELECTED;

	do
	{
		retbut = SDLGui_DoDialog(maindlg, NULL);
		switch (retbut)
		{
		 case MAINDLG_ABOUT:
			Dialog_AboutDlg();
			break;
		 case MAINDLG_FLOPPYS:
			DlgFloppy_Main();
			break;
		 case MAINDLG_HARDDISK:
			DlgHardDisk_Main();
			break;
		 case MAINDLG_ROM:
			DlgRom_Main();
			break;
		 case MAINDLG_MONITOR:
			Dialog_MonitorDlg();
			break;
		 case MAINDLG_WINDOW:
			Dialog_WindowDlg();
			break;
		 case MAINDLG_SYSTEM:
			Dialog_SystemDlg();
			break;
		 case MAINDLG_MEMORY:
			if (Dialog_MemDlg())
			{
				/* Memory snapshot has been loaded - leave GUI immediately */
				*bLoadedSnapshot = true;
				SDL_ShowCursor(bOldMouseVisibility);
				Main_WarpMouse(nOldMouseX, nOldMouseY);
				return true;
			}
			break;
		 case MAINDLG_JOY:
			Dialog_JoyDlg();
			break;
		 case MAINDLG_KEYBD:
			Dialog_KeyboardDlg();
			break;
		 case MAINDLG_DEVICES:
			Dialog_DeviceDlg();
			break;
		 case MAINDLG_SOUND:
			Dialog_SoundDlg();
			break;
		 case MAINDLG_LOADCFG:
			psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false);
			if (psNewCfg)
			{
				strcpy(sConfigFileName, psNewCfg);
				Configuration_Load(NULL);
				free(psNewCfg);
			}
			break;
		 case MAINDLG_SAVECFG:
			psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true);
			if (psNewCfg)
			{
				strcpy(sConfigFileName, psNewCfg);
				Configuration_Save();
				free(psNewCfg);
			}
			break;
		 case MAINDLG_QUIT:
			bQuitProgram = true;
			break;
		}
                gui_poll_events();

	}
	while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT
	        && retbut != SDLGUI_ERROR && !bQuitProgram);


	if (maindlg[MAINDLG_RESET].state & SG_SELECTED)
		*bReset = true;

	SDL_ShowCursor(bOldMouseVisibility);
	Main_WarpMouse(nOldMouseX, nOldMouseY);

	return (retbut == MAINDLG_OK);
}
Esempio n. 24
0
/**
 * Show and process the floppy disk image dialog.
 */
void DlgFloppy_Main(void)
{
	int but, i;
	char *newdisk;
	char dlgname[MAX_FLOPPYDRIVES][64], dlgdiskdir[64];

	SDLGui_CenterDlg(floppydlg);

	/* Set up dialog to actual values: */
 const char *name;

 floppydlg[FLOPPYDLG_AUTORUN].state &= ~SG_SELECTED;

 name = DISKA_NAME; /* Filename */
 if (!name)dlgname[0][0] = '\0';
 else File_ShrinkName(dlgname[0], name,floppydlg[FLOPPYDLG_DISKA].w);
 floppydlg[FLOPPYDLG_DISKA].txt = dlgname[0];

 name = DISKB_NAME; /* Filename */
 if (!name)dlgname[1][0] = '\0';
 else File_ShrinkName(dlgname[1], name,floppydlg[FLOPPYDLG_DISKB].w);
 floppydlg[FLOPPYDLG_DISKB].txt = dlgname[1];

 name = TAPE_NAME; /* Filename */
 if (!name)dlgname[2][0] = '\0';
 else File_ShrinkName(dlgname[2], name,floppydlg[FLOPPYDLG_DISK2].w);
 floppydlg[FLOPPYDLG_DISK2].txt = dlgname[2];

 name = CART_NAME; /* Filename */
 if (!name)dlgname[3][0] = '\0';
 else File_ShrinkName(dlgname[3], name,floppydlg[FLOPPYDLG_DISK3].w);
 floppydlg[FLOPPYDLG_DISK3].txt = dlgname[3];

	/* Default image directory: */
	File_ShrinkName(dlgdiskdir,szDiskImageDirectory,
	                floppydlg[FLOPPYDLG_IMGDIR].w);
	floppydlg[FLOPPYDLG_IMGDIR].txt = dlgdiskdir;


	/* Draw and process the dialog */
	do
	{       
		but = SDLGui_DoDialog(floppydlg, NULL);
		switch (but)
		{
		 case FLOPPYDLG_EJECTA:                         /* Eject disk in drive A: */
			Floppy_SetDiskFileNameNone(0);
			dlgname[0][0] = '\0';
			DiskImage_RemoveDisk(0);

			break;
		 case FLOPPYDLG_BROWSEA:                        /* Choose a new disk A: */
			DlgDisk_BrowseDisk(dlgname[0], 0, FLOPPYDLG_DISKA);

			if (strlen(szDiskFileName[0]) > 0){

				if (GenericInterface_InsertDiskImage(0, szDiskFileName[0])) {
					printf("Error loading drivea:%s\n", szDiskFileName[0]);
				}	
				else {

					if(floppydlg[FLOPPYDLG_AUTORUN].state & SG_SELECTED){
	
						char AutoType_String[256];	
						char *pBuffer = malloc(512*5);
						int nAutoRunResult = AMSDOS_GenerateAutorunCommand(pBuffer,AutoType_String);

						if(nAutoRunResult==0){
							printf("auto(%s)\n",AutoType_String);
							AutoType_SetString(AutoType_String, TRUE, TRUE);
						}
						else printf("error auto(%d)\n",nAutoRunResult);
						free(pBuffer);
					}

					sprintf(DISKA_NAME,"%s",szDiskFileName[0]);
				}

			}

			break;
		 case FLOPPYDLG_EJECTB:                         /* Eject disk in drive B: */
			Floppy_SetDiskFileNameNone(1);
			dlgname[1][0] = '\0';
			DiskImage_RemoveDisk(1);

			break;
		case FLOPPYDLG_BROWSEB:                         /* Choose a new disk B: */
			DlgDisk_BrowseDisk(dlgname[1], 1, FLOPPYDLG_DISKB);

			if (strlen(szDiskFileName[1]) > 0){

				if (GenericInterface_InsertDiskImage(1, szDiskFileName[1])) {
					printf("Error loading driveb:%s\n", szDiskFileName[1]);
				}	
				else sprintf(DISKB_NAME,"%s",szDiskFileName[1]);
				
			}

		 case FLOPPYDLG_EJECT2:                         /* Eject tape  */
			Floppy_SetDiskFileNameNone(2);
			dlgname[2][0] = '\0';
			Tape_Remove();
 			sprintf(TAPE_NAME,"\0");

			break;
		 case FLOPPYDLG_BROWSE2:                        /* Choose a new tape */
			DlgDisk_BrowseDisk(dlgname[2], 2, FLOPPYDLG_DISK2);

			if (strlen(szDiskFileName[2]) > 0){

				if (GenericInterface_InsertTape(szDiskFileName[2])) {
					printf("Error loading Tape:%s\n", szDiskFileName[2]);
				}
				else {
					sprintf(TAPE_NAME,"%s",szDiskFileName[2]);
					AutoType_SetString( "|TAPE\nRUN\"\n\n", TRUE, TRUE);
				}

			}

			break;

		 case FLOPPYDLG_EJECT3:                         /* Eject cart  */
			Floppy_SetDiskFileNameNone(3);
			dlgname[3][0] = '\0';
			GenericInterface_RemoveCartridge();
 			sprintf(CART_NAME,"\0");
			break;
		case FLOPPYDLG_BROWSE3:                         /* Choose a new cart */
			DlgDisk_BrowseDisk(dlgname[3], 3, FLOPPYDLG_DISK3);

			if (strlen(szDiskFileName[3]) > 0){

				if(strcmp (szDiskFileName[3],"/home/tech/Bureau/GIT/arnold/roms/parados.rom") == 0){

					GenericInterface_LoadRom(7, szDiskFileName[3]);
					CPC_Reset();
					break;
				}

				if (GenericInterface_InsertCartridge(szDiskFileName[3])) {
					printf("Error loading cart:%s\n",szDiskFileName[3]);
				}	
				else sprintf(CART_NAME,"%s",szDiskFileName[3]);

//					strcpy(prefs->DrivePath[3], szDiskFileName[3]);
			}

			break;

		 case FLOPPYDLG_BROWSEIMG:
			DlgDisk_BrowseDir(dlgdiskdir,szDiskImageDirectory,floppydlg[FLOPPYDLG_IMGDIR].w);
			break;
/*
		 case FLOPPYDLG_CREATEIMG:
			newdisk = DlgNewDisk_Main();
			if (newdisk)
			{
				DlgFloppy_QueryInsert(dlgname[0], FLOPPYDLG_DISKA,
						      dlgname[1], FLOPPYDLG_DISKB,
						      newdisk);
				free(newdisk);
			}
			break;
*/
		}
                gui_poll_events();
	}
	while (but != FLOPPYDLG_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);


}
Esempio n. 25
0
/**
 * Show and process the memory dialog.
 * @return  true if a memory snapshot has been loaded, false otherwise
 */
bool Dialog_MemDlg(void)
{
	int i;
	int but;

	SDLGui_CenterDlg(memorydlg);

	for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++)
	{
		memorydlg[i].state &= ~SG_SELECTED;
	}

	switch (ConfigureParams.Memory.nMemorySize)
	{
	 case 0:
		memorydlg[DLGMEM_512KB].state |= SG_SELECTED;
		break;
	 case 1:
		memorydlg[DLGMEM_1MB].state |= SG_SELECTED;
		break;
	 case 2:
		memorydlg[DLGMEM_2MB].state |= SG_SELECTED;
		break;
	 case 4:
		memorydlg[DLGMEM_4MB].state |= SG_SELECTED;
		break;
	 case 8:
		memorydlg[DLGMEM_8MB].state |= SG_SELECTED;
		break;
	 default:
		memorydlg[DLGMEM_14MB].state |= SG_SELECTED;
		break;
	}

	File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);


	if (ConfigureParams.Memory.bAutoSave)
		memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED;
	else
		memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED;

	do
	{
		but = SDLGui_DoDialog(memorydlg, NULL);

		switch (but)
		{
		 case DLGMEM_SAVE:              /* Save memory snap-shot */
			if (SDLGui_FileConfSelect(dlgSnapShotName,
			                          ConfigureParams.Memory.szMemoryCaptureFileName,
			                          memorydlg[DLGMEM_FILENAME].w, true))
			{
				MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true);
			}
			break;
		 case DLGMEM_RESTORE:           /* Load memory snap-shot */
			if (SDLGui_FileConfSelect(dlgSnapShotName,
			                          ConfigureParams.Memory.szMemoryCaptureFileName,
			                          memorydlg[DLGMEM_FILENAME].w, false))
			{
				MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true);
				return true;
			}
			break;
		}
	}
	while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram );

	/* Read new values from dialog: */

	if (memorydlg[DLGMEM_512KB].state & SG_SELECTED)
		ConfigureParams.Memory.nMemorySize = 0;
	else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED)
		ConfigureParams.Memory.nMemorySize = 1;
	else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED)
		ConfigureParams.Memory.nMemorySize = 2;
	else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED)
		ConfigureParams.Memory.nMemorySize = 4;
	else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED)
		ConfigureParams.Memory.nMemorySize = 8;
	else
		ConfigureParams.Memory.nMemorySize = 14;

	ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);

	return false;
}
Esempio n. 26
0
/**
 * Show and process the window dialog.
 */
void Dialog_WindowDlg(void)
{
	int deskw, deskh, but, skip = 0;
	unsigned int i;

	SDLGui_CenterDlg(windowdlg);

	/* Set up general window options in the dialog from actual values: */

	if (ConfigureParams.Screen.bFullScreen)
		windowdlg[DLGSCRN_FULLSCRN].state |= SG_SELECTED;
	else
		windowdlg[DLGSCRN_FULLSCRN].state &= ~SG_SELECTED;

	if (ConfigureParams.Screen.bKeepResolution)
		windowdlg[DLGSCRN_KEEP_RES].state |= SG_SELECTED;
	else
		windowdlg[DLGSCRN_KEEP_RES].state &= ~SG_SELECTED;
	if (ConfigureParams.Screen.bKeepResolutionST)
		windowdlg[DLGSCRN_KEEP_RES_ST].state |= SG_SELECTED;
	else
		windowdlg[DLGSCRN_KEEP_RES_ST].state &= ~SG_SELECTED;

	windowdlg[DLGSCRN_STATUSBAR].state &= ~SG_SELECTED;
	windowdlg[DLGSCRN_DRIVELED].state &= ~SG_SELECTED;
	windowdlg[DLGSCRN_NONE].state &= ~SG_SELECTED;
	if (ConfigureParams.Screen.bShowStatusbar)
		windowdlg[DLGSCRN_STATUSBAR].state |= SG_SELECTED;
	else if (ConfigureParams.Screen.bShowDriveLed)
		windowdlg[DLGSCRN_DRIVELED].state |= SG_SELECTED;
	else
		windowdlg[DLGSCRN_NONE].state |= SG_SELECTED;

	for (i = 0; i < ITEMS_IN_ARRAY(skip_frames); i++)
	{
		if (ConfigureParams.Screen.nFrameSkips >= skip_frames[i])
			skip = i;
		windowdlg[i+DLGSCRN_SKIP0].state &= ~SG_SELECTED;
	}
	windowdlg[DLGSCRN_SKIP0+skip].state |= SG_SELECTED;

	Resolution_GetDesktopSize(&deskw, &deskh);
	sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth);
	sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight);

	/* Initialize window capture options: */

	if (ConfigureParams.Screen.bCrop)
		windowdlg[DLGSCRN_CROP].state |= SG_SELECTED;
	else
		windowdlg[DLGSCRN_CROP].state &= ~SG_SELECTED;

	if (Avi_AreWeRecording())
		windowdlg[DLGSCRN_RECANIM].txt = RECORD_STOP;
	else
		windowdlg[DLGSCRN_RECANIM].txt = RECORD_START;

	/* The window dialog main loop */
	do
	{
		but = SDLGui_DoDialog(windowdlg, NULL);
		switch (but)
		{
		 case DLGSCRN_MAX_WLESS:
			ConfigureParams.Screen.nMaxWidth = VDI_Limit(ConfigureParams.Screen.nMaxWidth - MAX_SIZE_STEP,
			                                MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw);
			sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth);
			break;
		 case DLGSCRN_MAX_WMORE:
			ConfigureParams.Screen.nMaxWidth = VDI_Limit(ConfigureParams.Screen.nMaxWidth + MAX_SIZE_STEP,
			                                MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw);
			sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth);
			break;

		 case DLGSCRN_MAX_HLESS:
			ConfigureParams.Screen.nMaxHeight = VDI_Limit(ConfigureParams.Screen.nMaxHeight - MAX_SIZE_STEP,
			                                 MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh);
			sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight);
			break;
		 case DLGSCRN_MAX_HMORE:
			ConfigureParams.Screen.nMaxHeight = VDI_Limit(ConfigureParams.Screen.nMaxHeight + MAX_SIZE_STEP,
			                                 MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh);
			sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight);
			break;

		 case DLGSCRN_CAPTURE:
			SDL_UpdateRect(sdlscrn, 0,0,0,0);
			ConfigureParams.Screen.bCrop = (windowdlg[DLGSCRN_CROP].state & SG_SELECTED);
			ScreenSnapShot_SaveScreen();
			break;

		case DLGSCRN_RECANIM:
			if (Avi_AreWeRecording())
			{
				/* AVI indexing can take a while for larger files */
				Statusbar_AddMessage("Finishing AVI file...", 100);
				Statusbar_Update(sdlscrn, true);
				Avi_StopRecording();
				windowdlg[DLGSCRN_RECANIM].txt = RECORD_START;
				Statusbar_AddMessage("Emulation paused", 100);
				Statusbar_Update(sdlscrn, true);
			}
			else
			{
				ConfigureParams.Screen.bCrop = (windowdlg[DLGSCRN_CROP].state & SG_SELECTED);
				Avi_StartRecording ( ConfigureParams.Video.AviRecordFile , ConfigureParams.Screen.bCrop ,
					ConfigureParams.Video.AviRecordFps == 0 ?
						ClocksTimings_GetVBLPerSec ( ConfigureParams.System.nMachineType , nScreenRefreshRate ) :
						(Uint32)ConfigureParams.Video.AviRecordFps << CLOCKS_TIMINGS_SHIFT_VBL ,
					1 << CLOCKS_TIMINGS_SHIFT_VBL ,
					ConfigureParams.Video.AviRecordVcodec );
				windowdlg[DLGSCRN_RECANIM].txt = RECORD_STOP;
			}
			break;
		}
	}
	while (but != DLGSCRN_EXIT_WINDOW && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read new values from dialog: */

	ConfigureParams.Screen.bFullScreen = (windowdlg[DLGSCRN_FULLSCRN].state & SG_SELECTED);
	ConfigureParams.Screen.bKeepResolution = (windowdlg[DLGSCRN_KEEP_RES].state & SG_SELECTED);
	ConfigureParams.Screen.bKeepResolutionST = (windowdlg[DLGSCRN_KEEP_RES_ST].state & SG_SELECTED);

	ConfigureParams.Screen.bShowStatusbar = false;
	ConfigureParams.Screen.bShowDriveLed = false;
	if (windowdlg[DLGSCRN_STATUSBAR].state & SG_SELECTED)
		ConfigureParams.Screen.bShowStatusbar = true;
	else if (windowdlg[DLGSCRN_DRIVELED].state & SG_SELECTED)
		ConfigureParams.Screen.bShowDriveLed = true;

	for (i = DLGSCRN_SKIP0; i <= DLGSCRN_SKIP4; i++)
	{
		if (windowdlg[i].state & SG_SELECTED)
		{
			ConfigureParams.Screen.nFrameSkips = skip_frames[i-DLGSCRN_SKIP0];
			break;
		}
	}

	ConfigureParams.Screen.bCrop = (windowdlg[DLGSCRN_CROP].state & SG_SELECTED);
}
Esempio n. 27
0
/**
 * Show and process the "Device" dialog.
 */
void Dialog_DeviceDlg(void)
{
	int but;

	SDLGui_CenterDlg(devicedlg);

	/* Set up dialog from actual values: */

	if (ConfigureParams.Printer.bPrinterConnected)
		devicedlg[DEVDLG_PRNENABLE].state |= SG_SELECTED;
	else
		devicedlg[DEVDLG_PRNENABLE].state &= ~SG_SELECTED;
	File_ShrinkName(dlgPrinterName, ConfigureParams.Printer.szPrintToFileName, devicedlg[DEVDLG_PRNFILENAME].w);

	if (ConfigureParams.RS232.bEnableRS232)
		devicedlg[DEVDLG_RS232ENABLE].state |= SG_SELECTED;
	else
		devicedlg[DEVDLG_RS232ENABLE].state &= ~SG_SELECTED;
	File_ShrinkName(dlgRs232OutName, ConfigureParams.RS232.szOutFileName, devicedlg[DEVDLG_RS232OUTNAME].w);
	File_ShrinkName(dlgRs232InName, ConfigureParams.RS232.szInFileName, devicedlg[DEVDLG_RS232INNAME].w);

	if (ConfigureParams.Midi.bEnableMidi)
		devicedlg[DEVDLG_MIDIENABLE].state |= SG_SELECTED;
	else
		devicedlg[DEVDLG_MIDIENABLE].state &= ~SG_SELECTED;
	File_ShrinkName(dlgMidiInName, ConfigureParams.Midi.sMidiInFileName, devicedlg[DEVDLG_MIDIINNAME].w);
	File_ShrinkName(dlgMidiOutName, ConfigureParams.Midi.sMidiOutFileName, devicedlg[DEVDLG_MIDIOUTNAME].w);

	/* The devices dialog main loop */
	do
	{
		but = SDLGui_DoDialog(devicedlg, NULL);

		switch(but)
		{
		 case DEVDLG_PRNBROWSE:                 /* Choose a new printer file */
			SDLGui_FileConfSelect(dlgPrinterName,
                                              ConfigureParams.Printer.szPrintToFileName,
                                              devicedlg[DEVDLG_PRNFILENAME].w,
                                              true);
			break;
		 case DEVDLG_RS232OUTBROWSE:            /* Choose a new RS232 output file */
			SDLGui_FileConfSelect(dlgRs232OutName,
                                              ConfigureParams.RS232.szOutFileName,
                                              devicedlg[DEVDLG_RS232OUTNAME].w,
                                              true);
			break;
		 case DEVDLG_RS232INBROWSE:             /* Choose a new RS232 input file */
			SDLGui_FileConfSelect(dlgRs232InName,
                                              ConfigureParams.RS232.szInFileName,
                                              devicedlg[DEVDLG_RS232INNAME].w,
                                              true);
			break;
		 case DEVDLG_MIDIINBROWSE:              /* Choose a new MIDI file */
			SDLGui_FileConfSelect(dlgMidiInName,
                                              ConfigureParams.Midi.sMidiInFileName,
                                              devicedlg[DEVDLG_MIDIINNAME].w,
                                              true);
			break;
		 case DEVDLG_MIDIOUTBROWSE:             /* Choose a new MIDI file */
			SDLGui_FileConfSelect(dlgMidiOutName,
                                              ConfigureParams.Midi.sMidiOutFileName,
                                              devicedlg[DEVDLG_MIDIOUTNAME].w,
                                              true);
			break;
		}
	}
	while (but != DEVDLG_EXIT && but != SDLGUI_QUIT
	       && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read values from dialog */
	ConfigureParams.Printer.bPrinterConnected = (devicedlg[DEVDLG_PRNENABLE].state & SG_SELECTED);
	ConfigureParams.RS232.bEnableRS232 = (devicedlg[DEVDLG_RS232ENABLE].state & SG_SELECTED);
	ConfigureParams.Midi.bEnableMidi = (devicedlg[DEVDLG_MIDIENABLE].state & SG_SELECTED);
}
Esempio n. 28
0
/**
 * Show and process the hard disk dialog.
 */
void DlgHardDisk_Main(void)
{
	int but;
	char dlgname_gdos[64], dlgname_acsi[64], dlgname_ide[64];

	SDLGui_CenterDlg(diskdlg);

	/* Set up dialog to actual values: */

	/* Boot from harddisk? */
	if (ConfigureParams.HardDisk.bBootFromHardDisk)
		diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED;
	else
		diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED;

	/* ACSI hard disk image: */
	if (ConfigureParams.HardDisk.bUseHardDiskImage)
		File_ShrinkName(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage,
		                diskdlg[DISKDLG_ACSINAME].w);
	else
		dlgname_acsi[0] = '\0';
	diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi;

	/* IDE hard disk image: */
	if (ConfigureParams.HardDisk.bUseIdeHardDiskImage)
		File_ShrinkName(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage,
		                diskdlg[DISKDLG_IDENAME].w);
	else
		dlgname_ide[0] = '\0';
	diskdlg[DISKDLG_IDENAME].txt = dlgname_ide;

	/* GEMDOS hard disk directory: */
	if (ConfigureParams.HardDisk.bUseHardDiskDirectories)
		File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0],
		                diskdlg[DISKDLG_GEMDOSNAME].w);
	else
		dlgname_gdos[0] = '\0';
	diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos;

	/* Draw and process the dialog */
	do
	{
		but = SDLGui_DoDialog(diskdlg, NULL);
		switch (but)
		{
		 case DISKDLG_ACSIEJECT:
			ConfigureParams.HardDisk.bUseHardDiskImage = FALSE;
			dlgname_acsi[0] = '\0';
			break;
		 case DISKDLG_ACSIBROWSE:
			if (SDLGui_FileConfSelect(dlgname_acsi,
			                          ConfigureParams.HardDisk.szHardDiskImage,
			                          diskdlg[DISKDLG_ACSINAME].w, FALSE))
				ConfigureParams.HardDisk.bUseHardDiskImage = TRUE;
			break;
		 case DISKDLG_IDEEJECT:
			ConfigureParams.HardDisk.bUseIdeHardDiskImage = FALSE;
			dlgname_ide[0] = '\0';
			break;
		 case DISKDLG_IDEBROWSE:
			if (SDLGui_FileConfSelect(dlgname_ide,
			                          ConfigureParams.HardDisk.szIdeHardDiskImage,
			                          diskdlg[DISKDLG_IDENAME].w, FALSE))
				ConfigureParams.HardDisk.bUseIdeHardDiskImage = TRUE;
			break;
		 case DISKDLG_GEMDOSEJECT:
			ConfigureParams.HardDisk.bUseHardDiskDirectories = FALSE;
			dlgname_gdos[0] = '\0';
			break;
		 case DISKDLG_GEMDOSBROWSE:
			if (DlgDisk_BrowseDir(dlgname_gdos,
			                     ConfigureParams.HardDisk.szHardDiskDirectories[0],
			                     diskdlg[DISKDLG_GEMDOSNAME].w))
				ConfigureParams.HardDisk.bUseHardDiskDirectories = TRUE;
			break;
		}
	}
	while (but != DISKDLG_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram);

	/* Read values from dialog: */
	ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED);
}
Esempio n. 29
0
/**
 * This functions sets up the actual font and then displays the main dialog.
 */
int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot)
{
    int retbut=0;
    bool bOldMouseVisibility;
    int nOldMouseX, nOldMouseY;
    char *psNewCfg;

    *bReset = false;
    *bLoadedSnapshot = false;

    if (SDLGui_SetScreen())
        return false;

    SDLGui_CenterDlg(maindlg);

    maindlg[MAINDLG_NORESET].state |= SG_SELECTED;
    maindlg[MAINDLG_RESET].state &= ~SG_SELECTED;

//	prefs = new Prefs(ThePrefs);

    do
    {
        retbut = SDLGui_DoDialog(maindlg, NULL);
        switch (retbut)
        {
        case MAINDLG_ABOUT:
            Dialog_AboutDlg();
            break;

        case MAINDLG_FLOPPYS:
            DlgFloppy_Main();
            break;

        case MAINDLG_VIDEO:
            Dialog_VideoDlg();
            break;

        case MAINDLG_MISC:
            Dialog_MiscDlg();
            break;

        case MAINDLG_JOYSTICK:
            Dialog_JoyDlg();
            break;

        case MAINDLG_SOUND:
            Dialog_SoundDlg();
            break;

        case MAINDLG_LOADCFG:
            /*
            			strcpy(sConfigFileName, ".frodorc");
            			psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false);

            			if (psNewCfg)
            			{
            				prefs->Load(psNewCfg);
                         	TheC64->NewPrefs(prefs);
                         	ThePrefs = *prefs;

            				strcpy(sConfigFileName, psNewCfg);
            				free(psNewCfg);
            			}
            */
            break;

        case MAINDLG_SAVECFG:
            /*
            			strcpy(sConfigFileName, ".frodorc");
            			psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true);

            			if (psNewCfg)
            			{
            				strcpy(sConfigFileName, psNewCfg);
            				prefs->Save(sConfigFileName);
            				free(psNewCfg);
            			}
            */
            break;

        case MAINDLG_SNAPSHOT:
            Dialog_SnapshotDlg();
            break;

        case MAINDLG_QUIT:
            bQuitProgram = true;
            break;
        }
        /*
        		if(ThePrefs!=*prefs){
        			printf("pref change \n");
        			TheC64->NewPrefs(prefs);
        			ThePrefs = *prefs;
        		}
        */
        gui_poll_events();

    }
    while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT
            && retbut != SDLGUI_ERROR && !bQuitProgram);


    if (maindlg[MAINDLG_RESET].state & SG_SELECTED)
        *bReset = true;

    //delete prefs;

    return (retbut == MAINDLG_OK);
}
Esempio n. 30
0
/**
 * Show and process the memory dialog.
 * @return  true if a memory snapshot has been loaded, false otherwise
 */
bool Dialog_MemDlg(void)
{
	int32_t i;
	int32_t but;

	SDLGui_CenterDlg(memorydlg);

	for (i = DLGMEMC_512KB; i <= DLGMEMC_8MB; i++)
	{
		memorydlg[i].state &= ~SG_SELECTED;
	}

	for (i = DLGMEMB_512KB; i <= DLGMEMB_1MB; i++)
	{
		memorydlg[i].state &= ~SG_SELECTED;
	}

	for (i = DLGMEMF_512KB; i <= DLGMEMF_8MB; i++)
	{
		memorydlg[i].state &= ~SG_SELECTED;
	}

printf("chip:%x fast:%x bogo:%x \n",currprefs.chipmem_size,currprefs.fastmem_size,currprefs.bogomem_size);

switch (currprefs.chipmem_size){

	case 0x80000:memorydlg[DLGMEMC_512KB].state |= SG_SELECTED;
		break;
	case 0x100000:memorydlg[DLGMEMC_1MB].state |= SG_SELECTED;
		break;
	case 0x200000:memorydlg[DLGMEMC_2MB].state |= SG_SELECTED;
		break;
	case 0x300000:memorydlg[DLGMEMC_3MB].state |= SG_SELECTED;
		break;
	case 0x400000:memorydlg[DLGMEMC_4MB].state |= SG_SELECTED;
		break;
	case 0x500000:memorydlg[DLGMEMC_5MB].state |= SG_SELECTED;
		break;
	case 0x600000:memorydlg[DLGMEMC_6MB].state |= SG_SELECTED;
		break;
	case 0x700000:memorydlg[DLGMEMC_7MB].state |= SG_SELECTED;
		break;
	default:
		memorydlg[DLGMEMC_8MB].state |= SG_SELECTED;
		break;
}

switch (currprefs.fastmem_size){

	case 0: break;
	case 0x80000:memorydlg[DLGMEMF_512KB].state |= SG_SELECTED;
		break;
	case 0x100000:memorydlg[DLGMEMF_1MB].state |= SG_SELECTED;
		break;
	case 0x200000:memorydlg[DLGMEMF_2MB].state |= SG_SELECTED;
		break;
	case 0x300000:memorydlg[DLGMEMF_3MB].state |= SG_SELECTED;
		break;
	case 0x400000:memorydlg[DLGMEMF_4MB].state |= SG_SELECTED;
		break;
	case 0x500000:memorydlg[DLGMEMF_5MB].state |= SG_SELECTED;
		break;
	case 0x600000:memorydlg[DLGMEMF_6MB].state |= SG_SELECTED;
		break;
	case 0x700000:memorydlg[DLGMEMF_7MB].state |= SG_SELECTED;
		break;
	default:
		memorydlg[DLGMEMF_8MB].state |= SG_SELECTED;
		break;
}

switch (currprefs.bogomem_size){

	case 0x80000:memorydlg[DLGMEMB_512KB].state |= SG_SELECTED;
		break;
	default:memorydlg[DLGMEMB_1MB].state |= SG_SELECTED;
		break;
}

	do
	{
		but = SDLGui_DoDialog(memorydlg, NULL);

		switch (but)
		{


		}

                gui_poll_events();
	}
	while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
	        && but != SDLGUI_ERROR && !bQuitProgram );


	for (i = DLGMEMC_512KB; i <= DLGMEMC_8MB; i++)
	{
		if(memorydlg[i].state & SG_SELECTED){

			changed_prefs.chipmem_size=chipm[i-DLGMEMC_512KB];

			if (currprefs.fastmem_size != 0 && changed_prefs.chipmem_size > 0x200000)
				changed_prefs.chipmem_size=0x200000;

			if(changed_prefs.chipmem_size!=currprefs.chipmem_size)memory_reset();
			break;
		}
	}

	for (i = DLGMEMB_512KB; i <= DLGMEMB_1MB; i++)
	{
		if(memorydlg[i].state & SG_SELECTED){

			changed_prefs.bogomem_size=chipm[i-DLGMEMB_512KB];
			if(changed_prefs.bogomem_size!=currprefs.bogomem_size)memory_reset();
			break;
		}
	}

	for (i = DLGMEMF_512KB; i <= DLGMEMF_8MB; i++)
	{

		if(memorydlg[i].state & SG_SELECTED){

			changed_prefs.fastmem_size=chipm[i-DLGMEMF_512KB];

			if(changed_prefs.fastmem_size!=currprefs.fastmem_size){

				if (changed_prefs.fastmem_size > 0 && currprefs.chipmem_size > 0x200000)
					changed_prefs.chipmem_size = 0x200000;

				expamem_reset();
				memory_reset();
			}
			break;
		}
	}


	return false;
}