Taseditor: Config->Project file saving options

This commit is contained in:
ansstuff 2013-01-10 17:13:33 +00:00
parent efed1b3dec
commit 30378d8b49
13 changed files with 214 additions and 119 deletions

View File

@ -346,23 +346,30 @@ static CFGSTRUCT fceuconfig[] =
AC(taseditor_config.enable_hot_changes),
AC(taseditor_config.greenzone_capacity),
AC(taseditor_config.undo_levels),
AC(taseditor_config.autosave_period),
AC(taseditor_config.jump_to_undo),
AC(taseditor_config.follow_note_context),
AC(taseditor_config.last_export_type),
AC(taseditor_config.last_export_subtitles),
AC(taseditor_config.save_binary),
AC(taseditor_config.save_markers),
AC(taseditor_config.save_bookmarks),
AC(taseditor_config.save_history),
AC(taseditor_config.save_piano_roll),
AC(taseditor_config.save_selection),
AC(taseditor_config.save_greenzone),
AC(taseditor_config.savecompact_binary),
AC(taseditor_config.savecompact_markers),
AC(taseditor_config.savecompact_bookmarks),
AC(taseditor_config.savecompact_greenzone),
AC(taseditor_config.savecompact_history),
AC(taseditor_config.savecompact_piano_roll),
AC(taseditor_config.savecompact_selection),
AC(taseditor_config.savecompact_greenzone),
AC(taseditor_config.findnote_matchcase),
AC(taseditor_config.findnote_search_up),
AC(taseditor_config.draw_input),
AC(taseditor_config.enable_greenzoning),
AC(taseditor_config.compact_quicksaving),
AC(taseditor_config.enable_autosave),
AC(taseditor_config.autosave_period),
AC(taseditor_config.silent_autosave),
AC(taseditor_config.autopause_at_finish),
AC(taseditor_config.tooltips),

View File

@ -747,7 +747,7 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
HDC hdcStatic = (HDC)wParam;
char szMd5Text[35];
GetDlgItemText(hwndDlg, IDC_LABEL_NEWPPUUSED, szMd5Text, 35);
bool want_newppu = (bool)strcmp(szMd5Text, "Off");
bool want_newppu = (strcmp(szMd5Text, "Off") != 0);
extern int newppu;
if ((want_newppu && newppu) || (!want_newppu && !newppu))
SetTextColor(hdcStatic, RGB(0,0,0)); // use black color for a match

View File

