summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2006-08-03 11:54:06 +0000
committerSampo Savolainen <v2@iki.fi>2006-08-03 11:54:06 +0000
commitb74c57290073e7e99f8c8908d6d935943ff3eaab (patch)
treec50436028cbf0fb46f5877603e5b5619b2a0e413
parent58b71b15d85fc23eb377bb629ba31811c20d0c32 (diff)
Small rehaul of track and automation track headers. This should now
initialize cleanly and be more easily controlled. show_all() calls from upper levels will not mess the track headers any more. git-svn-id: svn://localhost/ardour2/trunk@749 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour2_ui.rc9
-rw-r--r--gtk2_ardour/automation_time_axis.cc153
-rw-r--r--gtk2_ardour/automation_time_axis.h2
-rw-r--r--gtk2_ardour/pan_automation_time_axis.cc17
-rw-r--r--gtk2_ardour/route_time_axis.cc74
5 files changed, 144 insertions, 111 deletions
diff --git a/gtk2_ardour/ardour2_ui.rc b/gtk2_ardour/ardour2_ui.rc
index ac4f055df6..5422a63b8b 100644
--- a/gtk2_ardour/ardour2_ui.rc
+++ b/gtk2_ardour/ardour2_ui.rc
@@ -219,6 +219,14 @@ style "mute_button" = "small_button"
fg[PRELIGHT] = { 0, 0, 0 }
}
+
+style "multiline_combo" = "small_button"
+{
+ font_name = "sans 8"
+ xthickness = 0
+ ythickness = 0
+}
+
style "mixer_mute_button" = "mute_button"
{
font_name = "sans 7"
@@ -936,6 +944,7 @@ widget "*TrackRecordEnableButton" style "track_rec_enable_button"
widget "*TrackRecordEnableButton*" style "track_rec_enable_button"
widget "*TrackMuteButton*" style "mute_button"
widget "*TrackLoopButton*" style "track_loop_button"
+widget "*PanAutomationLineSelector*" style "multiline_combo"
widget "*EditorTimeButton*" style "time_button"
widget "*EditorMixerButton*" style "default_buttons_menus"
widget "*SoloButton*" style "solo_button"
diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc
index 02a88b578b..cdeed5cc4d 100644
--- a/gtk2_ardour/automation_time_axis.cc
+++ b/gtk2_ardour/automation_time_axis.cc
@@ -40,6 +40,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
auto_write_item = 0;
auto_play_item = 0;
ignore_state_request = false;
+ first_call_to_set_height = true;
// base_rect = gnome_canvas_item_new (GNOME_CANVAS_GROUP(canvas_display),
// gnome_canvas_simplerect_get_type(),
@@ -72,6 +73,8 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
clear_button.set_name ("TrackVisualButton");
hide_button.set_name ("TrackRemoveButton");
+ controls_table.set_no_show_all();
+
ARDOUR_UI::instance()->tooltips().set_tip(height_button, _("track height"));
ARDOUR_UI::instance()->tooltips().set_tip(auto_button, _("automation state"));
ARDOUR_UI::instance()->tooltips().set_tip(clear_button, _("clear track"));
@@ -115,6 +118,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
plugname = new Label (pname);
plugname->set_name (X_("TrackPlugName"));
plugname->set_alignment (1.0, 0.5);
+ plugname->show();
name_label.set_name (X_("TrackParameterName"));
controls_table.remove (name_hbox);
controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
@@ -138,8 +142,8 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
controls_table.attach (hide_button, 0, 1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
controls_table.attach (height_button, 0, 1, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.attach (auto_button, 6, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.attach (clear_button, 6, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (auto_button, 5, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (clear_button, 5, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
controls_table.show_all ();
@@ -281,11 +285,11 @@ AutomationTimeAxisView::set_height (TrackHeight ht)
uint32_t h = height_to_pixels (ht);
bool changed = (height != (uint32_t) h);
+ bool changed_between_small_and_normal = ( (ht == Small || ht == Smaller) ^ (height_style == Small || height_style == Smaller) );
+
TimeAxisView* state_parent = get_parent_with_state ();
XMLNode* xml_node = state_parent->get_child_xml_node (_state_name);
- //controls_table.show_all ();
-
TimeAxisView::set_height (ht);
base_rect->property_y2() = h;
@@ -297,117 +301,88 @@ AutomationTimeAxisView::set_height (TrackHeight ht)
(*i)->set_height ();
}
+
switch (ht) {
case Largest:
xml_node->add_property ("track_height", "largest");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- plugname_packed = true;
- controls_table.attach (name_hbox, 1, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- } else {
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- }
- controls_table.show_all ();
-
- hide_name_entry ();
- show_name_label ();
break;
case Large:
xml_node->add_property ("track_height", "large");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- plugname_packed = true;
- } else {
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- }
- controls_table.show_all ();
- hide_name_entry ();
- show_name_label ();
break;
case Larger:
xml_node->add_property ("track_height", "larger");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- plugname_packed = true;
- } else {
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- }
- controls_table.show_all ();
- hide_name_entry ();
- show_name_label ();
break;
case Normal:
xml_node->add_property ("track_height", "normal");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- plugname_packed = true;
- controls_table.attach (name_hbox, 1, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- } else {
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- }
- controls_table.show_all ();
- hide_name_entry ();
- show_name_label ();
break;
case Smaller:
xml_node->add_property ("track_height", "smaller");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- }
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.hide_all ();
- hide_name_entry ();
- show_name_label ();
- name_hbox.show_all ();
- controls_table.show ();
break;
case Small:
xml_node->add_property ("track_height", "small");
- controls_table.remove (name_hbox);
- if (plugname) {
- if (plugname_packed) {
- controls_table.remove (*plugname);
- plugname_packed = false;
- }
- }
- controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.hide_all ();
- hide_name_entry ();
- show_name_label ();
- name_hbox.show_all ();
- controls_table.show ();
break;
}
+ if (changed_between_small_and_normal || first_call_to_set_height) {
+ first_call_to_set_height = false;
+ switch (ht) {
+ case Largest:
+ case Large:
+ case Larger:
+ case Normal:
+
+ controls_table.remove (name_hbox);
+
+ if (plugname) {
+ if (plugname_packed) {
+ controls_table.remove (*plugname);
+ plugname_packed = false;
+ }
+ controls_table.attach (*plugname, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ plugname_packed = true;
+ controls_table.attach (name_hbox, 1, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ } else {
+ controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ }
+ hide_name_entry ();
+ show_name_label ();
+ name_hbox.show_all ();
+
+ auto_button.show();
+ height_button.show();
+ clear_button.show();
+ hide_button.show_all();
+ break;
+
+ case Smaller:
+ case Small:
+
+ controls_table.remove (name_hbox);
+ if (plugname) {
+ if (plugname_packed) {
+ controls_table.remove (*plugname);
+ plugname_packed = false;
+ }
+ }
+ controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.hide_all ();
+ hide_name_entry ();
+ show_name_label ();
+ name_hbox.show_all ();
+
+ auto_button.hide();
+ height_button.hide();
+ clear_button.hide();
+ hide_button.hide();
+ break;
+ }
+ }
+
if (changed) {
/* only emit the signal if the height really changed */
route->gui_changed ("track_height", (void *) 0); /* EMIT_SIGNAL */
diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h
index 6de11a7c6d..0cd9acc034 100644
--- a/gtk2_ardour/automation_time_axis.h
+++ b/gtk2_ardour/automation_time_axis.h
@@ -84,6 +84,8 @@ class AutomationTimeAxisView : public TimeAxisView {
string _state_name;
bool in_destructor;
+ bool first_call_to_set_height;
+
Gtk::Button hide_button;
Gtk::Button height_button;
Gtk::Button clear_button;
diff --git a/gtk2_ardour/pan_automation_time_axis.cc b/gtk2_ardour/pan_automation_time_axis.cc
index fcef6f812c..34426c127f 100644
--- a/gtk2_ardour/pan_automation_time_axis.cc
+++ b/gtk2_ardour/pan_automation_time_axis.cc
@@ -27,6 +27,7 @@
#include "pan_automation_time_axis.h"
#include "automation_line.h"
#include "canvas_impl.h"
+#include "route_ui.h"
#include "i18n.h"
@@ -42,7 +43,7 @@ PanAutomationTimeAxisView::PanAutomationTimeAxisView (Session& s, boost::shared_
{
multiline_selector.set_name ("PanAutomationLineSelector");
- controls_table.attach (multiline_selector, 1, 5, 1, 2, Gtk::FILL | Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (multiline_selector, 1, 5, 1, 2, Gtk::EXPAND, Gtk::EXPAND);
}
PanAutomationTimeAxisView::~PanAutomationTimeAxisView ()
@@ -105,15 +106,18 @@ void
PanAutomationTimeAxisView::add_line (AutomationLine& line)
{
char buf[32];
- snprintf(buf,32,"Line %ld",lines.size()+1);
+ snprintf(buf,32,"Line %u",lines.size()+1);
multiline_selector.append_text(buf);
if (lines.empty()) {
multiline_selector.set_active(0);
}
- if (lines.size() + 1 > 1) {
+ if (lines.size() + 1 > 1 && (height_style != Small && height_style != Smaller)) {
multiline_selector.show();
+ } else {
+ multiline_selector.hide();
+
}
AutomationTimeAxisView::add_line(line);
@@ -129,9 +133,10 @@ PanAutomationTimeAxisView::set_height (TimeAxisView::TrackHeight th)
case Large:
case Larger:
case Normal:
- multiline_selector.show();
- break;
-
+ if (lines.size() > 1) {
+ multiline_selector.show();
+ break;
+ }
default:
multiline_selector.hide();
}
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index cb9883b8e6..8dca7be480 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -575,46 +575,88 @@ RouteTimeAxisView::set_height (TrackHeight h)
switch (height_style) {
case Largest:
xml_node->add_property ("track_height", "largest");
- show_name_entry ();
- hide_name_label ();
- controls_table.show_all();
break;
+
case Large:
xml_node->add_property ("track_height", "large");
- show_name_entry ();
- hide_name_label ();
- controls_table.show_all();
break;
+
case Larger:
xml_node->add_property ("track_height", "larger");
- show_name_entry ();
- hide_name_label ();
- controls_table.show_all();
break;
+
case Normal:
xml_node->add_property ("track_height", "normal");
+ break;
+
+ case Smaller:
+ xml_node->add_property ("track_height", "smaller");
+ break;
+
+ case Small:
+ xml_node->add_property ("track_height", "small");
+ break;
+ }
+
+ switch (height_style) {
+ case Largest:
+ case Large:
+ case Larger:
+ case Normal:
show_name_entry ();
hide_name_label ();
- controls_table.show_all();
+
+ mute_button->show_all();
+ solo_button->show_all();
+ if (rec_enable_button)
+ rec_enable_button->show_all();
+
+ edit_group_button.show_all();
+ hide_button.show_all();
+ visual_button.show_all();
+ size_button.show_all();
+ automation_button.show_all();
+
+ if (is_track() && track()->mode() == ARDOUR::Normal) {
+ playlist_button.show_all();
+ }
break;
+
case Smaller:
- xml_node->add_property ("track_height", "smaller");
- controls_table.show_all ();
show_name_entry ();
hide_name_label ();
+
+ mute_button->show_all();
+ solo_button->show_all();
+ if (rec_enable_button)
+ rec_enable_button->show_all();
+
edit_group_button.hide ();
hide_button.hide ();
visual_button.hide ();
size_button.hide ();
automation_button.hide ();
- playlist_button.hide ();
+
+ if (is_track() && track()->mode() == ARDOUR::Normal) {
+ playlist_button.hide ();
+ }
break;
+
case Small:
- xml_node->add_property ("track_height", "small");
- controls_table.hide_all ();
- controls_table.show ();
hide_name_entry ();
show_name_label ();
+
+ mute_button->hide();
+ solo_button->hide();
+ if (rec_enable_button)
+ rec_enable_button->hide();
+
+ edit_group_button.hide ();
+ hide_button.hide ();
+ visual_button.hide ();
+ size_button.hide ();
+ automation_button.hide ();
+ playlist_button.hide ();
name_label.set_text (_route->name());
break;
}