looper/backends/ui/gtk/main_window.hpp

48 lines
No EOL
1.3 KiB
C++

#pragma once
#include <gtkmm.h>
#include "my_slider.hpp"
#include "options_window.hpp"
#include <playback.h>
class MainWindow : public Gtk::ApplicationWindow {
Gtk::Button openBtn;
Gtk::Button settingsBtn;
OptionsWindow optionsWindow;
Gtk::HeaderBar headerBar;
Gtk::Box topToolbar;
Gtk::Frame dropSpace;
Glib::RefPtr<Gtk::DropTarget> 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<std::string> playback_file;
double length;
uint8_t length_component_count;
std::string song_name;
void update_file(optional<std::string> 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();
};