* Tasedit: Export dialog: "Convert Marker Notes to Movie Subtitles"

* Tasedit: Recording checkbox instead of radiobutton
* Tasedit: Config->Use Input keys for ColumnSet
* Tasedit: disabled Visual Themes for listview header, listview header lights
* Tasedit: Config->Empty new Marker Notes
* Tasedit: icon
This commit is contained in:
ansstuff 2011-12-19 18:47:43 +00:00
parent 703ab3d752
commit 306b8a5278
16 changed files with 337 additions and 114 deletions

View File

@ -76,10 +76,12 @@ extern bool TASEdit_show_markers;
extern bool TASEdit_show_branch_screenshots; extern bool TASEdit_show_branch_screenshots;
extern bool TASEdit_show_branch_tooltips; extern bool TASEdit_show_branch_tooltips;
extern bool TASEdit_bind_markers; extern bool TASEdit_bind_markers;
extern bool TASEdit_use_1p_rec; extern bool TASEdit_empty_marker_notes;
extern bool TASEdit_combine_consecutive_rec; extern bool TASEdit_combine_consecutive_rec;
extern bool TASEdit_superimpose_affects_paste; extern bool TASEdit_use_1p_rec;
extern bool TASEdit_columnset_by_keys;
extern bool TASEdit_keyboard_for_listview; extern bool TASEdit_keyboard_for_listview;
extern bool TASEdit_superimpose_affects_paste;
extern bool TASEdit_branch_full_movie; extern bool TASEdit_branch_full_movie;
extern bool TASEdit_branch_only_when_rec; extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_view_branches_tree; extern bool TASEdit_view_branches_tree;
@ -93,6 +95,7 @@ extern int TASEdit_autosave_period;
extern bool TASEdit_jump_to_undo; extern bool TASEdit_jump_to_undo;
extern bool TASEdit_follow_note_context; extern bool TASEdit_follow_note_context;
extern int TASEdit_last_export_type; extern int TASEdit_last_export_type;
extern bool TASEdit_last_export_subtitles;
extern bool TASEdit_savecompact_binary; extern bool TASEdit_savecompact_binary;
extern bool TASEdit_savecompact_markers; extern bool TASEdit_savecompact_markers;
extern bool TASEdit_savecompact_bookmarks; extern bool TASEdit_savecompact_bookmarks;
@ -336,10 +339,12 @@ static CFGSTRUCT fceuconfig[] = {
AC(TASEdit_show_branch_screenshots), AC(TASEdit_show_branch_screenshots),
AC(TASEdit_show_branch_tooltips), AC(TASEdit_show_branch_tooltips),
AC(TASEdit_bind_markers), AC(TASEdit_bind_markers),
AC(TASEdit_use_1p_rec), AC(TASEdit_empty_marker_notes),
AC(TASEdit_combine_consecutive_rec), AC(TASEdit_combine_consecutive_rec),
AC(TASEdit_superimpose_affects_paste), AC(TASEdit_use_1p_rec),
AC(TASEdit_columnset_by_keys),
AC(TASEdit_keyboard_for_listview), AC(TASEdit_keyboard_for_listview),
AC(TASEdit_superimpose_affects_paste),
AC(TASEdit_branch_full_movie), AC(TASEdit_branch_full_movie),
AC(TASEdit_branch_only_when_rec), AC(TASEdit_branch_only_when_rec),
AC(TASEdit_view_branches_tree), AC(TASEdit_view_branches_tree),
@ -353,6 +358,7 @@ static CFGSTRUCT fceuconfig[] = {
AC(TASEdit_jump_to_undo), AC(TASEdit_jump_to_undo),
AC(TASEdit_follow_note_context), AC(TASEdit_follow_note_context),
AC(TASEdit_last_export_type), AC(TASEdit_last_export_type),
AC(TASEdit_last_export_subtitles),
AC(TASEdit_savecompact_binary), AC(TASEdit_savecompact_binary),
AC(TASEdit_savecompact_markers), AC(TASEdit_savecompact_markers),
AC(TASEdit_savecompact_bookmarks), AC(TASEdit_savecompact_bookmarks),

View File

@ -25,6 +25,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_ICON3 ICON "res\\tasedit-icon.ico"
ICON_1 ICON "res/ICON_1.ico" ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico" ICON_2 ICON "res/ICON_2.ico"
@ -276,11 +277,14 @@ BEGIN
MENUITEM "&HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS MENUITEM "&HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT MENUITEM "&Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT
MENUITEM "&Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Combine consecutive Recordings", ID_CONFIG_COMBINECONSECUTIVERECORDINGS MENUITEM "&Combine consecutive Recordings", ID_CONFIG_COMBINECONSECUTIVERECORDINGS
MENUITEM "&Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING MENUITEM "&Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING
MENUITEM "&Superimpose affects copy/paste", ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE MENUITEM "Use &Input keys for ColumnSet", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET
MENUITEM SEPARATOR
MENUITEM "Allow &keyboard controls in Listview", ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW MENUITEM "Allow &keyboard controls in Listview", ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW
MENUITEM "&Superimpose affects copy/paste", ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Mute &Turbo", ID_CONFIG_MUTETURBO MENUITEM "Mute &Turbo", ID_CONFIG_MUTETURBO
END END
@ -1394,13 +1398,12 @@ BEGIN
GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,310,150,123,103,BS_CENTER,WS_EX_RIGHT GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,310,150,123,103,BS_CENTER,WS_EX_RIGHT
CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,315,160,113,89 CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,315,160,113,89
CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,315,265,113,102 CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,315,265,113,102
CONTROL " OFF",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,316,74,27,10 CONTROL " All",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,86,27,10
CONTROL " ON",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,87,27,10 CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,372,86,25,10
CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,373,74,25,10 CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,86,24,10
CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,74,23,10 CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,372,98,25,10
CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,373,87,25,10 CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,98,24,10
CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,87,23,10 CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,372,74,55,10
CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,316,100,56,10
GROUPBOX " History ",IDC_STATIC,310,255,123,116,BS_CENTER,WS_EX_RIGHT GROUPBOX " History ",IDC_STATIC,310,255,123,116,BS_CENTER,WS_EX_RIGHT
EDITTEXT IDC_SELECTION_MARKER_EDIT,65,377,240,13,ES_READONLY | NOT WS_TABSTOP EDITTEXT IDC_SELECTION_MARKER_EDIT,65,377,240,13,ES_READONLY | NOT WS_TABSTOP
PUSHBUTTON "<<",TASEDIT_PREV_MARKER,315,376,23,14,NOT WS_TABSTOP PUSHBUTTON "<<",TASEDIT_PREV_MARKER,315,376,23,14,NOT WS_TABSTOP
@ -1415,18 +1418,21 @@ BEGIN
CONTROL "",IDC_TEXT_SELECTION_BUTTON,"Button",BS_OWNERDRAW,315,121,113,12 CONTROL "",IDC_TEXT_SELECTION_BUTTON,"Button",BS_OWNERDRAW,315,121,113,12
LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,316,123,114,10 LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,316,123,114,10
LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,316,134,114,10 LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,316,134,114,10
CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,316,74,49,10
END END
IDD_TASEDIT_EXPORT DIALOGEX 0, 0, 122, 73 IDD_TASEDIT_EXPORT DIALOGEX 0, 0, 158, 86
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Export to FM2" CAPTION "Export to FM2"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Export",IDOK,7,52,50,14 DEFPUSHBUTTON "Export",IDOK,7,66,50,14
PUSHBUTTON "Cancel",IDCANCEL,65,52,50,14 PUSHBUTTON "Cancel",IDCANCEL,100,66,50,14
CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,36,8,49,10 CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,8,8,47,10
CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,36,21,49,10 CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,8,21,47,10
CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,36,35,47,10 CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,8,35,47,10
CONTROL " Convert Marker Notes to Movie Subtitles",IDC_NOTES_TO_SUBTITLES,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,50,141,10
END END
IDD_TASEDIT_SAVECOMPACT DIALOGEX 0, 0, 122, 134 IDD_TASEDIT_SAVECOMPACT DIALOGEX 0, 0, 122, 134
@ -1885,6 +1891,10 @@ BEGIN
BOTTOMMARGIN, 121 BOTTOMMARGIN, 121
END END
"ROMPATCHER", DIALOG
BEGIN
END
"GGCONV", DIALOG "GGCONV", DIALOG
BEGIN BEGIN
END END
@ -1917,6 +1927,7 @@ BEGIN
"TASEDIT", DIALOG "TASEDIT", DIALOG
BEGIN BEGIN
RIGHTMARGIN, 433
END END
IDD_TASEDIT_EXPORT, DIALOG IDD_TASEDIT_EXPORT, DIALOG

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -183,6 +183,7 @@
#define IDD_TASEDIT_EXPORT 185 #define IDD_TASEDIT_EXPORT 185
#define IDD_TASEDIT_SAVECOMPACT 186 #define IDD_TASEDIT_SAVECOMPACT 186
#define IDD_TASEDIT_BRANCH_NOTE 188 #define IDD_TASEDIT_BRANCH_NOTE 188
#define IDI_ICON3 197
#define MENU_RESET 200 #define MENU_RESET 200
#define BUTTON_ROMS 200 #define BUTTON_ROMS 200
#define TXT_PAD1 200 #define TXT_PAD1 200
@ -469,10 +470,12 @@
#define IDC_FULLSAVESTATES 1203 #define IDC_FULLSAVESTATES 1203
#define IDC_SUPERIMPOSE 1203 #define IDC_SUPERIMPOSE 1203
#define IDC_CHECK_BINARY 1203 #define IDC_CHECK_BINARY 1203
#define IDC_NOTES_TO_SUBTITLES 1203
#define IDC_VOLUMEGROUP 1204 #define IDC_VOLUMEGROUP 1204
#define IDC_OMITBLANK 1204 #define IDC_OMITBLANK 1204
#define IDC_CHECK3 1204 #define IDC_CHECK3 1204
#define IDC_CHECK_MARKERS 1204 #define IDC_CHECK_MARKERS 1204
#define IDC_RECORDING 1204
#define IDC_RAMLIST 1205 #define IDC_RAMLIST 1205
#define IDC_CHECK4 1205 #define IDC_CHECK4 1205
#define IDC_CHECK_BOOKMARKS 1205 #define IDC_CHECK_BOOKMARKS 1205
@ -948,6 +951,8 @@
#define ID_ACCELERATOR40506 40506 #define ID_ACCELERATOR40506 40506
#define ID_VIEW_FOLLOWMARKERNOTECONTEXT 40507 #define ID_VIEW_FOLLOWMARKERNOTECONTEXT 40507
#define ID_VIEW_SHOWBRANCHTOOLTIPS 40508 #define ID_VIEW_SHOWBRANCHTOOLTIPS 40508
#define ID_CONFIG_USEINPUTKEYSFORCOLUMNSET 40509
#define ID_CONFIG_EMPTYNEWMARKERNOTES 40510
#define IDC_DEBUGGER_ICONTRAY 55535 #define IDC_DEBUGGER_ICONTRAY 55535
#define MW_ValueLabel2 65423 #define MW_ValueLabel2 65423
#define MW_ValueLabel1 65426 #define MW_ValueLabel1 65426
@ -956,8 +961,8 @@
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 189 #define _APS_NEXT_RESOURCE_VALUE 198
#define _APS_NEXT_COMMAND_VALUE 40509 #define _APS_NEXT_COMMAND_VALUE 40511
#define _APS_NEXT_CONTROL_VALUE 1273 #define _APS_NEXT_CONTROL_VALUE 1273
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif

View File

@ -49,10 +49,12 @@ bool TASEdit_show_markers = true;
bool TASEdit_show_branch_screenshots = true; bool TASEdit_show_branch_screenshots = true;
bool TASEdit_show_branch_tooltips = true; bool TASEdit_show_branch_tooltips = true;
bool TASEdit_bind_markers = true; bool TASEdit_bind_markers = true;
bool TASEdit_use_1p_rec = true; bool TASEdit_empty_marker_notes = true;
bool TASEdit_combine_consecutive_rec = true; bool TASEdit_combine_consecutive_rec = true;
bool TASEdit_superimpose_affects_paste = true; bool TASEdit_use_1p_rec = true;
bool TASEdit_columnset_by_keys = true;
bool TASEdit_keyboard_for_listview = true; bool TASEdit_keyboard_for_listview = true;
bool TASEdit_superimpose_affects_paste = true;
int TASEdit_superimpose = BST_UNCHECKED; int TASEdit_superimpose = BST_UNCHECKED;
bool TASEdit_branch_full_movie = true; bool TASEdit_branch_full_movie = true;
bool TASEdit_branch_only_when_rec = false; bool TASEdit_branch_only_when_rec = false;
@ -67,6 +69,7 @@ bool TASEdit_enable_hot_changes = true;
bool TASEdit_jump_to_undo = true; bool TASEdit_jump_to_undo = true;
bool TASEdit_follow_note_context = true; bool TASEdit_follow_note_context = true;
int TASEdit_last_export_type = EXPORT_TYPE_1P; int TASEdit_last_export_type = EXPORT_TYPE_1P;
bool TASEdit_last_export_subtitles = false;
bool TASEdit_savecompact_binary = true; bool TASEdit_savecompact_binary = true;
bool TASEdit_savecompact_markers = true; bool TASEdit_savecompact_markers = true;
bool TASEdit_savecompact_bookmarks = true; bool TASEdit_savecompact_bookmarks = true;
@ -86,17 +89,18 @@ string tasedithelp = "{16CDE0C4-02B0-4A60-A88D-076319909A4D}"; //Name of TAS Edi
char buttonNames[NUM_JOYPAD_BUTTONS][2] = {"A", "B", "S", "T", "U", "D", "L", "R"}; char buttonNames[NUM_JOYPAD_BUTTONS][2] = {"A", "B", "S", "T", "U", "D", "L", "R"};
char windowCaptioBase[] = "TAS Editor"; char windowCaptioBase[] = "TAS Editor";
extern char recordingCaptions[5][30]; extern char recordingCaptions[5][30];
HICON hTaseditorIcon = 0;
// enterframe function // enterframe function
void UpdateTasEdit() void UpdateTasEdit()
{ {
if(!hwndTasEdit) return; if(!hwndTasEdit) return;
recorder.update();
tasedit_list.update(); tasedit_list.update();
current_markers.update(); current_markers.update();
greenzone.update(); greenzone.update();
playback.update(); playback.update();
recorder.update();
bookmarks.update(); bookmarks.update();
screenshot_display.update(); screenshot_display.update();
selection.update(); selection.update();
@ -226,7 +230,6 @@ void SingleClick(LPNMITEMACTIVATE info)
history.RegisterMarkersChange(MODTYPE_MARKER_SET, row_index); history.RegisterMarkersChange(MODTYPE_MARKER_SET, row_index);
else else
history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, row_index); history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, row_index);
project.SetProjectChanged();
tasedit_list.RedrawRow(row_index); tasedit_list.RedrawRow(row_index);
} }
} }
@ -487,8 +490,8 @@ void FrameColumnSet()
} }
if (changes_made) if (changes_made)
{ {
project.SetProjectChanged();
selection.must_find_current_marker = playback.must_find_current_marker = true; selection.must_find_current_marker = playback.must_find_current_marker = true;
tasedit_list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
} }
} }
void InputColumnSet(int column) void InputColumnSet(int column)
@ -522,9 +525,9 @@ void InputColumnSet(int column)
{ {
greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin())); greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin()));
} }
tasedit_list.SetHeaderColumnLight(column, HEADER_LIGHT_MAX);
} }
bool Copy(SelectionFrames* current_selection) bool Copy(SelectionFrames* current_selection)
{ {
if (!current_selection) if (!current_selection)
@ -1087,6 +1090,7 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara
break; break;
} }
} }
CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, TASEdit_last_export_subtitles?MF_CHECKED : MF_UNCHECKED);
return TRUE; return TRUE;
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wParam)) switch (LOWORD(wParam))
@ -1100,6 +1104,10 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara
case IDC_RADIO_FOURSCORE: case IDC_RADIO_FOURSCORE:
TASEdit_last_export_type = EXPORT_TYPE_FOURSCORE; TASEdit_last_export_type = EXPORT_TYPE_FOURSCORE;
break; break;
case IDC_NOTES_TO_SUBTITLES:
TASEdit_last_export_subtitles ^= 1;
CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, TASEdit_last_export_subtitles?MF_CHECKED : MF_UNCHECKED);
break;
case IDOK: case IDOK:
EndDialog(hwndDlg, 1); EndDialog(hwndDlg, 1);
return TRUE; return TRUE;
@ -1161,6 +1169,25 @@ void Export()
} }
} }
temp_md.loadFrameCount = -1; temp_md.loadFrameCount = -1;
if (TASEdit_last_export_subtitles)
{
// convert Marker Notes to Movie Subtitles
char framenum[11];
std::string subtitle;
int marker_id;
for (int i = 0; i < current_markers.GetMarkersSize(); ++i)
{
marker_id = current_markers.GetMarker(i);
if (marker_id)
{
_itoa(i, framenum, 10);
strcat(framenum, " ");
subtitle = framenum;
subtitle.append(current_markers.GetNote(marker_id));
temp_md.subtitles.push_back(subtitle);
}
}
}
// dump to disk // dump to disk
temp_md.dump(osRecordingMovie, false); temp_md.dump(osRecordingMovie, false);
delete osRecordingMovie; delete osRecordingMovie;
@ -1176,10 +1203,13 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
case WM_PAINT: case WM_PAINT:
break; break;
case WM_INITDIALOG: case WM_INITDIALOG:
{
if (TasEdit_wndx==-32000) TasEdit_wndx=0; //Just in case if (TasEdit_wndx==-32000) TasEdit_wndx=0; //Just in case
if (TasEdit_wndy==-32000) TasEdit_wndy=0; if (TasEdit_wndy==-32000) TasEdit_wndy=0;
SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)hTaseditorIcon);
SetWindowPos(hwndDlg, 0, TasEdit_wndx, TasEdit_wndy, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); SetWindowPos(hwndDlg, 0, TasEdit_wndx, TasEdit_wndy, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
break; break;
}
case WM_MOVE: case WM_MOVE:
{ {
if (!IsIconic(hwndDlg)) if (!IsIconic(hwndDlg))
@ -1614,28 +1644,35 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
CheckMenuItem(hmenu, ID_CONFIG_HUDINBRANCHSCREENSHOTS, TASEdit_branch_scr_hud?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_HUDINBRANCHSCREENSHOTS, TASEdit_branch_scr_hud?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_BINDMARKERSTOINPUT: case ID_CONFIG_BINDMARKERSTOINPUT:
//switch "Bind Markers to Input" flag
TASEdit_bind_markers ^= 1; TASEdit_bind_markers ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_BINDMARKERSTOINPUT, TASEdit_bind_markers?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_BINDMARKERSTOINPUT, TASEdit_bind_markers?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_USE1PFORRECORDING: case ID_CONFIG_EMPTYNEWMARKERNOTES:
//switch "Use 1P keys for single Recordings" flag TASEdit_empty_marker_notes ^= 1;
TASEdit_use_1p_rec ^= 1; CheckMenuItem(hmenu, ID_CONFIG_EMPTYNEWMARKERNOTES, TASEdit_empty_marker_notes?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_USE1PFORRECORDING, TASEdit_use_1p_rec?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_COMBINECONSECUTIVERECORDINGS: case ID_CONFIG_COMBINECONSECUTIVERECORDINGS:
//switch "Combine consecutive Recordings" flag //switch "Combine consecutive Recordings" flag
TASEdit_combine_consecutive_rec ^= 1; TASEdit_combine_consecutive_rec ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_COMBINECONSECUTIVERECORDINGS, TASEdit_combine_consecutive_rec?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_COMBINECONSECUTIVERECORDINGS, TASEdit_combine_consecutive_rec?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE: case ID_CONFIG_USE1PFORRECORDING:
TASEdit_superimpose_affects_paste ^= 1; //switch "Use 1P keys for single Recordings" flag
CheckMenuItem(hmenu, ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE, TASEdit_superimpose_affects_paste?MF_CHECKED : MF_UNCHECKED); TASEdit_use_1p_rec ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_USE1PFORRECORDING, TASEdit_use_1p_rec?MF_CHECKED : MF_UNCHECKED);
break;
case ID_CONFIG_USEINPUTKEYSFORCOLUMNSET:
TASEdit_columnset_by_keys ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_USEINPUTKEYSFORCOLUMNSET, TASEdit_columnset_by_keys?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW: case ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW:
TASEdit_keyboard_for_listview ^= 1; TASEdit_keyboard_for_listview ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW, TASEdit_keyboard_for_listview?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW, TASEdit_keyboard_for_listview?MF_CHECKED : MF_UNCHECKED);
break; break;
case ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE:
TASEdit_superimpose_affects_paste ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE, TASEdit_superimpose_affects_paste?MF_CHECKED : MF_UNCHECKED);
break;
case ID_CONFIG_MUTETURBO: case ID_CONFIG_MUTETURBO:
muteTurbo ^= 1; muteTurbo ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_MUTETURBO, muteTurbo?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_MUTETURBO, muteTurbo?MF_CHECKED : MF_UNCHECKED);
@ -1649,33 +1686,24 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
TASEdit_view_branches_tree ^= 1; TASEdit_view_branches_tree ^= 1;
bookmarks.RedrawBookmarksCaption(); bookmarks.RedrawBookmarksCaption();
break; break;
case IDC_RADIO1: case IDC_RECORDING:
// switch to readonly, no need to recheck radiobuttons // toggle readonly, no need to recheck radiobuttons
if (!movie_readonly) FCEUI_MovieToggleReadOnly(); FCEUI_MovieToggleReadOnly();
CheckDlgButton(hwndTasEdit, IDC_RECORDING, movie_readonly?BST_UNCHECKED : BST_CHECKED);
break; break;
case IDC_RADIO2: case IDC_RADIO2:
// switch to read+write for all, no need to recheck radiobuttons
if (movie_readonly) FCEUI_MovieToggleReadOnly();
recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_ALL; recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_ALL;
break; break;
case IDC_RADIO3: case IDC_RADIO3:
// switch to read+write for 1P, no need to recheck radiobuttons
if (movie_readonly) FCEUI_MovieToggleReadOnly();
recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_1P; recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_1P;
break; break;
case IDC_RADIO4: case IDC_RADIO4:
// switch to read+write for 2P, no need to recheck radiobuttons
if (movie_readonly) FCEUI_MovieToggleReadOnly();
recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_2P; recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_2P;
break; break;
case IDC_RADIO5: case IDC_RADIO5:
// switch to read+write for 3P, no need to recheck radiobuttons
if (movie_readonly) FCEUI_MovieToggleReadOnly();
recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_3P; recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_3P;
break; break;
case IDC_RADIO6: case IDC_RADIO6:
// switch to read+write for 4P, no need to recheck radiobuttons
if (movie_readonly) FCEUI_MovieToggleReadOnly();
recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_4P; recorder.multitrack_recording_joypad = MULTITRACK_RECORDING_4P;
break; break;
case IDC_SUPERIMPOSE: case IDC_SUPERIMPOSE:
@ -1784,7 +1812,6 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{ {
selection.must_find_current_marker = playback.must_find_current_marker = true; selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterMarkersChange(MODTYPE_MARKER_SET, *current_selection_begin, *current_selection->rbegin()); history.RegisterMarkersChange(MODTYPE_MARKER_SET, *current_selection_begin, *current_selection->rbegin());
project.SetProjectChanged();
} }
} }
break; break;
@ -1810,7 +1837,6 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{ {
selection.must_find_current_marker = playback.must_find_current_marker = true; selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, *current_selection_begin, *current_selection->rbegin()); history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, *current_selection_begin, *current_selection->rbegin());
project.SetProjectChanged();
} }
} }
break; break;
@ -1851,6 +1877,7 @@ bool EnterTasEdit()
if(!FCEU_IsValidUI(FCEUI_TASEDIT)) return false; if(!FCEU_IsValidUI(FCEUI_TASEDIT)) return false;
if(!hwndTasEdit) if(!hwndTasEdit)
{ {
hTaseditorIcon = (HICON)LoadImage(fceu_hInstance, MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE);
hwndTasEdit = CreateDialog(fceu_hInstance,"TASEDIT", hAppWnd, WndprocTasEdit); hwndTasEdit = CreateDialog(fceu_hInstance,"TASEDIT", hAppWnd, WndprocTasEdit);
if(hwndTasEdit) if(hwndTasEdit)
{ {
@ -1887,10 +1914,12 @@ bool EnterTasEdit()
CheckMenuItem(hmenu, ID_CONFIG_BRANCHESWORKONLYWHENRECORDING, TASEdit_branch_only_when_rec?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_BRANCHESWORKONLYWHENRECORDING, TASEdit_branch_only_when_rec?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_HUDINBRANCHSCREENSHOTS, TASEdit_branch_scr_hud?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_HUDINBRANCHSCREENSHOTS, TASEdit_branch_scr_hud?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_BINDMARKERSTOINPUT, TASEdit_bind_markers?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_BINDMARKERSTOINPUT, TASEdit_bind_markers?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_USE1PFORRECORDING, TASEdit_use_1p_rec?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_EMPTYNEWMARKERNOTES, TASEdit_empty_marker_notes?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_COMBINECONSECUTIVERECORDINGS, TASEdit_combine_consecutive_rec?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_COMBINECONSECUTIVERECORDINGS, TASEdit_combine_consecutive_rec?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE, TASEdit_superimpose_affects_paste?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_USE1PFORRECORDING, TASEdit_use_1p_rec?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_USEINPUTKEYSFORCOLUMNSET, TASEdit_columnset_by_keys?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW, TASEdit_keyboard_for_listview?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW, TASEdit_keyboard_for_listview?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE, TASEdit_superimpose_affects_paste?MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hmenu, ID_CONFIG_MUTETURBO, muteTurbo?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hmenu, ID_CONFIG_MUTETURBO, muteTurbo?MF_CHECKED : MF_UNCHECKED);
CheckDlgButton(hwndTasEdit,CHECK_AUTORESTORE_PLAYBACK,TASEdit_restore_position?BST_CHECKED:BST_UNCHECKED); CheckDlgButton(hwndTasEdit,CHECK_AUTORESTORE_PLAYBACK,TASEdit_restore_position?BST_CHECKED:BST_UNCHECKED);
CheckDlgButton(hwndTasEdit, IDC_SUPERIMPOSE, TASEdit_superimpose); CheckDlgButton(hwndTasEdit, IDC_SUPERIMPOSE, TASEdit_superimpose);
@ -1950,6 +1979,8 @@ bool ExitTasEdit()
DestroyWindow(hwndTasEdit); DestroyWindow(hwndTasEdit);
hwndTasEdit = 0; hwndTasEdit = 0;
TASEdit_focus = false; TASEdit_focus = false;
DestroyIcon(hTaseditorIcon);
hTaseditorIcon = 0;
ClearTaseditInput(); ClearTaseditInput();
// restore "eoptions" // restore "eoptions"
eoptions = saved_eoptions; eoptions = saved_eoptions;

View File

@ -413,8 +413,6 @@ void BOOKMARKS::jump(int slot)
playback.jump(frame); playback.jump(frame);
if (playback.GetPauseFrame()) if (playback.GetPauseFrame())
tasedit_list.FollowPauseframe(); tasedit_list.FollowPauseframe();
else
tasedit_list.FollowPlayback();
bookmarks_array[slot].jump(); bookmarks_array[slot].jump();
} }
} }

