summaryrefslogtreecommitdiffstats
path: root/docs/release/src/osd/winui/winui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/osd/winui/winui.cpp')
-rw-r--r--docs/release/src/osd/winui/winui.cpp1461
1 files changed, 721 insertions, 740 deletions
diff --git a/docs/release/src/osd/winui/winui.cpp b/docs/release/src/osd/winui/winui.cpp
index 914fd9618a6..2117d5eb46a 100644
--- a/docs/release/src/osd/winui/winui.cpp
+++ b/docs/release/src/osd/winui/winui.cpp
@@ -3,7 +3,7 @@
/***************************************************************************
- winui.c
+ winui.cpp
Win32 GUI code.
@@ -34,6 +34,8 @@
#include <time.h>
#include <tchar.h>
+/* Uncomment to add Direct Draw support (has to be added back to the core too) */
+//#define UI_DIRECTDRAW
// MAME/MAMEUI headers
#include "emu.h"
@@ -66,7 +68,9 @@
#include "help.h"
#include "history.h"
#include "dialogs.h"
+#ifdef UI_DIRECTDRAW
#include "directdraw.h"
+#endif
#include "directinput.h"
#include "dijoystick.h" /* For DIJoystick availability. */
@@ -74,10 +78,6 @@
#define snprintf _snprintf
#endif
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
-#endif
-
#ifndef LVS_EX_LABELTIP
#define LVS_EX_LABELTIP 0x00004000 // listview unfolds partly hidden labels if it does not have infotip text
#endif // LVS_EX_LABELTIP
@@ -233,12 +233,12 @@ UINT8 playopts_apply = 0;
typedef struct _play_options play_options;
struct _play_options
{
- const char *record; // OPTION_RECORD
- const char *playback; // OPTION_PLAYBACK
- const char *state; // OPTION_STATE
- const char *wavwrite; // OPTION_WAVWRITE
- const char *mngwrite; // OPTION_MNGWRITE
- const char *aviwrite; // OPTION_AVIWRITE
+ const char *record; // OPTION_RECORD
+ const char *playback; // OPTION_PLAYBACK
+ const char *state; // OPTION_STATE
+ const char *wavwrite; // OPTION_WAVWRITE
+ const char *mngwrite; // OPTION_MNGWRITE
+ const char *aviwrite; // OPTION_AVIWRITE
};
/***************************************************************************
@@ -406,7 +406,7 @@ typedef struct
int id; /* Window control id */
HWND hwnd; /* Window handle */
} u;
- BOOL setfont; /* Do we set this item's font? */
+ BOOL setfont; /* Do we set this item's font? */
int action; /* What to do when control is resized */
void *subwindow; /* Points to a Resize structure for this subwindow; NULL if none */
} ResizeItem;
@@ -475,18 +475,17 @@ static object_pool *mameui_pool;
static int game_index;
static int progBarStep;
-static BOOL bDoGameCheck = FALSE;
+static BOOL bDoGameCheck = false;
/* Tree control variables */
-static BOOL bShowTree = 1;
static BOOL bShowToolBar = 1;
static BOOL bShowStatusBar = 1;
static BOOL bShowTabCtrl = 1;
-static BOOL bProgressShown = FALSE;
-static BOOL bListReady = FALSE;
+static BOOL bProgressShown = false;
+static BOOL bListReady = false;
-#define WM_MAME32_FILECHANGED (WM_USER + 0)
-#define WM_MAME32_AUDITGAME (WM_USER + 1)
+#define WM_MAME32_FILECHANGED (WM_USER + 0)
+#define WM_MAME32_AUDITGAME (WM_USER + 1)
static PDIRWATCHER s_pWatcher;
@@ -500,10 +499,10 @@ static bool keyboard_state[4096]; /* __code_max #defines the number of internal
static char g_SearchText[256];
/* table copied from windows/inputs.c */
// table entry indices
-#define MAME_KEY 0
-#define DI_KEY 1
-#define VIRTUAL_KEY 2
-#define ASCII_KEY 3
+#define MAME_KEY 0
+#define DI_KEY 1
+#define VIRTUAL_KEY 2
+#define ASCII_KEY 3
// master keyboard translation table
static const int win_key_trans_table[][4] =
@@ -660,7 +659,7 @@ static const GUISequence GUISequenceControl[]=
{"gui_key_view_tab_marquee", input_seq(), ID_VIEW_TAB_MARQUEE, Get_ui_key_view_tab_marquee },
{"gui_key_view_tab_screenshot", input_seq(), ID_VIEW_TAB_SCREENSHOT, Get_ui_key_view_tab_screenshot },
{"gui_key_view_tab_title", input_seq(), ID_VIEW_TAB_TITLE, Get_ui_key_view_tab_title },
- {"gui_key_view_tab_pcb", input_seq(), ID_VIEW_TAB_PCB, Get_ui_key_view_tab_pcb },
+ {"gui_key_view_tab_pcb", input_seq(), ID_VIEW_TAB_PCB, Get_ui_key_view_tab_pcb },
{"gui_key_quit", input_seq(), ID_FILE_EXIT, Get_ui_key_quit },
};
@@ -680,15 +679,15 @@ static HWND hStatusBar = 0;
static HWND s_hToolBar = 0;
/* Column Order as Displayed */
-static BOOL oldControl = FALSE;
-static BOOL xpControl = FALSE;
+static BOOL oldControl = false;
+static BOOL xpControl = false;
/* Used to recalculate the main window layout */
static int bottomMargin;
static int topMargin;
-static int have_history = FALSE;
+static int have_history = false;
-static BOOL have_selection = FALSE;
+static BOOL have_selection = false;
static HBITMAP hMissing_bitmap = NULL;
@@ -753,8 +752,8 @@ static const int s_nPickers[] =
/* How to resize toolbar sub window */
static ResizeItem toolbar_resize_items[] =
{
- { RA_ID, { ID_TOOLBAR_EDIT }, TRUE, RA_LEFT | RA_TOP, NULL },
- { RA_END, { 0 }, FALSE, 0, NULL }
+ { RA_ID, { ID_TOOLBAR_EDIT }, true, RA_LEFT | RA_TOP, NULL },
+ { RA_END, { 0 }, false, 0, NULL }
};
static Resize toolbar_resize = { {0, 0, 0, 0}, toolbar_resize_items };
@@ -762,18 +761,18 @@ static Resize toolbar_resize = { {0, 0, 0, 0}, toolbar_resize_items };
/* How to resize main window */
static ResizeItem main_resize_items[] =
{
- { RA_HWND, { 0 }, FALSE, RA_LEFT | RA_RIGHT | RA_TOP, &toolbar_resize },
- { RA_HWND, { 0 }, FALSE, RA_LEFT | RA_RIGHT | RA_BOTTOM, NULL },
- { RA_ID, { IDC_DIVIDER }, FALSE, RA_LEFT | RA_RIGHT | RA_TOP, NULL },
- { RA_ID, { IDC_TREE }, TRUE, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_LIST }, TRUE, RA_ALL, NULL },
- { RA_ID, { IDC_SPLITTER }, FALSE, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_SPLITTER2 },FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_SSFRAME }, FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_SSPICTURE },FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_HISTORY }, TRUE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
- { RA_ID, { IDC_SSTAB }, FALSE, RA_RIGHT | RA_TOP, NULL },
- { RA_END, { 0 }, FALSE, 0, NULL }
+ { RA_HWND, { 0 }, false, RA_LEFT | RA_RIGHT | RA_TOP, &toolbar_resize },
+ { RA_HWND, { 0 }, false, RA_LEFT | RA_RIGHT | RA_BOTTOM, NULL },
+ { RA_ID, { IDC_DIVIDER }, false, RA_LEFT | RA_RIGHT | RA_TOP, NULL },
+ { RA_ID, { IDC_TREE }, true, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_LIST }, true, RA_ALL, NULL },
+ { RA_ID, { IDC_SPLITTER }, false, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SPLITTER2 },false, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSFRAME }, false, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSPICTURE },false, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_HISTORY }, true, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSTAB }, false, RA_RIGHT | RA_TOP, NULL },
+ { RA_END, { 0 }, false, 0, NULL }
};
static Resize main_resize = { {0, 0, 0, 0}, main_resize_items };
@@ -785,12 +784,12 @@ TCHAR last_directory[MAX_PATH];
each time it changes */
static UINT g_mame32_message = 0;
-static BOOL g_listview_dragging = FALSE;
+static BOOL g_listview_dragging = false;
static HIMAGELIST himl_drag;
static int game_dragged; /* which game started the drag */
static HTREEITEM prev_drag_drop_target; /* which tree view item we're currently highlighting */
-static BOOL g_in_treeview_edit = FALSE;
+static BOOL g_in_treeview_edit = false;
/***************************************************************************
Global variables
@@ -815,12 +814,8 @@ extern const LPCTSTR column_names[COLUMN_MAX] =
TEXT("Play Time"),
TEXT("Clone Of"),
TEXT("Trackball"),
-#ifdef SHOW_COLUMN_SAMPLES
TEXT("Samples"),
-#endif
-#ifdef SHOW_COLUMN_ROMS
TEXT("ROMs"),
-#endif
};
/***************************************************************************
@@ -847,6 +842,15 @@ class mameui_output_error : public osd_output
public:
virtual void output_callback(osd_output_channel channel, const char *msg, va_list args)
{
+ if (channel == OSD_OUTPUT_CHANNEL_VERBOSE)
+ {
+ FILE *pFile;
+ pFile = fopen("verbose.log", "a");
+ vfprintf(pFile, msg, args);fflush(pFile);
+ fclose (pFile);
+ return;
+ }
+
if (channel == OSD_OUTPUT_CHANNEL_ERROR)
{
char buffer[1024];
@@ -856,18 +860,38 @@ public:
winwindow_toggle_full_screen();
vsnprintf(buffer, ARRAY_LENGTH(buffer), msg, args);printf("%s\n",buffer);
- win_message_box_utf8(!osd_common_t::s_window_list.empty() ? std::static_pointer_cast<win_window_info>(osd_common_t::s_window_list.front())->platform_window() : hMain, buffer, MAMEUINAME, MB_ICONERROR | MB_OK);
+ win_message_box_utf8(!osd_common_t::s_window_list.empty() ?
+ std::static_pointer_cast<win_window_info>(osd_common_t::s_window_list.front())->platform_window() : hMain, buffer, MAMEUINAME, MB_ICONERROR | MB_OK);
}
- else
- chain_output(channel, msg, args);
+// else
+// chain_output(channel, msg, args); // goes down the black hole
+ // LOG all messages
+ FILE *pFile;
+ pFile = fopen("winui.log", "a");
+ vfprintf(pFile, msg, args);fflush(pFile);
+ fclose (pFile);
+/* List of output types:
+ case OSD_OUTPUT_CHANNEL_ERROR:
+ case OSD_OUTPUT_CHANNEL_WARNING:
+ vfprintf(stderr, msg, args); // send errors and warnings to standard error (=console)
+ break;
+ case OSD_OUTPUT_CHANNEL_INFO:
+ case OSD_OUTPUT_CHANNEL_LOG:
+ vfprintf(stdout, msg, args); // send info and logging to standard output (=console)
+ break;
+ case OSD_OUTPUT_CHANNEL_VERBOSE:
+ if (verbose()) vfprintf(stdout, msg, args); // send verbose (2nd half) to console if enabled (first half lost)
+ break;
+ case OSD_OUTPUT_CHANNEL_DEBUG: // only for debug builds
+ vfprintf(stdout, msg, args);
+*/
}
};
-static std::wstring s2ws(const std::string& s)
+static std::wstring s2ws(const string& s)
{
- int len;
int slength = (int)s.length() + 1;
- len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
+ int len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
@@ -884,9 +908,8 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts)
time_t start, end;
double elapsedtime;
int i;
- //mame_options mame_opts; seems useless....
+ //mame_options mame_opts; //seems useless....
windows_options global_opts;
- std::string error_string;
// set up MAME options
// mame_opts = mame_options_init(mame_win_options);
@@ -894,29 +917,29 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts)
SetDirectories(global_opts);
// set some startup options
- global_opts.set_value(OPTION_LANGUAGE, GetLanguageUI(), OPTION_PRIORITY_CMDLINE, error_string);
- global_opts.set_value(OPTION_PLUGINS, GetEnablePlugins(), OPTION_PRIORITY_CMDLINE, error_string);
- global_opts.set_value(OPTION_PLUGIN, GetPlugins(), OPTION_PRIORITY_CMDLINE, error_string);
+ global_opts.set_value(OPTION_LANGUAGE, GetLanguageUI(), OPTION_PRIORITY_CMDLINE);
+ global_opts.set_value(OPTION_PLUGINS, GetEnablePlugins(), OPTION_PRIORITY_CMDLINE);
+ global_opts.set_value(OPTION_PLUGIN, GetPlugins(), OPTION_PRIORITY_CMDLINE);
// add image specific device options
//mame_opts.set_system_name(global_opts, driver_list::driver(nGameIndex).name);
- global_opts.set_value(OPTION_SYSTEMNAME, driver_list::driver(nGameIndex).name, OPTION_PRIORITY_CMDLINE, error_string);
+ global_opts.set_value(OPTION_SYSTEMNAME, driver_list::driver(nGameIndex).name, OPTION_PRIORITY_CMDLINE);
// set any specified play options
if (playopts_apply == 0x57)
{
if (playopts->record)
- global_opts.set_value(OPTION_RECORD, playopts->record, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_RECORD, playopts->record, OPTION_PRIORITY_CMDLINE);
if (playopts->playback)
- global_opts.set_value(OPTION_PLAYBACK, playopts->playback, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_PLAYBACK, playopts->playback, OPTION_PRIORITY_CMDLINE);
if (playopts->state)
- global_opts.set_value(OPTION_STATE, playopts->state, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_STATE, playopts->state, OPTION_PRIORITY_CMDLINE);
if (playopts->wavwrite)
- global_opts.set_value(OPTION_WAVWRITE, playopts->wavwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_WAVWRITE, playopts->wavwrite, OPTION_PRIORITY_CMDLINE);
if (playopts->mngwrite)
- global_opts.set_value(OPTION_MNGWRITE, playopts->mngwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_MNGWRITE, playopts->mngwrite, OPTION_PRIORITY_CMDLINE);
if (playopts->aviwrite)
- global_opts.set_value(OPTION_AVIWRITE, playopts->aviwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ global_opts.set_value(OPTION_AVIWRITE, playopts->aviwrite, OPTION_PRIORITY_CMDLINE);
}
// Mame will parse all the needed .ini files.
@@ -953,19 +976,19 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts)
if (playopts_apply == 0x57)
{
windows_options o;
- load_options(o, OPTIONS_GAME, nGameIndex);
+ load_options(o, OPTIONS_GAME, nGameIndex, 0);
if (playopts->record)
- o.set_value(OPTION_RECORD, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_RECORD, "", OPTION_PRIORITY_CMDLINE);
if (playopts->playback)
- o.set_value(OPTION_PLAYBACK, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_PLAYBACK, "", OPTION_PRIORITY_CMDLINE);
if (playopts->state)
- o.set_value(OPTION_STATE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_STATE, "", OPTION_PRIORITY_CMDLINE);
if (playopts->wavwrite)
- o.set_value(OPTION_WAVWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_WAVWRITE, "", OPTION_PRIORITY_CMDLINE);
if (playopts->mngwrite)
- o.set_value(OPTION_MNGWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_MNGWRITE, "", OPTION_PRIORITY_CMDLINE);
if (playopts->aviwrite)
- o.set_value(OPTION_AVIWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ o.set_value(OPTION_AVIWRITE, "", OPTION_PRIORITY_CMDLINE);
// apply the above to the ini file
save_options(o, OPTIONS_GAME, nGameIndex);
}
@@ -982,18 +1005,15 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts)
int MameUIMain(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
{
+ // delete old log file, ignore any error
+ unlink("verbose.log");
+ unlink("winui.log");
+
if (__argc != 1)
{
/* Rename main because gcc will use it instead of WinMain even with -mwindows */
- extern int utf8_main(std::vector<std::string> &args);
- std::vector<std::string> utf8_argv(__argc);
-
- /* convert arguments to UTF-8 */
- for (int i = 0; i < __argc; i++)
- utf8_argv[i] = ui_utf8_from_wstring(__targv[i]);
-
- /* run utf8_main */
- exit(utf8_main(utf8_argv));
+ extern int main_(int argc, char *argv[]);
+ exit(main_(__argc, __argv));
}
if (!Win32UI_init(hInstance, lpCmdLine, nCmdShow))
return 1;
@@ -1024,22 +1044,17 @@ object_pool *GetMameUIMemoryPool(void)
void GetRealColumnOrder(int order[])
{
- int tmpOrder[COLUMN_MAX];
- int nColumnMax;
- int i;
- BOOL res;
-
- nColumnMax = Picker_GetNumColumns(hwndList);
+ int nColumnMax = Picker_GetNumColumns(hwndList);
/* Get the Column Order and save it */
if (!oldControl)
{
- res = ListView_GetColumnOrderArray(hwndList, nColumnMax, tmpOrder);
+ int tmpOrder[COLUMN_MAX];
+ BOOL res = ListView_GetColumnOrderArray(hwndList, nColumnMax, tmpOrder);
+ res++;
- for (i = 0; i < nColumnMax; i++)
- {
+ for (int i = 0; i < nColumnMax; i++)
order[i] = Picker_GetRealColumnFromViewColumn(hwndList, tmpOrder[i]);
- }
}
}
@@ -1054,94 +1069,71 @@ void GetRealColumnOrder(int order[])
*/
static HICON FormatICOInMemoryToHICON(PBYTE ptrBuffer, UINT nBufferSize)
{
- ICONIMAGE IconImage;
- LPICONDIRENTRY lpIDE = NULL;
- UINT nNumImages;
- UINT nBufferIndex = 0;
- HICON hIcon = NULL;
-
/* Is there a WORD? */
if (nBufferSize < sizeof(WORD))
- {
return NULL;
- }
/* Was it 'reserved' ? (ie 0) */
+ UINT nBufferIndex = 0;
if ((WORD)(ptrBuffer[nBufferIndex]) != 0)
- {
return NULL;
- }
nBufferIndex += sizeof(WORD);
/* Is there a WORD? */
if (nBufferSize - nBufferIndex < sizeof(WORD))
- {
return NULL;
- }
/* Was it type 1? */
if ((WORD)(ptrBuffer[nBufferIndex]) != 1)
- {
return NULL;
- }
nBufferIndex += sizeof(WORD);
/* Is there a WORD? */
if (nBufferSize - nBufferIndex < sizeof(WORD))
- {
return NULL;
- }
/* Then that's the number of images in the ICO file */
- nNumImages = (WORD)(ptrBuffer[nBufferIndex]);
+ UINT nNumImages = (WORD)(ptrBuffer[nBufferIndex]);
/* Is there at least one icon in the file? */
if ( nNumImages < 1 )
- {
return NULL;
- }
nBufferIndex += sizeof(WORD);
/* Is there enough space for the icon directory entries? */
if ((nBufferIndex + nNumImages * sizeof(ICONDIRENTRY)) > nBufferSize)
- {
return NULL;
- }
/* Assign icon directory entries from buffer */
- lpIDE = (LPICONDIRENTRY)(&ptrBuffer[nBufferIndex]);
+ LPICONDIRENTRY lpIDE = (LPICONDIRENTRY)(&ptrBuffer[nBufferIndex]);
nBufferIndex += nNumImages * sizeof (ICONDIRENTRY);
+ ICONIMAGE IconImage;
IconImage.dwNumBytes = lpIDE->dwBytesInRes;
/* Seek to beginning of this image */
if ( lpIDE->dwImageOffset > nBufferSize )
- {
return NULL;
- }
nBufferIndex = lpIDE->dwImageOffset;
/* Read it in */
if ((nBufferIndex + lpIDE->dwBytesInRes) > nBufferSize)
- {
return NULL;
- }
IconImage.lpBits = &ptrBuffer[nBufferIndex];
nBufferIndex += lpIDE->dwBytesInRes;
+
/* It failed, odds are good we're on NT so try the non-Ex way */
+ HICON hIcon = NULL;
if (hIcon == NULL)
- {
/* We would break on NT if we try with a 16bpp image */
if (((LPBITMAPINFO)IconImage.lpBits)->bmiHeader.biBitCount != 16)
- {
- hIcon = CreateIconFromResourceEx(IconImage.lpBits, IconImage.dwNumBytes, TRUE, 0x00030000,0,0,LR_DEFAULTSIZE);
- }
- }
+ hIcon = CreateIconFromResourceEx(IconImage.lpBits, IconImage.dwNumBytes, true, 0x00030000,0,0,LR_DEFAULTSIZE);
+
return hIcon;
}
@@ -1151,71 +1143,57 @@ HICON LoadIconFromFile(const char *iconname)
struct stat file_stat;
char tmpStr[MAX_PATH];
char tmpIcoName[MAX_PATH];
- const char* sDirName = GetImgDir();
- PBYTE bufferPtr;
- util::archive_file::error ziperr;
+ PBYTE bufferPtr = 0;
util::archive_file::ptr zip;
- int res = 0;
- sprintf(tmpStr, "%s/%s.ico", GetIconsDir(), iconname);
+ const string t = GetIconsDir();
+ sprintf(tmpStr, "%s/%s.ico", t.c_str(), iconname);
if (stat(tmpStr, &file_stat) != 0 || (hIcon = win_extract_icon_utf8(hInst, tmpStr, 0)) == 0)
{
- sprintf(tmpStr, "%s/%s.ico", sDirName, iconname);
- if (stat(tmpStr, &file_stat) != 0
- || (hIcon = win_extract_icon_utf8(hInst, tmpStr, 0)) == 0)
+ sprintf(tmpStr, "%s/icons.zip", t.c_str());
+ sprintf(tmpIcoName, "%s.ico", iconname);
+
+ if (util::archive_file::open_zip(tmpStr, zip) == util::archive_file::error::NONE)
+ {
+ if (zip->search(tmpIcoName, false) >= 0)
+ {
+ bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length());
+ if (bufferPtr)
+ {
+ if (zip->decompress(bufferPtr, zip->current_uncompressed_length()) == util::archive_file::error::NONE)
+ hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length());
+
+ free(bufferPtr);
+ }
+ }
+ zip.reset();
+ }
+ else
{
- sprintf(tmpStr, "%s/icons.zip", GetIconsDir());
+ sprintf(tmpStr, "%s/icons.7z", t.c_str());
sprintf(tmpIcoName, "%s.ico", iconname);
- ziperr = util::archive_file::open_zip(tmpStr, zip);
- if (ziperr == util::archive_file::error::NONE)
+ if (util::archive_file::open_7z(tmpStr, zip) == util::archive_file::error::NONE)
{
- res = zip->search(tmpIcoName, false);
- if (res >= 0)
+ if (zip->search(tmpIcoName, false) >= 0)
{
bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length());
if (bufferPtr)
{
- ziperr = zip->decompress(bufferPtr, zip->current_uncompressed_length());
- if (ziperr == util::archive_file::error::NONE)
- {
+ if (zip->decompress(bufferPtr, zip->current_uncompressed_length()) == util::archive_file::error::NONE)
hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length());
- }
+
free(bufferPtr);
}
}
zip.reset();
}
- else
- {
- sprintf(tmpStr, "%s/icons.7z", GetIconsDir());
- sprintf(tmpIcoName, "%s.ico", iconname);
-
- ziperr = util::archive_file::open_7z(tmpStr, zip);
- if (ziperr == util::archive_file::error::NONE)
- {
- res = zip->search(tmpIcoName, false);
- if (res >= 0)
- {
- bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length());
- if (bufferPtr)
- {
- ziperr = zip->decompress(bufferPtr, zip->current_uncompressed_length());
- if (ziperr == util::archive_file::error::NONE)
- {
- hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length());
- }
- free(bufferPtr);
- }
- }
- zip.reset();
- }
- }
}
}
return hIcon;
}
+
/* Return the number of folders with options */
void SetNumOptionFolders(int count)
{
@@ -1232,7 +1210,7 @@ const char * GetSearchText(void)
/* Sets the treeview and listviews sizes in accordance with their visibility and the splitters */
static void ResizeTreeAndListViews(BOOL bResizeHidden)
{
- int i;
+ bool bShowPicture = BIT(GetWindowPanes(), 3);
int nLastWidth = 0;
int nLastWidth2 = 0;
int nLeftWindowWidth = 0;
@@ -1249,17 +1227,17 @@ static void ResizeTreeAndListViews(BOOL bResizeHidden)
rect.top += topMargin;
/* Tree control */
- ShowWindow(GetDlgItem(hMain, IDC_TREE), bShowTree ? SW_SHOW : SW_HIDE);
+ ShowWindow(GetDlgItem(hMain, IDC_TREE), BIT(GetWindowPanes(), 0) ? SW_SHOW : SW_HIDE);
- for (i = 0; g_splitterInfo[i].nSplitterWindow; i++)
+ for (int i = 0; g_splitterInfo[i].nSplitterWindow; i++)
{
- bVisible = GetWindowLong(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), GWL_STYLE) & WS_VISIBLE ? TRUE : FALSE;
+ bVisible = GetWindowLong(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), GWL_STYLE) & WS_VISIBLE ? true : false;
if (bResizeHidden || bVisible)
{
nLeftWindowWidth = nSplitterOffset[i] - SPLITTER_WIDTH/2 - nLastWidth;
/* special case for the rightmost pane when the screenshot is gone */
- if (!GetShowScreenShot() && !g_splitterInfo[i+1].nSplitterWindow)
+ if (!bShowPicture && !g_splitterInfo[i+1].nSplitterWindow)
nLeftWindowWidth = rect.right - nLastWidth;
/* woah? are we overlapping ourselves? */
@@ -1271,11 +1249,9 @@ static void ResizeTreeAndListViews(BOOL bResizeHidden)
i--;
}
- MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), nLastWidth, rect.top + 2,
- nLeftWindowWidth, (rect.bottom - rect.top) - 4 , TRUE);
+ MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), nLastWidth, rect.top + 2, nLeftWindowWidth, (rect.bottom - rect.top) - 4 , true);
- MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nSplitterWindow), nSplitterOffset[i], rect.top + 2,
- SPLITTER_WIDTH, (rect.bottom - rect.top) - 4, TRUE);
+ MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nSplitterWindow), nSplitterOffset[i], rect.top + 2, SPLITTER_WIDTH, (rect.bottom - rect.top) - 4, true);
}
if (bVisible)
@@ -1289,15 +1265,15 @@ static void ResizeTreeAndListViews(BOOL bResizeHidden)
/* Adjust the list view and screenshot button based on GetShowScreenShot() */
void UpdateScreenShot(void)
{
+ /* first time through can't do this stuff */
+ if (hwndList == NULL)
+ return;
+
RECT rect;
//int nWidth;
RECT fRect;
POINT p = {0, 0};
- /* first time through can't do this stuff */
- if (hwndList == NULL)
- return;
-
/* Size the List Control in the Picker */
GetClientRect(hMain, &rect);
@@ -1306,39 +1282,24 @@ void UpdateScreenShot(void)
if (bShowToolBar)
rect.top += topMargin;
- if (GetShowScreenShot())
- {
- //nWidth = nSplitterOffset[GetSplitterCount() - 1];
- CheckMenuItem(GetMenu(hMain),ID_VIEW_PICTURE_AREA, MF_CHECKED);
- ToolBar_CheckButton(s_hToolBar, ID_VIEW_PICTURE_AREA, MF_CHECKED);
- }
- else
- {
- //nWidth = rect.right;
- CheckMenuItem(GetMenu(hMain),ID_VIEW_PICTURE_AREA, MF_UNCHECKED);
- ToolBar_CheckButton(s_hToolBar, ID_VIEW_PICTURE_AREA, MF_UNCHECKED);
- }
+ BOOL bShowImage = BIT(GetWindowPanes(), 3); // ss
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_PICTURE_AREA, bShowImage ? MF_CHECKED : MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_PICTURE_AREA, bShowImage ? MF_CHECKED : MF_UNCHECKED);
- ResizeTreeAndListViews(FALSE);
+ ResizeTreeAndListViews(false);
FreeScreenShot();
if (have_selection)
- {
-#ifdef MESS
- if (!g_szSelectedItem[0] || !LoadScreenShotEx(Picker_GetSelectedItem(hwndList), g_szSelectedItem,
- TabView_GetCurrentTab(hTabCtrl)))
-#endif
// load and set image, or empty it if we don't have one
- LoadScreenShot(Picker_GetSelectedItem(hwndList), TabView_GetCurrentTab(hTabCtrl));
- }
+ LoadScreenShot(Picker_GetSelectedItem(hwndList), NULL, TabView_GetCurrentTab(hTabCtrl));
// figure out if we have a history or not, to place our other windows properly
UpdateHistory();
// setup the picture area
- if (GetShowScreenShot())
+ if (bShowImage)
{
DWORD dwStyle;
DWORD dwStyleEx;
@@ -1348,31 +1309,24 @@ void UpdateScreenShot(void)
GetWindowRect(GetDlgItem(hMain, IDC_SSFRAME), &fRect);
OffsetRect(&fRect, -p.x, -p.y);
- // show history on this tab IFF
+ // show history on this tab IF
// - we have history for the game
// - we're on the first tab
// - we DON'T have a separate history tab
- showing_history = (have_history && (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() || GetHistoryTab() == TAB_ALL ) &&
- GetShowTab(TAB_HISTORY) == FALSE);
+ showing_history = (have_history && (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() || GetHistoryTab() == TAB_ALL ) && GetShowTab(TAB_HISTORY) == false);
CalculateBestScreenShotRect(GetDlgItem(hMain, IDC_SSFRAME), &rect,showing_history);
dwStyle = GetWindowLong(GetDlgItem(hMain, IDC_SSPICTURE), GWL_STYLE);
dwStyleEx = GetWindowLong(GetDlgItem(hMain, IDC_SSPICTURE), GWL_EXSTYLE);
- AdjustWindowRectEx(&rect, dwStyle, FALSE, dwStyleEx);
- MoveWindow(GetDlgItem(hMain, IDC_SSPICTURE),
- fRect.left + rect.left,
- fRect.top + rect.top,
- rect.right - rect.left,
- rect.bottom - rect.top,
- TRUE);
+ AdjustWindowRectEx(&rect, dwStyle, false, dwStyleEx);
+ MoveWindow(GetDlgItem(hMain, IDC_SSPICTURE), fRect.left + rect.left, fRect.top + rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
- ShowWindow(GetDlgItem(hMain,IDC_SSPICTURE),
- (TabView_GetCurrentTab(hTabCtrl) != TAB_HISTORY) ? SW_SHOW : SW_HIDE);
+ ShowWindow(GetDlgItem(hMain,IDC_SSPICTURE), (TabView_GetCurrentTab(hTabCtrl) != TAB_HISTORY) ? SW_SHOW : SW_HIDE);
ShowWindow(GetDlgItem(hMain,IDC_SSFRAME),SW_SHOW);
ShowWindow(GetDlgItem(hMain,IDC_SSTAB),bShowTabCtrl ? SW_SHOW : SW_HIDE);
- InvalidateRect(GetDlgItem(hMain,IDC_SSPICTURE),NULL,FALSE);
+ InvalidateRect(GetDlgItem(hMain,IDC_SSPICTURE),NULL,false);
}
else
{
@@ -1387,12 +1341,10 @@ void ResizePickerControls(HWND hWnd)
{
RECT frameRect;
RECT rect, sRect;
- int nListWidth, nScreenShotWidth;
- static BOOL firstTime = TRUE;
- int doSSControls = TRUE;
- int i, nSplitterCount;
+ static BOOL firstTime = true;
+ int doSSControls = true;
- nSplitterCount = GetSplitterCount();
+ int nSplitterCount = GetSplitterCount();
/* Size the List Control in the Picker */
GetClientRect(hWnd, &rect);
@@ -1402,7 +1354,7 @@ void ResizePickerControls(HWND hWnd)
{
RECT rWindow;
- for (i = 0; i < nSplitterCount; i++)
+ for (int i = 0; i < nSplitterCount; i++)
nSplitterOffset[i] = rect.right * g_splitterInfo[i].dPosition;
GetWindowRect(hStatusBar, &rWindow);
@@ -1411,12 +1363,10 @@ void ResizePickerControls(HWND hWnd)
topMargin = rWindow.bottom - rWindow.top;
/*buttonMargin = (sRect.bottom + 4); */
- firstTime = FALSE;
+ firstTime = false;
}
else
- {
- doSSControls = GetShowScreenShot();
- }
+ doSSControls = BIT(GetWindowPanes(), 3);
if (bShowStatusBar)
rect.bottom -= bottomMargin;
@@ -1424,24 +1374,22 @@ void ResizePickerControls(HWND hWnd)
if (bShowToolBar)
rect.top += topMargin;
- MoveWindow(GetDlgItem(hWnd, IDC_DIVIDER), rect.left, rect.top - 4, rect.right, 2, TRUE);
+ MoveWindow(GetDlgItem(hWnd, IDC_DIVIDER), rect.left, rect.top - 4, rect.right, 2, true);
- ResizeTreeAndListViews(TRUE);
+ ResizeTreeAndListViews(true);
- nListWidth = nSplitterOffset[nSplitterCount-1];
- nScreenShotWidth = (rect.right - nListWidth) - 4;
+ int nListWidth = nSplitterOffset[nSplitterCount-1];
+ int nScreenShotWidth = (rect.right - nListWidth) - 4;
/* Screen shot Page tab control */
if (bShowTabCtrl)
{
- MoveWindow(GetDlgItem(hWnd, IDC_SSTAB), nListWidth + 4, rect.top + 2,
- nScreenShotWidth - 2, rect.top + 20, doSSControls);
+ MoveWindow(GetDlgItem(hWnd, IDC_SSTAB), nListWidth + 4, rect.top + 2, nScreenShotWidth - 2, rect.top + 20, doSSControls);
rect.top += 20;
}
/* resize the Screen shot frame */
- MoveWindow(GetDlgItem(hWnd, IDC_SSFRAME), nListWidth + 4, rect.top + 2,
- nScreenShotWidth - 2, (rect.bottom - rect.top) - 4, doSSControls);
+ MoveWindow(GetDlgItem(hWnd, IDC_SSFRAME), nListWidth + 4, rect.top + 2, nScreenShotWidth - 2, (rect.bottom - rect.top) - 4, doSSControls);
/* The screen shot controls */
GetClientRect(GetDlgItem(hWnd, IDC_SSFRAME), &frameRect);
@@ -1450,7 +1398,6 @@ void ResizePickerControls(HWND hWnd)
sRect.left = nListWidth + 14;
sRect.right = sRect.left + (nScreenShotWidth - 22);
-
if (GetShowTab(TAB_HISTORY))
{
// We're using the new mode, with the history filling the entire tab (almost)
@@ -1464,12 +1411,9 @@ void ResizePickerControls(HWND hWnd)
sRect.bottom = (rect.bottom - rect.top) - 278;
}
- MoveWindow(GetDlgItem(hWnd, IDC_HISTORY),
- sRect.left, sRect.top,
- sRect.right - sRect.left, sRect.bottom, doSSControls);
+ MoveWindow(GetDlgItem(hWnd, IDC_HISTORY), sRect.left, sRect.top, sRect.right - sRect.left, sRect.bottom, doSSControls);
/* the other screen shot controls will be properly placed in UpdateScreenshot() */
-
}
@@ -1520,7 +1464,7 @@ HPALETTE GetBackgroundPalette(void)
return hPALbg;
}
-MYBITMAPINFO * GetBackgroundInfo(void)
+MYBITMAPINFO *GetBackgroundInfo(void)
{
return &bmDesc;
}
@@ -1554,10 +1498,8 @@ int GetParentRomSetIndex(const game_driver *driver)
int nParentIndex = GetGameNameIndex(driver->parent);
if( nParentIndex >= 0)
- {
if ((driver_list::driver(nParentIndex).flags & MACHINE_IS_BIOS_ROOT) == 0)
return nParentIndex;
- }
return -1;
}
@@ -1598,11 +1540,10 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
extern const FILTER_ITEM g_filterList[];
LONG common_control_version = GetCommonControlVersion();
int validity_failed = 0;
- TCHAR* t_inpdir = NULL;
LONG_PTR l;
if (!OptionsInit())
- return FALSE;
+ return false;
srand((unsigned)time(NULL));
@@ -1614,13 +1555,13 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
memset(icon_index, '\0', sizeof(int) * driver_list::total());
// set up window class
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = MameWindowProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
- wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAMEUI_ICON));
- wndclass.hCursor = NULL;
+ wndclass.hInstance = hInstance;
+ wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAMEUI_ICON));
+ wndclass.hCursor = NULL;
wndclass.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_UI_MENU);
wndclass.lpszClassName = TEXT("MainClass");
@@ -1636,35 +1577,29 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
xpControl = (common_control_version >= PACKVERSION(6,0));
if (oldControl)
{
- char buf[] = MAMEUINAME " has detected an old version of comctl32.dll\n\n"
- "Game Properties, many configuration options and\n"
- "features are not available without an updated DLL\n\n";
+ char buf[] = MAMEUINAME " has detected an old version of comctl32.dll.\n\n"
+ "Various features are not available without an updated DLL.\n\n";
- win_message_box_utf8(0, buf, MAMEUINAME " Outdated comctl32.dll Warning", MB_OK | MB_ICONWARNING);
+ win_message_box_utf8(0, buf, MAMEUINAME " Outdated comctl32.dll Error", MB_OK | MB_ICONWARNING);
+ return false;
}
g_mame32_message = RegisterWindowMessage(TEXT("MAME32"));
HelpInit();
- t_inpdir = ui_wstring_from_utf8(GetInpDir());
- if( ! t_inpdir )
- return FALSE;
-
- _tcscpy(last_directory,t_inpdir);
- free(t_inpdir);
hMain = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAIN), 0, NULL);
if (hMain == NULL)
{
dprintf("error creating main dialog, aborting\n");
- return FALSE;
+ return false;
}
s_pWatcher = DirWatcher_Init(hMain, WM_MAME32_FILECHANGED);
if (s_pWatcher)
{
- DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), TRUE);
- DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), TRUE);
+ DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), true);
+ DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), true);
}
SetMainTitle();
@@ -1691,7 +1626,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
opts.nTabCount = MAX_TAB_TYPES;
if (!SetupTabView(hTabCtrl, &opts))
- return FALSE;
+ return false;
}
/* subclass history window */
@@ -1741,7 +1676,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
hwndList = GetDlgItem(hMain, IDC_LIST);
if (!InitSplitters())
- return FALSE;
+ return false;
nSplitterCount = GetSplitterCount();
for (i = 0; i < nSplitterCount; i++)
@@ -1763,10 +1698,10 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
TabView_UpdateSelection(hTabCtrl);
bDoGameCheck = GetGameCheck();
- idle_work = TRUE;
+ idle_work = true;
game_index = 0;
- bShowTree = GetShowFolderList();
+ BOOL bShowTree = BIT(GetWindowPanes(), 0);
bShowToolBar = GetShowToolBar();
bShowStatusBar = GetShowStatusBar();
bShowTabCtrl = GetShowTabCtrl();
@@ -1786,12 +1721,14 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
EnableMenuItem(GetMenu(hMain), ID_OPTIONS_DEFAULTS, MF_GRAYED);
}
+#ifdef UI_DIRECTDRAW
/* Init DirectDraw */
if (!DirectDraw_Initialize())
{
DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIRECTX), NULL, DirectXDialogProc);
- return FALSE;
+ return false;
}
+#endif
LoadBackgroundBitmap();
@@ -1814,14 +1751,14 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
}
hFont = CreateFontIndirect(&logfont);
if (hFont )
- SetAllWindowsFont(hMain, &main_resize, hFont, FALSE);
+ SetAllWindowsFont(hMain, &main_resize, hFont, false);
}
/* Init DirectInput */
if (!DirectInputInitialize())
{
DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIRECTX), NULL, DirectXDialogProc);
- return FALSE;
+ return false;
}
AdjustMetrics();
@@ -1832,7 +1769,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
/* clear keyboard state */
KeyboardStateClear();
- if (GetJoyGUI() == TRUE)
+ if (GetJoyGUI() == true)
{
g_pJoyGUI = &DIJoystick;
if (g_pJoyGUI->init() != 0)
@@ -1853,7 +1790,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
SetCursorPos(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2);
// Then hide it
- ShowCursor(FALSE);
+ ShowCursor(false);
}
nCmdShow = GetWindowState();
@@ -1910,7 +1847,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
"still work, but emulations will fail to execute", MAMEUINAME, MB_OK | MB_ICONERROR);
}
- return TRUE;
+ return true;
}
@@ -1954,7 +1891,9 @@ static void Win32UI_exit()
DestroyAcceleratorTable(hAccel);
DirectInputClose();
+#ifdef UI_DIRECTDRAW
DirectDraw_Close();
+#endif
SetSavedFolderID(GetCurrentFolderID());
SaveGameListOptions();
@@ -1967,8 +1906,6 @@ static void Win32UI_exit()
FreeScreenShot();
- OptionsExit();
-
HelpExit();
pool_free_lib(mameui_pool);
@@ -2004,7 +1941,7 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
case WM_INITDIALOG:
/* Initialize info for resizing subitems */
GetClientRect(hWnd, &main_resize.rect);
- return TRUE;
+ return true;
case WM_SETFOCUS:
SetFocus(hwndList);
@@ -2016,23 +1953,22 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
case WM_SIZE:
OnSize(hWnd, wParam, LOWORD(lParam), HIWORD(wParam));
- return TRUE;
+ return true;
case WM_MENUSELECT:
return Statusbar_MenuSelect(hWnd, wParam, lParam);
case MM_PLAY_GAME:
MamePlayGame();
- return TRUE;
+ return true;
case WM_INITMENUPOPUP:
UpdateMenu(GetMenu(hWnd));
break;
case WM_CONTEXTMENU:
- if (HandleTreeContextMenu(hWnd, wParam, lParam)
- || HandleScreenShotContextMenu(hWnd, wParam, lParam))
- return FALSE;
+ if (HandleTreeContextMenu(hWnd, wParam, lParam) || HandleScreenShotContextMenu(hWnd, wParam, lParam))
+ return false;
break;
case WM_COMMAND:
@@ -2059,7 +1995,7 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
default:
break;
}
- return TRUE;
+ return true;
case WM_CLOSE:
{
@@ -2109,7 +2045,8 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
/* Save the users current game options and default game */
nItem = Picker_GetSelectedItem(hwndList);
- SetDefaultGame(ModifyThe(driver_list::driver(nItem).name));
+ if (nItem >= 0)
+ SetDefaultGame(nItem);
/* hide window to prevent orphan empty rectangles on the taskbar */
/* ShowWindow(hWnd,SW_HIDE); */
@@ -2145,7 +2082,7 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
case WM_MOUSEMOVE:
{
if (MouseHasBeenMoved())
- ShowCursor(TRUE);
+ ShowCursor(true);
if (g_listview_dragging)
MouseMoveListViewDrag(MAKEPOINTS(lParam));
@@ -2218,7 +2155,7 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
SelectObject(hDC,hFontOld);
ReleaseDC(NULL,hDC);
- return TRUE;
+ return true;
}
case WM_MAME32_FILECHANGED:
@@ -2226,8 +2163,8 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
char szFileName[32];
char *s;
int nGameIndex;
- int (*pfnGetAuditResults)(int driver_index) = NULL;
- void (*pfnSetAuditResults)(int driver_index, int audit_results) = NULL;
+ int (*pfnGetAuditResults)(uint32_t driver_index) = NULL;
+ void (*pfnSetAuditResults)(uint32_t driver_index, int audit_results) = NULL;
switch(HIWORD(wParam))
{
@@ -2305,6 +2242,7 @@ static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, L
default:
break;
}
+ res++;
return DefWindowProc(hWnd, message, wParam, lParam);
}
@@ -2314,26 +2252,26 @@ static int HandleKeyboardGUIMessage(HWND hWnd, UINT message, UINT wParam, LONG l
{
case WM_CHAR: /* List-View controls use this message for searching the items "as user types" */
//MessageBox(NULL,"wm_char message arrived","TitleBox",MB_OK);
- return TRUE;
+ return true;
case WM_KEYDOWN:
KeyboardKeyDown(0, wParam, lParam);
- return TRUE;
+ return true;
case WM_KEYUP:
KeyboardKeyUp(0, wParam, lParam);
- return TRUE;
+ return true;
case WM_SYSKEYDOWN:
KeyboardKeyDown(1, wParam, lParam);
- return TRUE;
+ return true;
case WM_SYSKEYUP:
KeyboardKeyUp(1, wParam, lParam);
- return TRUE;
+ return true;
}
- return FALSE; /* message not processed */
+ return false; /* message not processed */
}
static BOOL PumpMessage()
@@ -2341,11 +2279,11 @@ static BOOL PumpMessage()
MSG msg;
if (!GetMessage(&msg, NULL, 0, 0))
- return FALSE;
+ return false;
if (IsWindow(hMain))
{
- BOOL absorbed_key = FALSE;
+ BOOL absorbed_key = false;
if (GetKeyGUI())
absorbed_key = HandleKeyboardGUIMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam);
else
@@ -2361,19 +2299,19 @@ static BOOL PumpMessage()
}
}
- return TRUE;
+ return true;
}
static BOOL FolderCheck(void)
{
- char *pDescription = NULL;
+ const char *pDescription = NULL;
int nGameIndex = 0;
int i=0;
int iStep = 0;
LV_FINDINFO lvfi;
int nCount = ListView_GetItemCount(hwndList);
- BOOL changed = FALSE;
+ BOOL changed = false;
BOOL res;
MSG msg;
@@ -2392,7 +2330,7 @@ static BOOL FolderCheck(void)
if( nCount > 0)
ProgressBarShow();
else
- return FALSE;
+ return false;
if( nCount < 100 )
iStep = 100 / nCount;
else
@@ -2411,13 +2349,13 @@ static BOOL FolderCheck(void)
if (GetRomAuditResults(nGameIndex) == UNKNOWN)
{
MameUIVerifyRomSet(nGameIndex, 0);
- changed = TRUE;
+ changed = true;
}
if (GetSampleAuditResults(nGameIndex) == UNKNOWN)
{
MameUIVerifySampleSet(nGameIndex);
- changed = TRUE;
+ changed = true;
}
lvfi.flags = LVFI_PARAM;
@@ -2433,22 +2371,26 @@ static BOOL FolderCheck(void)
DispatchMessage(&msg);
}
}
- changed = FALSE;
+ changed = false;
if ((i % iStep) == 0)
ProgressBarStepParam(i, nCount);
}
ProgressBarHide();
- pDescription = ModifyThe(driver_list::driver(Picker_GetSelectedItem(hwndList)).description);
+ if (Picker_GetSelectedItem(hwndList) >= 0)
+ pDescription = ModifyThe(driver_list::driver(Picker_GetSelectedItem(hwndList)).type.fullname());
+ else
+ pDescription = "No Selection";
SetStatusBarText(0, pDescription);
UpdateStatusBar();
- return TRUE;
+ res++;
+ return true;
}
static BOOL GameCheck(void)
{
LV_FINDINFO lvfi;
int i;
- BOOL changed = FALSE;
+ BOOL changed = false;
BOOL res;
if (game_index == 0)
@@ -2456,22 +2398,22 @@ static BOOL GameCheck(void)
if (game_index >= driver_list::total())
{
- bDoGameCheck = FALSE;
+ bDoGameCheck = false;
ProgressBarHide();
ResetWhichGamesInFolders();
- return FALSE;
+ return false;
}
if (GetRomAuditResults(game_index) == UNKNOWN)
{
MameUIVerifyRomSet(game_index, 0);
- changed = TRUE;
+ changed = true;
}
if (GetSampleAuditResults(game_index) == UNKNOWN)
{
MameUIVerifySampleSet(game_index);
- changed = TRUE;
+ changed = true;
}
lvfi.flags = LVFI_PARAM;
@@ -2483,22 +2425,22 @@ static BOOL GameCheck(void)
if ((game_index % progBarStep) == 0)
ProgressBarStep();
game_index++;
-
+ res++;
return changed;
}
static BOOL OnIdle(HWND hWnd)
{
- static int bFirstTime = TRUE;
- static int bResetList = TRUE;
+ static int bFirstTime = true;
+ static int bResetList = true;
- char *pDescription;
+ const char *pDescription;
int driver_index;
if (bFirstTime)
{
- bResetList = FALSE;
- bFirstTime = FALSE;
+ bResetList = false;
+ bFirstTime = false;
}
if (bDoGameCheck)
{
@@ -2513,35 +2455,38 @@ static BOOL OnIdle(HWND hWnd)
// in case it's not found, get it back
driver_index = Picker_GetSelectedItem(hwndList);
+ if (driver_index >= 0)
+ pDescription = ModifyThe(driver_list::driver(driver_index).type.fullname());
+ else
+ pDescription = "No Selection";
- pDescription = ModifyThe(driver_list::driver(driver_index).description);
SetStatusBarText(0, pDescription);
- idle_work = FALSE;
+ idle_work = false;
UpdateStatusBar();
- bFirstTime = TRUE;
+ bFirstTime = true;
if (!idle_work)
- PostMessage(GetMainWindow(),WM_COMMAND, MAKEWPARAM(ID_VIEW_LINEUPICONS, TRUE),(LPARAM)NULL);
+ PostMessage(GetMainWindow(),WM_COMMAND, MAKEWPARAM(ID_VIEW_LINEUPICONS, true),(LPARAM)NULL);
return idle_work;
}
static void OnSize(HWND hWnd, UINT nState, int nWidth, int nHeight)
{
- static BOOL firstTime = TRUE;
+ static BOOL firstTime = true;
if (nState != SIZE_MAXIMIZED && nState != SIZE_RESTORED)
return;
ResizeWindow(hWnd, &main_resize);
ResizeProgressBar();
- if (firstTime == FALSE)
+ if (firstTime == false)
OnSizeSplitter(hMain);
- //firstTime = FALSE;
+ //firstTime = false;
/* Update the splitters structures as appropriate */
RecalcSplitters();
- if (firstTime == FALSE)
+ if (firstTime == false)
ResizePickerControls(hMain);
- firstTime = FALSE;
+ firstTime = false;
UpdateScreenShot();
}
@@ -2652,7 +2597,7 @@ static void ResizeWindow(HWND hParent, Resize *r)
}
MoveWindow(hControl, rect.left, rect.top,
(rect.right - rect.left),
- (rect.bottom - rect.top), TRUE);
+ (rect.bottom - rect.top), true);
/* Take care of subcontrols, if appropriate */
if (ri->subwindow )
@@ -2684,9 +2629,9 @@ static void ProgressBarShow()
MoveWindow(hProgWnd, rect.left, rect.top,
rect.right - rect.left,
- rect.bottom - rect.top, TRUE);
+ rect.bottom - rect.top, true);
- bProgressShown = TRUE;
+ bProgressShown = true;
}
static void ProgressBarHide()
@@ -2726,7 +2671,7 @@ static void ProgressBarHide()
SendMessage(hStatusBar, SB_SETPARTS, (WPARAM)numParts, (LPARAM)(LPINT)widths);
UpdateStatusBar();
- bProgressShown = FALSE;
+ bProgressShown = false;
}
static void ResizeProgressBar()
@@ -2740,7 +2685,7 @@ static void ResizeProgressBar()
StatusBar_GetItemRect(hStatusBar, 1, &rect);
MoveWindow(hProgWnd, rect.left, rect.top,
rect.right - rect.left,
- rect.bottom - rect.top, TRUE);
+ rect.bottom - rect.top, true);
}
else
{
@@ -2779,7 +2724,7 @@ static void CopyToolTipText(LPTOOLTIPTEXT lpttt)
int i;
int iButton = lpttt->hdr.idFrom;
static TCHAR String[1024];
- BOOL bConverted = FALSE;
+ BOOL bConverted = false;
TCHAR* t_gameinfostatus;
/* Map command ID to string index */
@@ -2788,7 +2733,7 @@ static void CopyToolTipText(LPTOOLTIPTEXT lpttt)
if (CommandToString[i] == iButton)
{
iButton = i;
- bConverted = TRUE;
+ bConverted = true;
break;
}
}
@@ -2812,7 +2757,7 @@ static void CopyToolTipText(LPTOOLTIPTEXT lpttt)
SendMessage(hStatusBar, SB_GETTEXT, (WPARAM)iButton, (LPARAM)&String );
else {
//for first pane we get the Status directly, to get the line breaks
- t_gameinfostatus = ui_wstring_from_utf8( GameInfoStatus(Picker_GetSelectedItem(hwndList), FALSE));
+ t_gameinfostatus = ui_wstring_from_utf8( GameInfoStatus(Picker_GetSelectedItem(hwndList), false));
if( !t_gameinfostatus )
return;
_tcscpy(String, t_gameinfostatus);
@@ -2932,7 +2877,7 @@ static void UpdateStatusBar()
DisableSelection();
else
{
- const char* pStatus = GameInfoStatus(i, FALSE);
+ const char* pStatus = GameInfoStatus(i, false);
SetStatusBarText(1, pStatus);
}
}
@@ -2944,20 +2889,20 @@ static void UpdateHistory(void)
TEXTMETRIC tm ;
int nLines, nLineHeight;
//DWORD dwStyle = GetWindowLong(GetDlgItem(hMain, IDC_HISTORY), GWL_STYLE);
- have_history = FALSE;
+ have_history = false;
if (GetSelectedPick() >= 0)
{
char *histText = GetGameHistory(Picker_GetSelectedItem(hwndList));
- have_history = (histText && histText[0]) ? TRUE : FALSE;
+ have_history = (histText && histText[0]) ? true : false;
win_set_window_text_utf8(GetDlgItem(hMain, IDC_HISTORY), histText);
}
- if (have_history && GetShowScreenShot()
+ if (have_history && BIT(GetWindowPanes(), 3)
&& ((TabView_GetCurrentTab(hTabCtrl) == TAB_HISTORY) ||
- (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ||
- (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ))
+ (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == false) ||
+ (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == false) ))
{
Edit_GetRect(GetDlgItem(hMain, IDC_HISTORY),&rect);
nLines = Edit_GetLineCount(GetDlgItem(hMain, IDC_HISTORY) );
@@ -2967,12 +2912,12 @@ static void UpdateHistory(void)
if( ( (rect.bottom - rect.top) / nLineHeight) < (nLines) )
{
//more than one Page, so show Scrollbar
- SetScrollRange(GetDlgItem(hMain, IDC_HISTORY), SB_VERT, 0, nLines, TRUE);
+ SetScrollRange(GetDlgItem(hMain, IDC_HISTORY), SB_VERT, 0, nLines, true);
}
else
{
//hide Scrollbar
- SetScrollRange(GetDlgItem(hMain, IDC_HISTORY),SB_VERT, 0, 0, TRUE);
+ SetScrollRange(GetDlgItem(hMain, IDC_HISTORY),SB_VERT, 0, 0, true);
}
ShowWindow(GetDlgItem(hMain, IDC_HISTORY), SW_SHOW);
@@ -2994,7 +2939,7 @@ static void DisableSelection()
mmi.fType = MFT_STRING;
mmi.dwTypeData = (TCHAR *) TEXT("&Play");
mmi.cch = _tcslen(mmi.dwTypeData);
- SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mmi);
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, false, &mmi);
EnableMenuItem(hMenu, ID_FILE_PLAY, MF_GRAYED);
EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_GRAYED);
@@ -3004,7 +2949,7 @@ static void DisableSelection()
SetStatusBarText(1, "");
SetStatusBarText(3, "");
- have_selection = FALSE;
+ have_selection = false;
if (prev_have_selection != have_selection)
UpdateScreenShot();
@@ -3018,7 +2963,7 @@ static void EnableSelection(int nGame)
HMENU hMenu = GetMenu(hMain);
TCHAR* t_description;
- t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description)));
+ t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).type.fullname())));
if( !t_description )
return;
@@ -3028,12 +2973,12 @@ static void EnableSelection(int nGame)
mmi.fType = MFT_STRING;
mmi.dwTypeData = buf;
mmi.cch = _tcslen(mmi.dwTypeData);
- SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mmi);
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, false, &mmi);
- pText = ModifyThe(driver_list::driver(nGame).description);
+ pText = ModifyThe(driver_list::driver(nGame).type.fullname());
SetStatusBarText(0, pText);
/* Add this game's status to the status bar */
- pText = GameInfoStatus(nGame, FALSE);
+ pText = GameInfoStatus(nGame, false);
SetStatusBarText(1, pText);
SetStatusBarText(3, "");
@@ -3045,11 +2990,10 @@ static void EnableSelection(int nGame)
if (!oldControl)
EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_ENABLED);
- if (bProgressShown && bListReady == TRUE)
- {
- SetDefaultGame(ModifyThe(driver_list::driver(nGame).name));
- }
- have_selection = TRUE;
+ if (bProgressShown && bListReady == true)
+ SetDefaultGame(nGame);
+
+ have_selection = true;
UpdateScreenShot();
@@ -3093,7 +3037,7 @@ static void PaintBackgroundImage(HWND hWnd, HRGN hRgn, int x, int y)
if (GetDeviceCaps(htempDC, RASTERCAPS) & RC_PALETTE && hPAL)
{
- SelectPalette(htempDC, hPAL, FALSE);
+ SelectPalette(htempDC, hPAL, false);
RealizePalette(htempDC);
}
@@ -3117,11 +3061,11 @@ static LPCSTR GetCloneParentName(int nItem)
{
int nParentIndex = -1;
- if (DriverIsClone(nItem) == TRUE)
+ if (DriverIsClone(nItem) == true)
{
nParentIndex = GetParentIndex(&driver_list::driver(nItem));
if( nParentIndex >= 0)
- return ModifyThe(driver_list::driver(nParentIndex).description);
+ return ModifyThe(driver_list::driver(nParentIndex).type.fullname());
}
return "";
}
@@ -3147,7 +3091,7 @@ static BOOL TreeViewNotify(LPNMHDR nm)
UpdateScreenShot();
}
}
- return TRUE;
+ return true;
}
case TVN_BEGINLABELEDIT :
{
@@ -3157,11 +3101,11 @@ static BOOL TreeViewNotify(LPNMHDR nm)
if (folder->m_dwFlags & F_CUSTOM)
{
// user can edit custom folder names
- g_in_treeview_edit = TRUE;
- return FALSE;
+ g_in_treeview_edit = true;
+ return false;
}
// user can't edit built in folder names
- return TRUE;
+ return true;
}
case TVN_ENDLABELEDIT :
{
@@ -3170,14 +3114,14 @@ static BOOL TreeViewNotify(LPNMHDR nm)
char* utf8_szText;
BOOL result;
- g_in_treeview_edit = FALSE;
+ g_in_treeview_edit = false;
if (ptvdi->item.pszText == NULL || _tcslen(ptvdi->item.pszText) == 0)
- return FALSE;
+ return false;
utf8_szText = ui_utf8_from_wstring(ptvdi->item.pszText);
if( !utf8_szText )
- return FALSE;
+ return false;
result = TryRenameCustomFolder(folder, utf8_szText);
@@ -3186,7 +3130,7 @@ static BOOL TreeViewNotify(LPNMHDR nm)
return result;
}
}
- return FALSE;
+ return false;
}
@@ -3282,7 +3226,7 @@ static void check_for_GUI_action(void)
case ID_GAME_PROPERTIES:
case ID_CONTEXT_FILTERS:
case ID_UI_START:
- KeyboardStateClear(); /* beacuse whe won't receive KeyUp mesage when we loose focus */
+ KeyboardStateClear(); /* because whe won't receive KeyUp mesage when we lose focus */
break;
default:
break;
@@ -3441,11 +3385,6 @@ static void KeyboardKeyUp(int syskey, int vk_code, int special)
static void PollGUIJoystick()
{
- // For the exec timer, will keep track of how long the button has been pressed
- static int exec_counter = 0;
- const char* exec_command;
- TCHAR* t_exec_command;
-
if (in_emulation)
return;
@@ -3454,100 +3393,87 @@ static void PollGUIJoystick()
g_pJoyGUI->poll_joysticks();
-
// User pressed UP
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyUp(0), GetUIJoyUp(1), GetUIJoyUp(2),GetUIJoyUp(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyUp(0), GetUIJoyUp(1), GetUIJoyUp(2), GetUIJoyUp(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_UP, 0);
- }
// User pressed DOWN
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyDown(0), GetUIJoyDown(1), GetUIJoyDown(2),GetUIJoyDown(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyDown(0), GetUIJoyDown(1), GetUIJoyDown(2), GetUIJoyDown(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_DOWN, 0);
- }
// User pressed LEFT
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyLeft(0), GetUIJoyLeft(1), GetUIJoyLeft(2),GetUIJoyLeft(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyLeft(0), GetUIJoyLeft(1), GetUIJoyLeft(2), GetUIJoyLeft(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_LEFT, 0);
- }
// User pressed RIGHT
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyRight(0), GetUIJoyRight(1), GetUIJoyRight(2),GetUIJoyRight(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyRight(0), GetUIJoyRight(1), GetUIJoyRight(2), GetUIJoyRight(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_RIGHT, 0);
- }
// User pressed START GAME
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyStart(0), GetUIJoyStart(1), GetUIJoyStart(2),GetUIJoyStart(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyStart(0), GetUIJoyStart(1), GetUIJoyStart(2), GetUIJoyStart(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_START, 0);
- }
// User pressed PAGE UP
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageUp(0), GetUIJoyPageUp(1), GetUIJoyPageUp(2),GetUIJoyPageUp(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageUp(0), GetUIJoyPageUp(1), GetUIJoyPageUp(2), GetUIJoyPageUp(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_PGUP, 0);
- }
// User pressed PAGE DOWN
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageDown(0), GetUIJoyPageDown(1), GetUIJoyPageDown(2),GetUIJoyPageDown(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageDown(0), GetUIJoyPageDown(1), GetUIJoyPageDown(2), GetUIJoyPageDown(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_PGDOWN, 0);
- }
// User pressed HOME
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHome(0), GetUIJoyHome(1), GetUIJoyHome(2),GetUIJoyHome(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHome(0), GetUIJoyHome(1), GetUIJoyHome(2), GetUIJoyHome(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_HOME, 0);
- }
// User pressed END
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyEnd(0), GetUIJoyEnd(1), GetUIJoyEnd(2),GetUIJoyEnd(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyEnd(0), GetUIJoyEnd(1), GetUIJoyEnd(2), GetUIJoyEnd(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_END, 0);
- }
// User pressed CHANGE SCREENSHOT
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoySSChange(0), GetUIJoySSChange(1), GetUIJoySSChange(2),GetUIJoySSChange(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoySSChange(0), GetUIJoySSChange(1), GetUIJoySSChange(2), GetUIJoySSChange(3))))
SendMessage(hMain, WM_COMMAND, IDC_SSFRAME, 0);
- }
// User pressed SCROLL HISTORY UP
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryUp(0), GetUIJoyHistoryUp(1), GetUIJoyHistoryUp(2),GetUIJoyHistoryUp(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryUp(0), GetUIJoyHistoryUp(1), GetUIJoyHistoryUp(2), GetUIJoyHistoryUp(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_HISTORY_UP, 0);
- }
// User pressed SCROLL HISTORY DOWN
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryDown(0), GetUIJoyHistoryDown(1), GetUIJoyHistoryDown(2),GetUIJoyHistoryDown(3))))
- {
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryDown(0), GetUIJoyHistoryDown(1), GetUIJoyHistoryDown(2), GetUIJoyHistoryDown(3))))
SendMessage(hMain, WM_COMMAND, ID_UI_HISTORY_DOWN, 0);
- }
- // User pressed EXECUTE COMMANDLINE
- if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyExec(0), GetUIJoyExec(1), GetUIJoyExec(2),GetUIJoyExec(3))))
+ // For the exec timer, will keep track of how long the button has been pressed
+ static int exec_counter = 0;
+
+ // User pressed EXECUTE COMMANDLINE
+ // Note: this option is not documented, nor supported in the GUI.
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyExec(0), GetUIJoyExec(1), GetUIJoyExec(2), GetUIJoyExec(3))))
{
- if (++exec_counter >= GetExecWait()) // Button has been pressed > exec timeout
+ // validate
+ int execwait = GetExecWait();
+ if (execwait < 1)
+ return;
+ if (++exec_counter >= execwait) // Button has been pressed > exec timeout
{
- PROCESS_INFORMATION pi;
- STARTUPINFO si;
+ // validate
+ string exec_command = GetExecCommand();
+ if (exec_command.empty())
+ return;
+ TCHAR *t_exec_command = ui_wstring_from_utf8(exec_command.c_str());
+ if( !t_exec_command )
+ return;
// Reset counter
exec_counter = 0;
+ STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
- ZeroMemory( &pi, sizeof(pi) );
si.dwFlags = STARTF_FORCEONFEEDBACK;
si.cb = sizeof(si);
- exec_command = GetExecCommand();
- t_exec_command = ui_wstring_from_utf8(exec_command);
- if( !t_exec_command )
- return;
- CreateProcess(NULL, t_exec_command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
+ PROCESS_INFORMATION pi;
+ ZeroMemory( &pi, sizeof(pi) );
+
+ CreateProcess(NULL, t_exec_command, NULL, NULL, false, 0, NULL, NULL, &si, &pi);
free(t_exec_command);
@@ -3568,7 +3494,7 @@ static void PollGUIJoystick()
static void SetView(int menu_id)
{
- BOOL force_reset = FALSE;
+ BOOL force_reset = false;
int i;
// first uncheck previous menu item, check new one
@@ -3578,7 +3504,7 @@ static void SetView(int menu_id)
if (Picker_GetViewID(hwndList) == VIEW_GROUPED || menu_id == ID_VIEW_GROUPED)
{
// this changes the sort order, so redo everything
- force_reset = TRUE;
+ force_reset = true;
}
for (i = 0; i < sizeof(s_nPickers) / sizeof(s_nPickers[0]); i++)
@@ -3596,7 +3522,7 @@ static void ResetListView()
int i;
int current_game;
LV_ITEM lvi;
- BOOL no_selection = FALSE;
+ BOOL no_selection = false;
LPTREEFOLDER lpFolder = GetCurrentFolder();
HRESULT res;
BOOL b_res;
@@ -3604,13 +3530,15 @@ static void ResetListView()
if (!lpFolder)
return;
- /* If the last folder was empty, no_selection is TRUE */
- if (have_selection == FALSE)
- no_selection = TRUE;
+ /* If the last folder was empty, no_selection is true */
+ if (have_selection == false)
+ no_selection = true;
current_game = Picker_GetSelectedItem(hwndList);
+ if (current_game < 0)
+ no_selection = true;
- SetWindowRedraw(hwndList,FALSE);
+ SetWindowRedraw(hwndList,false);
b_res = ListView_DeleteAllItems(hwndList);
@@ -3656,17 +3584,16 @@ static void ResetListView()
if (GetViewMode() == VIEW_SMALL_ICONS)
SetView(ID_VIEW_SMALL_ICON);
- SetWindowRedraw(hwndList, TRUE);
+ SetWindowRedraw(hwndList, true);
UpdateStatusBar();
-
+ res++;
+ b_res++;
}
static void UpdateGameList(BOOL bUpdateRomAudit, BOOL bUpdateSampleAudit)
{
- int i;
-
- for (i = 0; i < driver_list::total(); i++)
+ for (int i = 0; i < driver_list::total(); i++)
{
if (bUpdateRomAudit && DriverUsesRoms(i))
SetRomAuditResults(i, UNKNOWN);
@@ -3674,18 +3601,32 @@ static void UpdateGameList(BOOL bUpdateRomAudit, BOOL bUpdateSampleAudit)
SetSampleAuditResults(i, UNKNOWN);
}
- idle_work = TRUE;
- bDoGameCheck = TRUE;
- game_index = 0;
+ idle_work = true;
+ bDoGameCheck = true;
+ game_index = 0;
ReloadIcons();
// Let REFRESH also load new background if found
LoadBackgroundBitmap();
- InvalidateRect(hMain,NULL,TRUE);
+ InvalidateRect(hMain,NULL,true);
Picker_ResetIdle(hwndList);
}
+static void UpdateCache()
+{
+ int current_id = GetCurrentFolderID(); // remember selected folder
+ SetWindowRedraw(hwndList, false); // stop screen updating
+ ForceRebuild(); // tell system that cache needs redoing
+ (void)OptionsInit(); // reload options and fix game cache
+ //extern const FOLDERDATA g_folderData[];
+ //extern const FILTER_ITEM g_filterList[];
+ //InitTree(g_folderData, g_filterList); // redo folders... This crashes, leave out for now
+ ResetTreeViewFolders(); // something with folders
+ SelectTreeViewFolder(current_id); // select previous folder
+ SetWindowRedraw(hwndList, true); // refresh screen
+}
+
UINT_PTR CALLBACK CFHookProc(
HWND hdlg, // handle to dialog box
UINT uiMsg, // message identifier
@@ -3729,13 +3670,13 @@ UINT_PTR CALLBACK CFHookProc(
SendDlgItemMessage(hdlg, cmb4, CB_ADDSTRING, 0, (LPARAM)TEXT("Custom"));
SendDlgItemMessage(hdlg, cmb4, CB_SETITEMDATA,(WPARAM)iIndex,(LPARAM)cList);
SendDlgItemMessage(hdlg, cmb4, CB_SETCURSEL,(WPARAM)iIndex,0 );
- return TRUE;
+ return true;
}
}
}
break;
}
- return FALSE;
+ return false;
}
static void PickFont(void)
@@ -3772,7 +3713,7 @@ static void PickFont(void)
textColor = RGB(240, 240, 240);
}
- SetAllWindowsFont(hMain, &main_resize, hFont, TRUE);
+ SetAllWindowsFont(hMain, &main_resize, hFont, true);
hWnd = GetWindow(hMain, GW_CHILD);
while(hWnd)
@@ -3782,10 +3723,12 @@ static void PickFont(void)
if (!_tcscmp(szClass, TEXT("SysListView32")))
{
b_res = ListView_SetTextColor(hWnd, textColor);
+ b_res++;
}
else if (!_tcscmp(szClass, TEXT("SysTreeView32")))
{
res = TreeView_SetTextColor(hTreeView, textColor);
+ res++;
}
}
hWnd = GetWindow(hWnd, GW_HWNDNEXT);
@@ -3822,7 +3765,7 @@ static void PickCloneColor(void)
cClonecolor = GetListCloneColor();
PickColor( &cClonecolor);
SetListCloneColor(cClonecolor);
- InvalidateRect(hwndList,NULL,FALSE);
+ InvalidateRect(hwndList,NULL,false);
}
static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
@@ -3831,120 +3774,124 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
LPTREEFOLDER folder;
char* utf8_szFile;
BOOL res = 0;
+ int current_game = Picker_GetSelectedItem(hwndList);
switch (id)
{
case ID_FILE_PLAY:
MamePlayGame();
- return TRUE;
+ return true;
case ID_FILE_PLAY_RECORD:
MamePlayRecordGame();
- return TRUE;
+ return true;
case ID_FILE_PLAY_BACK:
MamePlayBackGame();
- return TRUE;
+ return true;
case ID_FILE_PLAY_RECORD_WAVE:
MamePlayRecordWave();
- return TRUE;
+ return true;
case ID_FILE_PLAY_RECORD_MNG:
MamePlayRecordMNG();
- return TRUE;
+ return true;
case ID_FILE_PLAY_RECORD_AVI:
MamePlayRecordAVI();
- return TRUE;
+ return true;
case ID_FILE_LOADSTATE :
MameLoadState();
- return TRUE;
+ return true;
case ID_FILE_AUDIT:
AuditDialog(hMain, 1);
ResetWhichGamesInFolders();
ResetListView();
SetFocus(hwndList);
- return TRUE;
+ return true;
case ID_FILE_AUDIT_X:
AuditDialog(hMain, 2);
ResetWhichGamesInFolders();
ResetListView();
SetFocus(hwndList);
- return TRUE;
+ return true;
case ID_FILE_EXIT:
PostMessage(hMain, WM_CLOSE, 0, 0);
- return TRUE;
+ return true;
case ID_VIEW_LARGE_ICON:
SetView(ID_VIEW_LARGE_ICON);
- return TRUE;
+ return true;
case ID_VIEW_SMALL_ICON:
SetView(ID_VIEW_SMALL_ICON);
ResetListView();
- return TRUE;
+ return true;
case ID_VIEW_LIST_MENU:
SetView(ID_VIEW_LIST_MENU);
- return TRUE;
+ return true;
case ID_VIEW_DETAIL:
SetView(ID_VIEW_DETAIL);
- return TRUE;
+ return true;
case ID_VIEW_GROUPED:
SetView(ID_VIEW_GROUPED);
- return TRUE;
+ return true;
/* Arrange Icons submenu */
case ID_VIEW_BYGAME:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_GAMES);
Picker_Sort(hwndList);
break;
case ID_VIEW_BYDIRECTORY:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_DIRECTORY);
Picker_Sort(hwndList);
break;
case ID_VIEW_BYMANUFACTURER:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_MANUFACTURER);
Picker_Sort(hwndList);
break;
case ID_VIEW_BYTIMESPLAYED:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_PLAYED);
Picker_Sort(hwndList);
break;
case ID_VIEW_BYTYPE:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_TYPE);
Picker_Sort(hwndList);
break;
case ID_VIEW_BYYEAR:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(COLUMN_YEAR);
Picker_Sort(hwndList);
break;
case ID_VIEW_FOLDERS:
- bShowTree = !bShowTree;
- SetShowFolderList(bShowTree);
+ {
+ int val = GetWindowPanes() ^ 1;
+ BOOL bShowTree = BIT(val, 0);
+ SetWindowPanes(val);
CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
ToolBar_CheckButton(s_hToolBar, ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
UpdateScreenShot();
break;
+ }
case ID_VIEW_TOOLBARS:
bShowToolBar = !bShowToolBar;
@@ -3972,7 +3919,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
ShowWindow(hTabCtrl, (bShowTabCtrl) ? SW_SHOW : SW_HIDE);
ResizePickerControls(hMain);
UpdateScreenShot();
- InvalidateRect(hMain,NULL,TRUE);
+ InvalidateRect(hMain,NULL,true);
break;
/*
@@ -3986,7 +3933,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
case ID_TOOLBAR_EDIT:
{
- std::string buf;
+ string buf;
HWND hToolbarEdit;
buf = win_get_window_text_utf8(hwndCtl);
@@ -4020,19 +3967,18 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
case ID_GAME_AUDIT:
InitGameAudit(0);
- if (!oldControl)
- {
- InitPropertyPageToPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, -1, Picker_GetSelectedItem(hwndList), AUDIT_PAGE);
- }
+ if (!oldControl && (current_game >= 0))
+ InitPropertyPageToPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, -1, current_game, AUDIT_PAGE);
+
/* Just in case the toggle MMX on/off */
UpdateStatusBar();
- break;
+ break;
/* ListView Context Menu */
case ID_CONTEXT_ADD_CUSTOM:
{
- DialogBoxParam(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_CUSTOM_FILE),
- hMain,AddCustomFileDialogProc,Picker_GetSelectedItem(hwndList));
+ if (current_game >= 0)
+ DialogBoxParam(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_CUSTOM_FILE), hMain,AddCustomFileDialogProc, current_game);
SetFocus(hwndList);
break;
}
@@ -4045,43 +3991,62 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
/* Tree Context Menu */
case ID_CONTEXT_FILTERS:
- if (DialogBox(GetModuleHandle(NULL),
- MAKEINTRESOURCE(IDD_FILTERS), hMain, FilterDialogProc) == TRUE)
+ if (DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_FILTERS), hMain, FilterDialogProc) == true)
ResetListView();
SetFocus(hwndList);
- return TRUE;
+ return true;
// ScreenShot Context Menu
// select current tab
- case ID_VIEW_TAB_SCREENSHOT :
- case ID_VIEW_TAB_FLYER :
- case ID_VIEW_TAB_CABINET :
- case ID_VIEW_TAB_MARQUEE :
- case ID_VIEW_TAB_TITLE :
- case ID_VIEW_TAB_CONTROL_PANEL :
- case ID_VIEW_TAB_PCB :
+ case ID_VIEW_TAB_SCREENSHOT:
+ case ID_VIEW_TAB_TITLE:
+ case ID_VIEW_TAB_SCORES:
+ case ID_VIEW_TAB_HOWTO:
+ case ID_VIEW_TAB_SELECT:
+ case ID_VIEW_TAB_VERSUS:
+ case ID_VIEW_TAB_BOSSES:
+ case ID_VIEW_TAB_COVER:
+ case ID_VIEW_TAB_ENDS:
+ case ID_VIEW_TAB_GAMEOVER:
+ case ID_VIEW_TAB_LOGO:
+ case ID_VIEW_TAB_ARTWORK:
+ case ID_VIEW_TAB_FLYER:
+ case ID_VIEW_TAB_CABINET:
+ case ID_VIEW_TAB_MARQUEE:
+ case ID_VIEW_TAB_CONTROL_PANEL:
+ case ID_VIEW_TAB_PCB:
case ID_VIEW_TAB_HISTORY:
- if (id == ID_VIEW_TAB_HISTORY && GetShowTab(TAB_HISTORY) == FALSE)
+ if (id == ID_VIEW_TAB_HISTORY && GetShowTab(TAB_HISTORY) == false)
break;
- TabView_SetCurrentTab(hTabCtrl, id - ID_VIEW_TAB_SCREENSHOT);
+ TabView_SetCurrentTab(hTabCtrl, id - ID_VIEW_TAB_ARTWORK);
UpdateScreenShot();
TabView_UpdateSelection(hTabCtrl);
break;
// toggle tab's existence
- case ID_TOGGLE_TAB_SCREENSHOT :
- case ID_TOGGLE_TAB_FLYER :
- case ID_TOGGLE_TAB_CABINET :
- case ID_TOGGLE_TAB_MARQUEE :
- case ID_TOGGLE_TAB_TITLE :
- case ID_TOGGLE_TAB_CONTROL_PANEL :
- case ID_TOGGLE_TAB_PCB :
- case ID_TOGGLE_TAB_HISTORY :
- {
- int toggle_flag = id - ID_TOGGLE_TAB_SCREENSHOT;
-
- if (AllowedToSetShowTab(toggle_flag,!GetShowTab(toggle_flag)) == FALSE)
+ case ID_TOGGLE_TAB_SCREENSHOT:
+ case ID_TOGGLE_TAB_TITLE:
+ case ID_TOGGLE_TAB_SCORES:
+ case ID_TOGGLE_TAB_HOWTO:
+ case ID_TOGGLE_TAB_SELECT:
+ case ID_TOGGLE_TAB_VERSUS:
+ case ID_TOGGLE_TAB_BOSSES:
+ case ID_TOGGLE_TAB_COVER:
+ case ID_TOGGLE_TAB_ENDS:
+ case ID_TOGGLE_TAB_GAMEOVER:
+ case ID_TOGGLE_TAB_LOGO:
+ case ID_TOGGLE_TAB_ARTWORK:
+ case ID_TOGGLE_TAB_FLYER:
+ case ID_TOGGLE_TAB_CABINET:
+ case ID_TOGGLE_TAB_MARQUEE:
+ case ID_TOGGLE_TAB_CONTROL_PANEL:
+ case ID_TOGGLE_TAB_PCB:
+ case ID_TOGGLE_TAB_HISTORY:
+ {
+ int toggle_flag = id - ID_TOGGLE_TAB_ARTWORK;
+
+ if (AllowedToSetShowTab(toggle_flag,!GetShowTab(toggle_flag)) == false)
{
// attempt to hide the last tab
// should show error dialog? hide picture area? or ignore?
@@ -4092,7 +4057,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
TabView_Reset(hTabCtrl);
- if (TabView_GetCurrentTab(hTabCtrl) == toggle_flag && GetShowTab(toggle_flag) == FALSE)
+ if (TabView_GetCurrentTab(hTabCtrl) == toggle_flag && GetShowTab(toggle_flag) == false)
{
// we're deleting the tab we're on, so go to the next one
TabView_CalculateNextTab(hTabCtrl);
@@ -4112,27 +4077,27 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
/* Header Context Menu */
case ID_SORT_ASCENDING:
- SetSortReverse(FALSE);
+ SetSortReverse(false);
SetSortColumn(Picker_GetRealColumnFromViewColumn(hwndList, lastColumnClick));
Picker_Sort(hwndList);
break;
case ID_SORT_DESCENDING:
- SetSortReverse(TRUE);
+ SetSortReverse(true);
SetSortColumn(Picker_GetRealColumnFromViewColumn(hwndList, lastColumnClick));
Picker_Sort(hwndList);
break;
case ID_CUSTOMIZE_FIELDS:
if (DialogBox(GetModuleHandle(NULL),
- MAKEINTRESOURCE(IDD_COLUMNS), hMain, ColumnDialogProc) == TRUE)
- ResetColumnDisplay(FALSE);
+ MAKEINTRESOURCE(IDD_COLUMNS), hMain, ColumnDialogProc) == true)
+ ResetColumnDisplay(false);
SetFocus(hwndList);
- return TRUE;
+ return true;
/* View Menu */
case ID_VIEW_LINEUPICONS:
- if( codeNotify == FALSE)
+ if( codeNotify == false)
ResetListView();
else
{
@@ -4146,44 +4111,46 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
break;
case ID_GAME_PROPERTIES:
- if (!oldControl)
- {
- folder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
- InitPropertyPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
- }
+ if (!oldControl && (current_game >= 0))
+ InitPropertyPageToPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, -1, current_game, PROPERTIES_PAGE);
+
/* Just in case the toggle MMX on/off */
UpdateStatusBar();
break;
+ // NOT WORKING
case ID_FOLDER_PROPERTIES:
- if (!oldControl)
+ if (!oldControl && (current_game >= 0))
{
OPTIONS_TYPE curOptType = OPTIONS_SOURCE;
folder = GetSelectedFolder();
- if(folder->m_nFolderId == FOLDER_VECTOR)
- curOptType = OPTIONS_VECTOR;
+ if (folder)
+ {
+ if(folder->m_nFolderId == FOLDER_VECTOR)
+ curOptType = OPTIONS_VECTOR;
- InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), curOptType, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), curOptType, folder->m_nFolderId, current_game);
+ }
}
/* Just in case the toggle MMX on/off */
UpdateStatusBar();
break;
case ID_FOLDER_SOURCEPROPERTIES:
- if (!oldControl)
+ if (!oldControl && (current_game >= 0))
{
- folder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
- InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), (folder->m_nFolderId == FOLDER_VECTOR) ? OPTIONS_VECTOR : OPTIONS_SOURCE , folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ //InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), (folder->m_nFolderId == FOLDER_VECTOR) ? OPTIONS_VECTOR : OPTIONS_SOURCE , -1, current_game);
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), OPTIONS_SOURCE, -1, current_game);
}
/* Just in case the toggle MMX on/off */
UpdateStatusBar();
break;
case ID_FOLDER_VECTORPROPERTIES:
- if (!oldControl)
+ if (!oldControl && (current_game >= 0))
{
folder = GetFolderByID( FOLDER_VECTOR );
- InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), OPTIONS_VECTOR, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), OPTIONS_VECTOR, folder->m_nFolderId, current_game);
}
/* Just in case the toggle MMX on/off */
UpdateStatusBar();
@@ -4200,16 +4167,20 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
break;
case ID_UPDATE_GAMELIST:
- UpdateGameList(TRUE, TRUE);
+ UpdateGameList(true, true);
+ break;
+
+ case ID_UPDATE_CACHE:
+ UpdateCache();
break;
case ID_OPTIONS_FONT:
PickFont();
- return TRUE;
+ return true;
case ID_OPTIONS_CLONE_COLOR:
PickCloneColor();
- return TRUE;
+ return true;
case ID_OPTIONS_DEFAULTS:
/* Check the return value to see if changes were applied */
@@ -4218,7 +4189,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
InitDefaultPropertyPage(hInst, hwnd);
}
SetFocus(hwndList);
- return TRUE;
+ return true;
case ID_OPTIONS_DIR:
{
@@ -4230,27 +4201,27 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
SaveDefaultOptions();
SaveOptions();
- BOOL bUpdateRoms = ((nResult & DIRDLG_ROMS) == DIRDLG_ROMS) ? TRUE : FALSE;
- BOOL bUpdateSamples = ((nResult & DIRDLG_SAMPLES) == DIRDLG_SAMPLES) ? TRUE : FALSE;
+ BOOL bUpdateRoms = ((nResult & DIRDLG_ROMS) == DIRDLG_ROMS) ? true : false;
+ BOOL bUpdateSamples = ((nResult & DIRDLG_SAMPLES) == DIRDLG_SAMPLES) ? true : false;
if (s_pWatcher)
{
if (bUpdateRoms)
- DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), TRUE);
+ DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), true);
if (bUpdateSamples)
- DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), TRUE);
+ DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), true);
}
/* update game list */
- if (bUpdateRoms == TRUE || bUpdateSamples == TRUE)
+ if (bUpdateRoms == true || bUpdateSamples == true)
UpdateGameList(bUpdateRoms, bUpdateSamples);
SetFocus(hwndList);
}
- return TRUE;
+ return true;
case ID_OPTIONS_RESET_DEFAULTS:
- if (DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_RESET), hMain, ResetDialogProc) == TRUE)
+ if (DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_RESET), hMain, ResetDialogProc) == true)
{
// these may have been changed
SaveDefaultOptions();
@@ -4263,7 +4234,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
ResetListView();
SetFocus(hwndList);
}
- return TRUE;
+ return true;
case ID_OPTIONS_INTERFACE:
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_INTERFACE_OPTIONS), hMain, InterfaceDialogProc);
@@ -4275,26 +4246,52 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
SetTimer(hMain, SCREENSHOT_TIMER, GetCycleScreenshot()*1000, NULL ); // Scale to seconds
}
- return TRUE;
+ return true;
+
+ case ID_VIDEO_SNAP:
+ {
+ int nGame = Picker_GetSelectedItem(hwndList);
+ if (nGame >= 0)
+ {
+ string path = GetVideoDir() + string("\\") + driver_list::driver(nGame).name + string(".mp4");
+ ShellExecuteCommon(hMain, path.c_str());
+ }
+ SetFocus(hwndList);
+ }
+ break;
+
+ case ID_MANUAL:
+ {
+ int nGame = Picker_GetSelectedItem(hwndList);
+ if (nGame >= 0)
+ {
+ string path = GetManualsDir() + string("\\") + driver_list::driver(nGame).name + string(".pdf");
+ ShellExecuteCommon(hMain, path.c_str());
+ }
+ SetFocus(hwndList);
+ }
+ break;
case ID_OPTIONS_BG:
{
- // More c++ stupidity with strings
// Get the path from the existing filename; if no filename go to root
TCHAR* t_bgdir = TEXT(".");
- const char *s = GetBgDir();
- std::string as;
- util::zippath_parent(as, s);
+ bool free_bgdir = false;
+ string as, s = GetBgDir();
+ util::zippath_parent(as, s.c_str());
size_t t1 = as.length()-1;
- if (as[t1] == '\\') as[t1]='\0';
+ if (as[t1] == '\\') as.substr(0, t1-1);
t1 = as.find(':');
- if (t1 > 0)
+ if (t1 != string::npos)
+ {
t_bgdir = ui_wstring_from_utf8(as.c_str());
+ free_bgdir = true;
+ if( !t_bgdir )
+ return false;
+ }
OPENFILENAME OFN;
- static TCHAR szFile[MAX_PATH] = TEXT("\0");
- if( !t_bgdir )
- return FALSE;
+ TCHAR szFile[MAX_PATH] = TEXT("\0");
OFN.lStructSize = sizeof(OPENFILENAME);
OFN.hwndOwner = hMain;
@@ -4317,23 +4314,26 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
OFN.lpTemplateName = NULL;
OFN.Flags = OFN_NOCHANGEDIR | OFN_SHOWHELP | OFN_EXPLORER;
- if (GetOpenFileName(&OFN))
+ BOOL res = GetOpenFileName(&OFN);
+ if (res)
{
- free(t_bgdir);
+ if (free_bgdir)
+ free(t_bgdir);
utf8_szFile = ui_utf8_from_wstring(szFile);
if( !utf8_szFile )
- return FALSE;
+ return false;
// Make this file as the new default
SetBgDir(utf8_szFile);
// Display new background
LoadBackgroundBitmap();
- InvalidateRect(hMain, NULL, TRUE);
+ InvalidateRect(hMain, NULL, true);
free(utf8_szFile);
- return TRUE;
+ return true;
}
- free(t_bgdir);
+ if (free_bgdir)
+ free(t_bgdir);
}
break;
#if 0
@@ -4345,7 +4345,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
{
SetHistoryFileName(filename);
}
- return TRUE;
+ return true;
}
case ID_OPTIONS_MAMEINFO:
{
@@ -4355,13 +4355,13 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
{
SetMAMEInfoFileName(filename);
}
- return TRUE;
+ return true;
}
#endif
case ID_HELP_ABOUT:
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hMain, AboutDialogProc);
SetFocus(hwndList);
- return TRUE;
+ return true;
case IDOK :
/* cmk -- might need to check more codes here, not sure */
@@ -4370,8 +4370,8 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
/* enter key */
if (g_in_treeview_edit)
{
- res = TreeView_EndEditLabelNow(hTreeView, FALSE);
- return TRUE;
+ res = TreeView_EndEditLabelNow(hTreeView, false);
+ return true;
}
else
if (have_selection)
@@ -4381,7 +4381,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
case IDCANCEL : /* esc key */
if (g_in_treeview_edit)
- res = TreeView_EndEditLabelNow(hTreeView, TRUE);
+ res = TreeView_EndEditLabelNow(hTreeView, true);
break;
case IDC_PLAY_GAME :
@@ -4456,8 +4456,8 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
break;
case ID_CONTEXT_RESET_PLAYSTATS:
- ResetPlayTime( Picker_GetSelectedItem(hwndList) );
- ResetPlayCount( Picker_GetSelectedItem(hwndList) );
+ ResetPlayTime(current_game);
+ ResetPlayCount(current_game);
res = ListView_RedrawItems(hwndList, GetSelectedPick(), GetSelectedPick());
break;
@@ -4478,10 +4478,10 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
printf("%X: %ls\n",g_helpInfo[i].bIsHtmlHelp, g_helpInfo[i].lpFile);
if (i == 1) // get current whatsnew.txt from mamedev.org
{
- std::string version = std::string(GetVersionString()); // turn version string into std
+ string version = string(GetVersionString()); // turn version string into std
version.erase(1,1); // take out the decimal point
- version.erase(4, std::string::npos); // take out the date
- std::string url = "http://mamedev.org/releases/whatsnew_" + version + ".txt"; // construct url
+ version.erase(4, string::npos); // take out the date
+ string url = "http://mamedev.org/releases/whatsnew_" + version + ".txt"; // construct url
std::wstring stemp = s2ws(url); // convert to wide string (yeah, typical c++ mess)
LPCWSTR result = stemp.c_str(); // then convert to const wchar_t*
ShellExecute(hMain, TEXT("open"), result, TEXT(""), NULL, SW_SHOWNORMAL); // show web page
@@ -4492,13 +4492,13 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
ShellExecute(hMain, TEXT("open"), g_helpInfo[i].lpFile, TEXT(""), NULL, SW_SHOWNORMAL);
// else
// DisplayTextFile(hMain, g_helpInfo[i].lpFile);
- return FALSE;
+ return false;
}
}
break;
}
-
- return FALSE;
+ res++;
+ return false;
}
static void LoadBackgroundBitmap()
@@ -4528,15 +4528,12 @@ static void LoadBackgroundBitmap()
static void ResetColumnDisplay(BOOL first_time)
{
- int driver_index;
-
if (!first_time)
Picker_ResetColumnDisplay(hwndList);
ResetListView();
- driver_index = GetGameNameIndex(GetDefaultGame());
- Picker_SetSelectedItem(hwndList, driver_index);
+ Picker_SetSelectedItem(hwndList, GetDefaultGame());
}
static int GamePicker_GetItemImage(HWND hwndPicker, int nItem)
@@ -4554,19 +4551,17 @@ static const TCHAR *GamePicker_GetItemString(HWND hwndPicker, int nItem, int nCo
{
case COLUMN_GAMES:
/* Driver description */
- utf8_s = ModifyThe(driver_list::driver(nItem).description);
+ utf8_s = ModifyThe(driver_list::driver(nItem).type.fullname());
break;
case COLUMN_ORIENTATION:
utf8_s = DriverIsVertical(nItem) ? "Vertical" : "Horizontal";
break;
-#ifdef SHOW_COLUMN_ROMS
case COLUMN_ROMS:
utf8_s = GetAuditString(GetRomAuditResults(nItem));
break;
-#endif
-#ifdef SHOW_COLUMN_SAMPLES
+
case COLUMN_SAMPLES:
/* Samples */
if (DriverUsesSamples(nItem))
@@ -4574,7 +4569,7 @@ static const TCHAR *GamePicker_GetItemString(HWND hwndPicker, int nItem, int nCo
else
s = TEXT("-");
break;
-#endif
+
case COLUMN_DIRECTORY:
/* Driver name (directory) */
utf8_s = driver_list::driver(nItem).name;
@@ -4715,7 +4710,7 @@ static void InitListView()
res = ListView_SetTextBkColor(hwndList, CLR_NONE);
res = ListView_SetBkColor(hwndList, CLR_NONE);
- t_bgdir = ui_wstring_from_utf8(GetBgDir());
+ t_bgdir = ui_wstring_from_utf8(GetBgDir().c_str());
if( !t_bgdir )
return;
@@ -4726,13 +4721,15 @@ static void InitListView()
CreateIcons();
- ResetColumnDisplay(TRUE);
+ ResetColumnDisplay(true);
// Allow selection to change the default saved game
- bListReady = TRUE;
+ bListReady = true;
+ res++;
free(t_bgdir);
}
+
static void AddDriverIcon(int nItem,int default_icon_index)
{
HICON hIcon = 0;
@@ -4806,10 +4803,8 @@ static void ReloadIcons(void)
ImageList_RemoveAll(hLarge);
if (icon_index)
- {
- for (i=0;i<driver_list::total();i++)
+ for (i=0; i<driver_list::total(); i++)
icon_index[i] = 0; // these are indices into hSmall
- }
for (i = 0; g_iconData[i].icon_name; i++)
{
@@ -4959,15 +4954,14 @@ static int GamePicker_Compare(HWND hwndPicker, int index1, int index2, int sort_
switch (sort_subitem)
{
case COLUMN_GAMES:
- return core_stricmp(ModifyThe(driver_list::driver(index1).description),
- ModifyThe(driver_list::driver(index2).description));
+ return core_stricmp(ModifyThe(driver_list::driver(index1).type.fullname()), ModifyThe(driver_list::driver(index2).type.fullname()));
case COLUMN_ORIENTATION:
nTemp1 = DriverIsVertical(index1) ? 1 : 0;
nTemp2 = DriverIsVertical(index2) ? 1 : 0;
value = nTemp1 - nTemp2;
break;
-#ifdef SHOW_COLUMN_SAMPLES
+
case COLUMN_SAMPLES:
nTemp1 = -1;
if (DriverUsesSamples(index1))
@@ -5000,7 +4994,7 @@ static int GamePicker_Compare(HWND hwndPicker, int index1, int index2, int sort_
}
value = nTemp2 - nTemp1;
break;
-#endif
+
case COLUMN_DIRECTORY:
value = core_stricmp(driver_list::driver(index1).name, driver_list::driver(index2).name);
break;
@@ -5076,26 +5070,20 @@ int GetSelectedPick()
static HICON GetSelectedPickItemIcon()
{
LV_ITEM lvi;
- BOOL res;
-
lvi.iItem = GetSelectedPick();
lvi.iSubItem = 0;
lvi.mask = LVIF_IMAGE;
- res = ListView_GetItem(hwndList, &lvi);
-
+ BOOL res = ListView_GetItem(hwndList, &lvi);
+ res++;
return ImageList_GetIcon(hLarge, lvi.iImage, ILD_TRANSPARENT);
}
static void SetRandomPickItem()
{
- int nListCount;
-
- nListCount = ListView_GetItemCount(hwndList);
+ int nListCount = ListView_GetItemCount(hwndList);
if (nListCount > 0)
- {
Picker_SetSelectedPick(hwndList, rand() % nListCount);
- }
}
BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype)
@@ -5103,7 +5091,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype)
BOOL success;
UINT16 i;
OPENFILENAME ofn;
- std::string dirname;
+ string dirname;
TCHAR* t_filename;
TCHAR t_filename_buffer[MAX_PATH] = {0, };
char *utf8_filename;
@@ -5161,21 +5149,6 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype)
ofn.lpstrDefExt = TEXT("txt");
dirname = GetInpDir();
break;
- case FILETYPE_CHEAT_FILE :
- ofn.lpstrFilter = TEXT("cheats (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
- ofn.lpstrDefExt = TEXT("dat");
- dirname = ".";
- break;
- case FILETYPE_HISTORY_FILE :
- ofn.lpstrFilter = TEXT("history (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
- ofn.lpstrDefExt = TEXT("dat");
- dirname = ".";
- break;
- case FILETYPE_MAMEINFO_FILE :
- ofn.lpstrFilter = TEXT("mameinfo (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
- ofn.lpstrDefExt = TEXT("dat");
- dirname = ".";
- break;
}
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
@@ -5300,7 +5273,7 @@ static void MamePlayBackGame()
return;
}
- std::string const sysname = header.get_sysname();
+ string const sysname = header.get_sysname();
nGame = -1;
for (int i = 0; i < driver_list::total(); i++) // find game and play it
{
@@ -5420,7 +5393,8 @@ static void MamePlayRecordGame()
*filename = 0;
nGame = Picker_GetSelectedItem(hwndList);
- strcpy(filename, driver_list::driver(nGame).name);
+ if (nGame != -1)
+ strcpy(filename, driver_list::driver(nGame).name);
if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_INPUT_FILES))
{
@@ -5451,9 +5425,11 @@ void MamePlayGame(void)
play_options playopts;
nGame = Picker_GetSelectedItem(hwndList);
-
- memset(&playopts, 0, sizeof(playopts));
- MamePlayGameWithOptions(nGame, &playopts);
+ if (nGame != -1)
+ {
+ memset(&playopts, 0, sizeof(playopts));
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
}
static void MamePlayRecordWave()
@@ -5463,7 +5439,8 @@ static void MamePlayRecordWave()
play_options playopts;
nGame = Picker_GetSelectedItem(hwndList);
- strcpy(filename, driver_list::driver(nGame).name);
+ if (nGame != -1)
+ strcpy(filename, driver_list::driver(nGame).name);
if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_WAVE_FILES))
{
@@ -5480,7 +5457,8 @@ static void MamePlayRecordMNG()
char filename[MAX_PATH] = { 0, };
nGame = Picker_GetSelectedItem(hwndList);
- strcpy(filename, driver_list::driver(nGame).name);
+ if (nGame != -1)
+ strcpy(filename, driver_list::driver(nGame).name);
if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_MNG_FILES))
{
@@ -5511,7 +5489,8 @@ static void MamePlayRecordAVI()
char filename[MAX_PATH] = { 0, };
nGame = Picker_GetSelectedItem(hwndList);
- strcpy(filename, driver_list::driver(nGame).name);
+ if (nGame != -1)
+ strcpy(filename, driver_list::driver(nGame).name);
if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_AVI_FILES))
{
@@ -5547,7 +5526,7 @@ static void MamePlayGameWithOptions(int nGame, const play_options *playopts)
if (GetCycleScreenshot() > 0)
KillTimer(hMain, SCREENSHOT_TIMER);
- in_emulation = TRUE;
+ in_emulation = true;
dwExitCode = RunMAME(nGame, playopts);
if (dwExitCode == 0)
@@ -5560,7 +5539,7 @@ static void MamePlayGameWithOptions(int nGame, const play_options *playopts)
ShowWindow(hMain, SW_SHOW);
}
- in_emulation = FALSE;
+ in_emulation = false;
// re-sort if sorting on # of times played
if (GetSortColumn() == COLUMN_PLAYED)
@@ -5575,19 +5554,20 @@ static void MamePlayGameWithOptions(int nGame, const play_options *playopts)
SetTimer(hMain, JOYGUI_TIMER, JOYGUI_MS, NULL);
if (GetCycleScreenshot() > 0)
SetTimer(hMain, SCREENSHOT_TIMER, GetCycleScreenshot()*1000, NULL); //scale to seconds
+ res++;
}
/* Toggle ScreenShot ON/OFF */
static void ToggleScreenShot(void)
{
- BOOL showScreenShot = GetShowScreenShot();
-
- SetShowScreenShot((showScreenShot) ? FALSE : TRUE);
+ UINT val = GetWindowPanes() ^ 8;
+ BOOL show = BIT(val, 3);
+ SetWindowPanes(val);
UpdateScreenShot();
/* Redraw list view */
- if (hBackground && showScreenShot)
- InvalidateRect(hwndList, NULL, FALSE);
+ if (hBackground && show)
+ InvalidateRect(hwndList, NULL, false);
}
static void AdjustMetrics(void)
@@ -5660,6 +5640,8 @@ static void AdjustMetrics(void)
SetWindowArea(&area);
SetWindowPos(hMain, 0, area.x, area.y, area.width, area.height, SWP_NOZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE);
+ res++;
+ b_res++;
}
int FindIconIndex(int nIconResource)
@@ -5691,28 +5673,40 @@ static int GetIconForDriver(int nItem)
if (DriverUsesRoms(nItem))
{
int audit_result = GetRomAuditResults(nItem);
- if (IsAuditResultKnown(audit_result) == FALSE)
+ if (audit_result == -1)
return 2;
-#ifdef SHOW_MISSING_ROMS_ICON
+ else
if (IsAuditResultYes(audit_result))
iconRoms = 1;
else
iconRoms = 0;
-#endif
}
// iconRoms is now either 0 (no roms), 1 (roms), or 2 (unknown)
- // these are indices into icon_names, which maps into our image list, also must match IDI_WIN_NOROMS + iconRoms
- // Show Red-X if the ROMs are present and flagged as NOT WORKING
- if (iconRoms == 1 && DriverIsBroken(nItem))
- iconRoms = FindIconIndex(IDI_WIN_REDX);
- // show clone icon if we have roms and game is working
- if (iconRoms == 1 && DriverIsClone(nItem))
- iconRoms = FindIconIndex(IDI_WIN_CLONE);
+ /* these are indices into icon_names, which maps into our image list
+ * also must match IDI_WIN_NOROMS + iconRoms
+ */
+
+ if (iconRoms == 1)
+ {
+ // Show Red-X if the ROMs are present and flagged as NOT WORKING
+ if (DriverIsBroken(nItem))
+ iconRoms = FindIconIndex(IDI_WIN_REDX); // iconRoms now = 4
+ else
+ // Show imperfect if the ROMs are present and flagged as imperfect
+ if (DriverIsImperfect(nItem))
+ iconRoms = FindIconIndex(IDI_WIN_IMPERFECT); // iconRoms now = 5
+ else
+ // show clone icon if we have roms and game is working
+ if (DriverIsClone(nItem))
+ iconRoms = FindIconIndex(IDI_WIN_CLONE); // iconRoms now = 3
+ }
// if we have the roms, then look for a custom per-game icon to override
- if (iconRoms == 1 || iconRoms == 3)
+ // not 2, because this indicates F5 must be done; not 0, because this indicates roms are missing; only use 4 if user chooses it
+ BOOL redx = GetOverrideRedX() & (iconRoms == 4);
+ if (iconRoms == 1 || iconRoms == 3 || iconRoms == 5 || redx)
{
if (icon_index[nItem] == 0)
AddDriverIcon(nItem,iconRoms);
@@ -5731,7 +5725,7 @@ static BOOL HandleTreeContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
BOOL res;
if ((HWND)wParam != GetDlgItem(hWnd, IDC_TREE))
- return FALSE;
+ return false;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
@@ -5756,8 +5750,8 @@ static BOOL HandleTreeContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,0,hWnd,NULL);
DestroyMenu(hTreeMenu);
-
- return TRUE;
+ res++;
+ return true;
}
@@ -5787,7 +5781,7 @@ static BOOL HandleScreenShotContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
POINT pt;
if ((HWND)wParam != GetDlgItem(hWnd, IDC_SSPICTURE) && (HWND)wParam != GetDlgItem(hWnd, IDC_SSFRAME))
- return FALSE;
+ return false;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
@@ -5803,7 +5797,7 @@ static BOOL HandleScreenShotContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
DestroyMenu(hMenuLoad);
- return TRUE;
+ return true;
}
static void UpdateMenu(HMENU hMenu)
@@ -5811,26 +5805,28 @@ static void UpdateMenu(HMENU hMenu)
TCHAR buf[200];
MENUITEMINFO mItem;
int nGame = Picker_GetSelectedItem(hwndList);
+ if (nGame < 0)
+ have_selection = 0;
+
LPTREEFOLDER lpFolder = GetCurrentFolder();
int i;
- //const char *pParent;
TCHAR* t_description;
if (have_selection)
{
- t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description)));
+ t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).type.fullname())));
if( !t_description )
return;
_sntprintf(buf, ARRAY_LENGTH(buf), g_szPlayGameString, t_description);
- mItem.cbSize = sizeof(mItem);
- mItem.fMask = MIIM_TYPE;
- mItem.fType = MFT_STRING;
+ mItem.cbSize = sizeof(mItem);
+ mItem.fMask = MIIM_TYPE;
+ mItem.fType = MFT_STRING;
mItem.dwTypeData = buf;
- mItem.cch = _tcslen(mItem.dwTypeData);
+ mItem.cch = _tcslen(mItem.dwTypeData);
- SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mItem);
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, false, &mItem);
EnableMenuItem(hMenu, ID_CONTEXT_SELECT_RANDOM, MF_ENABLED);
@@ -5838,9 +5834,9 @@ static void UpdateMenu(HMENU hMenu)
}
else
{
- EnableMenuItem(hMenu, ID_FILE_PLAY, MF_GRAYED);
- EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_GRAYED);
- EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_FILE_PLAY, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_GRAYED);
EnableMenuItem(hMenu, ID_CONTEXT_SELECT_RANDOM, MF_GRAYED);
}
@@ -5863,13 +5859,9 @@ static void UpdateMenu(HMENU hMenu)
}
//pParent = GetFolderNameByID(lpFolder->m_nParent+1);
- if (lpFolder->m_dwFlags & F_INIEDIT)
- EnableMenuItem(hMenu,ID_FOLDER_PROPERTIES,MF_ENABLED);
- else
- EnableMenuItem(hMenu,ID_FOLDER_PROPERTIES,MF_GRAYED);
+ EnableMenuItem(hMenu, ID_FOLDER_PROPERTIES, (lpFolder->m_dwFlags & F_INIEDIT) ? MF_ENABLED : MF_GRAYED);
- CheckMenuRadioItem(hMenu, ID_VIEW_TAB_SCREENSHOT, ID_VIEW_TAB_HISTORY,
- ID_VIEW_TAB_SCREENSHOT + TabView_GetCurrentTab(hTabCtrl), MF_BYCOMMAND);
+ CheckMenuRadioItem(hMenu, ID_VIEW_TAB_ARTWORK, ID_VIEW_TAB_HISTORY, ID_VIEW_TAB_ARTWORK + TabView_GetCurrentTab(hTabCtrl), MF_BYCOMMAND);
// set whether we're showing the tab control or not
if (bShowTabCtrl)
@@ -5877,20 +5869,19 @@ static void UpdateMenu(HMENU hMenu)
else
CheckMenuItem(hMenu,ID_VIEW_PAGETAB,MF_BYCOMMAND | MF_UNCHECKED);
-
for (i=0;i<MAX_TAB_TYPES;i++)
{
// disable menu items for tabs we're not currently showing
if (GetShowTab(i))
- EnableMenuItem(hMenu,ID_VIEW_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_ENABLED);
+ EnableMenuItem(hMenu,ID_VIEW_TAB_ARTWORK + i,MF_BYCOMMAND | MF_ENABLED);
else
- EnableMenuItem(hMenu,ID_VIEW_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_GRAYED);
+ EnableMenuItem(hMenu,ID_VIEW_TAB_ARTWORK + i,MF_BYCOMMAND | MF_GRAYED);
// check toggle menu items
if (GetShowTab(i))
- CheckMenuItem(hMenu, ID_TOGGLE_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_CHECKED);
+ CheckMenuItem(hMenu, ID_TOGGLE_TAB_ARTWORK + i,MF_BYCOMMAND | MF_CHECKED);
else
- CheckMenuItem(hMenu, ID_TOGGLE_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_UNCHECKED);
+ CheckMenuItem(hMenu, ID_TOGGLE_TAB_ARTWORK + i,MF_BYCOMMAND | MF_UNCHECKED);
}
for (i=0;i<MAX_FOLDERS;i++)
@@ -5900,78 +5891,79 @@ static void UpdateMenu(HMENU hMenu)
else
CheckMenuItem(hMenu,ID_CONTEXT_SHOW_FOLDER_START + i,MF_BYCOMMAND | MF_UNCHECKED);
}
-
}
void InitTreeContextMenu(HMENU hTreeMenu)
{
- MENUITEMINFO mii;
- HMENU hMenu;
- int i;
extern const FOLDERDATA g_folderData[];
+ MENUITEMINFO mii;
ZeroMemory(&mii,sizeof(mii));
mii.cbSize = sizeof(mii);
-
mii.wID = -1;
mii.fMask = MIIM_SUBMENU | MIIM_ID;
- hMenu = GetSubMenu(hTreeMenu, 0);
+ HMENU hMenu = GetSubMenu(hTreeMenu, 0);
- if (GetMenuItemInfo(hMenu,3,TRUE,&mii) == FALSE)
+ if (GetMenuItemInfo(hMenu,3,true,&mii) == false)
{
- dprintf("can't find show folders context menu\n");
+ printf("can't find show folders context menu\n");fflush(stdout);
return;
}
if (mii.hSubMenu == NULL)
{
- dprintf("can't find submenu for show folders context menu\n");
+ printf("can't find submenu for show folders context menu\n");fflush(stdout);
return;
}
hMenu = mii.hSubMenu;
- for (i=0;g_folderData[i].m_lpTitle;i++)
+ for (int i=0; g_folderData[i].m_lpTitle; i++)
{
- TCHAR* t_title = ui_wstring_from_utf8(g_folderData[i].m_lpTitle);
- if( !t_title )
- return;
-
- mii.fMask = MIIM_TYPE | MIIM_ID;
- mii.fType = MFT_STRING;
- mii.dwTypeData = t_title;
- mii.cch = _tcslen(mii.dwTypeData);
- mii.wID = ID_CONTEXT_SHOW_FOLDER_START + g_folderData[i].m_nFolderId;
+ if (!g_folderData[i].m_process)
+ {
+ TCHAR* t_title = ui_wstring_from_utf8(g_folderData[i].m_lpTitle);
+ if( !t_title )
+ return;
+ mii.fMask = MIIM_TYPE | MIIM_ID;
+ mii.fType = MFT_STRING;
+ mii.dwTypeData = t_title;
+ mii.cch = _tcslen(mii.dwTypeData);
+ mii.wID = ID_CONTEXT_SHOW_FOLDER_START + g_folderData[i].m_nFolderId;
- // menu in resources has one empty item (needed for the submenu to setup properly)
- // so overwrite this one, append after
- if (i == 0)
- SetMenuItemInfo(hMenu,ID_CONTEXT_SHOW_FOLDER_START,FALSE,&mii);
- else
- InsertMenuItem(hMenu,i,FALSE,&mii);
+ // menu in resources has one empty item (needed for the submenu to setup properly)
+ // so overwrite this one, append after
+ if (i == 0)
+ SetMenuItemInfo(hMenu,ID_CONTEXT_SHOW_FOLDER_START,false,&mii);
+ else
+ InsertMenuItem(hMenu,i,false,&mii);
- free(t_title);
+ free(t_title);
+ }
}
-
}
+
void InitBodyContextMenu(HMENU hBodyContextMenu)
{
- LPTREEFOLDER lpFolder;
+ int current_game = Picker_GetSelectedItem(hwndList);
+ if (current_game < 0)
+ return;
+
TCHAR tmp[30];
MENUITEMINFO mii;
ZeroMemory(&mii,sizeof(mii));
mii.cbSize = sizeof(mii);
- if (GetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,FALSE,&mii) == FALSE)
+ if (GetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,false,&mii) == false)
{
dprintf("can't find show folders context menu\n");
return;
}
- lpFolder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
- _sntprintf(tmp,ARRAY_LENGTH(tmp),TEXT("Properties for %s"),lpFolder->m_lptTitle );
+
+ _sntprintf(tmp,ARRAY_LENGTH(tmp),TEXT("Properties for %s"), ui_wstring_from_utf8(GetDriverFilename(current_game) ));
mii.fMask = MIIM_TYPE | MIIM_ID;
mii.fType = MFT_STRING;
mii.dwTypeData = tmp;
@@ -5981,9 +5973,8 @@ void InitBodyContextMenu(HMENU hBodyContextMenu)
// menu in resources has one default item
// so overwrite this one
- SetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,FALSE,&mii);
- if( ! DriverIsVector(Picker_GetSelectedItem(hwndList) ) )
- EnableMenuItem(hBodyContextMenu, ID_FOLDER_VECTORPROPERTIES, MF_GRAYED);
+ SetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,false,&mii);
+ EnableMenuItem(hBodyContextMenu, ID_FOLDER_VECTORPROPERTIES, DriverIsVector(current_game) ? MF_ENABLED : MF_GRAYED);
}
@@ -5991,14 +5982,14 @@ void ToggleShowFolder(int folder)
{
int current_id = GetCurrentFolderID();
- SetWindowRedraw(hwndList,FALSE);
+ SetWindowRedraw(hwndList,false);
SetShowFolder(folder,!GetShowFolder(folder));
ResetTreeViewFolders();
SelectTreeViewFolder(current_id);
- SetWindowRedraw(hwndList,TRUE);
+ SetWindowRedraw(hwndList,true);
}
static LRESULT CALLBACK HistoryWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
@@ -6010,12 +6001,12 @@ static LRESULT CALLBACK HistoryWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
case WM_MOUSEMOVE:
{
if (MouseHasBeenMoved())
- ShowCursor(TRUE);
+ ShowCursor(true);
break;
}
case WM_ERASEBKGND:
- return TRUE;
+ return true;
case WM_PAINT:
{
POINT p = { 0, 0 };
@@ -6024,7 +6015,7 @@ static LRESULT CALLBACK HistoryWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
MapWindowPoints(hWnd,hTreeView,&p,1);
PaintBackgroundImage(hWnd, NULL, p.x, p.y);
/* to ensure our parent procedure repaints the whole client area */
- InvalidateRect(hWnd, NULL, FALSE);
+ InvalidateRect(hWnd, NULL, false);
break;
}
}
@@ -6039,7 +6030,7 @@ static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
case WM_MOUSEMOVE:
{
if (MouseHasBeenMoved())
- ShowCursor(TRUE);
+ ShowCursor(true);
break;
}
@@ -6057,8 +6048,8 @@ static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
// no more no man's land, the Cursor changes when Edit control is left, should be enough feedback
if (have_history &&
( ( (TabView_GetCurrentTab(hTabCtrl) == TAB_HISTORY) ||
- (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ||
- (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ) &&
+ (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == false) ||
+ (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == false) ) &&
// (rect.top - 6) < pt.y && pt.y < (rect.bottom + 6) ) )
PtInRect( &rect, pt ) ) )
@@ -6073,7 +6064,7 @@ static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
break;
case WM_CONTEXTMENU:
if ( HandleScreenShotContextMenu(hWnd, wParam, lParam))
- return FALSE;
+ return false;
break;
}
@@ -6082,7 +6073,7 @@ static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
switch (uMsg)
{
case WM_ERASEBKGND :
- return TRUE;
+ return true;
case WM_PAINT :
{
RECT rect,nodraw_rect;
@@ -6120,7 +6111,7 @@ static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
DeleteObject(region);
/* to ensure our parent procedure repaints the whole client area */
- InvalidateRect(hWnd, NULL, FALSE);
+ InvalidateRect(hWnd, NULL, false);
break;
}
@@ -6134,7 +6125,7 @@ static LRESULT CALLBACK PictureWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
switch (uMsg)
{
case WM_ERASEBKGND :
- return TRUE;
+ return true;
case WM_PAINT :
{
PAINTSTRUCT ps;
@@ -6208,7 +6199,7 @@ static LRESULT CALLBACK PictureWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
EndPaint(hWnd,&ps);
- return TRUE;
+ return true;
}
}
@@ -6217,7 +6208,8 @@ static LRESULT CALLBACK PictureWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
static void RemoveCurrentGameCustomFolder(void)
{
- RemoveGameCustomFolder(Picker_GetSelectedItem(hwndList));
+ if (Picker_GetSelectedItem(hwndList) >= 0)
+ RemoveGameCustomFolder(Picker_GetSelectedItem(hwndList));
}
static void RemoveGameCustomFolder(int driver_index)
@@ -6258,38 +6250,34 @@ static void RemoveGameCustomFolder(int driver_index)
static void BeginListViewDrag(NM_LISTVIEW *pnmv)
{
- LV_ITEM lvi;
- POINT pt;
- BOOL res;
-
+ LV_ITEM lvi;
lvi.iItem = pnmv->iItem;
lvi.mask = LVIF_PARAM;
- res = ListView_GetItem(hwndList, &lvi);
+ BOOL res = ListView_GetItem(hwndList, &lvi);
+ res++;
game_dragged = lvi.lParam;
+ POINT pt;
pt.x = 0;
pt.y = 0;
- /* Tell the list view control to create an image to use
- for dragging. */
- himl_drag = ListView_CreateDragImage(hwndList,pnmv->iItem,&pt);
+ /* Tell the list view control to create an image to use for dragging. */
+ himl_drag = ListView_CreateDragImage(hwndList,pnmv->iItem,&pt);
- /* Start the drag operation. */
- ImageList_BeginDrag(himl_drag, 0, 0, 0);
+ /* Start the drag operation. */
+ ImageList_BeginDrag(himl_drag, 0, 0, 0);
pt = pnmv->ptAction;
ClientToScreen(hwndList,&pt);
ImageList_DragEnter(GetDesktopWindow(),pt.x,pt.y);
- /* Hide the mouse cursor, and direct mouse input to the
- parent window. */
- SetCapture(hMain);
+ /* Hide the mouse cursor, and direct mouse input to the parent window. */
+ SetCapture(hMain);
prev_drag_drop_target = NULL;
- g_listview_dragging = TRUE;
-
+ g_listview_dragging = true;
}
static void MouseMoveListViewDrag(POINTS p)
@@ -6313,15 +6301,16 @@ static void MouseMoveListViewDrag(POINTS p)
if (htiTarget != prev_drag_drop_target)
{
- ImageList_DragShowNolock(FALSE);
+ ImageList_DragShowNolock(false);
if (htiTarget)
res = TreeView_SelectDropTarget(hTreeView,htiTarget);
else
res = TreeView_SelectDropTarget(hTreeView,NULL);
- ImageList_DragShowNolock(TRUE);
+ ImageList_DragShowNolock(true);
prev_drag_drop_target = htiTarget;
}
+ res++;
}
static void ButtonUpListViewDrag(POINTS p)
@@ -6330,7 +6319,6 @@ static void ButtonUpListViewDrag(POINTS p)
HTREEITEM htiTarget;
TV_HITTESTINFO tvht;
TVITEM tvi;
- BOOL res;
ReleaseCapture();
@@ -6338,9 +6326,10 @@ static void ButtonUpListViewDrag(POINTS p)
ImageList_EndDrag();
ImageList_Destroy(himl_drag);
- res = TreeView_SelectDropTarget(hTreeView,NULL);
+ BOOL res = TreeView_SelectDropTarget(hTreeView,NULL);
+ res++;
- g_listview_dragging = FALSE;
+ g_listview_dragging = false;
/* see where the game was dragged */
@@ -6378,7 +6367,6 @@ static void ButtonUpListViewDrag(POINTS p)
return;
}
-
tvi.lParam = 0;
tvi.mask = TVIF_PARAM | TVIF_HANDLE;
tvi.hItem = htiTarget;
@@ -6388,21 +6376,18 @@ static void ButtonUpListViewDrag(POINTS p)
LPTREEFOLDER folder = (LPTREEFOLDER)tvi.lParam;
AddToCustomFolder(folder,game_dragged);
}
-
}
static LPTREEFOLDER GetSelectedFolder(void)
{
- HTREEITEM htree;
- TVITEM tvi;
- BOOL res;
-
- htree = TreeView_GetSelection(hTreeView);
+ HTREEITEM htree = TreeView_GetSelection(hTreeView);
if(htree)
{
+ TVITEM tvi;
tvi.hItem = htree;
tvi.mask = TVIF_PARAM;
- res = TreeView_GetItem(hTreeView,&tvi);
+ BOOL res = TreeView_GetItem(hTreeView,&tvi);
+ res++;
return (LPTREEFOLDER)tvi.lParam;
}
return NULL;
@@ -6410,22 +6395,17 @@ static LPTREEFOLDER GetSelectedFolder(void)
static HICON GetSelectedFolderIcon(void)
{
- HTREEITEM htree;
- TVITEM tvi;
- HIMAGELIST hSmall_icon;
- LPTREEFOLDER folder;
- BOOL res;
-
- htree = TreeView_GetSelection(hTreeView);
+ HTREEITEM htree = TreeView_GetSelection(hTreeView);
if (htree)
{
+ TVITEM tvi;
tvi.hItem = htree;
tvi.mask = TVIF_PARAM;
- res = TreeView_GetItem(hTreeView,&tvi);
-
- folder = (LPTREEFOLDER)tvi.lParam;
+ BOOL res = TreeView_GetItem(hTreeView,&tvi);
+ res++;
+ //LPTREEFOLDER folder = (LPTREEFOLDER)tvi.lParam;
//hSmall_icon = TreeView_GetImageList(hTreeView,(int)tvi.iImage);
- hSmall_icon = NULL;
+ HIMAGELIST hSmall_icon = NULL;
return ImageList_GetIcon(hSmall_icon, tvi.iImage, ILD_TRANSPARENT);
}
return NULL;
@@ -6437,8 +6417,9 @@ void UpdateListView(void)
BOOL res;
if( (GetViewMode() == VIEW_GROUPED) || (GetViewMode() == VIEW_DETAILS ) )
- res = ListView_RedrawItems(hwndList,ListView_GetTopIndex(hwndList),
- ListView_GetTopIndex(hwndList)+ ListView_GetCountPerPage(hwndList) );
+ res = ListView_RedrawItems(hwndList,ListView_GetTopIndex(hwndList), ListView_GetTopIndex(hwndList)+ ListView_GetCountPerPage(hwndList) );
+
+ res++;
}
static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_height)
@@ -6451,7 +6432,7 @@ static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_he
int x, y;
int rWidth, rHeight;
double scale;
- BOOL bReduce = FALSE;
+ BOOL bReduce = false;
GetClientRect(hWnd, &rect);
@@ -6473,7 +6454,7 @@ static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_he
rHeight = (rect.bottom - rect.top);
/* Limit the screen shot to max height of 264 */
- if (restrict_height == TRUE && rHeight > 264)
+ if (restrict_height == true && rHeight > 264)
{
rect.bottom = rect.top + 264;
rHeight = 264;
@@ -6486,7 +6467,7 @@ static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_he
rect.bottom -= 10;
rWidth -= 10;
rHeight -= 10;
- bReduce = TRUE;
+ bReduce = true;
/* Try to scale it properly */
/* assumes square pixels, doesn't consider aspect ratio */
if (x > y)
@@ -6517,7 +6498,7 @@ static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_he
rect.bottom -= 10;
rWidth -= 10;
rHeight -= 10;
- bReduce = TRUE;
+ bReduce = true;
// Try to scale it properly
// assumes square pixels, doesn't consider aspect ratio
if (x < y)
@@ -6600,7 +6581,7 @@ static void SwitchFullScreenMode(void)
SetMenu(hMain, LoadMenu(hInst,MAKEINTRESOURCE(IDR_UI_MENU)));
// Refresh the checkmarks
- CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, GetShowFolderList() ? MF_CHECKED : MF_UNCHECKED);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, BIT(GetWindowPanes(), 0) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(GetMenu(hMain), ID_VIEW_TOOLBARS, GetShowToolBar() ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(GetMenu(hMain), ID_VIEW_STATUS, GetShowStatusBar() ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(GetMenu(hMain), ID_VIEW_PAGETAB, GetShowTabCtrl() ? MF_CHECKED : MF_UNCHECKED);
@@ -6619,7 +6600,7 @@ static void SwitchFullScreenMode(void)
else
ShowWindow(hMain, SW_RESTORE);
- SetRunFullScreen(FALSE);
+ SetRunFullScreen(false);
}
else
{
@@ -6644,7 +6625,7 @@ static void SwitchFullScreenMode(void)
ShowWindow(hMain, SW_MAXIMIZE);
- SetRunFullScreen(TRUE);
+ SetRunFullScreen(true);
}
}