~ubuntu-branches/ubuntu/utopic/ardour3/utopic

« back to all changes in this revision

Viewing changes to gtk2_ardour/bundle_manager.h

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2013-09-21 19:05:02 UTC
  • Revision ID: package-import@ubuntu.com-20130921190502-8gsftrku6jnzhd7v
Tags: upstream-3.4~dfsg
ImportĀ upstreamĀ versionĀ 3.4~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    Copyright (C) 2007 Paul Davis
 
3
 
 
4
    This program is free software; you can redistribute it and/or modify
 
5
    it under the terms of the GNU General Public License as published by
 
6
    the Free Software Foundation; either version 2 of the License, or
 
7
    (at your option) any later version.
 
8
 
 
9
    This program is distributed in the hope that it will be useful,
 
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
    GNU General Public License for more details.
 
13
 
 
14
    You should have received a copy of the GNU General Public License
 
15
    along with this program; if not, write to the Free Software
 
16
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
17
 
 
18
*/
 
19
 
 
20
#ifndef __ardour_ui_bundle_manager_h__
 
21
#define __ardour_ui_bundle_manager_h__
 
22
 
 
23
#include <gtkmm/entry.h>
 
24
#include <gtkmm/liststore.h>
 
25
#include <gtkmm/treeview.h>
 
26
 
 
27
#include "ardour/user_bundle.h"
 
28
 
 
29
#include "ardour_dialog.h"
 
30
#include "port_matrix.h"
 
31
 
 
32
namespace ARDOUR {
 
33
        class Session;
 
34
        class Bundle;
 
35
}
 
36
 
 
37
class BundleEditorMatrix : public PortMatrix
 
38
{
 
39
  public:
 
40
        BundleEditorMatrix (Gtk::Window *, ARDOUR::Session *, boost::shared_ptr<ARDOUR::Bundle>);
 
41
 
 
42
        void set_state (ARDOUR::BundleChannel c[2], bool s);
 
43
        PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const;
 
44
 
 
45
        bool can_add_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
 
46
 
 
47
        void add_channel (boost::shared_ptr<ARDOUR::Bundle>, ARDOUR::DataType);
 
48
        bool can_remove_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
 
49
        void remove_channel (ARDOUR::BundleChannel);
 
50
        bool can_rename_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
 
51
        void rename_channel (ARDOUR::BundleChannel);
 
52
        void setup_ports (int);
 
53
        bool list_is_global (int) const;
 
54
 
 
55
        std::string disassociation_verb () const;
 
56
 
 
57
  private:
 
58
        enum {
 
59
                OTHER = 0,
 
60
                OURS = 1
 
61
        };
 
62
 
 
63
        boost::shared_ptr<PortGroup> _port_group;
 
64
        boost::shared_ptr<ARDOUR::Bundle> _bundle;
 
65
};
 
66
 
 
67
class BundleEditor : public ArdourDialog
 
68
{
 
69
  public:
 
70
        BundleEditor (ARDOUR::Session *, boost::shared_ptr<ARDOUR::UserBundle>);
 
71
 
 
72
  protected:
 
73
        void on_map ();
 
74
 
 
75
  private:
 
76
        void name_changed ();
 
77
        void input_or_output_changed ();
 
78
        void on_show ();
 
79
 
 
80
        BundleEditorMatrix _matrix;
 
81
        boost::shared_ptr<ARDOUR::UserBundle> _bundle;
 
82
        Gtk::Entry _name;
 
83
        Gtk::ComboBoxText _input_or_output;
 
84
};
 
85
 
 
86
class BundleManager : public ArdourDialog
 
87
{
 
88
  public:
 
89
        BundleManager (ARDOUR::Session *);
 
90
 
 
91
  private:
 
92
 
 
93
        void new_clicked ();
 
94
        void edit_clicked ();
 
95
        void delete_clicked ();
 
96
        void add_bundle (boost::shared_ptr<ARDOUR::Bundle>);
 
97
        void bundle_changed (ARDOUR::Bundle::Change, boost::shared_ptr<ARDOUR::UserBundle>);
 
98
        void set_button_sensitivity ();
 
99
        void row_activated (Gtk::TreeModel::Path const & p, Gtk::TreeViewColumn* c);
 
100
 
 
101
        class ModelColumns : public Gtk::TreeModelColumnRecord
 
102
        {
 
103
        public:
 
104
                ModelColumns () {
 
105
                        add (name);
 
106
                        add (bundle);
 
107
                }
 
108
 
 
109
                Gtk::TreeModelColumn<std::string> name;
 
110
                Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::UserBundle> > bundle;
 
111
        };
 
112
 
 
113
        Gtk::TreeView _tree_view;
 
114
        Glib::RefPtr<Gtk::ListStore> _list_model;
 
115
        ModelColumns _list_model_columns;
 
116
        Gtk::Button edit_button;
 
117
        Gtk::Button delete_button;
 
118
        PBD::ScopedConnectionList bundle_connections;
 
119
};
 
120
 
 
121
class NameChannelDialog : public ArdourDialog
 
122
{
 
123
public:
 
124
        NameChannelDialog ();
 
125
        NameChannelDialog (boost::shared_ptr<ARDOUR::Bundle>, uint32_t);
 
126
 
 
127
        std::string get_name () const;
 
128
 
 
129
private:
 
130
 
 
131
        void setup ();
 
132
 
 
133
        boost::shared_ptr<ARDOUR::Bundle> _bundle;
 
134
        uint32_t _channel;
 
135
        Gtk::Entry _name;
 
136
        bool _adding;
 
137
};
 
138
 
 
139
#endif