/* * Copyright (C) 2008-2010 Paul Davis * Copyright (C) 2009 David Robillard * Copyright (C) 2017-2018 Robin Gareus * * 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 "ardour/export_profile_manager.h" #include "ardour/session_handle.h" namespace ARDOUR { class ExportFormatSpecification; class ExportProfileManager; } class ExportFormatSelector : public Gtk::HBox, public ARDOUR::SessionHandlePtr { private: typedef std::shared_ptr FormatPtr; typedef std::list FormatList; public: ExportFormatSelector (); ~ExportFormatSelector (); void set_state (ARDOUR::ExportProfileManager::FormatStatePtr state_, ARDOUR::Session * session_); void update_format_list (); sigc::signal FormatEdited; sigc::signal FormatRemoved; sigc::signal NewFormat; sigc::signal FormatReverted; /* Compatibility with other elements */ sigc::signal CriticalSelectionChanged; private: void select_format (FormatPtr f); void add_new_format (); void remove_format (bool called_from_button = false); int open_edit_dialog (bool new_dialog = false); void update_format_combo (); void update_format_description (); ARDOUR::ExportProfileManager::FormatStatePtr state; /*** GUI components ***/ struct FormatCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn format; Gtk::TreeModelColumn label; FormatCols () { add (format); add (label); } }; FormatCols format_cols; Glib::RefPtr format_list; Gtk::ComboBox format_combo; Gtk::Button edit_button; Gtk::Button remove_button; Gtk::Button new_button; };