Added ability to configure more stuff to the Config Page. This is all

I'm adding to it, since the other options can be toggled within the emulation.

All I have to figure out is how to fix scrolling down in a integer-box making
the number get bigger.  It's a confirmed bug, and the VC++ docs say that
it's counterintuitive but that's the way it works.  Damn, I really hate Windows.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@301 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2004-07-11 03:13:24 +00:00
parent 6b644925cc
commit b26087f2ba
6 changed files with 189 additions and 72 deletions

View File

@ -14,9 +14,12 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: ConfigPage.cxx,v 1.3 2004-07-06 22:51:58 stephena Exp $ // $Id: ConfigPage.cxx,v 1.4 2004-07-11 03:13:24 stephena Exp $
//============================================================================ //============================================================================
//#define WINVER 0x0501
//#include <afxcmn.h>
#include "pch.hxx" #include "pch.hxx"
#include "ConfigPage.hxx" #include "ConfigPage.hxx"
#include "resource.h" #include "resource.h"
@ -34,53 +37,97 @@ CConfigPage::CConfigPage( CGlobalData& rGlobalData )
BOOL CConfigPage::OnInitDialog( HWND hwnd ) BOOL CConfigPage::OnInitDialog( HWND hwnd )
{ {
// return FALSE if SetFocus is called
m_hwnd = hwnd; m_hwnd = hwnd;
HWND hwndCtrl; HWND hwndCtrl;
// Reload settings just in case the emulation changed them // Reload settings just in case the emulation changed them
myGlobalData.settings().loadConfig(); myGlobalData.settings().loadConfig();
// Set up ROMPATH // Get romdir
hwndCtrl = ::GetDlgItem( hwnd, IDC_ROMPATH ); hwndCtrl = GetDlgItem( hwnd, IDC_ROMPATH );
::SendMessage( hwndCtrl, EM_LIMITTEXT, MAX_PATH, 0 ); SendMessage( hwndCtrl, EM_LIMITTEXT, MAX_PATH, 0 );
::SetWindowText( hwndCtrl, SetWindowText( hwndCtrl, myGlobalData.settings().getString("romdir").c_str() );
myGlobalData.settings().getString("romdir").c_str() );
// Set up PADDLE // Get ssname
hwndCtrl = ::GetDlgItem( hwnd, IDC_PADDLE ); int ssname = 0;
hwndCtrl = GetDlgItem( hwnd, IDC_SNAPSHOT_TYPE );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"ROM Name" );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"ROM MD5" );
if(myGlobalData.settings().getString("ssname") == "romname")
ssname = 0;
else if(myGlobalData.settings().getString("ssname") == "md5sum")
ssname = 1;
SendMessage( hwndCtrl, CB_SETCURSEL, ssname, 0 );
// Get sssingle
hwndCtrl = GetDlgItem( hwnd, IDC_SNAPSHOT_MULTIPLE );
SendMessage( hwndCtrl, BM_SETCHECK,
myGlobalData.settings().getBool("sssingle")
? BST_UNCHECKED : BST_CHECKED, 0 );
// Get paddle
hwndCtrl = GetDlgItem( hwnd, IDC_PADDLE );
TCHAR psz[4] = _T("0"); TCHAR psz[4] = _T("0");
TCHAR i; TCHAR i;
for ( i = 0; i < 4; ++i ) for ( i = 0; i < 4; ++i )
{ {
psz[0] = _T('0') + i; psz[0] = _T('0') + i;
::SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)psz ); SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)psz );
} }
::SendMessage( hwndCtrl, CB_SETCURSEL, SendMessage( hwndCtrl, CB_SETCURSEL, myGlobalData.settings().getInt("paddle"), 0 );
myGlobalData.settings().getInt("paddle"), 0 );
// Set up Video mode // Get video
int videomode = 0; int videomode = 0;
hwndCtrl = ::GetDlgItem( hwnd, IDC_VIDEO ); hwndCtrl = GetDlgItem( hwnd, IDC_VIDEO );
::SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"Software" ); SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"Software" );
::SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"OpenGL" ); SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"OpenGL" );
if(myGlobalData.settings().getString("video") == "soft") if(myGlobalData.settings().getString("video") == "soft")
videomode = 0; videomode = 0;
else if(myGlobalData.settings().getString("video") == "gl") else if(myGlobalData.settings().getString("video") == "gl")
videomode = 1; videomode = 1;
::SendMessage( hwndCtrl, CB_SETCURSEL, videomode, 0 ); SendMessage( hwndCtrl, CB_SETCURSEL, videomode, 0 );
// Set up Aspect Ratio // Get gl_aspect
hwndCtrl = ::GetDlgItem( hwnd, IDC_ASPECT ); hwndCtrl = GetDlgItem( hwnd, IDC_GL_ASPECT );
::SendMessage( hwndCtrl, EM_LIMITTEXT, MAX_PATH, 0 ); SendMessage( hwndCtrl, EM_LIMITTEXT, MAX_PATH, 0 );
::SetWindowText( hwndCtrl, SetWindowText( hwndCtrl, myGlobalData.settings().getString("gl_aspect").c_str() );
myGlobalData.settings().getString("gl_aspect").c_str() );
// Set up SOUND // Get gl_fsmax
hwndCtrl = ::GetDlgItem( hwnd, IDC_SOUND ); hwndCtrl = GetDlgItem( hwnd, IDC_GL_FSMAX );
::SendMessage( hwndCtrl, BM_SETCHECK, SendMessage( hwndCtrl, BM_SETCHECK,
myGlobalData.settings().getBool("sound") myGlobalData.settings().getBool("gl_fsmax")
? BST_UNCHECKED : BST_CHECKED, 0 ); ? BST_CHECKED : BST_UNCHECKED, 0 );
// Get volume
// hwndCtrl = GetDlgItem( hwnd, IDC_SOUND_VOLUME_SPIN );
// CSpinButtonCtrl spin = (CSpinButtonCtrl) hwndCtrl;
hwndCtrl = GetDlgItem( hwnd, IDC_SOUND_VOLUME );
SendMessage( hwndCtrl, EM_LIMITTEXT, MAX_PATH, 0 );
SetWindowText( hwndCtrl, myGlobalData.settings().getString("volume").c_str() );
// Get fragsize
int fragindex = 2, fragsize = 2048;
hwndCtrl = GetDlgItem( hwnd, IDC_SOUND_FRAGSIZE );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"512" );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"1024" );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"2048" );
SendMessage( hwndCtrl, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)"4096" );
fragsize = myGlobalData.settings().getInt("fragsize");
if(fragsize == 512)
fragindex = 0;
else if(fragsize == 1024)
fragindex = 1;
else if(fragsize == 2048)
fragindex = 2;
else if(fragsize == 4096)
fragindex = 3;
SendMessage( hwndCtrl, CB_SETCURSEL, fragindex, 0 );
// Get sound
hwndCtrl = GetDlgItem( hwnd, IDC_SOUND_ENABLE );
SendMessage( hwndCtrl, BM_SETCHECK,
myGlobalData.settings().getBool("sound")
? BST_UNCHECKED : BST_CHECKED, 0 );
return TRUE; return TRUE;
} }
@ -93,29 +140,47 @@ LONG CConfigPage::OnApply( LPPSHNOTIFY lppsn )
{ {
UNUSED_ALWAYS( lppsn ); UNUSED_ALWAYS( lppsn );
// Apply the changes
// HWND hwnd = lppsn->hdr.hwndFrom; <<-- points to the sheet!
HWND hwndCtrl; HWND hwndCtrl;
TCHAR buffer[ MAX_PATH ]; TCHAR buffer[ MAX_PATH ];
string str; string str;
int i; int i;
bool b; bool b;
// RomPath // Set romdir
hwndCtrl = ::GetDlgItem( m_hwnd, IDC_ROMPATH ); hwndCtrl = GetDlgItem( m_hwnd, IDC_ROMPATH );
ASSERT( hwndCtrl ); ASSERT( hwndCtrl );
::GetWindowText( hwndCtrl, buffer, MAX_PATH ); GetWindowText( hwndCtrl, buffer, MAX_PATH );
myGlobalData.settings().setString( "romdir", buffer ); myGlobalData.settings().setString( "romdir", buffer );
// Paddle // Set ssname
hwndCtrl = ::GetDlgItem( m_hwnd, IDC_PADDLE ); hwndCtrl = GetDlgItem( m_hwnd, IDC_SNAPSHOT_TYPE );
ASSERT( hwndCtrl );
i = SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 );
if( i == 0 )
str = "romname";
else if( i == 1 )
str = "md5sum";
else
str = "romname";
myGlobalData.settings().setString( "ssname", str );
// Set sssingle
hwndCtrl = GetDlgItem( m_hwnd, IDC_SNAPSHOT_MULTIPLE );
ASSERT( hwndCtrl );
if( SendMessage( hwndCtrl, BM_GETCHECK, 0, 0 ) == BST_CHECKED )
b = false;
else
b = true;
myGlobalData.settings().setBool( "sssingle", b );
// Set paddle
hwndCtrl = GetDlgItem( m_hwnd, IDC_PADDLE );
ASSERT( hwndCtrl ); ASSERT( hwndCtrl );
myGlobalData.settings().setInt( "paddle", myGlobalData.settings().setInt( "paddle",
::SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 ) ); SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 ) );
// VideoMode // Set video
hwndCtrl = ::GetDlgItem( m_hwnd, IDC_VIDEO ); hwndCtrl = GetDlgItem( m_hwnd, IDC_VIDEO );
ASSERT( hwndCtrl ); ASSERT( hwndCtrl );
i = ::SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 ); i = ::SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 );
if( i == 0 ) if( i == 0 )
@ -126,16 +191,47 @@ LONG CConfigPage::OnApply( LPPSHNOTIFY lppsn )
str = "soft"; str = "soft";
myGlobalData.settings().setString( "video", str ); myGlobalData.settings().setString( "video", str );
// AspectRatio // Set gl_aspect
hwndCtrl = ::GetDlgItem( m_hwnd, IDC_ASPECT ); hwndCtrl = GetDlgItem( m_hwnd, IDC_GL_ASPECT );
ASSERT( hwndCtrl ); ASSERT( hwndCtrl );
::GetWindowText( hwndCtrl, buffer, MAX_PATH ); GetWindowText( hwndCtrl, buffer, MAX_PATH );
myGlobalData.settings().setString( "gl_aspect", buffer ); myGlobalData.settings().setString( "gl_aspect", buffer );
// Sound // Set gl_fsmax
hwndCtrl = ::GetDlgItem( m_hwnd, IDC_SOUND ); hwndCtrl = GetDlgItem( m_hwnd, IDC_GL_FSMAX );
ASSERT( hwndCtrl ); ASSERT( hwndCtrl );
if( ::SendMessage( hwndCtrl, BM_GETCHECK, 0, 0 ) == BST_CHECKED ) if( SendMessage( hwndCtrl, BM_GETCHECK, 0, 0 ) == BST_CHECKED )
b = true;
else
b = false;
myGlobalData.settings().setBool( "gl_fsmax", b );
// Set volume
hwndCtrl = GetDlgItem( m_hwnd, IDC_SOUND_VOLUME );
ASSERT( hwndCtrl );
GetWindowText( hwndCtrl, buffer, MAX_PATH );
myGlobalData.settings().setString( "volume", buffer );
// Set fragsize
hwndCtrl = GetDlgItem( m_hwnd, IDC_SOUND_FRAGSIZE );
ASSERT( hwndCtrl );
i = SendMessage( hwndCtrl, CB_GETCURSEL, 0, 0 );
if( i == 0 )
str = "512";
else if( i == 1 )
str = "1024";
else if( i == 2 )
str = "2048";
else if( i == 3 )
str = "4096";
else
str = "2048";
myGlobalData.settings().setString( "fragsize", str );
// Set sound
hwndCtrl = GetDlgItem( m_hwnd, IDC_SOUND_ENABLE );
ASSERT( hwndCtrl );
if( SendMessage( hwndCtrl, BM_GETCHECK, 0, 0 ) == BST_CHECKED )
b = false; b = false;
else else
b = true; b = true;

