#pragma once #include #include #include "theme.hpp" class MySlider : public Gtk::Box { double value; double max_value; double min_value; struct { double xmin; double xmax; double x0; double x1; double a; double b; } log_data; bool logarithmic = false; bool text_valid = true; bool text_editing; Gtk::Button edit_btn; Gtk::Entry text_entry; Gtk::Scale slider; Gtk::Label prefix_label; Gtk::Label value_label; Gtk::Label suffix_label; bool update_occurring = false; void update(bool force = false); void update_text_entry(std::string text); void update_slider(double value); Glib::ustring prefix; Glib::ustring suffix; unsigned digits_after_decimal; void update_log_data(); double scale_log(double input); double unscale_log(double input); public: double get_value(); void set_value(double value, bool force = false); sigc::signal value_changed; bool get_logarithmic(); void set_logarithmic(bool value = true); double get_max_value(); void set_max_value(double value); double get_min_value(); void set_min_value(double value); Glib::ustring get_prefix(); void set_prefix(Glib::ustring value); Glib::ustring get_suffix(); void set_suffix(Glib::ustring value); unsigned get_digits_after_decimal(); void set_digits_after_decimal(unsigned value); MySlider(); };