* 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_tooltips;
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_superimpose_affects_paste;
extern bool TASEdit_use_1p_rec;
extern bool TASEdit_columnset_by_keys;
extern bool TASEdit_keyboard_for_listview;
extern bool TASEdit_superimpose_affects_paste;
extern bool TASEdit_branch_full_movie;
extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_view_branches_tree;
@ -93,6 +95,7 @@ extern int TASEdit_autosave_period;
extern bool TASEdit_jump_to_undo;
extern bool TASEdit_follow_note_context;
extern int TASEdit_last_export_type;
extern bool TASEdit_last_export_subtitles;
extern bool TASEdit_savecompact_binary;
extern bool TASEdit_savecompact_markers;
extern bool TASEdit_savecompact_bookmarks;
@ -336,10 +339,12 @@ static CFGSTRUCT fceuconfig[] = {
AC(TASEdit_show_branch_screenshots),
AC(TASEdit_show_branch_tooltips),
AC(TASEdit_bind_markers),
AC(TASEdit_use_1p_rec),
AC(TASEdit_empty_marker_notes),
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_superimpose_affects_paste),
AC(TASEdit_branch_full_movie),
AC(TASEdit_branch_only_when_rec),
AC(TASEdit_view_branches_tree),
@ -353,6 +358,7 @@ static CFGSTRUCT fceuconfig[] = {
AC(TASEdit_jump_to_undo),
AC(TASEdit_follow_note_context),
AC(TASEdit_last_export_type),
AC(TASEdit_last_export_subtitles),
AC(TASEdit_savecompact_binary),
AC(TASEdit_savecompact_markers),
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
// remains consistent on all systems.
IDI_ICON3 ICON "res\\tasedit-icon.ico"
ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico"
@ -276,11 +277,14 @@ BEGIN
MENUITEM "&HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS
MENUITEM SEPARATOR
MENUITEM "&Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT
MENUITEM "&Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES
MENUITEM SEPARATOR
MENUITEM "&Combine consecutive Recordings", ID_CONFIG_COMBINECONSECUTIVERECORDINGS
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 "&Superimpose affects copy/paste", ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE
MENUITEM SEPARATOR
MENUITEM "Mute &Turbo", ID_CONFIG_MUTETURBO
END
@ -1394,13 +1398,12 @@ BEGIN
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_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 " ON",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,87,27,10
CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,373,74,25,10
CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,74,23,10
CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,373,87,25,10
CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,87,23,10
CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,316,100,56,10
CONTROL " All",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,86,27,10
CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,372,86,25,10
CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,86,24,10
CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,372,98,25,10
CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,98,24,10
CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,372,74,55,10
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
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
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
CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,316,74,49,10
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
CAPTION "Export to FM2"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Export",IDOK,7,52,50,14
PUSHBUTTON "Cancel",IDCANCEL,65,52,50,14
CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,36,8,49,10
CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,36,21,49,10
CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,36,35,47,10
DEFPUSHBUTTON "Export",IDOK,7,66,50,14
PUSHBUTTON "Cancel",IDCANCEL,100,66,50,14
CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,8,8,47,10
CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,8,21,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
IDD_TASEDIT_SAVECOMPACT DIALOGEX 0, 0, 122, 134
@ -1885,6 +1891,10 @@ BEGIN
BOTTOMMARGIN, 121
END
"ROMPATCHER", DIALOG
BEGIN
END
"GGCONV", DIALOG
BEGIN
END
@ -1917,6 +1927,7 @@ BEGIN
"TASEDIT", DIALOG
BEGIN
RIGHTMARGIN, 433
END
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_SAVECOMPACT 186
#define IDD_TASEDIT_BRANCH_NOTE 188
#define IDI_ICON3 197
#define MENU_RESET 200
#define BUTTON_ROMS 200
#define TXT_PAD1 200
@ -469,10 +470,12 @@
#define IDC_FULLSAVESTATES 1203
#define IDC_SUPERIMPOSE 1203
#define IDC_CHECK_BINARY 1203
#define IDC_NOTES_TO_SUBTITLES 1203
#define IDC_VOLUMEGROUP 1204
#define IDC_OMITBLANK 1204
#define IDC_CHECK3 1204
#define IDC_CHECK_MARKERS 1204
#define IDC_RECORDING 1204
#define IDC_RAMLIST 1205
#define IDC_CHECK4 1205
#define IDC_CHECK_BOOKMARKS 1205
@ -948,6 +951,8 @@
#define ID_ACCELERATOR40506 40506
#define ID_VIEW_FOLLOWMARKERNOTECONTEXT 40507
#define ID_VIEW_SHOWBRANCHTOOLTIPS 40508
#define ID_CONFIG_USEINPUTKEYSFORCOLUMNSET 40509
#define ID_CONFIG_EMPTYNEWMARKERNOTES 40510
#define IDC_DEBUGGER_ICONTRAY 55535
#define MW_ValueLabel2 65423
#define MW_ValueLabel1 65426
@ -956,8 +961,8 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 189
#define _APS_NEXT_COMMAND_VALUE 40509
#define _APS_NEXT_RESOURCE_VALUE 198
#define _APS_NEXT_COMMAND_VALUE 40511
#define _APS_NEXT_CONTROL_VALUE 1273
#define _APS_NEXT_SYMED_VALUE 101
#endif

View File

@ -49,10 +49,12 @@ bool TASEdit_show_markers = true;
bool TASEdit_show_branch_screenshots = true;
bool TASEdit_show_branch_tooltips = 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_superimpose_affects_paste = true;
bool TASEdit_use_1p_rec = true;
bool TASEdit_columnset_by_keys = true;
bool TASEdit_keyboard_for_listview = true;
bool TASEdit_superimpose_affects_paste = true;
int TASEdit_superimpose = BST_UNCHECKED;
bool TASEdit_branch_full_movie = true;
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_follow_note_context = true;
int TASEdit_last_export_type = EXPORT_TYPE_1P;
bool TASEdit_last_export_subtitles = false;
bool TASEdit_savecompact_binary = true;
bool TASEdit_savecompact_markers = 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 windowCaptioBase[] = "TAS Editor";
extern char recordingCaptions[5][30];
HICON hTaseditorIcon = 0;
// enterframe function
void UpdateTasEdit()
{
if(!hwndTasEdit) return;
recorder.update();
tasedit_list.update();
current_markers.update();
greenzone.update();
playback.update();
recorder.update();
bookmarks.update();
screenshot_display.update();
selection.update();
@ -226,7 +230,6 @@ void SingleClick(LPNMITEMACTIVATE info)
history.RegisterMarkersChange(MODTYPE_MARKER_SET, row_index);
else
history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, row_index);
project.SetProjectChanged();
tasedit_list.RedrawRow(row_index);
}
}
@ -487,8 +490,8 @@ void FrameColumnSet()
}
if (changes_made)
{
project.SetProjectChanged();
selection.must_find_current_marker = playback.must_find_current_marker = true;
tasedit_list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
}
}
void InputColumnSet(int column)
@ -522,9 +525,9 @@ void InputColumnSet(int column)
{
greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin()));
}
tasedit_list.SetHeaderColumnLight(column, HEADER_LIGHT_MAX);
}
bool Copy(SelectionFrames* current_selection)
{
if (!current_selection)
@ -1087,6 +1090,7 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara
break;
}
}
CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, TASEdit_last_export_subtitles?MF_CHECKED : MF_UNCHECKED);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
@ -1100,6 +1104,10 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara
case IDC_RADIO_FOURSCORE:
TASEdit_last_export_type = EXPORT_TYPE_FOURSCORE;
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:
EndDialog(hwndDlg, 1);
return TRUE;
@ -1161,6 +1169,25 @@ void Export()
}
}
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
temp_md.dump(osRecordingMovie, false);
delete osRecordingMovie;
@ -1176,10 +1203,13 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
case WM_PAINT:
break;
case WM_INITDIALOG:
{
if (TasEdit_wndx==-32000) TasEdit_wndx=0; //Just in case
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);
break;
break;
}
case WM_MOVE:
{
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);
break;
case ID_CONFIG_BINDMARKERSTOINPUT:
//switch "Bind Markers to Input" flag
TASEdit_bind_markers ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_BINDMARKERSTOINPUT, TASEdit_bind_markers?MF_CHECKED : MF_UNCHECKED);
break;
case ID_CONFIG_USE1PFORRECORDING:
//switch "Use 1P keys for single Recordings" flag
TASEdit_use_1p_rec ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_USE1PFORRECORDING, TASEdit_use_1p_rec?MF_CHECKED : MF_UNCHECKED);
case ID_CONFIG_EMPTYNEWMARKERNOTES:
TASEdit_empty_marker_notes ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_EMPTYNEWMARKERNOTES, TASEdit_empty_marker_notes?MF_CHECKED : MF_UNCHECKED);
break;
case ID_CONFIG_COMBINECONSECUTIVERECORDINGS:
//switch "Combine consecutive Recordings" flag
TASEdit_combine_consecutive_rec ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_COMBINECONSECUTIVERECORDINGS, TASEdit_combine_consecutive_rec?MF_CHECKED : MF_UNCHECKED);
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);
case ID_CONFIG_USE1PFORRECORDING:
//switch "Use 1P keys for single Recordings" flag
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;
case ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW:
TASEdit_keyboard_for_listview ^= 1;
CheckMenuItem(hmenu, ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW, TASEdit_keyboard_for_listview?MF_CHECKED : MF_UNCHECKED);
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:
muteTurbo ^= 1;
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;
bookmarks.RedrawBookmarksCaption();
break;
case IDC_RADIO1:
// switch to readonly, no need to recheck radiobuttons
if (!movie_readonly) FCEUI_MovieToggleReadOnly();
case IDC_RECORDING:
// toggle readonly, no need to recheck radiobuttons
FCEUI_MovieToggleReadOnly();
CheckDlgButton(hwndTasEdit, IDC_RECORDING, movie_readonly?BST_UNCHECKED : BST_CHECKED);
break;
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;
break;
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;
break;
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;
break;
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;
break;
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;
break;
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;
history.RegisterMarkersChange(MODTYPE_MARKER_SET, *current_selection_begin, *current_selection->rbegin());
project.SetProjectChanged();
}
}
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;
history.RegisterMarkersChange(MODTYPE_MARKER_UNSET, *current_selection_begin, *current_selection->rbegin());
project.SetProjectChanged();
}
}
break;
@ -1851,6 +1877,7 @@ bool EnterTasEdit()
if(!FCEU_IsValidUI(FCEUI_TASEDIT)) return false;
if(!hwndTasEdit)
{
hTaseditorIcon = (HICON)LoadImage(fceu_hInstance, MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE);
hwndTasEdit = CreateDialog(fceu_hInstance,"TASEDIT", hAppWnd, WndprocTasEdit);
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_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_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_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_SUPERIMPOSE_AFFECTS_PASTE, TASEdit_superimpose_affects_paste?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, IDC_SUPERIMPOSE, TASEdit_superimpose);
@ -1950,6 +1979,8 @@ bool ExitTasEdit()
DestroyWindow(hwndTasEdit);
hwndTasEdit = 0;
TASEdit_focus = false;
DestroyIcon(hTaseditorIcon);
hTaseditorIcon = 0;
ClearTaseditInput();
// restore "eoptions"
eoptions = saved_eoptions;

