summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2005-10-05 13:48:09 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2005-10-05 13:48:09 +0000
commit60f817b0d2411947c257ecbf0b0376589ea77acd (patch)
tree62d26d36bde53e99fa3e68926dd9176a68b1e14f /gtk2_ardour/mixer_ui.cc
parentf5091b8db024c3499c72cac8694cde678e8f73bb (diff)
2 cleanup patches from nickm, plus work on mixer_ui.cc so that it compiles
git-svn-id: svn://localhost/trunk/ardour2@47 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc184
1 files changed, 79 insertions, 105 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 2d25126757..1c711a5e41 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -36,7 +36,6 @@
#include "mixer_strip.h"
#include "plugin_selector.h"
#include "ardour_ui.h"
-#include "check_mark.h"
#include "prompter.h"
#include "utils.h"
#include "gui_thread.h"
@@ -133,13 +132,13 @@ Mixer_UI::Mixer_UI (AudioEngine& eng)
list_hpane.add1(list_vpacker);
list_hpane.add2(global_hpacker);
- rhs_pane1.size_allocate.connect_after (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&rhs_pane1)));
- rhs_pane2.size_allocate.connect_after (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&rhs_pane2)));
- list_hpane.size_allocate.connect_after (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&list_hpane)));
-
+ rhs_pane1.signal_size_allocate().connect (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
+ static_cast<Gtk::Paned*> (&rhs_pane1)));
+ rhs_pane2.signal_size_allocate().connect (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
+ static_cast<Gtk::Paned*> (&rhs_pane2)));
+ list_hpane.signal_size_allocate().connect (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler),
+ static_cast<Gtk::Paned*> (&list_hpane)));
+
rhs_pane1.set_data ("collapse-direction", (gpointer) 0);
rhs_pane2.set_data ("collapse-direction", (gpointer) 0);
@@ -156,24 +155,24 @@ Mixer_UI::Mixer_UI (AudioEngine& eng)
set_title (_("ardour: mixer"));
set_wmclass (_("ardour_mixer"), "Ardour");
- delete_event.connect (bind (ptr_fun (just_hide_it), static_cast<Gtk::Window *>(this)));
+ signal_delete_event().connect (bind (ptr_fun (just_hide_it), static_cast<Gtk::Window *>(this)));
add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
track_display.get_selection()->signal_changed().connect (mem_fun(*this, &Mixer_UI::track_display_selection_changed));
- track_display_model.signal_rows_reordered().connect (mem_fun (*this, &Mixer_UI::track_display_reordered));
- track_display.signal_button_press_event().connect_notify (mem_fun (*this, &Mixer_UI::track_display_button_press));
+ track_display_model->signal_rows_reordered().connect (mem_fun (*this, &Mixer_UI::track_display_reordered_proxy));
+ track_display.signal_button_press_event().connect (mem_fun (*this, &Mixer_UI::track_display_button_press));
- group_display.signal_button_press_event().connect_notify (mem_fun (*this, &Mixer_UI::group_display_button_press));
+ group_display.signal_button_press_event().connect (mem_fun (*this, &Mixer_UI::group_display_button_press));
group_display.get_selection()->signal_changed().connect (mem_fun (*this, &Mixer_UI::group_display_selection_changed));
snapshot_display.get_selection()->signal_changed().connect (mem_fun(*this, &Mixer_UI::snapshot_display_selection_changed));
- snapshot_display.signal_button_press_event().connect_notify (mem_fun (*this, &Mixer_UI::snapshot_display_button_press));
+ snapshot_display.signal_button_press_event().connect (mem_fun (*this, &Mixer_UI::snapshot_display_button_press));
_plugin_selector = new PluginSelector (PluginManager::the_manager());
_plugin_selector->signal_delete_event().connect (bind (ptr_fun (just_hide_it),
static_cast<Window *> (_plugin_selector)));
- configure_event.connect (mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
+ signal_configure_event().connect (mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
_selection.RoutesChanged.connect (mem_fun(*this, &Mixer_UI::follow_strip_selection));
}
@@ -195,10 +194,12 @@ Mixer_UI::show_window ()
/* now reset each strips width so the right widgets are shown */
MixerStrip* ms;
- CList_Helpers::RowList::iterator i;
- for (i = track_display_list.rows().begin(); i != track_display_list.rows().end(); ++i) {
- ms = (MixerStrip *) i->get_data ();
+ TreeModel::Children rows = track_display_model->children();
+ TreeModel::Children::iterator ri;
+
+ for (ri = rows.begin(); ri != rows.end(); ++ri) {
+ ms = (*ri)[track_display_columns.strip];
ms->set_width (ms->get_width());
}
}
@@ -220,10 +221,10 @@ Mixer_UI::add_strip (Route* route)
strip->set_width (_strip_width);
show_strip (strip);
- TreeModel::
TreeModel::Row row = *(track_display_model->append());
- row[columns.text] = route->name();
- row[columns.data] = strip;
+ row[track_display_columns.text] = route->name();
+ row[track_display_columns.route] = route;
+ row[track_display_columns.strip] = strip;
if (strip->marked_for_display() || strip->packed()) {
track_display.get_selection()->select (row);
@@ -244,7 +245,7 @@ Mixer_UI::remove_strip (MixerStrip* strip)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Mixer_UI::remove_strip), strip));
- TreeModel::Children::iterator rows = track_display_model.children();
+ TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator ri;
list<MixerStrip *>::iterator i;
@@ -253,8 +254,8 @@ Mixer_UI::remove_strip (MixerStrip* strip)
}
for (ri = rows.begin(); ri != rows.end(); ++ri) {
- if ((MixerStrip *) ri->get_data () == strip) {
- track_display_model.erase (ri);
+ if ((*ri)[track_display_columns.strip] == strip) {
+ track_display_model->erase (ri);
break;
}
}
@@ -331,7 +332,7 @@ Mixer_UI::disconnect_from_session ()
{
ENSURE_GUI_THREAD(mem_fun(*this, &Mixer_UI::disconnect_from_session));
- group_display.clear ();
+ group_display_model->clear ();
set_title (_("ardour: mixer"));
stop_updating ();
hide_all_strips (false);
@@ -340,7 +341,6 @@ Mixer_UI::disconnect_from_session ()
void
Mixer_UI::hide_all_strips (bool with_select)
{
- MixerStrip* ms;
TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator i;
@@ -350,7 +350,7 @@ Mixer_UI::hide_all_strips (bool with_select)
for (i = rows.begin(); i != rows.end(); ++i) {
TreeModel::Row row = (*i);
- MixerStrip* ms = row[columns.data];
+ MixerStrip* ms = row[track_display_columns.strip];
if (with_select) {
track_display.get_selection()->unselect (i);
@@ -390,7 +390,7 @@ Mixer_UI::strip_select_op (bool audiotrack, bool select)
// track_display_list.freeze ();
for (i = rows.begin(); i != rows.end(); ++i) {
- ms = (MixerStrip *) (*i)[columns.data];
+ ms = (*i)[track_display_columns.strip];
if (ms->is_audio_track() == audiotrack) {
if (select) {
@@ -422,7 +422,7 @@ Mixer_UI::select_all_audiobus_strips ()
}
void
-Mixer_UI::select_all_audiobus_strips ()
+Mixer_UI::unselect_all_audiobus_strips ()
{
strip_select_op (false, false);
}
@@ -493,17 +493,17 @@ Mixer_UI::fast_update_strips ()
}
void
-Mixer_UI::snapshot_display_selection_changed (gint row, gint col, GdkEvent* ev)
+Mixer_UI::snapshot_display_selection_changed ()
{
TreeModel::iterator i = snapshot_display.get_selection()->get_selected();
- string snap_name = (*i)[snapshot_display_columns.real_name]
+ Glib::ustring snap_name = (*i)[snapshot_display_columns.real_name];
if (session->snap_name() == snap_name) {
return;
}
- ARDOUR_UI::instance()->load_session(session->path(), snap_name);
+ ARDOUR_UI::instance()->load_session(session->path(), string (snap_name));
}
bool
@@ -518,7 +518,7 @@ Mixer_UI::track_display_selection_changed ()
MixerStrip* strip;
TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator i;
- Glib::RefPtr<TreeViewSelection> selection = track_display.get_selection();
+ Glib::RefPtr<TreeSelection> selection = track_display.get_selection();
for (i = rows.begin(); i != rows.end(); ++i) {
if (selection->is_selected (i)) {
@@ -538,14 +538,14 @@ Mixer_UI::select_strip_op (MixerStrip *strip, bool yn)
{
TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator i;
- Glib::RefPtr<TreeViewSelection> selection = track_display.get_selection();
+ Glib::RefPtr<TreeSelection> selection = track_display.get_selection();
for (i = rows.begin(); i != rows.end(); ++i) {
- if ((*i)[rows.data] == strip) {
+ if ((*i)[track_display_columns.strip] == strip) {
if (yn) {
- track_display.get_selection()->select (*i);
+ selection->select (*i);
} else {
- track_display.get_selection()->unselect (*i);
+ selection->unselect (*i);
}
break;
}
@@ -564,35 +564,26 @@ Mixer_UI::select_strip_in_display (MixerStrip *strip)
}
void
-Mixer_UI::queue_track_display_reordered (gint arg1, gint arg2)
+Mixer_UI::track_display_reordered_proxy (const TreeModel::Path& path, const TreeModel::iterator& i, int* n)
{
- /* the problem here is that we are called *before* the
- list has been reordered. so just queue up
- the actual re-drawer to happen once the re-ordering
- is complete.
- */
-
- Main::idle.connect (mem_fun(*this, &Mixer_UI::track_display_reordered));
+ track_display_reordered ();
}
-int
+void
Mixer_UI::track_display_reordered ()
{
TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator i;
- Glib::RefPtr<TreeViewSelection> selection = track_display.get_selection();
long order;
for (order = 0, i = rows.begin(); i != rows.end(); ++i, ++order) {
- MixerStrip* strip = (*i)[columns.data];
+ MixerStrip* strip = (*i)[track_display_columns.strip];
if (strip->marked_for_display()) {
strip->route().set_order_key (N_("signal"), order);
strip_packer.reorder_child (*strip, -1); /* put at end */
}
}
-
- return FALSE;
}
void
@@ -632,11 +623,10 @@ Mixer_UI::strip_name_changed (void* src, MixerStrip* mx)
TreeModel::Children rows = track_display_model->children();
TreeModel::Children::iterator i;
- Glib::RefPtr<TreeViewSelection> selection = track_display.get_selection();
for (i = rows.begin(); i != rows.end(); ++i) {
- if ((*i)[columns.data] == mx) {
- (*i)[columns.text] = mx->route().name();
+ if ((*i)[track_display_columns.strip] == mx) {
+ (*i)[track_display_columns.text] = mx->route().name();
return;
}
}
@@ -651,35 +641,30 @@ Mixer_UI::new_mix_group ()
string result;
prompter.set_prompt (_("Name for new mix group"));
- prompter.done.connect (Main::quit.slot());
-
prompter.show_all ();
- Main::run ();
-
- if (prompter.status != Gtkmm2ext::Prompter::entered) {
- return;
- }
-
- prompter.get_result (result);
-
- if (result.length()) {
- session->add_mix_group (result);
+ switch (prompter.run ()) {
+ case GTK_RESPONSE_ACCEPT:
+ prompter.get_result (result);
+ if (result.length()) {
+ session->add_mix_group (result);
+ }
+ break;
}
}
-void
-Mixer_UI::group_display_button_clicked ()
-{
- if (session) {
- new_mix_group ();
- }
-}
+// GTK2FIX
+//void
+//Mixer_UI::group_display_button_clicked ()
+//{
+// if (session) {
+// new_mix_group ();
+// }
+//}
bool
Mixer_UI::group_display_button_press (GdkEventButton* ev)
{
- gint row, col;
RouteGroup* group;
TreeIter iter;
@@ -692,11 +677,11 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev)
return false;
}
- switch (GPOINTER_TO_UINT (column.get_data (X_("colnum")))) {
+ switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) {
case 0:
/* active column click */
- if ((iter = group_display.get_iter (path))) {
+ if ((iter = group_display_model->get_iter (path))) {
/* path points to a valid node */
if ((group = (*iter)[group_display_columns.group]) != 0) {
group->set_active (!group->is_active (), this);
@@ -720,16 +705,16 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev)
}
void
-Mixer_UI::group_selection_changed ()
+Mixer_UI::group_display_selection_changed ()
{
TreeModel::iterator i;
TreeModel::Children rows = group_display_model->children();
- TreeViewSelection* selection = group_display.get_selection();
+ Glib::RefPtr<TreeSelection> selection = group_display.get_selection();
for (i = rows.begin(); i != rows.end(); ++i) {
RouteGroup* group;
- group = (*iter)[group_display_columns.group];
+ group = (*i)[group_display_columns.group];
if (selection->is_selected (i)) {
group->set_hidden (true, this);
@@ -750,17 +735,12 @@ Mixer_UI::group_flags_changed (void* src, RouteGroup* group)
// select row
}
- TreeModel::Children rows;
+ TreeModel::Children rows = group_display_model->children();
TreeModel::Children::iterator gi;
TreeModel::Children::iterator ti;
- MixGroup* group;
-
- CList_Helpers::RowIterator ri = group_display.rows().find_data (group);
- rows = group_display_model->children();
-
- for (gi = rows.begin(); gi != grows.end(); ++gi) {
- if ((*gi)[columns.data] == group) {
+ for (gi = rows.begin(); gi != rows.end(); ++gi) {
+ if ((*gi)[group_display_columns.group] == group) {
break;
}
}
@@ -789,18 +769,11 @@ Mixer_UI::add_mix_group (RouteGroup* group)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Mixer_UI::add_mix_group), group));
-
- list<string> names;
- names.push_back ("");
- names.push_back (group->name());
-
- group_list.rows().push_back (names);
- group_list.rows().back().set_data (group);
-
- /* update display to reflect group flags */
-
- group_flags_changed (0, group);
+ TreeModel::Row row = *(group_display_model->append());
+ row[group_display_columns.active] = group->is_active();
+ row[group_display_columns.text] = group->name();
+ row[group_display_columns.group] = group;
group->FlagsChanged.connect (bind (mem_fun(*this, &Mixer_UI::group_flags_changed), group));
}
@@ -821,9 +794,9 @@ Mixer_UI::redisplay_snapshots ()
for (vector<string*>::iterator i = states->begin(); i != states->end(); ++i) {
string statename = *(*i);
- row = *(snapshot_display_model->append());
- row[snapshot_columns.visible_name] = statename;
- row[snapshot_columns.real_name] = statename;
+ TreeModel::Row row = *(snapshot_display_model->append());
+ row[snapshot_display_columns.visible_name] = statename;
+ row[snapshot_display_columns.real_name] = statename;
}
delete states;
@@ -887,7 +860,8 @@ Mixer_UI::set_state (const XMLNode& node)
}
set_default_size(width, height);
- set_uposition(x, y-yoff);
+ // GTK2FIX
+ // set_uposition(x, y-yoff);
if ((prop = node.property ("narrow-strips"))) {
if (prop->value() == "yes") {
@@ -906,12 +880,12 @@ Mixer_UI::get_state (void)
XMLNode* node = new XMLNode ("Mixer");
if (is_realized()) {
- Gdk_Window win = get_window();
+ Glib::RefPtr<Gdk::Window> win = get_window();
int x, y, xoff, yoff, width, height;
- win.get_root_origin(x, y);
- win.get_position(xoff, yoff);
- win.get_size(width, height);
+ win->get_root_origin(x, y);
+ win->get_position(xoff, yoff);
+ win->get_size(width, height);
XMLNode* geometry = new XMLNode ("geometry");
char buf[32];
@@ -945,7 +919,7 @@ Mixer_UI::get_state (void)
void
-Mixer_UI::pane_allocation_handler (GtkAllocation *alloc, Gtk::Paned* which)
+Mixer_UI::pane_allocation_handler (Allocation& alloc, Gtk::Paned* which)
{
int pos;
XMLProperty* prop = 0;