yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
song_browser_view.h
Go to the documentation of this file.
1#ifndef YAZE_EDITOR_MUSIC_SONG_BROWSER_VIEW_H
2#define YAZE_EDITOR_MUSIC_SONG_BROWSER_VIEW_H
3
4#include <functional>
5#include <string>
6#include <vector>
7
9
10namespace yaze {
11namespace editor {
12namespace music {
13
14using namespace yaze::zelda3::music;
15
20 public:
21 SongBrowserView() = default;
22 ~SongBrowserView() = default;
23
28 void Draw(MusicBank& bank);
29
33 void SetOnSongSelected(std::function<void(int)> callback) {
34 on_song_selected_ = callback;
35 }
36
40 void SetOnEditCallback(std::function<void()> callback) {
41 on_edit_ = callback;
42 }
43 void SetOnEdit(std::function<void()> callback) { on_edit_ = callback; }
44
48 void SetOnOpenTracker(std::function<void(int)> callback) {
49 on_open_tracker_ = callback;
50 }
51
55 void SetOnOpenPianoRoll(std::function<void(int)> callback) {
56 on_open_piano_roll_ = callback;
57 }
58
62 void SetOnExportAsm(std::function<void(int)> callback) {
63 on_export_asm_ = callback;
64 }
65
69 void SetOnImportAsm(std::function<void(int)> callback) {
70 on_import_asm_ = callback;
71 }
72
74 void SetSelectedSongIndex(int index) { selected_song_index_ = index; }
75
76 private:
77 void DrawCustomSection(MusicBank& bank, int current_index);
78 void DrawSongItem(MusicBank& bank, int index, bool is_selected,
79 bool is_custom);
80 void HandleContextMenu(MusicBank& bank, int index, bool is_custom);
81
82 // Search
83 char search_buffer_[64] = "";
85 std::vector<int> filtered_vanilla_indices_;
86 std::vector<int> filtered_custom_indices_;
87
88 bool MatchesSearch(const std::string& name) const;
89 void RebuildFilterCache(const MusicBank& bank);
90
91 // Callbacks
92 std::function<void(int)> on_song_selected_;
93 std::function<void(int)> on_open_tracker_;
94 std::function<void(int)> on_open_piano_roll_;
95 std::function<void(int)> on_export_asm_;
96 std::function<void(int)> on_import_asm_;
97 std::function<void()> on_edit_;
98
99 // State
102 bool rename_popup_open_ = false;
103 char rename_buffer_[128] = "";
104};
105
106} // namespace music
107} // namespace editor
108} // namespace yaze
109
110#endif // YAZE_EDITOR_MUSIC_SONG_BROWSER_VIEW_H
UI component for browsing and managing songs.
std::function< void(int)> on_open_piano_roll_
void SetOnOpenTracker(std::function< void(int)> callback)
Set callback for opening tracker on a song.
std::function< void(int)> on_song_selected_
std::function< void(int)> on_export_asm_
bool MatchesSearch(const std::string &name) const
void SetOnEdit(std::function< void()> callback)
void DrawSongItem(MusicBank &bank, int index, bool is_selected, bool is_custom)
void SetOnEditCallback(std::function< void()> callback)
Set callback for when edits occur (e.g. renaming).
std::function< void(int)> on_open_tracker_
void RebuildFilterCache(const MusicBank &bank)
void Draw(MusicBank &bank)
Draw the song browser.
std::function< void(int)> on_import_asm_
void SetOnSongSelected(std::function< void(int)> callback)
Set callback for when a song is selected.
void DrawCustomSection(MusicBank &bank, int current_index)
void SetOnExportAsm(std::function< void(int)> callback)
Set callback for exporting a song to ASM.
void SetOnOpenPianoRoll(std::function< void(int)> callback)
Set callback for opening piano roll on a song.
void HandleContextMenu(MusicBank &bank, int index, bool is_custom)
void SetOnImportAsm(std::function< void(int)> callback)
Set callback for importing ASM to a song.
Manages the collection of songs, instruments, and samples from a ROM.
Definition music_bank.h:27
Contains classes and functions for handling music data in Zelda 3.