View File

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

View File

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

View File

@ -1,8 +1,10 @@
//Implementation file of Markers class
#include "taseditproj.h"
#include "zlib.h"
extern bool TASEdit_empty_marker_notes;
// resources
char markers_save_id[MARKERS_ID_LEN] = "MARKERS";
char markers_skipsave_id[MARKERS_ID_LEN] = "MARKERX";
@ -257,7 +259,11 @@ void MARKERS::SetMarker(int frame)
{
int marker_num = GetMarkerUp(frame) + 1;
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
int size = markers_array.size();
for (frame++; frame < size; ++frame)

View File

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

View File

@ -4,14 +4,19 @@
extern HWND hwndTasEdit;
extern uint32 GetGamepadPressedImmediate();
extern void ColumnSet(int column);
extern BOOKMARKS bookmarks;
extern INPUT_HISTORY history;
extern GREENZONE greenzone;
extern TASEDIT_LIST tasedit_list;
extern void RedrawWindowCaption();
extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_use_1p_rec;
extern int TASEdit_superimpose;
extern bool TASEdit_columnset_by_keys;
// resources
char recordingCaptions[5][30] = { " (Recording All)",
@ -25,7 +30,7 @@ RECORDER::RECORDER()
void RECORDER::init()
{
hwndRB_RecOff = GetDlgItem(hwndTasEdit, IDC_RADIO1);
hwndRecCheckbox = GetDlgItem(hwndTasEdit, IDC_RECORDING);
hwndRB_RecAll = GetDlgItem(hwndTasEdit, IDC_RADIO2);
hwndRB_Rec1P = GetDlgItem(hwndTasEdit, IDC_RADIO3);
hwndRB_Rec2P = GetDlgItem(hwndTasEdit, IDC_RADIO4);
@ -36,6 +41,7 @@ void RECORDER::init()
old_movie_readonly = movie_readonly;
old_joy.resize(4);
new_joy.resize(4);
current_joy.resize(4);
}
void RECORDER::reset()
{
@ -60,7 +66,7 @@ void RECORDER::update()
// update window caption if needed
if (old_movie_readonly != movie_readonly || old_multitrack_recording_joypad != multitrack_recording_joypad)
RedrawWindowCaption();
// update Bookmarks/Branches groupbox caption
// update Bookmarks/Branches groupbox caption if needed
if (TASEdit_branch_only_when_rec && old_movie_readonly != movie_readonly)
bookmarks.RedrawBookmarksCaption();
// update recording radio buttons if user used hotkey to switch R/W
@ -70,11 +76,49 @@ void RECORDER::update()
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()
{
Button_SetCheck(hwndRB_RecOff, BST_UNCHECKED);
Button_SetCheck(hwndRB_RecAll, BST_UNCHECKED);
Button_SetCheck(hwndRB_Rec1P, BST_UNCHECKED);
Button_SetCheck(hwndRB_Rec2P, BST_UNCHECKED);
@ -85,29 +129,24 @@ void RECORDER::RecheckRecordingRadioButtons()
{
old_movie_readonly = movie_readonly;
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);
} else
{
switch(multitrack_recording_joypad)
{
case MULTITRACK_RECORDING_ALL:
Button_SetCheck(hwndRB_RecAll, BST_CHECKED);
break;
case MULTITRACK_RECORDING_1P:
Button_SetCheck(hwndRB_Rec1P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_2P:
Button_SetCheck(hwndRB_Rec2P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_3P:
Button_SetCheck(hwndRB_Rec3P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_4P:
Button_SetCheck(hwndRB_Rec4P, BST_CHECKED);
break;
}
case MULTITRACK_RECORDING_ALL:
Button_SetCheck(hwndRB_RecAll, BST_CHECKED);
break;
case MULTITRACK_RECORDING_1P:
Button_SetCheck(hwndRB_Rec1P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_2P:
Button_SetCheck(hwndRB_Rec2P, BST_CHECKED);
break;
case MULTITRACK_RECORDING_3P:
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
currMovieData.records[currFrameCounter].joysticks[i] = new_joy[i];
if (new_joy[i] != old_joy[i])
{
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
{
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)
new_joy[joy] = new_joy[0];
// superimpose (bitwise OR) if needed
@ -160,7 +205,13 @@ void RECORDER::InputChanged()
// change only this joystick
currMovieData.records[currFrameCounter].joysticks[joy] = new_joy[joy];
if (new_joy[joy] != old_joy[joy])
{
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)
{

View File

@ -20,12 +20,13 @@ public:
void InputChanged();
int multitrack_recording_joypad;
std::vector<uint8> current_joy;
private:
int old_multitrack_recording_joypad;
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
std::vector<uint8> old_joy;

View File

@ -1,7 +1,9 @@
//Implementation file of TASEDIT_LIST class
#include "taseditproj.h"
#include "utils/xstring.h"
#include "uxtheme.h"
#pragma comment(lib, "UxTheme.lib")
extern HWND hwndTasEdit;
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 ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
WNDPROC hwndList_oldWndProc, hwndHeader_oldWndproc;
WNDPROC hwndList_oldWndProc = 0, hwndHeader_oldWndproc = 0;
// 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, 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_skipsave_id[LIST_ID_LEN] = "LISX";
@ -68,6 +71,7 @@ TASEDIT_LIST::TASEDIT_LIST()
void TASEDIT_LIST::init()
{
free();
header_colors.resize(MAX_NUM_COLUMNS);
hwndList = GetDlgItem(hwndTasEdit, IDC_LIST1);
// 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);
@ -76,6 +80,8 @@ void TASEDIT_LIST::init()
hwndHeader_oldWndproc = (WNDPROC)SetWindowLong(hwndHeader, GWL_WNDPROC, (LONG)HeaderWndProc);
// subclass the whole listview
hwndList_oldWndProc = (WNDPROC)SetWindowLong(hwndList, GWL_WNDPROC, (LONG)ListWndProc);
// disable Visual Themes for header
SetWindowTheme(hwndHeader, L"", L"");
// setup images for the listview
himglist = ImageList_Create(9, 13, ILC_COLOR8 | ILC_MASK, 1, 1);
HBITMAP bmp = LoadBitmap(fceu_hInstance, MAKEINTRESOURCE(IDB_BITMAP0));
@ -144,17 +150,17 @@ void TASEDIT_LIST::init()
ListView_SetImageList(hwndList, himglist, LVSIL_SMALL);
// setup columns
LVCOLUMN lvc;
int colidx=0;
num_columns = 0;
// icons column
lvc.mask = LVCF_WIDTH;
lvc.cx = 13;
ListView_InsertColumn(hwndList, colidx++, &lvc);
ListView_InsertColumn(hwndList, num_columns++, &lvc);
// frame number column
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT;
lvc.fmt = LVCFMT_CENTER;
lvc.cx = 75;
lvc.pszText = "Frame#";
ListView_InsertColumn(hwndList, colidx++, &lvc);
ListView_InsertColumn(hwndList, num_columns++, &lvc);
// pads columns
lvc.cx = 21;
// add pads 1 and 2
@ -163,14 +169,14 @@ void TASEDIT_LIST::init()
for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn)
{
lvc.pszText = buttonNames[btn];
ListView_InsertColumn(hwndList, colidx++, &lvc);
ListView_InsertColumn(hwndList, num_columns++, &lvc);
}
}
// add pads 3 and 4 and frame_number2
if (currMovieData.fourscore) AddFourscore();
update();
reset();
//update();
}
void TASEDIT_LIST::free()
{
@ -179,10 +185,11 @@ void TASEDIT_LIST::free()
ImageList_Destroy(himglist);
himglist = 0;
}
header_colors.resize(0);
}
void TASEDIT_LIST::reset()
{
next_header_update_time = 0;
// scroll to the beginning
ListView_EnsureVisible(hwndList, 0, FALSE);
}
@ -194,7 +201,51 @@ void TASEDIT_LIST::update()
if(currLVItemCount != movie_size)
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)
@ -247,29 +298,26 @@ void TASEDIT_LIST::AddFourscore()
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT;
lvc.fmt = LVCFMT_CENTER;
lvc.cx = 21;
int colidx = COLUMN_JOYPAD3_A;
for (int joy = 0; joy < 2; ++joy)
{
for (int btn = 0; btn < NUM_JOYPAD_BUTTONS; ++btn)
{
lvc.pszText = buttonNames[btn];
ListView_InsertColumn(hwndList, colidx++, &lvc);
ListView_InsertColumn(hwndList, num_columns++, &lvc);
}
}
// frame number column again
lvc.cx = 75;
lvc.pszText = "Frame#";
ListView_InsertColumn(hwndList, colidx++, &lvc);
ListView_InsertColumn(hwndList, num_columns++, &lvc);
// change eoptions
FCEUI_SetInputFourscore(true);
}
void TASEDIT_LIST::RemoveFourscore()
{
// remove list columns
for (int i = COLUMN_FRAMENUM2; i >= COLUMN_JOYPAD3_A; --i)
{
ListView_DeleteColumn (hwndList, i);
}
for (num_columns = COLUMN_FRAMENUM2; num_columns >= COLUMN_JOYPAD3_A; num_columns--)
ListView_DeleteColumn (hwndList, num_columns);
// change eoptions
FCEUI_SetInputFourscore(false);
}
@ -282,7 +330,10 @@ void TASEDIT_LIST::RedrawRow(int index)
{
ListView_RedrawItems(hwndList, index, index);
}
void TASEDIT_LIST::RedrawHeader()
{
InvalidateRect(hwndHeader, 0, FALSE);
}
// -------------------------------------------------------------------------
bool TASEDIT_LIST::CheckItemVisible(int frame)
@ -295,6 +346,10 @@ bool TASEDIT_LIST::CheckItemVisible(int frame)
}
void TASEDIT_LIST::FollowPlayback()
{
ListView_EnsureVisible(hwndList,currFrameCounter,FALSE);
}
void TASEDIT_LIST::FollowPlaybackIfNeeded()
{
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)
{
LVITEM& item = nmlvDispInfo->item;
@ -583,6 +651,28 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
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)
{
@ -612,6 +702,7 @@ LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
//The subclass wndproc for the listview
LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
extern TASEDIT_LIST tasedit_list;
switch(msg)
{
case WM_CHAR:
@ -619,12 +710,17 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
case WM_NOTIFY:
{
switch (((LPNMHDR)lParam)->code)
if (((LPNMHDR)lParam)->hwndFrom == tasedit_list.hwndHeader)
{
case HDN_BEGINTRACKW:
case HDN_BEGINTRACKA:
case HDN_TRACK:
return true; // no column resizing
switch (((LPNMHDR)lParam)->code)
{
case HDN_BEGINTRACKW:
case HDN_BEGINTRACKA:
case HDN_TRACK:
return true; // no column resizing
case NM_CUSTOMDRAW:
return tasedit_list.HeaderCustomDraw((NMLVCUSTOMDRAW*)lParam);
}
}
break;
}
@ -643,5 +739,3 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
}
return CallWindowProc(hwndList_oldWndProc, hWnd, msg, wParam, lParam);
}

View File

@ -9,6 +9,11 @@
#define NUM_JOYPADS 4
#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_FRAMENUM 1
#define COLUMN_JOYPAD1_A 2
@ -44,6 +49,7 @@
#define COLUMN_JOYPAD4_L 32
#define COLUMN_JOYPAD4_R 33
#define COLUMN_FRAMENUM2 34
#define DIGITS_IN_FRAMENUM 7
#define ARROW_IMAGE_ID 20
@ -82,8 +88,6 @@
#define CUR_MARKED_FRAMENUM_COLOR 0xDEF7F3
#define MARKED_UNDOHINT_FRAMENUM_COLOR 0xE1E7EC
class TASEDIT_LIST
{
public:
@ -101,17 +105,21 @@ public:
void RedrawList();
void RedrawRow(int index);
void RedrawHeader();
bool CheckItemVisible(int frame);
void FollowPlayback();
void FollowPlaybackIfNeeded();
void FollowUndo();
void FollowSelection();
void FollowPauseframe();
void SetHeaderColumnLight(int column, int level);
void GetDispInfo(NMLVDISPINFO* nmlvDispInfo);
LONG CustomDraw(NMLVCUSTOMDRAW* msg);
LONG HeaderCustomDraw(NMLVCUSTOMDRAW* msg);
HWND hwndList, hwndHeader;
@ -120,5 +128,8 @@ public:
HFONT hMainListFont, hMainListSelectFont, hMarkersFont, hMarkersEditFont;
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
#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_skipsave_id[SELECTION_ID_LEN] = "SELECTIOX";

View File

@ -858,8 +858,11 @@
</ItemGroup>
<ItemGroup>
<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_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_1.bmp" />
<None Include="..\src\drivers\win\res\te_10.bmp" />
@ -897,6 +900,7 @@
</CustomBuild>
<None Include="..\src\pputile.inc" />
<None Include="ClassDiagram1.cd" />
<None Include="res\tasedit-icon.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -1498,6 +1498,10 @@
<None Include="..\src\drivers\win\res\te_arrow.bmp">
<Filter>pix</Filter>
</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>
<CustomBuild Include="..\src\auxlib.lua" />