initial support for binding keys to action chains

This commit is contained in:
Andrzej Rybczak
2012-08-25 04:44:02 +02:00
parent 3a023e40c0
commit 55ae5b1816
6 changed files with 194 additions and 145 deletions

View File

@@ -133,142 +133,138 @@ void CreateDir(const std::string &dir)
void KeyConfiguration::GenerateBindings()
{
# define BIND(key, type, action) Bindings.insert(std::make_pair(Action::Key(key, type), Action::Get(action)))
Bind_(KEY_MOUSE, ctNCurses, aMouseEvent);
Bind_(KEY_UP, ctNCurses, aScrollUp);
Bind_(KEY_DOWN, ctNCurses, aScrollDown);
Bind_('[', ctStandard, aScrollUpAlbum);
Bind_(']', ctStandard, aScrollDownAlbum);
Bind_('{', ctStandard, aScrollUpArtist);
Bind_('}', ctStandard, aScrollDownArtist);
Bind_(KEY_PPAGE, ctNCurses, aPageUp);
Bind_(KEY_NPAGE, ctNCurses, aPageDown);
Bind_(KEY_HOME, ctNCurses, aMoveHome);
Bind_(KEY_END, ctNCurses, aMoveEnd);
Bind_(KEY_SPACE, ctStandard, aPressSpace);
Bind_(KEY_ENTER, ctStandard, aPressEnter);
Bind_(KEY_DC, ctNCurses, aDelete);
Bind_(KEY_RIGHT, ctNCurses, aNextColumn);
Bind_(KEY_RIGHT, ctNCurses, aSlaveScreen);
Bind_(KEY_RIGHT, ctNCurses, aVolumeUp);
Bind_(KEY_LEFT, ctNCurses, aPreviousColumn);
Bind_(KEY_LEFT, ctNCurses, aMasterScreen);
Bind_(KEY_LEFT, ctNCurses, aVolumeDown);
Bind_(KEY_TAB, ctStandard, aNextScreen);
Bind_(KEY_SHIFT_TAB, ctNCurses, aPreviousScreen);
Bind_('1', ctStandard, aShowHelp);
Bind_('2', ctStandard, aShowPlaylist);
Bind_('3', ctStandard, aShowBrowser);
Bind_('4', ctStandard, aShowSearchEngine);
Bind_('5', ctStandard, aShowMediaLibrary);
Bind_('6', ctStandard, aShowPlaylistEditor);
Bind_('7', ctStandard, aShowTagEditor);
Bind_('8', ctStandard, aShowOutputs);
Bind_('9', ctStandard, aShowVisualizer);
Bind_('0', ctStandard, aShowClock);
Bind_('@', ctStandard, aShowServerInfo);
Bind_('s', ctStandard, aStop);
Bind_('P', ctStandard, aPause);
Bind_('>', ctStandard, aNextSong);
Bind_('<', ctStandard, aPreviousSong);
Bind_(KEY_CTRL_H, ctStandard, aJumpToParentDir);
Bind_(KEY_CTRL_H, ctStandard, aReplaySong);
Bind_(KEY_BACKSPACE, ctNCurses, aJumpToParentDir);
Bind_(KEY_BACKSPACE, ctNCurses, aReplaySong);
Bind_(KEY_BACKSPACE_2, ctStandard, aJumpToParentDir);
Bind_(KEY_BACKSPACE_2, ctStandard, aReplaySong);
Bind_('f', ctStandard, aSeekForward);
Bind_('b', ctStandard, aSeekBackward);
Bind_('r', ctStandard, aToggleRepeat);
Bind_('z', ctStandard, aToggleRandom);
Bind_('y', ctStandard, aSaveTagChanges);
Bind_('y', ctStandard, aStartSearching);
Bind_('y', ctStandard, aToggleSingle);
Bind_('R', ctStandard, aToggleConsume);
Bind_('Y', ctStandard, aToggleReplayGainMode);
Bind_('t', ctStandard, aToggleSpaceMode);
Bind_('T', ctStandard, aToggleAddMode);
Bind_('|', ctStandard, aToggleMouse);
Bind_('#', ctStandard, aToggleBitrateVisibility);
Bind_('Z', ctStandard, aShuffle);
Bind_('x', ctStandard, aToggleCrossfade);
Bind_('X', ctStandard, aSetCrossfade);
Bind_('u', ctStandard, aUpdateDatabase);
Bind_(KEY_CTRL_V, ctStandard, aSortPlaylist);
Bind_(KEY_CTRL_R, ctStandard, aReversePlaylist);
Bind_(KEY_CTRL_F, ctStandard, aApplyFilter);
Bind_(KEY_CTRL_G, ctStandard, aDisableFilter);
Bind_('/', ctStandard, aFind);
Bind_('/', ctStandard, aFindItemForward);
Bind_('?', ctStandard, aFind);
Bind_('?', ctStandard, aFindItemBackward);
Bind_('.', ctStandard, aNextFoundItem);
Bind_(',', ctStandard, aPreviousFoundItem);
Bind_('w', ctStandard, aToggleFindMode);
Bind_('e', ctStandard, aEditSong);
Bind_('e', ctStandard, aEditLibraryTag);
Bind_('e', ctStandard, aEditLibraryAlbum);
Bind_('e', ctStandard, aEditDirectoryName);
Bind_('e', ctStandard, aEditPlaylistName);
Bind_('e', ctStandard, aEditLyrics);
Bind_('i', ctStandard, aShowSongInfo);
Bind_('I', ctStandard, aShowArtistInfo);
Bind_('g', ctStandard, aJumpToPositionInSong);
Bind_('l', ctStandard, aShowLyrics);
Bind_('v', ctStandard, aReverseSelection);
Bind_('V', ctStandard, aDeselectItems);
Bind_('B', ctStandard, aSelectAlbum);
Bind_('a', ctStandard, aAddSelectedItems);
Bind_('c', ctStandard, aClearPlaylist);
Bind_('c', ctStandard, aClearMainPlaylist);
Bind_('C', ctStandard, aCropPlaylist);
Bind_('C', ctStandard, aCropMainPlaylist);
Bind_('m', ctStandard, aMoveSortOrderUp);
Bind_('m', ctStandard, aMoveSelectedItemsUp);
Bind_('n', ctStandard, aMoveSortOrderDown);
Bind_('n', ctStandard, aMoveSelectedItemsDown);
Bind_('M', ctStandard, aMoveSelectedItemsTo);
Bind_('A', ctStandard, aAdd);
Bind_('S', ctStandard, aSavePlaylist);
Bind_('o', ctStandard, aJumpToPlayingSong);
Bind_('G', ctStandard, aJumpToBrowser);
Bind_('G', ctStandard, aJumpToPlaylistEditor);
Bind_('~', ctStandard, aJumpToMediaLibrary);
Bind_('E', ctStandard, aJumpToTagEditor);
Bind_('U', ctStandard, aToggleAutoCenter);
Bind_('p', ctStandard, aToggleDisplayMode);
Bind_('\\', ctStandard, aToggleInterface);
Bind_('!', ctStandard, aToggleSeparatorsInPlaylist);
Bind_('L', ctStandard, aToggleLyricsFetcher);
Bind_('F', ctStandard, aToggleFetchingLyricsInBackground);
Bind_(KEY_CTRL_L, ctStandard, aToggleScreenLock);
Bind_('`', ctStandard, aToggleBrowserSortMode);
Bind_('`', ctStandard, aToggleLibraryTagType);
Bind_('`', ctStandard, aRefetchLyrics);
Bind_('`', ctStandard, aRefetchArtistInfo);
Bind_('`', ctStandard, aAddRandomItems);
Bind_(KEY_CTRL_P, ctStandard, aSetSelectedItemsPriority);
Bind_('q', ctStandard, aQuit);
BIND(KEY_MOUSE, ctNCurses, aMouseEvent);
BIND(KEY_UP, ctNCurses, aScrollUp);
BIND(KEY_DOWN, ctNCurses, aScrollDown);
BIND('[', ctStandard, aScrollUpAlbum);
BIND(']', ctStandard, aScrollDownAlbum);
BIND('{', ctStandard, aScrollUpArtist);
BIND('}', ctStandard, aScrollDownArtist);
BIND(KEY_PPAGE, ctNCurses, aPageUp);
BIND(KEY_NPAGE, ctNCurses, aPageDown);
BIND(KEY_HOME, ctNCurses, aMoveHome);
BIND(KEY_END, ctNCurses, aMoveEnd);
BIND(KEY_SPACE, ctStandard, aPressSpace);
BIND(KEY_ENTER, ctStandard, aPressEnter);
BIND(KEY_DC, ctNCurses, aDelete);
BIND(KEY_RIGHT, ctNCurses, aNextColumn);
BIND(KEY_RIGHT, ctNCurses, aSlaveScreen);
BIND(KEY_RIGHT, ctNCurses, aVolumeUp);
BIND(KEY_LEFT, ctNCurses, aPreviousColumn);
BIND(KEY_LEFT, ctNCurses, aMasterScreen);
BIND(KEY_LEFT, ctNCurses, aVolumeDown);
BIND(KEY_TAB, ctStandard, aNextScreen);
BIND(KEY_SHIFT_TAB, ctNCurses, aPreviousScreen);
BIND('1', ctStandard, aShowHelp);
BIND('2', ctStandard, aShowPlaylist);
BIND('3', ctStandard, aShowBrowser);
BIND('4', ctStandard, aShowSearchEngine);
BIND('5', ctStandard, aShowMediaLibrary);
BIND('6', ctStandard, aShowPlaylistEditor);
BIND('7', ctStandard, aShowTagEditor);
BIND('8', ctStandard, aShowOutputs);
BIND('9', ctStandard, aShowVisualizer);
BIND('0', ctStandard, aShowClock);
BIND('@', ctStandard, aShowServerInfo);
BIND('s', ctStandard, aStop);
BIND('P', ctStandard, aPause);
BIND('>', ctStandard, aNextSong);
BIND('<', ctStandard, aPreviousSong);
BIND(KEY_CTRL_H, ctStandard, aJumpToParentDir);
BIND(KEY_CTRL_H, ctStandard, aReplaySong);
BIND(KEY_BACKSPACE, ctNCurses, aJumpToParentDir);
BIND(KEY_BACKSPACE, ctNCurses, aReplaySong);
BIND(KEY_BACKSPACE_2, ctStandard, aJumpToParentDir);
BIND(KEY_BACKSPACE_2, ctStandard, aReplaySong);
BIND('f', ctStandard, aSeekForward);
BIND('b', ctStandard, aSeekBackward);
BIND('r', ctStandard, aToggleRepeat);
BIND('z', ctStandard, aToggleRandom);
BIND('y', ctStandard, aSaveTagChanges);
BIND('y', ctStandard, aStartSearching);
BIND('y', ctStandard, aToggleSingle);
BIND('R', ctStandard, aToggleConsume);
BIND('Y', ctStandard, aToggleReplayGainMode);
BIND('t', ctStandard, aToggleSpaceMode);
BIND('T', ctStandard, aToggleAddMode);
BIND('|', ctStandard, aToggleMouse);
BIND('#', ctStandard, aToggleBitrateVisibility);
BIND('Z', ctStandard, aShuffle);
BIND('x', ctStandard, aToggleCrossfade);
BIND('X', ctStandard, aSetCrossfade);
BIND('u', ctStandard, aUpdateDatabase);
BIND(KEY_CTRL_V, ctStandard, aSortPlaylist);
BIND(KEY_CTRL_R, ctStandard, aReversePlaylist);
BIND(KEY_CTRL_F, ctStandard, aApplyFilter);
BIND(KEY_CTRL_G, ctStandard, aDisableFilter);
BIND('/', ctStandard, aFind);
BIND('/', ctStandard, aFindItemForward);
BIND('?', ctStandard, aFind);
BIND('?', ctStandard, aFindItemBackward);
BIND('.', ctStandard, aNextFoundItem);
BIND(',', ctStandard, aPreviousFoundItem);
BIND('w', ctStandard, aToggleFindMode);
BIND('e', ctStandard, aEditSong);
BIND('e', ctStandard, aEditLibraryTag);
BIND('e', ctStandard, aEditLibraryAlbum);
BIND('e', ctStandard, aEditDirectoryName);
BIND('e', ctStandard, aEditPlaylistName);
BIND('e', ctStandard, aEditLyrics);
BIND('i', ctStandard, aShowSongInfo);
BIND('I', ctStandard, aShowArtistInfo);
BIND('g', ctStandard, aJumpToPositionInSong);
BIND('l', ctStandard, aShowLyrics);
BIND('v', ctStandard, aReverseSelection);
BIND('V', ctStandard, aDeselectItems);
BIND('B', ctStandard, aSelectAlbum);
BIND('a', ctStandard, aAddSelectedItems);
BIND('c', ctStandard, aClearPlaylist);
BIND('c', ctStandard, aClearMainPlaylist);
BIND('C', ctStandard, aCropPlaylist);
BIND('C', ctStandard, aCropMainPlaylist);
BIND('m', ctStandard, aMoveSortOrderUp);
BIND('m', ctStandard, aMoveSelectedItemsUp);
BIND('n', ctStandard, aMoveSortOrderDown);
BIND('n', ctStandard, aMoveSelectedItemsDown);
BIND('M', ctStandard, aMoveSelectedItemsTo);
BIND('A', ctStandard, aAdd);
BIND('S', ctStandard, aSavePlaylist);
BIND('o', ctStandard, aJumpToPlayingSong);
BIND('G', ctStandard, aJumpToBrowser);
BIND('G', ctStandard, aJumpToPlaylistEditor);
BIND('~', ctStandard, aJumpToMediaLibrary);
BIND('E', ctStandard, aJumpToTagEditor);
BIND('U', ctStandard, aToggleAutoCenter);
BIND('p', ctStandard, aToggleDisplayMode);
BIND('\\', ctStandard, aToggleInterface);
BIND('!', ctStandard, aToggleSeparatorsInPlaylist);
BIND('L', ctStandard, aToggleLyricsFetcher);
BIND('F', ctStandard, aToggleFetchingLyricsInBackground);
BIND(KEY_CTRL_L, ctStandard, aToggleScreenLock);
BIND('`', ctStandard, aToggleBrowserSortMode);
BIND('`', ctStandard, aToggleLibraryTagType);
BIND('`', ctStandard, aRefetchLyrics);
BIND('`', ctStandard, aRefetchArtistInfo);
BIND('`', ctStandard, aAddRandomItems);
BIND(KEY_CTRL_P, ctStandard, aSetSelectedItemsPriority);
BIND('q', ctStandard, aQuit);
BIND('k', ctStandard, aScrollUp);
BIND('j', ctStandard, aScrollDown);
BIND('d', ctStandard, aDelete);
BIND('+', ctStandard, aVolumeUp);
BIND('-', ctStandard, aVolumeDown);
BIND(KEY_F1, ctNCurses, aShowHelp);
BIND(KEY_F2, ctNCurses, aShowPlaylist);
BIND(KEY_F3, ctNCurses, aShowBrowser);
BIND(KEY_F4, ctNCurses, aShowSearchEngine);
BIND(KEY_F5, ctNCurses, aShowMediaLibrary);
BIND(KEY_F6, ctNCurses, aShowPlaylistEditor);
BIND(KEY_F7, ctNCurses, aShowTagEditor);
BIND(KEY_F8, ctNCurses, aShowOutputs);
BIND(KEY_F9, ctNCurses, aShowVisualizer);
BIND(KEY_F10, ctNCurses, aShowClock);
BIND('Q', ctStandard, aQuit);
# undef BIND
Bind_('k', ctStandard, aScrollUp);
Bind_('j', ctStandard, aScrollDown);
Bind_('d', ctStandard, aDelete);
Bind_('+', ctStandard, aVolumeUp);
Bind_('-', ctStandard, aVolumeDown);
Bind_(KEY_F1, ctNCurses, aShowHelp);
Bind_(KEY_F2, ctNCurses, aShowPlaylist);
Bind_(KEY_F3, ctNCurses, aShowBrowser);
Bind_(KEY_F4, ctNCurses, aShowSearchEngine);
Bind_(KEY_F5, ctNCurses, aShowMediaLibrary);
Bind_(KEY_F6, ctNCurses, aShowPlaylistEditor);
Bind_(KEY_F7, ctNCurses, aShowTagEditor);
Bind_(KEY_F8, ctNCurses, aShowOutputs);
Bind_(KEY_F9, ctNCurses, aShowVisualizer);
Bind_(KEY_F10, ctNCurses, aShowClock);
Bind_('Q', ctStandard, aQuit);
}
void Configuration::SetDefaults()