View File

@ -342,6 +342,7 @@ void INPUT_HISTORY::RegisterMarkersChange(int mod_type, int start, int end)
inp.copyHotChanges(&GetCurrentSnapshot()); inp.copyHotChanges(&GetCurrentSnapshot());
AddInputSnapshotToHistory(inp); AddInputSnapshotToHistory(inp);
bookmarks.ChangesMadeSinceBranch(); bookmarks.ChangesMadeSinceBranch();
project.SetProjectChanged();
} }
void INPUT_HISTORY::RegisterBranching(int mod_type, int first_change, int slot) void INPUT_HISTORY::RegisterBranching(int mod_type, int first_change, int slot)
{ {

View File

@ -1,8 +1,10 @@
//Implementation file of Markers class //Implementation file of Markers class
#include "taseditproj.h" #include "taseditproj.h"
#include "zlib.h" #include "zlib.h"
extern bool TASEdit_empty_marker_notes;
// resources
char markers_save_id[MARKERS_ID_LEN] = "MARKERS"; char markers_save_id[MARKERS_ID_LEN] = "MARKERS";
char markers_skipsave_id[MARKERS_ID_LEN] = "MARKERX"; char markers_skipsave_id[MARKERS_ID_LEN] = "MARKERX";
@ -257,7 +259,11 @@ void MARKERS::SetMarker(int frame)
{ {
int marker_num = GetMarkerUp(frame) + 1; int marker_num = GetMarkerUp(frame) + 1;
markers_array[frame] = marker_num; markers_array[frame] = marker_num;
notes.insert(notes.begin() + marker_num, 1, ""); if (TASEdit_empty_marker_notes)
notes.insert(notes.begin() + marker_num, 1, "");
else
// copy previous marker note
notes.insert(notes.begin() + marker_num, 1, notes[marker_num - 1]);
// increase following markers' ids // increase following markers' ids
int size = markers_array.size(); int size = markers_array.size();
for (frame++; frame < size; ++frame) for (frame++; frame < size; ++frame)

View File

@ -113,7 +113,7 @@ void PLAYBACK::update()
// update the playback cursor // update the playback cursor
if(currFrameCounter != lastCursor) if(currFrameCounter != lastCursor)
{ {
tasedit_list.FollowPlayback(); tasedit_list.FollowPlaybackIfNeeded();
// update gfx of the old and new rows // update gfx of the old and new rows
tasedit_list.RedrawRow(lastCursor); tasedit_list.RedrawRow(lastCursor);
bookmarks.RedrawChangedBookmarks(lastCursor); bookmarks.RedrawChangedBookmarks(lastCursor);
@ -253,7 +253,7 @@ void PLAYBACK::RewindFrame()
if (currFrameCounter > 0) if (currFrameCounter > 0)
jump(currFrameCounter-1); jump(currFrameCounter-1);
else else
tasedit_list.FollowPlayback(); tasedit_list.FollowPlaybackIfNeeded();
if (!pause_frame) PauseEmulation(); if (!pause_frame) PauseEmulation();
} }
void PLAYBACK::ForwardFrame() void PLAYBACK::ForwardFrame()
@ -315,7 +315,7 @@ void PLAYBACK::jump(int frame)
if (JumpToFrame(frame)) if (JumpToFrame(frame))
{ {
ForceExecuteLuaFrameFunctions(); ForceExecuteLuaFrameFunctions();
tasedit_list.FollowPlayback(); tasedit_list.FollowPlaybackIfNeeded();
} }
} }
void PLAYBACK::restorePosition() void PLAYBACK::restorePosition()

View File

@ -4,14 +4,19 @@
extern HWND hwndTasEdit; extern HWND hwndTasEdit;
extern uint32 GetGamepadPressedImmediate();
extern void ColumnSet(int column);
extern BOOKMARKS bookmarks; extern BOOKMARKS bookmarks;
extern INPUT_HISTORY history; extern INPUT_HISTORY history;
extern GREENZONE greenzone; extern GREENZONE greenzone;
extern TASEDIT_LIST tasedit_list;
extern void RedrawWindowCaption(); extern void RedrawWindowCaption();
extern bool TASEdit_branch_only_when_rec; extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_use_1p_rec; extern bool TASEdit_use_1p_rec;
extern int TASEdit_superimpose; extern int TASEdit_superimpose;
extern bool TASEdit_columnset_by_keys;
// resources // resources
char recordingCaptions[5][30] = { " (Recording All)", char recordingCaptions[5][30] = { " (Recording All)",
@ -25,7 +30,7 @@ RECORDER::RECORDER()
void RECORDER::init() void RECORDER::init()
{ {
hwndRB_RecOff = GetDlgItem(hwndTasEdit, IDC_RADIO1); hwndRecCheckbox = GetDlgItem(hwndTasEdit, IDC_RECORDING);
hwndRB_RecAll = GetDlgItem(hwndTasEdit, IDC_RADIO2); hwndRB_RecAll = GetDlgItem(hwndTasEdit, IDC_RADIO2);
hwndRB_Rec1P = GetDlgItem(hwndTasEdit, IDC_RADIO3); hwndRB_Rec1P = GetDlgItem(hwndTasEdit, IDC_RADIO3);
hwndRB_Rec2P = GetDlgItem(hwndTasEdit, IDC_RADIO4); hwndRB_Rec2P = GetDlgItem(hwndTasEdit, IDC_RADIO4);
@ -36,6 +41,7 @@ void RECORDER::init()
old_movie_readonly = movie_readonly; old_movie_readonly = movie_readonly;
old_joy.resize(4); old_joy.resize(4);
new_joy.resize(4); new_joy.resize(4);
current_joy.resize(4);
} }
void RECORDER::reset() void RECORDER::reset()
{ {
@ -60,7 +66,7 @@ void RECORDER::update()
// update window caption if needed // update window caption if needed
if (old_movie_readonly != movie_readonly || old_multitrack_recording_joypad != multitrack_recording_joypad) if (old_movie_readonly != movie_readonly || old_multitrack_recording_joypad != multitrack_recording_joypad)
RedrawWindowCaption(); RedrawWindowCaption();
// update Bookmarks/Branches groupbox caption // update Bookmarks/Branches groupbox caption if needed
if (TASEdit_branch_only_when_rec && old_movie_readonly != movie_readonly) if (TASEdit_branch_only_when_rec && old_movie_readonly != movie_readonly)
bookmarks.RedrawBookmarksCaption(); bookmarks.RedrawBookmarksCaption();
// update recording radio buttons if user used hotkey to switch R/W // update recording radio buttons if user used hotkey to switch R/W
@ -70,11 +76,49 @@ void RECORDER::update()
RecheckRecordingRadioButtons(); RecheckRecordingRadioButtons();
} }
old_joy[0] = current_joy[0];
old_joy[1] = current_joy[1];
old_joy[2] = current_joy[2];
old_joy[3] = current_joy[3];
// fill current_joy data for listview header lights
uint32 joypads = GetGamepadPressedImmediate();
current_joy[0] = (joypads & 0xFF);
current_joy[1] = ((joypads >> 8) & 0xFF);
current_joy[2] = ((joypads >> 16) & 0xFF);
current_joy[3] = ((joypads >> 24) & 0xFF);
if (multitrack_recording_joypad != MULTITRACK_RECORDING_ALL)
{
int joy = multitrack_recording_joypad - 1;
// substitute target joypad with 1p joypad
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && TASEdit_use_1p_rec)
current_joy[joy] = current_joy[0];
// clear all other joypads (pressing them does not count)
for (int i = 0; i < NUM_JOYPADS; ++i)
if (i != joy)
current_joy[i] = 0;
}
// call ColumnSet if needed
if (TASEdit_columnset_by_keys && movie_readonly)
{
int num_joys;
if (currMovieData.fourscore)
num_joys = NUM_JOYPADS;
else
num_joys = 2;
for (int joy = 0; joy < num_joys; ++joy)
{
for (int button = 0; button < NUM_JOYPAD_BUTTONS; ++button)
{
// if the button was pressed right now
if ((current_joy[joy] & (1 << button)) && !(old_joy[joy] & (1 << button)))
ColumnSet(COLUMN_JOYPAD1_A + joy * NUM_JOYPAD_BUTTONS + button);
}
}
}
} }
// ------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------
void RECORDER::UncheckRecordingRadioButtons() void RECORDER::UncheckRecordingRadioButtons()
{ {
Button_SetCheck(hwndRB_RecOff, BST_UNCHECKED);
Button_SetCheck(hwndRB_RecAll, BST_UNCHECKED); Button_SetCheck(hwndRB_RecAll, BST_UNCHECKED);
Button_SetCheck(hwndRB_Rec1P, BST_UNCHECKED); Button_SetCheck(hwndRB_Rec1P, BST_UNCHECKED);
Button_SetCheck(hwndRB_Rec2P, BST_UNCHECKED); Button_SetCheck(hwndRB_Rec2P, BST_UNCHECKED);
@ -85,29 +129,24 @@ void RECORDER::RecheckRecordingRadioButtons()
{ {
old_movie_readonly = movie_readonly; old_movie_readonly = movie_readonly;
old_multitrack_recording_joypad = multitrack_recording_joypad; old_multitrack_recording_joypad = multitrack_recording_joypad;
if (movie_readonly) Button_SetCheck(hwndRecCheckbox, movie_readonly?BST_UNCHECKED : BST_CHECKED);
switch(multitrack_recording_joypad)
{ {
Button_SetCheck(hwndRB_RecOff, BST_CHECKED); case MULTITRACK_RECORDING_ALL:
} else Button_SetCheck(hwndRB_RecAll, BST_CHECKED);
{ break;
switch(multitrack_recording_joypad) case MULTITRACK_RECORDING_1P:
{ Button_SetCheck(hwndRB_Rec1P, BST_CHECKED);
case MULTITRACK_RECORDING_ALL: break;
Button_SetCheck(hwndRB_RecAll, BST_CHECKED); case MULTITRACK_RECORDING_2P:
break; Button_SetCheck(hwndRB_Rec2P, BST_CHECKED);
case MULTITRACK_RECORDING_1P: break;
Button_SetCheck(hwndRB_Rec1P, BST_CHECKED); case MULTITRACK_RECORDING_3P:
break; Button_SetCheck(hwndRB_Rec3P, BST_CHECKED);
case MULTITRACK_RECORDING_2P: break;
Button_SetCheck(hwndRB_Rec2P, BST_CHECKED); case MULTITRACK_RECORDING_4P:
break; Button_SetCheck(hwndRB_Rec4P, BST_CHECKED);
case MULTITRACK_RECORDING_3P: break;
Button_SetCheck(hwndRB_Rec3P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_4P:
Button_SetCheck(hwndRB_Rec4P, BST_CHECKED);
break;
}
} }
} }
@ -138,12 +177,18 @@ void RECORDER::InputChanged()
// change this joystick // change this joystick
currMovieData.records[currFrameCounter].joysticks[i] = new_joy[i]; currMovieData.records[currFrameCounter].joysticks[i] = new_joy[i];
if (new_joy[i] != old_joy[i]) if (new_joy[i] != old_joy[i])
{
changes_made = true; changes_made = true;
// set lights for changed buttons
for (int button = 0; button < NUM_JOYPAD_BUTTONS; ++button)
if ((new_joy[i] & (1 << button)) && !(old_joy[i] & (1 << button)))
tasedit_list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + i * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
}
} }
} else } else
{ {
int joy = multitrack_recording_joypad - 1; int joy = multitrack_recording_joypad - 1;
// substitute targed joypad with 1p joypad // substitute target joypad with 1p joypad
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && TASEdit_use_1p_rec) if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && TASEdit_use_1p_rec)
new_joy[joy] = new_joy[0]; new_joy[joy] = new_joy[0];
// superimpose (bitwise OR) if needed // superimpose (bitwise OR) if needed
@ -160,7 +205,13 @@ void RECORDER::InputChanged()
// change only this joystick // change only this joystick
currMovieData.records[currFrameCounter].joysticks[joy] = new_joy[joy]; currMovieData.records[currFrameCounter].joysticks[joy] = new_joy[joy];
if (new_joy[joy] != old_joy[joy]) if (new_joy[joy] != old_joy[joy])
{
changes_made = true; changes_made = true;
// set lights for changed buttons
for (int button = 0; button < NUM_JOYPAD_BUTTONS; ++button)
if ((new_joy[joy] & (1 << button)) && !(old_joy[joy] & (1 << button)))
tasedit_list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + joy * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
}
} }
if (changes_made) if (changes_made)
{ {

View File

@ -20,12 +20,13 @@ public:
void InputChanged(); void InputChanged();
int multitrack_recording_joypad; int multitrack_recording_joypad;
std::vector<uint8> current_joy;
private: private:
int old_multitrack_recording_joypad; int old_multitrack_recording_joypad;
bool old_movie_readonly; bool old_movie_readonly;
HWND hwndRB_RecOff, hwndRB_RecAll, hwndRB_Rec1P, hwndRB_Rec2P, hwndRB_Rec3P, hwndRB_Rec4P; HWND hwndRecCheckbox, hwndRB_RecAll, hwndRB_Rec1P, hwndRB_Rec2P, hwndRB_Rec3P, hwndRB_Rec4P;
// temps // temps
std::vector<uint8> old_joy; std::vector<uint8> old_joy;

View File

@ -1,7 +1,9 @@
//Implementation file of TASEDIT_LIST class //Implementation file of TASEDIT_LIST class
#include "taseditproj.h" #include "taseditproj.h"
#include "utils/xstring.h" #include "utils/xstring.h"
#include "uxtheme.h"
#pragma comment(lib, "UxTheme.lib")
extern HWND hwndTasEdit; extern HWND hwndTasEdit;
extern char buttonNames[NUM_JOYPAD_BUTTONS][2]; extern char buttonNames[NUM_JOYPAD_BUTTONS][2];
@ -24,11 +26,12 @@ extern bool TASEdit_keyboard_for_listview;
LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
WNDPROC hwndList_oldWndProc, hwndHeader_oldWndproc; WNDPROC hwndList_oldWndProc = 0, hwndHeader_oldWndproc = 0;
// resources // resources
COLORREF hot_changes_colors[16] = { 0x0, 0x5c4c44, 0x854604, 0xab2500, 0xc20006, 0xd6006f, 0xd40091, 0xba00a4, 0x9500ba, 0x7a00cc, 0x5800d4, 0x0045e2, 0x0063ea, 0x0079f4, 0x0092fa, 0x00aaff }; COLORREF hot_changes_colors[16] = { 0x0, 0x5c4c44, 0x854604, 0xab2500, 0xc20006, 0xd6006f, 0xd40091, 0xba00a4, 0x9500ba, 0x7a00cc, 0x5800d4, 0x0045e2, 0x0063ea, 0x0079f4, 0x0092fa, 0x00aaff };
//COLORREF hot_changes_colors[16] = { 0x0, 0x661212, 0x842B4E, 0x652C73, 0x48247D, 0x383596, 0x2947AE, 0x1E53C1, 0x135DD2, 0x116EDA, 0x107EE3, 0x0F8EEB, 0x209FF4, 0x3DB1FD, 0x51C2FF, 0x4DCDFF }; //COLORREF hot_changes_colors[16] = { 0x0, 0x661212, 0x842B4E, 0x652C73, 0x48247D, 0x383596, 0x2947AE, 0x1E53C1, 0x135DD2, 0x116EDA, 0x107EE3, 0x0F8EEB, 0x209FF4, 0x3DB1FD, 0x51C2FF, 0x4DCDFF };
COLORREF header_lights_colors[11] = { 0x0, 0x00661f, 0x008a15, 0x00a800, 0x24c700, 0x4bd600, 0x79e300, 0x97e800, 0xb4f000, 0xd6f700, 0xffff00 };
char list_save_id[LIST_ID_LEN] = "LIST"; char list_save_id[LIST_ID_LEN] = "LIST";
char list_skipsave_id[LIST_ID_LEN] = "LISX"; char list_skipsave_id[LIST_ID_LEN] = "LISX";
@ -68,6 +71,7 @@ TASEDIT_LIST::TASEDIT_LIST()
void TASEDIT_LIST::init() void TASEDIT_LIST::init()
{ {
free(); free();
header_colors.resize(MAX_NUM_COLUMNS);
hwndList = GetDlgItem(hwndTasEdit, IDC_LIST1); hwndList = GetDlgItem(hwndTasEdit, IDC_LIST1);
// prepare the main listview // prepare the main listview
ListView_SetExtendedListViewStyleEx(hwndList, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP); ListView_SetExtendedListViewStyleEx(hwndList, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP);
@ -76,6 +80,8 @@ void TASEDIT_LIST::init()
hwndHeader_oldWndproc = (WNDPROC)SetWindowLong(hwndHeader, GWL_WNDPROC, (LONG)HeaderWndProc); hwndHeader_oldWndproc = (WNDPROC)SetWindowLong(hwndHeader, GWL_WNDPROC, (LONG)HeaderWndProc);
// subclass the whole listview // subclass the whole listview
hwndList_oldWndProc = (WNDPROC)SetWindowLong(hwndList, GWL_WNDPROC, (LONG)ListWndProc); hwndList_oldWndProc = (WNDPROC)SetWindowLong(hwndList, GWL_WNDPROC, (LONG)ListWndProc);
// disable Visual Themes for header
SetWindowTheme(hwndHeader, L"", L"");
// setup images for the listview // setup images for the listview
himglist = ImageList_Create(9, 13, ILC_COLOR8 | ILC_MASK, 1, 1); himglist = ImageList_Create(9, 13, ILC_COLOR8 | ILC_MASK, 1, 1);
HBITMAP bmp = LoadBitmap(fceu_hInstance, MAKEINTRESOURCE(IDB_BITMAP0)); HBITMAP bmp = LoadBitmap(fceu_hInstance, MAKEINTRESOURCE(IDB_BITMAP0));
@ -144,17 +150,17 @@ void TASEDIT_LIST::init()
ListView_SetImageList(hwndList, himglist, LVSIL_SMALL); ListView_SetImageList(hwndList, himglist, LVSIL_SMALL);
// setup columns // setup columns
LVCOLUMN lvc; LVCOLUMN lvc;
int colidx=0; num_columns = 0;
// icons column // icons column
lvc.mask = LVCF_WIDTH; lvc.mask = LVCF_WIDTH;
lvc.cx = 13; lvc.cx = 13;
ListView_InsertColumn(hwndList, colidx++, &lvc); ListView_InsertColumn(hwndList, num_columns++, &lvc);
// frame number column // frame number column
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT; lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT;
lvc.fmt = LVCFMT_CENTER; lvc.fmt = LVCFMT_CENTER;
lvc.cx = 75; lvc.cx = 75;
lvc.pszText = "Frame#"; lvc.pszText = "Frame#";
ListView_InsertColumn(hwndList, colidx++, &lvc); ListView_InsertColumn(hwndList, num_columns++, &lvc);
// pads columns // pads columns
lvc.cx = 21; lvc.cx = 21;
// add pads 1 and 2 // add pads 1 and 2
@ -163,14 +169,14 @@ void TASEDIT_LIST::init()
for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn) for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn)
{ {
lvc.pszText = buttonNames[btn]; lvc.pszText = buttonNames[btn];
ListView_InsertColumn(hwndList, colidx++, &lvc); ListView_InsertColumn(hwndList, num_columns++, &lvc);
} }
} }
// add pads 3 and 4 and frame_number2 // add pads 3 and 4 and frame_number2
if (currMovieData.fourscore) AddFourscore(); if (currMovieData.fourscore) AddFourscore();
update();
reset(); reset();
//update();
} }
void TASEDIT_LIST::free() void TASEDIT_LIST::free()
{ {
@ -179,10 +185,11 @@ void TASEDIT_LIST::free()
ImageList_Destroy(himglist); ImageList_Destroy(himglist);
himglist = 0; himglist = 0;
} }
header_colors.resize(0);
} }
void TASEDIT_LIST::reset() void TASEDIT_LIST::reset()
{ {
next_header_update_time = 0;
// scroll to the beginning // scroll to the beginning
ListView_EnsureVisible(hwndList, 0, FALSE); ListView_EnsureVisible(hwndList, 0, FALSE);
} }
@ -194,7 +201,51 @@ void TASEDIT_LIST::update()
if(currLVItemCount != movie_size) if(currLVItemCount != movie_size)
ListView_SetItemCountEx(hwndList, movie_size, LVSICF_NOSCROLL|LVSICF_NOINVALIDATEALL); ListView_SetItemCountEx(hwndList, movie_size, LVSICF_NOSCROLL|LVSICF_NOINVALIDATEALL);
// once per 40 milliseconds update screenshot_bitmap alpha
if (clock() > next_header_update_time)
{
next_header_update_time = clock() + HEADER_LIGHT_UPDATE_TICK;
bool changes_made = false;
// 1 - update Frame# columns' heads
if (header_colors[COLUMN_FRAMENUM])
{
header_colors[COLUMN_FRAMENUM]--;
header_colors[COLUMN_FRAMENUM2] = header_colors[COLUMN_FRAMENUM];
changes_made = true;
}
// update input columns' heads
int i = num_columns-1;
if (i == COLUMN_FRAMENUM2) i--;
for (; i >= COLUMN_JOYPAD1_A; i--)
{
if (header_colors[i] > HEADER_LIGHT_HOLD)
{
header_colors[i]--;
changes_made = true;
} else
{
if (recorder.current_joy[(i - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS] & (1 << ((i - COLUMN_JOYPAD1_A) % NUM_JOYPAD_BUTTONS)))
{
// the button is held
if (header_colors[i] < HEADER_LIGHT_HOLD)
{
header_colors[i]++;
changes_made = true;
}
} else
{
// the button is released
if (header_colors[i])
{
header_colors[i]--;
changes_made = true;
}
}
}
}
if (changes_made)
RedrawHeader();
}
} }
void TASEDIT_LIST::save(EMUFILE *os, bool really_save) void TASEDIT_LIST::save(EMUFILE *os, bool really_save)
@ -247,29 +298,26 @@ void TASEDIT_LIST::AddFourscore()
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT; lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT;
lvc.fmt = LVCFMT_CENTER; lvc.fmt = LVCFMT_CENTER;
lvc.cx = 21; lvc.cx = 21;
int colidx = COLUMN_JOYPAD3_A;
for (int joy = 0; joy < 2; ++joy) for (int joy = 0; joy < 2; ++joy)
{ {
for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn) for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn)
{ {
lvc.pszText = buttonNames[btn]; lvc.pszText = buttonNames[btn];
ListView_InsertColumn(hwndList, colidx++, &lvc); ListView_InsertColumn(hwndList, num_columns++, &lvc);
} }
} }
// frame number column again // frame number column again
lvc.cx = 75; lvc.cx = 75;
lvc.pszText = "Frame#"; lvc.pszText = "Frame#";
ListView_InsertColumn(hwndList, colidx++, &lvc); ListView_InsertColumn(hwndList, num_columns++, &lvc);
// change eoptions // change eoptions
FCEUI_SetInputFourscore(true); FCEUI_SetInputFourscore(true);
} }
void TASEDIT_LIST::RemoveFourscore() void TASEDIT_LIST::RemoveFourscore()
{ {
// remove list columns // remove list columns
for (int i = COLUMN_FRAMENUM2; i >= COLUMN_JOYPAD3_A; --i) for (num_columns = COLUMN_FRAMENUM2; num_columns >= COLUMN_JOYPAD3_A; num_columns--)
{ ListView_DeleteColumn (hwndList, num_columns);
ListView_DeleteColumn (hwndList, i);
}
// change eoptions // change eoptions
FCEUI_SetInputFourscore(false); FCEUI_SetInputFourscore(false);
} }
@ -282,7 +330,10 @@ void TASEDIT_LIST::RedrawRow(int index)
{ {
ListView_RedrawItems(hwndList, index, index); ListView_RedrawItems(hwndList, index, index);
} }
void TASEDIT_LIST::RedrawHeader()
{
InvalidateRect(hwndHeader, 0, FALSE);
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
bool TASEDIT_LIST::CheckItemVisible(int frame) bool TASEDIT_LIST::CheckItemVisible(int frame)
@ -295,6 +346,10 @@ bool TASEDIT_LIST::CheckItemVisible(int frame)
} }
void TASEDIT_LIST::FollowPlayback() void TASEDIT_LIST::FollowPlayback()
{
ListView_EnsureVisible(hwndList,currFrameCounter,FALSE);
}
void TASEDIT_LIST::FollowPlaybackIfNeeded()
{ {
if (TASEdit_follow_playback) ListView_EnsureVisible(hwndList,currFrameCounter,FALSE); if (TASEdit_follow_playback) ListView_EnsureVisible(hwndList,currFrameCounter,FALSE);
} }
@ -379,6 +434,19 @@ void TASEDIT_LIST::FollowPauseframe()
} }
} }
void TASEDIT_LIST::SetHeaderColumnLight(int column, int level)
{
if (column < COLUMN_FRAMENUM || column >= num_columns || level < 0 || level > HEADER_LIGHT_MAX)
return;
if (header_colors[column] != level)
{
header_colors[column] = level;
RedrawHeader();
next_header_update_time = clock() + HEADER_LIGHT_UPDATE_TICK;
}
}
void TASEDIT_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo) void TASEDIT_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo)
{ {
LVITEM& item = nmlvDispInfo->item; LVITEM& item = nmlvDispInfo->item;
@ -583,6 +651,28 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
return CDRF_DODEFAULT; return CDRF_DODEFAULT;
} }
} }
LONG TASEDIT_LIST::HeaderCustomDraw(NMLVCUSTOMDRAW* msg)
{
switch(msg->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
SelectObject(msg->nmcd.hdc, hMainListFont);
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
{
int cell_x = msg->nmcd.dwItemSpec;
if (cell_x < num_columns)
{
int cur_color = header_colors[cell_x];
if (cur_color)
SetTextColor(msg->nmcd.hdc, header_lights_colors[cur_color]);
}
}
default:
return CDRF_DODEFAULT;
}
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
@ -612,6 +702,7 @@ LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
//The subclass wndproc for the listview //The subclass wndproc for the listview
LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
extern TASEDIT_LIST tasedit_list;
switch(msg) switch(msg)
{ {
case WM_CHAR: case WM_CHAR:
@ -619,12 +710,17 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
return 0; return 0;
case WM_NOTIFY: case WM_NOTIFY:
{ {
switch (((LPNMHDR)lParam)->code) if (((LPNMHDR)lParam)->hwndFrom == tasedit_list.hwndHeader)
{ {
case HDN_BEGINTRACKW: switch (((LPNMHDR)lParam)->code)
case HDN_BEGINTRACKA: {
case HDN_TRACK: case HDN_BEGINTRACKW:
return true; // no column resizing case HDN_BEGINTRACKA:
case HDN_TRACK:
return true; // no column resizing
case NM_CUSTOMDRAW:
return tasedit_list.HeaderCustomDraw((NMLVCUSTOMDRAW*)lParam);
}
} }
break; break;
} }
@ -643,5 +739,3 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
} }
return CallWindowProc(hwndList_oldWndProc, hWnd, msg, wParam, lParam); return CallWindowProc(hwndList_oldWndProc, hWnd, msg, wParam, lParam);
} }

