#pragma once #include #include "my_slider.hpp" #include "options_window.hpp" #include "theme.hpp" #include "about_window.hpp" #include class MainWindow : public Gtk::ApplicationWindow { Gtk::Button openBtn; Gtk::MenuButton menuBtn; Gtk::PopoverMenu menuPopover; Glib::RefPtr main_menu; Glib::RefPtr options_menu; OptionsWindow optionsWindow; AboutWindow aboutWindow; Gtk::HeaderBar headerBar; Gtk::Frame dropSpace; Gtk::Box titleBox; Gtk::Label titleLabel; Gtk::Label subTitleLabel; void set_subtitle(std::optional subtitle = {}); 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; void update_dark_mode(); Gtk::Box top_box; Gtk::Box bottom_box; Gtk::Box controls_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, Glib::RefPtr app); ~MainWindow(); };