@ -277,14 +277,11 @@ BEGIN
END
POPUP "Config", 65535,MFT_STRING,MFS_ENABLED
BEGIN
MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED
MENUITEM "Project file saving options", ID_CONFIG_SAVING_OPTIONS,MFT_STRING,MFS_ENABLED
MENUITEM "Set max Undo levels", ID_CONFIG_SETMAXUNDOLEVELS,MFT_STRING,MFS_ENABLED
MENUITEM "Set Autosave period", ID_CONFIG_SETAUTOSAVEPERIOD,MFT_STRING,MFS_ENABLED
MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED
MENUITEM MFT_SEPARATOR
MENUITEM "Enable Greenzoning", ID_CONFIG_ENABLEGREENZONING,MFT_STRING,MFS_ENABLED
MENUITEM "Silent Autosave", ID_CONFIG_SILENTAUTOSAVE,MFT_STRING,MFS_ENABLED
MENUITEM "Compact Quicksaving", ID_CONFIG_COMPACTQUICKSAVING,MFT_STRING,MFS_ENABLED
MENUITEM MFT_SEPARATOR
MENUITEM "Autofire Pattern skips Lag", ID_CONFIG_PATTERNSKIPSLAG,MFT_STRING,MFS_ENABLED
MENUITEM "Auto-adjust Input according to Lag", ID_CONFIG_ADJUSTLAG,MFT_STRING,MFS_ENABLED
MENUITEM MFT_SEPARATOR
@ -1531,24 +1528,24 @@ BEGIN
CONTROL " Down",IDC_RADIO_DOWN,"Button",BS_AUTORADIOBUTTON,125,30,32,10
END
IDD_TASEDITOR_SAVECOMPACT DIALOGEX 0, 0, 123, 201
IDD_TASEDITOR_SAVECOMPACT DIALOGEX 0, 0, 123, 197
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Save Compact"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Save",IDOK,8,181,50,14
PUSHBUTTON "Cancel",IDCANCEL,66,181,50,14
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,8,87,10
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,23,67,10
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,39,67,10
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,55,67,10
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,71,67,10
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,87,67,10
GROUPBOX "Greenzone saving options",IDC_STATIC,13,102,97,72
CONTROL "all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,34,114,69,10
CONTROL "every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,34,128,69,10
CONTROL "marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,34,143,69,10
CONTROL "don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,34,158,69,10
DEFPUSHBUTTON "Save",IDOK,8,176,50,14
PUSHBUTTON "Cancel",IDCANCEL,66,176,50,14
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,8,89,10
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,23,67,10
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,38,67,10
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,53,67,10
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,67,10
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10
GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,23,109,77,10
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,23,124,77,10
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,23,139,77,10
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,23,154,77,10
END
ASSEMBLER DIALOGEX 0, 0, 202, 135
@ -2065,7 +2062,6 @@ BEGIN
IDD_TASEDITOR_SAVECOMPACT, DIALOG
BEGIN
BOTTOMMARGIN, 192
END
"ASSEMBLER", DIALOG
@ -2132,6 +2128,64 @@ END
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Ðóññêèé (Ðîññèÿ) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Project file saving options"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,109,187,50,14
PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10
GROUPBOX "File contents",IDC_STATIC,105,4,111,177
GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10
CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10
CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10
LTEXT "every",IDC_STATIC,14,32,21,8
EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "minutes",IDC_STATIC,64,32,28,8
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_TASEDITOR_SAVINGOPTIONS, DIALOG
BEGIN
END
END
#endif // APSTUDIO_INVOKED
#endif // Ðóññêèé (Ðîññèÿ) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Àíãëèéñêèé (ÑØÀ) resources

View File