View File

@ -9,6 +9,11 @@
#define NUM_JOYPADS 4 #define NUM_JOYPADS 4
#define NUM_JOYPAD_BUTTONS 8 #define NUM_JOYPAD_BUTTONS 8
#define HEADER_LIGHT_MAX 10
#define HEADER_LIGHT_HOLD 5
#define HEADER_LIGHT_UPDATE_TICK 40 // 25FPS
#define MAX_NUM_COLUMNS 35
#define COLUMN_ICONS 0 #define COLUMN_ICONS 0
#define COLUMN_FRAMENUM 1 #define COLUMN_FRAMENUM 1
#define COLUMN_JOYPAD1_A 2 #define COLUMN_JOYPAD1_A 2
@ -44,6 +49,7 @@
#define COLUMN_JOYPAD4_L 32 #define COLUMN_JOYPAD4_L 32
#define COLUMN_JOYPAD4_R 33 #define COLUMN_JOYPAD4_R 33
#define COLUMN_FRAMENUM2 34 #define COLUMN_FRAMENUM2 34
#define DIGITS_IN_FRAMENUM 7 #define DIGITS_IN_FRAMENUM 7
#define ARROW_IMAGE_ID 20 #define ARROW_IMAGE_ID 20
@ -82,8 +88,6 @@
#define CUR_MARKED_FRAMENUM_COLOR 0xDEF7F3 #define CUR_MARKED_FRAMENUM_COLOR 0xDEF7F3
#define MARKED_UNDOHINT_FRAMENUM_COLOR 0xE1E7EC #define MARKED_UNDOHINT_FRAMENUM_COLOR 0xE1E7EC
class TASEDIT_LIST class TASEDIT_LIST
{ {
public: public:
@ -101,17 +105,21 @@ public:
void RedrawList(); void RedrawList();
void RedrawRow(int index); void RedrawRow(int index);
void RedrawHeader();
bool CheckItemVisible(int frame); bool CheckItemVisible(int frame);
void FollowPlayback(); void FollowPlayback();
void FollowPlaybackIfNeeded();
void FollowUndo(); void FollowUndo();
void FollowSelection(); void FollowSelection();
void FollowPauseframe(); void FollowPauseframe();
void SetHeaderColumnLight(int column, int level);
void GetDispInfo(NMLVDISPINFO* nmlvDispInfo); void GetDispInfo(NMLVDISPINFO* nmlvDispInfo);
LONG CustomDraw(NMLVCUSTOMDRAW* msg); LONG CustomDraw(NMLVCUSTOMDRAW* msg);
LONG HeaderCustomDraw(NMLVCUSTOMDRAW* msg);
HWND hwndList, hwndHeader; HWND hwndList, hwndHeader;
@ -120,5 +128,8 @@ public:
HFONT hMainListFont, hMainListSelectFont, hMarkersFont, hMarkersEditFont; HFONT hMainListFont, hMainListSelectFont, hMarkersFont, hMarkersEditFont;
private: private:
std::vector<uint8> header_colors;
int num_columns;
int next_header_update_time;
}; };