Binary file not shown.

View File

@ -121,7 +121,7 @@ BEGIN
CONTROL "E&xit",IDC_EXIT,"Button",BS_OWNERDRAW | WS_TABSTOP,348, CONTROL "E&xit",IDC_EXIT,"Button",BS_OWNERDRAW | WS_TABSTOP,348,
226,54,16 226,54,16
CTEXT "Written by Jeff Miller (miller@zipcon.net)\nUpdated by Stephen Anthony (sa666_666@hotmail.com)\nStella core by Bradford W. Mott (bwmott@acm.org)", CTEXT "Written by Jeff Miller (miller@zipcon.net)\nUpdated by Stephen Anthony (sa666_666@hotmail.com)\nStella core by Bradford W. Mott (bwmott@acm.org)",
IDC_STATIC,175,7,227,28,SS_NOPREFIX IDC_STATIC_TEXT,175,7,227,28,SS_NOPREFIX
RTEXT "<status>",IDC_ROMCOUNT,322,45,80,8,SS_NOPREFIX RTEXT "<status>",IDC_ROMCOUNT,322,45,80,8,SS_NOPREFIX
CONTROL "",-1,"Static",SS_ETCHEDHORZ,0,39,411,1 CONTROL "",-1,"Static",SS_ETCHEDHORZ,0,39,411,1
CONTROL "",-1,"Static",SS_ETCHEDHORZ,0,218,411,1 CONTROL "",-1,"Static",SS_ETCHEDHORZ,0,218,411,1
@ -158,31 +158,44 @@ BEGIN
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,37,284,1 CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,37,284,1
END END
IDD_CONFIG_PAGE DIALOGEX 0, 0, 306, 199 IDD_CONFIG_PAGE DIALOGEX 0, 0, 269, 158
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Options" CAPTION "Options"
FONT 8, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
LTEXT "&ROM (.bin) file path:",-1,7,10,64,8 GROUPBOX "File Locations",-1,7,7,254,39
EDITTEXT IDC_ROMPATH,82,7,152,14,ES_AUTOHSCROLL LTEXT "ROM Directory:",-1,14,25,55,8
PUSHBUTTON "&Browse...",IDC_BROWSE,241,7,50,14 EDITTEXT IDC_ROMPATH,67,23,171,13,ES_AUTOHSCROLL
LTEXT "Set this to the path where your .bin rom files are located.", PUSHBUTTON "...",IDC_BROWSE,241,23,13,12
-1,7,25,292,8 GROUPBOX "Snapshot Settings",-1,7,49,148,43
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,39,292,1 LTEXT "Save Snapshot as:",-1,14,61,67,10
LTEXT "Mouse should emulate &paddle:",-1,7,49,111,8 COMBOBOX IDC_SNAPSHOT_TYPE,86,60,60,37,CBS_DROPDOWNLIST |
COMBOBOX IDC_PADDLE,122,47,48,82,CBS_DROPDOWNLIST | WS_VSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "Generate multiple snapshots",IDC_SNAPSHOT_MULTIPLE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,27,75,109,11
GROUPBOX "Paddle Emulation",-1,161,49,100,43
LTEXT "Mouse is paddle:",-1,167,61,65,8
COMBOBOX IDC_PADDLE,225,60,30,82,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP WS_TABSTOP
LTEXT "Set this to specify which paddle the mouse should emulate. This can be any number from 0 to 3 inclusive.", GROUPBOX "Video Settings",-1,7,95,118,57
-1,7,66,198,18 LTEXT "Driver:",-1,14,108,28,10
CONTROL "Disable &Sound",IDC_SOUND,"Button",BS_AUTOCHECKBOX | COMBOBOX IDC_VIDEO,62,106,52,35,CBS_DROPDOWNLIST | CBS_SORT |
WS_TABSTOP,7,164,62,10
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,91,291,1
LTEXT "Video Driver:",-1,7,101,67,10
COMBOBOX IDC_VIDEO,67,99,51,35,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP WS_VSCROLL | WS_TABSTOP
LTEXT "Aspect Ratio:",-1,7,120,55,10 LTEXT "Aspect Ratio:",-1,14,122,50,10
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,136,290,1 EDITTEXT IDC_GL_ASPECT,62,120,51,12,ES_AUTOHSCROLL
EDITTEXT IDC_ASPECT,66,118,50,12,ES_AUTOHSCROLL CONTROL "Maximize FS OpenGL",IDC_GL_FSMAX,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,25,135,86,12
GROUPBOX "Sound Settings",-1,132,95,96,57
LTEXT "Volume:",-1,140,108,28,8
EDITTEXT IDC_SOUND_VOLUME,176,106,29,12,ES_AUTOHSCROLL
CONTROL "",IDC_SOUND_VOLUME_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,205,106,11,12
LTEXT "Frag Size:",-1,140,122,36,8
COMBOBOX IDC_SOUND_FRAGSIZE,176,120,41,51,CBS_DROPDOWNLIST |
CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "Disable &Sound",IDC_SOUND_ENABLE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,147,135,62,10
END END
@ -213,9 +226,9 @@ BEGIN
IDD_CONFIG_PAGE, DIALOG IDD_CONFIG_PAGE, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 299 RIGHTMARGIN, 262
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 192 BOTTOMMARGIN, 152
END END
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED

