/* Copyright (C) 2010-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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include #include namespace Gtk { class CellRendererCombo; } class MackieControlProtocol; #include "button.h" #include "i18n.h" class MackieControlProtocolGUI : public Gtk::Notebook { public: MackieControlProtocolGUI (MackieControlProtocol &); private: MackieControlProtocol& _cp; Gtk::ComboBoxText _surface_combo; Gtk::ComboBoxText _profile_combo; struct AvailableActionColumns : public Gtk::TreeModel::ColumnRecord { AvailableActionColumns() { add (name); add (path); } Gtk::TreeModelColumn name; Gtk::TreeModelColumn path; }; struct FunctionKeyColumns : public Gtk::TreeModel::ColumnRecord { FunctionKeyColumns() { add (name); add (id); add (plain); add (shift); add (control); add (option); add (cmdalt); add (shiftcontrol); }; Gtk::TreeModelColumn name; Gtk::TreeModelColumn id; Gtk::TreeModelColumn plain; Gtk::TreeModelColumn shift; Gtk::TreeModelColumn control; Gtk::TreeModelColumn option; Gtk::TreeModelColumn cmdalt; Gtk::TreeModelColumn shiftcontrol; }; AvailableActionColumns available_action_columns; FunctionKeyColumns function_key_columns; Gtk::ScrolledWindow function_key_scroller; Gtk::TreeView function_key_editor; Glib::RefPtr function_key_model; Glib::RefPtr available_action_model; void build_available_action_menu (); void refresh_function_key_editor (); void build_function_key_editor (); void action_changed (const Glib::ustring &sPath, const Glib::ustring &text, Gtk::TreeModelColumnBase); Gtk::CellRendererCombo* make_action_renderer (Glib::RefPtr model, Gtk::TreeModelColumnBase); void surface_combo_changed (); void profile_combo_changed (); std::map action_map; // map from action names to paths };