View File

@ -1,6 +1,6 @@
//Implementation file of TASEDIT_SELECTION class //Implementation file of TASEDIT_SELECTION class
#include "taseditproj.h" #include "taseditproj.h"
#include "..\tasedit.h" // only for MARKER_NOTE_EDIT_UPPER #include "..\tasedit.h" // only for MARKER_NOTE_EDIT_LOWER
char selection_save_id[SELECTION_ID_LEN] = "SELECTION"; char selection_save_id[SELECTION_ID_LEN] = "SELECTION";
char selection_skipsave_id[SELECTION_ID_LEN] = "SELECTIOX"; char selection_skipsave_id[SELECTION_ID_LEN] = "SELECTIOX";

View File

@ -858,8 +858,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\src\drivers\win\res\branch_spritesheet.bmp" /> <None Include="..\src\drivers\win\res\branch_spritesheet.bmp" />
<None Include="..\src\drivers\win\res\icon3.ico" />
<None Include="..\src\drivers\win\res\icon4.ico" />
<None Include="..\src\drivers\win\res\ICON_1.ico" /> <None Include="..\src\drivers\win\res\ICON_1.ico" />
<None Include="..\src\drivers\win\res\ICON_2.ico" /> <None Include="..\src\drivers\win\res\ICON_2.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon.ico" />
<None Include="..\src\drivers\win\res\te_0.bmp" /> <None Include="..\src\drivers\win\res\te_0.bmp" />
<None Include="..\src\drivers\win\res\te_1.bmp" /> <None Include="..\src\drivers\win\res\te_1.bmp" />
<None Include="..\src\drivers\win\res\te_10.bmp" /> <None Include="..\src\drivers\win\res\te_10.bmp" />
@ -897,6 +900,7 @@
</CustomBuild> </CustomBuild>
<None Include="..\src\pputile.inc" /> <None Include="..\src\pputile.inc" />
<None Include="ClassDiagram1.cd" /> <None Include="ClassDiagram1.cd" />
<None Include="res\tasedit-icon.ico" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -1498,6 +1498,10 @@
<None Include="..\src\drivers\win\res\te_arrow.bmp"> <None Include="..\src\drivers\win\res\te_arrow.bmp">
<Filter>pix</Filter> <Filter>pix</Filter>
</None> </None>
<None Include="..\src\drivers\win\res\icon3.ico" />
<None Include="..\src\drivers\win\res\icon4.ico" />
<None Include="res\tasedit-icon.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\src\auxlib.lua" /> <CustomBuild Include="..\src\auxlib.lua" />