/* * Copyright (C) 2006 Sampo Savolainen * Copyright (C) 2008-2012 Paul Davis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ardour/session_handle.h" #include "fft_graph.h" #include "fft_result.h" namespace ARDOUR { class Session; } class AnalysisWindow : public Gtk::Window, public ARDOUR::SessionHandlePtr { public: AnalysisWindow (); ~AnalysisWindow (); void set_rangemode(); void set_regionmode(); void track_list_row_changed(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter); void analyze (); private: void clear_tracklist(); void source_selection_changed (Gtk::RadioButton *); void display_model_changed (Gtk::RadioButton *); void show_minmax_changed (); void show_normalized_changed (); void show_proportional_changed (); void analyze_data (Gtk::Button *); struct TrackListColumns : public Gtk::TreeModel::ColumnRecord { public: TrackListColumns () { add (trackname); add (visible); add (color); add (graph); } Gtk::TreeModelColumn trackname; Gtk::TreeModelColumn visible; Gtk::TreeModelColumn color; Gtk::TreeModelColumn graph; }; // Packing essentials Gtk::HBox hbox; Gtk::VBox vbox; // Left side Glib::RefPtr tlmodel; TrackListColumns tlcols; Gtk::TreeView track_list; Gtk::Label source_selection_label; Gtk::RadioButton source_selection_ranges_rb; Gtk::RadioButton source_selection_regions_rb; Gtk::HSeparator hseparator1; Gtk::Button refresh_button; Gtk::CheckButton show_minmax_button; Gtk::CheckButton show_normalized_button; Gtk::CheckButton show_proportional_button; // The graph FFTGraph fft_graph; bool track_list_ready; Glib::Threads::Mutex track_list_lock; friend class FFTGraph; };