View File

@ -32,7 +32,7 @@
#define IDC_PLAY 1005 #define IDC_PLAY 1005
#define IDC_ROMCOUNT 1006 #define IDC_ROMCOUNT 1006
#define IDC_ROMLIST 1007 #define IDC_ROMLIST 1007
#define IDC_STATIC 1008 #define IDC_STATIC_TEXT 1008
#define IDC_TITLE 1009 #define IDC_TITLE 1009
#define IDC_WEB_MAINTAINER 1010 #define IDC_WEB_MAINTAINER 1010
#define IDC_WEB_STELLA 1011 #define IDC_WEB_STELLA 1011
@ -42,14 +42,22 @@
#define IDC_CONFIG 1015 #define IDC_CONFIG 1015
#define IDC_CONFIG2 1016 #define IDC_CONFIG2 1016
#define IDC_PADDLE 1017 #define IDC_PADDLE 1017
#define IDC_SOUND 1018
#define IDC_VOLUME 1019 #define IDC_VOLUME 1019
#define IDC_VIDEO 1020
#define IDC_ASPECT 1021
#define IDC_BROWSE 1022 #define IDC_BROWSE 1022
#define IDC_EDIT2 1027 #define IDC_EDIT2 1027
#define IDC_RELOAD 1028 #define IDC_RELOAD 1028
#define IDC_INSTRUCTIONS 2000 #define IDC_SNAPSHOT_TYPE 1029
#define IDC_SNAPSHOT_LOCATION 1030
#define IDC_SNAPSHOT_MULTIPLE 1031
#define IDC_SOUND_ENABLE 1032
#define IDC_SOUND_VOLUME 1033
#define IDC_LIST1 1033
#define IDC_VIDEO 1034
#define IDC_GL_ASPECT 1035
#define IDC_GL_FSMAX 1036
#define IDC_SOUND_VOLUME_SPIN 1044
#define IDC_SOUND_FRAGSIZE 1045
#define IDC_TAB1 1046
#define ID_FILE_EXIT 32771 #define ID_FILE_EXIT 32771
// Next default values for new objects // Next default values for new objects
@ -58,7 +66,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 296 #define _APS_NEXT_RESOURCE_VALUE 296
#define _APS_NEXT_COMMAND_VALUE 32772 #define _APS_NEXT_COMMAND_VALUE 32772
#define _APS_NEXT_CONTROL_VALUE 1028 #define _APS_NEXT_CONTROL_VALUE 1047
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif

Binary file not shown.

Binary file not shown.