/* This file is part of Patchage. * Copyright (C) 2007 Dave Robillard * Copyright (C) 2008 Nedko Arnaudov * * Patchage 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. * * Patchage 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef PATCHAGE_PATCHAGE_HPP #define PATCHAGE_PATCHAGE_HPP #include #include #include #include #include "config.h" #include "Widget.hpp" #include "PatchagePort.hpp" class PatchageCanvas; class a2j_proxy; class jack_proxy; class lash_proxy; class StateManager; class project_list; class session; class Patchage { public: Patchage(int argc, char** argv); ~Patchage(); boost::shared_ptr canvas() const { return _canvas; } Gtk::Window* window() { return _main_win.get(); } StateManager* state_manager() const { return _state_manager; } void quit() { _main_win->hide(); } void connect(boost::shared_ptr p1, boost::shared_ptr p2); void disconnect(boost::shared_ptr p1, boost::shared_ptr p2); void refresh(); void clear_load(); void info_msg(const std::string& msg); void error_msg(const std::string& msg); void status_msg(const std::string& msg); void update_state(); void store_window_location(); void set_lash_availability(bool lash_active); void set_a2j_status(unsigned int status); void load_project_ask(); void load_project(const std::string& project_name); void save_all_projects(); void save_project(const std::string& project_name); void close_project(const std::string& project_name); void close_all_projects(); void on_port_added( const char * client_name, const char * port_name, PortType port_type, bool is_input, bool is_terminal); void on_port_removed( const char * client_name, const char * port_name); void on_ports_connected( const char * client1_name, const char * port1_name, const char * client2_name, const char * port2_name); void on_ports_disconnected( const char * client1_name, const char * port1_name, const char * client2_name, const char * port2_name); void clear_canvas(); bool is_canvas_empty(); protected: void connect_widgets(); void on_arrange(); void on_help_about(); void on_messages_clear(); void on_messages_close(); bool on_messages_delete(GdkEventAny*); void on_quit(); void on_show_messages(); void on_show_projects(); void on_store_positions(); void on_view_toolbar(); bool on_scroll(GdkEventScroll* ev); void zoom(double z); bool idle_callback(); void update_load(); void update_toolbar(); void jack_status_changed(bool started); void buffer_size_changed(); void get_port_jack_names( boost::shared_ptr port, std::string& jack_client_name, std::string& jack_port_name); boost::shared_ptr lookup_port( const char * jack_client_name, const char * jack_port_name); boost::shared_ptr _canvas; a2j_proxy * _a2j; jack_proxy * _jack; session * _session; lash_proxy * _lash; project_list * _project_list; StateManager * _state_manager; Gtk::Main* _gtk_main; std::string _settings_filename; float _max_dsp_load; Widget _about_win; Widget _buffer_size_combo; Widget _clear_load_but; Widget _main_scrolledwin; Widget _main_win; Widget _main_xrun_progress; Widget _main_a2j_status_label; Widget _main_lash_status_label; Widget _menu_file_quit; Widget _menu_help_about; Widget _menu_jack_start; Widget _menu_jack_stop; Widget _menu_a2j_start; Widget _menu_a2j_stop; Widget _menu_lash_activate; Widget _menu_lash_deactivate; Widget _menu_load_project; Widget _menu_save_all_projects; Widget _menu_close_all_projects; Widget _menu_store_positions; Widget _menu_view_arrange; Widget _menu_view_messages; Widget _menu_view_projects; Widget _menu_view_refresh; Widget _menu_view_toolbar; Widget _messages_clear_but; Widget _messages_close_but; Widget _messages_win; Widget _project_list_viewport; Widget _sample_rate_label; Widget _status_text; Widget _toolbar; Widget _zoom_full_but; Widget _zoom_normal_but; }; #endif // PATCHAGE_PATCHAGE_HPP