13
0
livetrax/gtk2_ardour/new_session_dialog.h
Sampo Savolainen 3220684ade New session dialog fixups:
- The name specified on the command line for the new
   session comes up in the dialog
 - The editor will not appear below the NSD at startup

Command line parameter fixups:
 - You can't specify both a new session and a old
   session to load at the same time.
 - Ardour will abort if command line parameters are
   incorrect

Declick faster. Fixes audible and annoying volume ramps 
when running ardour at large buffer sizes.

Make it impossible to arm tracks which have un-connected
inputs.




git-svn-id: svn://localhost/ardour2/trunk@765 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-08 21:27:41 +00:00

191 lines
5.1 KiB
C++

/*
Copyright (C) 2005 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.
$Id$
*/
// -*- c++ -*-
#ifndef NEW_SESSION_DIALOG_H
#define NEW_SESSION_DIALOG_H
#include <string>
#include <gtkmm/treeview.h>
#include <gtkmm/treestore.h>
#include <gtkmm/treepath.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/notebook.h>
#include <gtkmm/table.h>
#include <gtkmm/alignment.h>
#include <gtkmm/frame.h>
#include <gtkmm/expander.h>
#include <ardour/utils.h>
#include <glibmm/refptr.h>
#include "ardour_dialog.h"
namespace Gtk {
class Entry;
class FileChooserButton;
class SpinButton;
class CheckButton;
class RadioButton;
class TreeView;
class Notebook;
}
class NewSessionDialog : public ArdourDialog
{
public:
NewSessionDialog();
void set_session_name(const Glib::ustring& name);
std::string session_name() const;
std::string session_folder() const;
bool use_session_template() const;
std::string session_template_name() const;
// advanced.
bool create_master_bus() const;
int master_channel_count() const;
bool create_control_bus() const;
int control_channel_count() const;
bool connect_inputs() const;
bool limit_inputs_used_for_connection() const;
int input_limit_count() const;
bool connect_outputs() const;
bool limit_outputs_used_for_connection() const;
int output_limit_count() const;
bool connect_outs_to_master() const;
bool connect_outs_to_physical() const ;
int get_current_page();
void reset_recent();
// reset everything to default values.
void reset();
protected:
void reset_name();
void reset_template();
Gtk::Label * session_name_label;
Gtk::Label * session_location_label;
Gtk::Label * session_template_label;
Gtk::Label * chan_count_label;
Gtk::Table * advanced_table;
Gtk::HBox * input_port_limit_hbox;
Gtk::VBox * input_port_vbox;
Gtk::Table * input_table;
Gtk::Alignment * input_port_alignment;
Gtk::Label * input_label;
Gtk::Frame * input_frame;
Gtk::HBox * output_port_limit_hbox;
Gtk::VBox * output_port_vbox;
Gtk::VBox * output_conn_vbox;
Gtk::VBox * output_vbox;
Gtk::Alignment * output_port_alignment;
Gtk::Label * output_label;
Gtk::Frame * output_frame;
Gtk::VBox * advanced_vbox;
Gtk::Label * advanced_label;
Gtk::Expander * advanced_expander;
Gtk::Table * new_session_table;
Gtk::HBox * open_session_hbox;
Gtk::ScrolledWindow * recent_scrolledwindow;
Gtk::Alignment * recent_alignment;
Gtk::Label * recent_sesion_label;
Gtk::Frame * recent_frame;
Gtk::VBox * open_session_vbox;
Gtk::Entry* m_name;
Gtk::FileChooserButton* m_folder;
Gtk::FileChooserButton* m_template;
Gtk::Label * open_session_file_label;
Gtk::CheckButton* m_create_master_bus;
Gtk::SpinButton* m_master_bus_channel_count;
Gtk::CheckButton* m_create_control_bus;
Gtk::SpinButton* m_control_bus_channel_count;
Gtk::CheckButton* m_connect_inputs;
Gtk::CheckButton* m_limit_input_ports;
Gtk::SpinButton* m_input_limit_count;
Gtk::CheckButton* m_connect_outputs;
Gtk::CheckButton* m_limit_output_ports;
Gtk::SpinButton* m_output_limit_count;
Gtk::RadioButton* m_connect_outputs_to_master;
Gtk::RadioButton* m_connect_outputs_to_physical;
Gtk::Button* m_okbutton;
Gtk::FileChooserButton* m_open_filechooser;
Gtk::TreeView* m_treeview;
Gtk::Notebook* m_notebook;
private:
struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord {
RecentSessionModelColumns() {
add (visible_name);
add (fullpath);
}
Gtk::TreeModelColumn<std::string> visible_name;
Gtk::TreeModelColumn<std::string> fullpath;
};
RecentSessionModelColumns recent_columns;
Glib::RefPtr<Gtk::TreeStore> recent_model;
void recent_session_selection_changed ();
void nsd_redisplay_recent_sessions();
void nsd_recent_session_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col);
struct RecentSessionsSorter {
bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
return cmp_nocase(a.first, b.first) == -1;
}
};
bool entry_key_release (GdkEventKey*);
void notebook_page_changed (GtkNotebookPage*, uint);
void treeview_selection_changed ();
void file_chosen ();
void template_chosen ();
void recent_row_activated (const Gtk::TreePath&, Gtk::TreeViewColumn*);
void connect_inputs_clicked ();
void connect_outputs_clicked ();
void limit_inputs_clicked ();
void limit_outputs_clicked ();
void master_bus_button_clicked ();
void monitor_bus_button_clicked ();
bool on_new_session_page;
};
#endif // NEW_SESSION_DIALOG_H