#pragma once #include #include "my_slider.hpp" #include "options_window.hpp" #include class MainWindow : public Gtk::ApplicationWindow { Gtk::Button openBtn; Gtk::Button settingsBtn; OptionsWindow optionsWindow; Gtk::HeaderBar headerBar; Gtk::Box topToolbar; Gtk::Frame dropSpace; Glib::RefPtr dropTarget; Gtk::Label dropSpaceLabel; Gtk::Button pause_btn; Gtk::Button restart_btn; Gtk::Label time_label; Gtk::Scale seek_bar; Gtk::Label seek_indeterminate; Gtk::Label length_label; Gtk::Button stop_btn; Gtk::FileChooserDialog open_dialog; MySlider volume_slider; MySlider speed_slider; MySlider tempo_slider; MySlider pitch_slider; Gtk::Box top_box; Gtk::Box bottom_box; Gtk::Box main_box; bool paused; std::optional playback_file; double length; uint8_t length_component_count; std::string song_name; void update_file(optional new_file); bool update(); void set_song_loaded(bool loaded); uint16_t expected_signals = PlaybackSignalNone; void expect_signal(uint16_t signal); public: Playback *playback; bool running; bool timer_stopped; GCond *timer_stopped_condition; GMutex *timer_mutex; MainWindow(Playback *playback); ~MainWindow(); };