summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-07-14 08:27:22 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-07-14 08:27:22 -0400
commit0aac62e013e15e380001dafae39d554f8765a4a1 (patch)
tree1d205e81e4f00f25e8f4ddc522642ded3478706a /gtk2_ardour
parent394f2b3ca71ca324fe89fab7c1caae1bd55a9143 (diff)
parent2106a12edd6dcdf1189b7cfd68b07a0761d77c46 (diff)
Merge branch 'master' into windows
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc7
-rw-r--r--gtk2_ardour/ardour_ui.h12
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc5
-rw-r--r--gtk2_ardour/configinfo.cc10
-rw-r--r--gtk2_ardour/configinfo.h2
-rw-r--r--gtk2_ardour/gain_meter.cc2
-rw-r--r--gtk2_ardour/generic_pluginui.cc19
-rw-r--r--gtk2_ardour/lv2_plugin_ui.cc6
-rw-r--r--gtk2_ardour/meter_patterns.cc33
-rw-r--r--gtk2_ardour/meter_patterns.h2
-rw-r--r--gtk2_ardour/meter_strip.cc2
-rw-r--r--gtk2_ardour/meterbridge.cc3
-rw-r--r--gtk2_ardour/mixer_ui.cc2
-rw-r--r--gtk2_ardour/startup.cc2
14 files changed, 80 insertions, 27 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 5bef863c95..e3655a0d7a 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -903,8 +903,7 @@ If you still wish to quit, please use the\n\n\
second_connection.disconnect ();
point_one_second_connection.disconnect ();
- point_oh_five_second_connection.disconnect ();
- point_zero_one_second_connection.disconnect();
+ point_zero_something_second_connection.disconnect();
}
delete ARDOUR_UI::instance()->video_timeline;
@@ -1034,9 +1033,9 @@ ARDOUR_UI::every_point_one_seconds ()
}
gint
-ARDOUR_UI::every_point_zero_one_seconds ()
+ARDOUR_UI::every_point_zero_something_seconds ()
{
- // august 2007: actual update frequency: 40Hz, not 100Hz
+ // august 2007: actual update frequency: 25Hz (40ms), not 100Hz
SuperRapidScreenUpdate(); /* EMIT_SIGNAL */
return TRUE;
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index dd025b6f8b..5817293b29 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -177,10 +177,17 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
static PublicEditor* _instance;
static sigc::signal<void,bool> Blink;
+
+ /** point_zero_one_seconds -- 10Hz ^= 100ms */
static sigc::signal<void> RapidScreenUpdate;
+
+ /** point_zero_something_seconds -- currently 25Hz ^= 40ms */
static sigc::signal<void> SuperRapidScreenUpdate;
+
/** Emitted frequently with the audible frame, false, and the edit point as
* parameters respectively.
+ *
+ * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
*/
static sigc::signal<void, framepos_t, bool, framepos_t> Clock;
@@ -521,12 +528,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
gint every_second ();
gint every_point_one_seconds ();
- gint every_point_zero_one_seconds ();
+ gint every_point_zero_something_seconds ();
sigc::connection second_connection;
sigc::connection point_one_second_connection;
- sigc::connection point_oh_five_second_connection;
- sigc::connection point_zero_one_second_connection;
+ sigc::connection point_zero_something_second_connection;
void open_session ();
void open_recent_session ();
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 5422bb9957..8c78d6494d 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -183,7 +183,7 @@ ARDOUR_UI::set_session (Session *s)
second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_second), 1000);
point_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_one_seconds), 100);
- point_zero_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_zero_one_seconds), 40);
+ point_zero_something_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_zero_something_seconds), 40);
update_format ();
}
@@ -223,8 +223,7 @@ ARDOUR_UI::unload_session (bool hide_stuff)
second_connection.disconnect ();
point_one_second_connection.disconnect ();
- point_oh_five_second_connection.disconnect ();
- point_zero_one_second_connection.disconnect();
+ point_zero_something_second_connection.disconnect();
ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false);
diff --git a/gtk2_ardour/configinfo.cc b/gtk2_ardour/configinfo.cc
index 29c7e8fe63..67f13a1f5b 100644
--- a/gtk2_ardour/configinfo.cc
+++ b/gtk2_ardour/configinfo.cc
@@ -31,9 +31,15 @@ ConfigInfoDialog::ConfigInfoDialog ()
text.get_buffer()->set_text (std::string (ARDOUR::ardour_config_info));
text.set_wrap_mode (Gtk::WRAP_WORD);
text.show ();
- text.set_size_request (300, 800);
- get_vbox()->pack_start (text, true, true);
+ scroller.set_shadow_type(Gtk::SHADOW_NONE);
+ scroller.set_border_width(0);
+ scroller.add (text);
+ scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+ scroller.show();
+
+ get_vbox()->pack_start (scroller, true, true);
+ set_size_request (400, 600);
add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_ACCEPT);
}
diff --git a/gtk2_ardour/configinfo.h b/gtk2_ardour/configinfo.h
index 84f90b20a2..209392a8f1 100644
--- a/gtk2_ardour/configinfo.h
+++ b/gtk2_ardour/configinfo.h
@@ -18,6 +18,7 @@
*/
#include <gtkmm/textview.h>
+#include <gtkmm/scrolledwindow.h>
#include "ardour_dialog.h"
@@ -28,4 +29,5 @@ class ConfigInfoDialog : public ArdourDialog
private:
Gtk::TextView text;
+ Gtk::ScrolledWindow scroller;
};
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index ae6f03f210..36ed5e918e 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -1086,7 +1086,7 @@ GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
- meter_clear_pattern_cache(); // XXX only once
+ meter_clear_pattern_cache(4);
}
void
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index c66a1fec38..6cea8f3c0b 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -659,7 +659,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
control_ui->display_label->set_name ("ParameterValueDisplay");
control_ui->display->add (*control_ui->display_label);
- Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->display, "-99,99", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->display, "-888.8g", 2, 6);
control_ui->display->show_all ();
@@ -669,7 +669,17 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
MeterInfo * info = new MeterInfo(port_index);
control_ui->meterinfo = info;
- info->meter = new FastMeter (5, 5, FastMeter::Vertical);
+ info->meter = new FastMeter (
+ 5, 5, FastMeter::Vertical, 0,
+ 0x0000aaff,
+ 0x008800ff, 0x008800ff,
+ 0x00ff00ff, 0x00ff00ff,
+ 0xcccc00ff, 0xcccc00ff,
+ 0xffaa00ff, 0xffaa00ff,
+ 0xff0000ff,
+ ARDOUR_UI::config()->canvasvar_MeterBackgroundBot.get(),
+ ARDOUR_UI::config()->canvasvar_MeterBackgroundTop.get()
+ );
info->min_unbound = desc.min_unbound;
info->max_unbound = desc.max_unbound;
@@ -680,6 +690,9 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
control_ui->vbox = manage (new VBox);
control_ui->hbox = manage (new HBox);
+ control_ui->hbox->set_spacing(1);
+ control_ui->vbox->set_spacing(3);
+
control_ui->label.set_angle(90);
control_ui->hbox->pack_start (control_ui->label, false, false);
control_ui->hbox->pack_start (*info->meter, false, false);
@@ -834,7 +847,7 @@ GenericPluginUI::start_updating (GdkEventAny*)
{
if (output_controls.size() > 0 ) {
screen_update_connection.disconnect();
- screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect
+ screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect
(sigc::mem_fun(*this, &GenericPluginUI::output_update));
}
return false;
diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc
index 839bc6a4b8..2fe817a6a0 100644
--- a/gtk2_ardour/lv2_plugin_ui.cc
+++ b/gtk2_ardour/lv2_plugin_ui.cc
@@ -144,7 +144,7 @@ LV2PluginUI::start_updating(GdkEventAny*)
{
if (!_output_ports.empty()) {
_screen_update_connection.disconnect();
- _screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect
+ _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect
(sigc::mem_fun(*this, &LV2PluginUI::output_update));
}
return false;
@@ -322,7 +322,7 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title)
if (_lv2->has_message_output()) {
_lv2->enable_ui_emmission();
- ARDOUR_UI::instance()->RapidScreenUpdate.connect(
+ ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect(
sigc::mem_fun(*this, &LV2PluginUI::update_timeout));
}
}
@@ -432,7 +432,7 @@ LV2PluginUI::on_window_show(const std::string& title)
LV2_EXTERNAL_UI_SHOW(_external_ui_ptr);
_screen_update_connection.disconnect();
- _screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect
+ _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect
(sigc::mem_fun(*this, &LV2PluginUI::output_update));
return false;
} else {
diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc
index 9de01146b0..f749927e9a 100644
--- a/gtk2_ardour/meter_patterns.cc
+++ b/gtk2_ardour/meter_patterns.cc
@@ -485,9 +485,34 @@ gint meter_expose_metrics (GdkEventExpose *ev, std::vector<ARDOUR::DataType> typ
return true;
}
-void meter_clear_pattern_cache() {
- // TODO allow to clear meterbridge "*Left|Right" patterns independenly
- metric_patterns.clear();
- ticks_patterns.clear();
+void meter_clear_pattern_cache(int which) {
+ MetricPatterns::iterator i = metric_patterns.begin();
+ TickPatterns::iterator j = ticks_patterns.begin();
+
+ while (i != metric_patterns.end()) {
+ int m = 4;
+ std::string n = i->first;
+ if (n.substr(n.length() - 4) == "Left") { m = 1; }
+ if (n.substr(n.length() - 5) == "Right") { m = 2; }
+ if (which & m) {
+ cairo_pattern_destroy(i->second);
+ metric_patterns.erase(i++);
+ } else {
+ ++i;
+ }
+ }
+
+ while (j != ticks_patterns.end()) {
+ int m = 4;
+ std::string n = j->first;
+ if (n.substr(n.length() - 4) == "Left") { m = 1; }
+ if (n.substr(n.length() - 5) == "Right") { m = 2; }
+ if (which & m) {
+ cairo_pattern_destroy(j->second);
+ ticks_patterns.erase(j++);
+ } else {
+ ++j;
+ }
+ }
RedrawMetrics();
}
diff --git a/gtk2_ardour/meter_patterns.h b/gtk2_ardour/meter_patterns.h
index df755f7ace..a664f478f2 100644
--- a/gtk2_ardour/meter_patterns.h
+++ b/gtk2_ardour/meter_patterns.h
@@ -40,7 +40,7 @@ cairo_pattern_t* meter_render_metrics (Gtk::Widget& w, std::vector<ARDOUR::DataT
gint meter_expose_ticks (GdkEventExpose *ev, std::vector<ARDOUR::DataType> types, Gtk::DrawingArea *mta);
gint meter_expose_metrics (GdkEventExpose *ev, std::vector<ARDOUR::DataType> types, Gtk::DrawingArea *mma);
-void meter_clear_pattern_cache();
+void meter_clear_pattern_cache(int which=7);
#endif
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc
index a4cc56d61c..88a946585a 100644
--- a/gtk2_ardour/meter_strip.cc
+++ b/gtk2_ardour/meter_strip.cc
@@ -372,14 +372,12 @@ MeterStrip::meter_configuration_changed (ChanCount c)
void
MeterStrip::on_size_request (Gtk::Requisition* r)
{
- meter_clear_pattern_cache();
VBox::on_size_request(r);
}
void
MeterStrip::on_size_allocate (Gtk::Allocation& a)
{
- meter_clear_pattern_cache();
const int wh = a.get_height();
int nh = ceilf(wh * .11f);
if (nh < 52) nh = 52;
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc
index 74c13f45eb..24b21656d1 100644
--- a/gtk2_ardour/meterbridge.cc
+++ b/gtk2_ardour/meterbridge.cc
@@ -309,6 +309,7 @@ Meterbridge::on_scroll_event (GdkEventScroll* ev)
void
Meterbridge::scroll_left ()
{
+ if (!scroller.get_hscrollbar()) return;
Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
/* stupid GTK: can't rely on clamping across versions */
scroller.get_hscrollbar()->set_value (max (adj->get_lower(), adj->get_value() - adj->get_step_increment()));
@@ -317,6 +318,7 @@ Meterbridge::scroll_left ()
void
Meterbridge::scroll_right ()
{
+ if (!scroller.get_hscrollbar()) return;
Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
/* stupid GTK: can't rely on clamping across versions */
scroller.get_hscrollbar()->set_value (min (adj->get_upper(), adj->get_value() + adj->get_step_increment()));
@@ -325,6 +327,7 @@ Meterbridge::scroll_right ()
void
Meterbridge::on_size_request (Gtk::Requisition* r)
{
+ meter_clear_pattern_cache(3);
Gtk::Window::on_size_request(r);
Gdk::Geometry geom;
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index f206014eea..be43a3d6a0 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -1666,6 +1666,7 @@ Mixer_UI::pane_allocation_handler (Allocation&, Gtk::Paned* which)
void
Mixer_UI::scroll_left ()
{
+ if (!scroller.get_hscrollbar()) return;
Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
/* stupid GTK: can't rely on clamping across versions */
scroller.get_hscrollbar()->set_value (max (adj->get_lower(), adj->get_value() - adj->get_step_increment()));
@@ -1674,6 +1675,7 @@ Mixer_UI::scroll_left ()
void
Mixer_UI::scroll_right ()
{
+ if (!scroller.get_hscrollbar()) return;
Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
/* stupid GTK: can't rely on clamping across versions */
scroller.get_hscrollbar()->set_value (min (adj->get_upper(), adj->get_value() + adj->get_step_increment()));
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index 6f0b1cfaab..ca598ba949 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -591,7 +591,7 @@ ArdourStartup::setup_initial_choice_page ()
ic_vbox.show_all ();
initial_choice_index = append_page (ic_vbox);
- set_page_title (ic_vbox, _("What would you like to do ?"));
+ set_page_title (ic_vbox, string_compose("%1 %2", PROGRAM_NAME, VERSIONSTRING));
set_page_header_image (ic_vbox, icon_pixbuf);
/* user could just click on "Forward" if default