@ -351,6 +351,7 @@
#define IDB_BITMAP_SELECTED17 286
#define IDB_BITMAP_SELECTED18 287
#define IDB_BITMAP_SELECTED19 288
#define IDD_TASEDITOR_SAVINGOPTIONS 289
#define MENU_HIDE_MENU 300
#define COMBO_FILTER 300
#define IDC_EDIT_AUTHORINFO 300
@ -556,6 +557,7 @@
#define IDC_EDIT1 1147
#define IDC_SELECTION_MARKER_EDIT 1147
#define IDC_NOTE_TO_FIND 1147
#define IDC_AUTOSAVE_PERIOD 1147
#define IDC_BUTTON9 1148
#define TASEDITOR_FIND_NEXT_SIMILAR_MARKER 1148
#define IDC_HISTORYLIST 1149
@ -714,6 +716,9 @@
#define IDC_HISTORY_BOX 1279
#define IDC_TASEDITOR_NAME 1280
#define ID_CANCEL 1281
#define IDC_AUTOSAVE_PROJECT 1282
#define IDC_AUTOSAVE_PROJECT2 1283
#define IDC_SILENT_AUTOSAVE 1283
#define MENU_NETWORK 40040
#define MENU_PALETTE 40041
#define MENU_SOUND 40042
@ -1154,6 +1159,7 @@
#define ID_ENABLE_AUTO 40578
#define ID_ENABLE_AUTORESUME 40579
#define ID_CONFIG_COMPACTQUICKSAVING 40580
#define ID_CONFIG_SAVING_OPTIONS 40581
#define IDC_DEBUGGER_ICONTRAY 55535
#define MW_ValueLabel2 65423
#define MW_ValueLabel1 65426
@ -1163,9 +1169,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 289
#define _APS_NEXT_COMMAND_VALUE 40581
#define _APS_NEXT_CONTROL_VALUE 1282
#define _APS_NEXT_RESOURCE_VALUE 290
#define _APS_NEXT_COMMAND_VALUE 40582
#define _APS_NEXT_CONTROL_VALUE 1283
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -451,7 +451,7 @@ bool SaveProjectAs(bool save_compact)
if (save_compact)
project.save(nameo, taseditor_config.savecompact_binary, taseditor_config.savecompact_markers, taseditor_config.savecompact_bookmarks, taseditor_config.savecompact_greenzone, taseditor_config.savecompact_history, taseditor_config.savecompact_piano_roll, taseditor_config.savecompact_selection);
else
project.save();
project.save(nameo, taseditor_config.save_binary, taseditor_config.save_markers, taseditor_config.save_bookmarks, taseditor_config.save_greenzone, taseditor_config.save_history, taseditor_config.save_piano_roll, taseditor_config.save_selection);
taseditor_window.UpdateRecentProjectsArray(nameo);
// saved successfully - remove * mark from caption
taseditor_window.UpdateCaption();
@ -468,21 +468,21 @@ bool SaveProject(bool save_compact)
if (save_compact)
project.save(0, taseditor_config.savecompact_binary, taseditor_config.savecompact_markers, taseditor_config.savecompact_bookmarks, taseditor_config.savecompact_greenzone, taseditor_config.savecompact_history, taseditor_config.savecompact_piano_roll, taseditor_config.savecompact_selection);
else
project.save();
project.save(0, taseditor_config.save_binary, taseditor_config.save_markers, taseditor_config.save_bookmarks, taseditor_config.save_greenzone, taseditor_config.save_history, taseditor_config.save_piano_roll, taseditor_config.save_selection);
taseditor_window.UpdateCaption();
}
return true;
}
// --------------------------------------------------
void SaveCompact_SetDialogItems(HWND hwndDlg)
{
CheckDlgButton(hwndDlg, IDC_CHECK_BINARY, taseditor_config.savecompact_binary?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_MARKERS, taseditor_config.savecompact_markers?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_BOOKMARKS, taseditor_config.savecompact_bookmarks?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditor_config.savecompact_history?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditor_config.savecompact_piano_roll?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditor_config.savecompact_selection?MF_CHECKED : MF_UNCHECKED);
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditor_config.savecompact_greenzone % SAVECOMPACT_GREENZONE_TOTAL));
CheckDlgButton(hwndDlg, IDC_CHECK_BINARY, taseditor_config.savecompact_binary?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_MARKERS, taseditor_config.savecompact_markers?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_BOOKMARKS, taseditor_config.savecompact_bookmarks?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditor_config.savecompact_history?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditor_config.savecompact_piano_roll?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditor_config.savecompact_selection?BST_CHECKED : BST_UNCHECKED);
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditor_config.savecompact_greenzone % SAVE_GREENZONE_TOTAL));
}
void SaveCompact_GetDialogItems(HWND hwndDlg)
{
@ -493,15 +493,14 @@ void SaveCompact_GetDialogItems(HWND hwndDlg)
taseditor_config.savecompact_piano_roll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.savecompact_selection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED);
if (SendDlgItemMessage(hwndDlg, IDC_RADIO1, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.savecompact_greenzone = SAVECOMPACT_GREENZONE_ALL;
taseditor_config.savecompact_greenzone = SAVE_GREENZONE_ALL;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO2, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.savecompact_greenzone = SAVECOMPACT_GREENZONE_16TH;
taseditor_config.savecompact_greenzone = SAVE_GREENZONE_16TH;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO3, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.savecompact_greenzone = SAVECOMPACT_GREENZONE_MARKED;
taseditor_config.savecompact_greenzone = SAVE_GREENZONE_MARKED;
else
taseditor_config.savecompact_greenzone = SAVECOMPACT_GREENZONE_NO;
taseditor_config.savecompact_greenzone = SAVE_GREENZONE_NO;
}
BOOL CALLBACK SaveCompactProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
@ -536,7 +535,6 @@ BOOL CALLBACK SaveCompactProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM
}
return FALSE;
}
void SaveCompact()
{
if (DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_SAVECOMPACT), taseditor_window.hwndTasEditor, SaveCompactProc) > 0)
@ -575,7 +573,7 @@ void SaveCompact()
}
}
}
// --------------------------------------------------
// returns false if user doesn't want to exit
bool AskSaveProject()
{
@ -661,6 +659,71 @@ BOOL CALLBACK AboutProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
return FALSE;
}
BOOL CALLBACK SavingOptionsProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
CheckDlgButton(hwndDlg, IDC_AUTOSAVE_PROJECT, taseditor_config.enable_autosave?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_SILENT_AUTOSAVE, taseditor_config.silent_autosave?BST_CHECKED : BST_UNCHECKED);
char buf[16] = {0};
sprintf(buf, "%u", taseditor_config.autosave_period);
SetDlgItemText(hwndDlg, IDC_AUTOSAVE_PERIOD, buf);
CheckDlgButton(hwndDlg, IDC_CHECK_BINARY, taseditor_config.save_binary?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_MARKERS, taseditor_config.save_markers?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_BOOKMARKS, taseditor_config.save_bookmarks?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditor_config.save_history?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditor_config.save_piano_roll?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditor_config.save_selection?BST_CHECKED : BST_UNCHECKED);
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditor_config.save_greenzone % SAVE_GREENZONE_TOTAL));
return TRUE;
}
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDOK:
{
taseditor_config.enable_autosave = (SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.silent_autosave = (SendDlgItemMessage(hwndDlg, IDC_SILENT_AUTOSAVE, BM_GETCHECK, 0, 0) == BST_CHECKED);
char buf[16] = {0};
GetDlgItemText(hwndDlg, IDC_AUTOSAVE_PERIOD, buf, 16 * sizeof(char));
int new_period = taseditor_config.autosave_period;
sscanf(buf, "%u", &new_period);
if (new_period < AUTOSAVE_PERIOD_MIN)
new_period = AUTOSAVE_PERIOD_MIN;
else if (new_period > AUTOSAVE_PERIOD_MAX)
new_period = AUTOSAVE_PERIOD_MAX;
taseditor_config.autosave_period = new_period;
project.SheduleNextAutosave();
taseditor_config.save_binary = (SendDlgItemMessage(hwndDlg, IDC_CHECK_BINARY, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.save_markers = (SendDlgItemMessage(hwndDlg, IDC_CHECK_MARKERS, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.save_bookmarks = (SendDlgItemMessage(hwndDlg, IDC_CHECK_BOOKMARKS, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.save_history = (SendDlgItemMessage(hwndDlg, IDC_CHECK_HISTORY, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.save_piano_roll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditor_config.save_selection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED);
if (SendDlgItemMessage(hwndDlg, IDC_RADIO1, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.save_greenzone = SAVE_GREENZONE_ALL;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO2, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.save_greenzone = SAVE_GREENZONE_16TH;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO3, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditor_config.save_greenzone = SAVE_GREENZONE_MARKED;
else
taseditor_config.save_greenzone = SAVE_GREENZONE_NO;
EndDialog(hwndDlg, 1);
return TRUE;
}
case IDCANCEL:
EndDialog(hwndDlg, 0);
return TRUE;
}
break;
}
}
return FALSE;
}
BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)

View File

@ -226,7 +226,7 @@ void GREENZONE::UnGreenzoneSelectedFrames()
void GREENZONE::save(EMUFILE *os, int save_type)
{
if (save_type != SAVECOMPACT_GREENZONE_NO)
if (save_type != SAVE_GREENZONE_NO)
{
CollectCurrentState(); // in case the project is being saved before the greenzone.update() was called within current frame
RunGreenzoneCleaning();
@ -246,7 +246,7 @@ void GREENZONE::save(EMUFILE *os, int save_type)
switch (save_type)
{
case SAVECOMPACT_GREENZONE_ALL:
case SAVE_GREENZONE_ALL:
{
// write savestates
for (frame = 0; frame < greenZoneCount; ++frame)
@ -268,7 +268,7 @@ void GREENZONE::save(EMUFILE *os, int save_type)
write32le(-1, os);
break;
}
case SAVECOMPACT_GREENZONE_16TH:
case SAVE_GREENZONE_16TH:
{
// write savestates
for (frame = 0; frame < greenZoneCount; ++frame)
@ -293,7 +293,7 @@ void GREENZONE::save(EMUFILE *os, int save_type)
write32le(-1, os);
break;
}
case SAVECOMPACT_GREENZONE_MARKED:
case SAVE_GREENZONE_MARKED:
{
// write savestates
for (frame = 0; frame < greenZoneCount; ++frame)
@ -318,7 +318,7 @@ void GREENZONE::save(EMUFILE *os, int save_type)
write32le(-1, os);
break;
}
case SAVECOMPACT_GREENZONE_NO:
case SAVE_GREENZONE_NO:
{
// write "GREENZONX" string
os->fwrite(greenzone_skipsave_id, GREENZONE_ID_LEN);

View File

@ -22,7 +22,7 @@ public:
void free();
void update();
void save(EMUFILE *os, int save_type = SAVECOMPACT_GREENZONE_ALL);
void save(EMUFILE *os, int save_type = SAVE_GREENZONE_ALL);
bool load(EMUFILE *is, unsigned int offset);
bool LoadSavestate(unsigned int frame);

View File

@ -54,22 +54,29 @@ TASEDITOR_CONFIG::TASEDITOR_CONFIG()
adjust_input_due_to_lag = true;
greenzone_capacity = GREENZONE_CAPACITY_DEFAULT;
undo_levels = UNDO_LEVELS_DEFAULT;
autosave_period = AUTOSAVE_PERIOD_DEFAULT;
last_export_type = 0; // INPUT_TYPE_1P
last_export_subtitles = false;
save_binary = true;
save_markers = true;
save_bookmarks = true;
save_history = true;
save_piano_roll = true;
save_selection = true;
save_greenzone = SAVE_GREENZONE_ALL;
savecompact_binary = true;
savecompact_markers = true;
savecompact_bookmarks = true;
savecompact_history = false;
savecompact_piano_roll = true;
savecompact_selection = false;
savecompact_greenzone = SAVECOMPACT_GREENZONE_NO;
savecompact_greenzone = SAVE_GREENZONE_NO;
findnote_matchcase = false;
findnote_search_up = false;
enable_auto_function = true;
draw_input = true;
enable_greenzoning = true;
compact_quicksaving = false;
enable_autosave = true;
autosave_period = AUTOSAVE_PERIOD_DEFAULT;
silent_autosave = true;
autopause_at_finish = true;
tooltips = true;

View File

@ -14,13 +14,13 @@
enum
{
SAVECOMPACT_GREENZONE_ALL,
SAVECOMPACT_GREENZONE_16TH,
SAVECOMPACT_GREENZONE_MARKED,
SAVECOMPACT_GREENZONE_NO,
SAVE_GREENZONE_ALL,
SAVE_GREENZONE_16TH,
SAVE_GREENZONE_MARKED,
SAVE_GREENZONE_NO,
// ...
SAVECOMPACT_GREENZONE_TOTAL
SAVE_GREENZONE_TOTAL
};
#define AUTHOR_MAX_LEN 100
@ -63,9 +63,15 @@ public:
bool adjust_input_due_to_lag;
int greenzone_capacity;
int undo_levels;
int autosave_period;
int last_export_type;
bool last_export_subtitles;
bool save_binary;
bool save_markers;
bool save_bookmarks;
bool save_history;
bool save_piano_roll;
bool save_selection;
int save_greenzone;
bool savecompact_binary;
bool savecompact_markers;
bool savecompact_bookmarks;
@ -78,7 +84,8 @@ public:
bool enable_auto_function;
bool draw_input;
bool enable_greenzoning;
bool compact_quicksaving;
bool enable_autosave;
int autosave_period;
bool silent_autosave;
bool autopause_at_finish;
bool tooltips;

View File

@ -60,12 +60,12 @@ void TASEDITOR_PROJECT::reset()
void TASEDITOR_PROJECT::update()
{
// if it's time to autosave - pop Save As dialog
if (changed && taseditor_window.TASEditor_focus && taseditor_config.autosave_period && !projectFile.empty() && clock() >= next_save_shedule && piano_roll.drag_mode == DRAG_MODE_NONE)
if (changed && taseditor_window.TASEditor_focus && taseditor_config.enable_autosave && !projectFile.empty() && clock() >= next_save_shedule && piano_roll.drag_mode == DRAG_MODE_NONE)
{
if (taseditor_config.silent_autosave)
SaveProject(taseditor_config.compact_quicksaving);
SaveProject();
else
SaveProjectAs(taseditor_config.compact_quicksaving);
SaveProjectAs();
// in case user pressed Cancel, postpone saving to next time
SheduleNextAutosave();
}
@ -134,7 +134,7 @@ bool TASEDITOR_PROJECT::save(const char* different_name, bool save_binary, bool
unsigned int saved_stuff_map = 0;
if (save_markers) saved_stuff_map |= MARKERS_SAVED;
if (save_bookmarks) saved_stuff_map |= BOOKMARKS_SAVED;
if (save_greenzone != SAVECOMPACT_GREENZONE_NO) saved_stuff_map |= GREENZONE_SAVED;
if (save_greenzone != SAVE_GREENZONE_NO) saved_stuff_map |= GREENZONE_SAVED;
if (save_history) saved_stuff_map |= HISTORY_SAVED;
if (save_piano_roll) saved_stuff_map |= PIANO_ROLL_SAVED;
if (save_selection) saved_stuff_map |= SELECTION_SAVED;
@ -385,7 +385,6 @@ bool TASEDITOR_PROJECT::GetProjectChanged()
void TASEDITOR_PROJECT::SheduleNextAutosave()
{
if (taseditor_config.autosave_period)
next_save_shedule = clock() + taseditor_config.autosave_period * AUTOSAVE_PERIOD_SCALE;
next_save_shedule = clock() + taseditor_config.autosave_period * AUTOSAVE_PERIOD_SCALE;
}

View File

@ -51,7 +51,7 @@ public:
void reset();
void update();
bool save(const char* different_name = 0, bool save_binary = true, bool save_markers = true, bool save_bookmarks = true, int save_greenzone = SAVECOMPACT_GREENZONE_ALL, bool save_history = true, bool save_piano_roll = true, bool save_selection = true);
bool save(const char* different_name = 0, bool save_binary = true, bool save_markers = true, bool save_bookmarks = true, int save_greenzone = SAVE_GREENZONE_ALL, bool save_history = true, bool save_piano_roll = true, bool save_selection = true);
bool load(const char* fullname);
void RenameProject(const char* new_fullname, bool filename_is_correct);

View File

@ -55,6 +55,7 @@ extern char* GetKeyComboName(int c);
extern BOOL CALLBACK FindNoteProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
extern BOOL CALLBACK AboutProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
extern BOOL CALLBACK SavingOptionsProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);
// main window wndproc
BOOL CALLBACK WndprocTasEditor(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
@ -122,7 +123,6 @@ const unsigned int MAX_NUMBER_OF_RECENT_PROJECTS = sizeof(recent_projects)/sizeo
// Patterns Menu
const unsigned int MENU_FIRST_PATTERN = MENU_FIRST_RECENT_PROJECT + MAX_NUMBER_OF_RECENT_PROJECTS;
char temp_buf1[1024] = {0}, temp_buf2[1024] = {0};
// resources
char windowCaptioBase[] = "TAS Editor";
char patterns_menu_prefix[] = "Pattern: ";
@ -200,7 +200,6 @@ void TASEDITOR_WINDOW::init()
// menus and checked items
hmenu = GetMenu(hwndTasEditor);
UpdateCheckedItems();
UpdateMenuCaptions();
patterns_menu = GetSubMenu(hmenu, PATTERNS_MENU_POS);
// tooltips
for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i)
@ -567,8 +566,6 @@ void TASEDITOR_WINDOW::UpdateCheckedItems()
CheckMenuItem(hmenu, ID_VIEW_JUMPWHENMAKINGUNDO, taseditor_config.jump_to_undo?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_VIEW_FOLLOWMARKERNOTECONTEXT, taseditor_config.follow_note_context?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_ENABLEGREENZONING, taseditor_config.enable_greenzoning?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_COMPACTQUICKSAVING, taseditor_config.compact_quicksaving?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_SILENTAUTOSAVE, taseditor_config.silent_autosave?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_PATTERNSKIPSLAG, taseditor_config.pattern_skips_lag?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_ADJUSTLAG, taseditor_config.adjust_input_due_to_lag?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_DRAWINPUTBYDRAGGING, taseditor_config.draw_input?MF_CHECKED : MF_UNCHECKED);
@ -583,32 +580,6 @@ void TASEDITOR_WINDOW::UpdateCheckedItems()
CheckMenuItem(hmenu, ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE, taseditor_config.autopause_at_finish?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_HELP_TOOLTIPS, taseditor_config.tooltips?MF_CHECKED : MF_UNCHECKED);
}
void TASEDITOR_WINDOW::UpdateMenuCaptions()
{
// change "Save" and "Save Compact" keyboard shortcut hints
if (taseditor_config.compact_quicksaving)
{
strcpy(temp_buf1, "Save");
strcpy(temp_buf2, "Save Compact\t~[Ctrl+S]");
} else
{
strcpy(temp_buf1, "Save\tCtrl+S");
strcpy(temp_buf2, "Save Compact");
}
MENUITEMINFO moo;
moo.cbSize = sizeof(moo);
moo.fMask = MIIM_TYPE;
moo.cch = NULL;
GetMenuItemInfo(hmenu, ID_FILE_SAVEPROJECT, FALSE, &moo);
moo.dwTypeData = (LPSTR)temp_buf1;
SetMenuItemInfo(hmenu, ID_FILE_SAVEPROJECT, FALSE, &moo);
moo.cbSize = sizeof(moo);
moo.fMask = MIIM_TYPE;
moo.cch = NULL;
GetMenuItemInfo(hmenu, ID_FILE_SAVECOMPACT, FALSE, &moo);
moo.dwTypeData = (LPSTR)temp_buf2;
SetMenuItemInfo(hmenu, ID_FILE_SAVECOMPACT, FALSE, &moo);
}
// --------------------------------------------------------------------------------------------
void TASEDITOR_WINDOW::UpdateRecentProjectsMenu()
@ -922,7 +893,7 @@ BOOL CALLBACK WndprocTasEditor(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
OpenProject();
break;
case ACCEL_CTRL_S:
SaveProject(taseditor_config.compact_quicksaving);
SaveProject();
break;
case ID_FILE_SAVEPROJECT:
SaveProject();
@ -1071,33 +1042,15 @@ BOOL CALLBACK WndprocTasEditor(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
}
break;
}
case ID_CONFIG_SETAUTOSAVEPERIOD:
case ID_CONFIG_SAVING_OPTIONS:
{
int new_period = taseditor_config.autosave_period;
if (CWin32InputBox::GetInteger("Autosave period", "How many minutes may the project stay not saved after being changed?\n(0 = no autosaves)", new_period, hWnd) == IDOK)
{
if (new_period < AUTOSAVE_PERIOD_MIN)
new_period = AUTOSAVE_PERIOD_MIN;
else if (new_period > AUTOSAVE_PERIOD_MAX)
new_period = AUTOSAVE_PERIOD_MAX;
taseditor_config.autosave_period = new_period;
project.SheduleNextAutosave();
}
DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_SAVINGOPTIONS), taseditor_window.hwndTasEditor, SavingOptionsProc);
break;
}
case ID_CONFIG_ENABLEGREENZONING:
taseditor_config.enable_greenzoning ^= 1;
taseditor_window.UpdateCheckedItems();
break;
case ID_CONFIG_COMPACTQUICKSAVING:
taseditor_config.compact_quicksaving ^= 1;
taseditor_window.UpdateCheckedItems();
taseditor_window.UpdateMenuCaptions();
break;
case ID_CONFIG_SILENTAUTOSAVE:
taseditor_config.silent_autosave ^= 1;
taseditor_window.UpdateCheckedItems();
break;
case ID_CONFIG_BRANCHESRESTOREFULLMOVIE:
taseditor_config.branch_full_movie ^= 1;
taseditor_window.UpdateCheckedItems();

View File

@ -41,7 +41,6 @@ public:
void RedrawTaseditor();
void UpdateCheckedItems();
void UpdateMenuCaptions();
void UpdateRecentProjectsMenu();
void UpdateRecentProjectsArray(const char* addString);