diff options
author | David Robillard <d@drobilla.net> | 2011-05-20 18:42:59 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-05-20 18:42:59 +0000 |
commit | 9139dda70547545f9f36ffe526a5fdcc930b1e2a (patch) | |
tree | 7446c06ffee6d1d7269c8b5230719bba34942719 /src | |
parent | 4523e7ec80dec02ef32fac8d61bbc2b51bf06901 (diff) | |
download | patchage-9139dda70547545f9f36ffe526a5fdcc930b1e2a.tar.gz patchage-9139dda70547545f9f36ffe526a5fdcc930b1e2a.tar.bz2 patchage-9139dda70547545f9f36ffe526a5fdcc930b1e2a.zip |
Use a (smaller, simpler) statusbar instead of a toolbar.
Display more useful latency information (e.g. latency in ms as well as frames).
git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@3300 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/JackDriver.cpp | 20 | ||||
-rw-r--r-- | src/JackDriver.hpp | 2 | ||||
-rw-r--r-- | src/Patchage.cpp | 122 | ||||
-rw-r--r-- | src/Patchage.hpp | 16 | ||||
-rw-r--r-- | src/patchage.ui | 300 |
5 files changed, 184 insertions, 276 deletions
diff --git a/src/JackDriver.cpp b/src/JackDriver.cpp index b641d40..9c981ec 100644 --- a/src/JackDriver.cpp +++ b/src/JackDriver.cpp @@ -440,7 +440,7 @@ JackDriver::jack_client_registration_cb(const char* name, int registered, void* JackDriver* me = reinterpret_cast<JackDriver*>(jack_driver); assert(me->_client); - jack_reset_max_delayed_usecs(me->_client); + //jack_reset_max_delayed_usecs(me->_client); if (registered) { me->_events.push(PatchageEvent(PatchageEvent::CLIENT_CREATION, name)); @@ -456,7 +456,7 @@ JackDriver::jack_port_registration_cb(jack_port_id_t port_id, int registered, vo JackDriver* me = reinterpret_cast<JackDriver*>(jack_driver); assert(me->_client); - jack_reset_max_delayed_usecs(me->_client); + //jack_reset_max_delayed_usecs(me->_client); if (registered) { me->_events.push(PatchageEvent(PatchageEvent::PORT_CREATION, port_id)); @@ -472,7 +472,7 @@ JackDriver::jack_port_connect_cb(jack_port_id_t src, jack_port_id_t dst, int con JackDriver* me = reinterpret_cast<JackDriver*>(jack_driver); assert(me->_client); - jack_reset_max_delayed_usecs(me->_client); + //jack_reset_max_delayed_usecs(me->_client); if (connect) { me->_events.push(PatchageEvent(PatchageEvent::CONNECTION, src, dst)); @@ -488,7 +488,7 @@ JackDriver::jack_graph_order_cb(void* jack_driver) JackDriver* me = reinterpret_cast<JackDriver*>(jack_driver); assert(me->_client); - jack_reset_max_delayed_usecs(me->_client); + //jack_reset_max_delayed_usecs(me->_client); return 0; } @@ -588,17 +588,9 @@ JackDriver::get_max_dsp_load() const float max_delay = jack_get_max_delayed_usecs(_client); const float rate = sample_rate(); const float size = buffer_size(); - const float period = size / rate * 1000000; // usec - - float max_load; - if (max_delay > period) { - max_load = 1.0; - jack_reset_max_delayed_usecs(_client); - } else { - max_load = max_delay / period; - } + const float period = size / rate * 1000000.0f; // usec - return max_load; + return (max_delay > period) ? 1.0 : (max_delay / period); } void diff --git a/src/JackDriver.hpp b/src/JackDriver.hpp index 82c44be..d1cf395 100644 --- a/src/JackDriver.hpp +++ b/src/JackDriver.hpp @@ -73,7 +73,7 @@ public: jack_client_t* client() { return _client; } - float sample_rate() { return jack_get_sample_rate(_client); } + jack_nframes_t sample_rate() { return jack_get_sample_rate(_client); } jack_nframes_t buffer_size(); bool set_buffer_size(jack_nframes_t size); diff --git a/src/Patchage.cpp b/src/Patchage.cpp index ac1a6e2..be8ff23 100644 --- a/src/Patchage.cpp +++ b/src/Patchage.cpp @@ -65,36 +65,6 @@ struct ProjectList_column_record : public Gtk::TreeModel::ColumnRecord { Gtk::TreeModelColumn<Glib::ustring> label; }; -/* Gtk helpers (resize combo boxes) */ - -static void -gtkmm_get_ink_pixel_size (Glib::RefPtr<Pango::Layout> layout, - int& width, - int& height) -{ - Pango::Rectangle ink_rect = layout->get_ink_extents (); - - width = (ink_rect.get_width() + PANGO_SCALE / 2) / PANGO_SCALE; - height = (ink_rect.get_height() + PANGO_SCALE / 2) / PANGO_SCALE; -} - -static void -gtkmm_set_width_for_given_text (Gtk::Widget &w, const gchar *text, - gint hpadding/*, gint vpadding*/) - -{ - int old_width, old_height; - w.get_size_request(old_width, old_height); - - int width, height; - w.ensure_style (); - - gtkmm_get_ink_pixel_size (w.create_pango_layout (text), width, height); - w.set_size_request(width + hpadding, old_height);//height + vpadding); -} - -/* end Gtk helpers */ - #define INIT_WIDGET(x) x(_xml, ((const char*)#x) + 1) Patchage::Patchage(int argc, char** argv) @@ -117,8 +87,6 @@ Patchage::Patchage(int argc, char** argv) , _refresh(false) , _enable_refresh(true) , INIT_WIDGET(_about_win) - , INIT_WIDGET(_buffer_size_combo) - , INIT_WIDGET(_clear_load_but) , INIT_WIDGET(_main_scrolledwin) , INIT_WIDGET(_main_win) , INIT_WIDGET(_main_xrun_progress) @@ -134,19 +102,20 @@ Patchage::Patchage(int argc, char** argv) , INIT_WIDGET(_menu_view_messages) , INIT_WIDGET(_menu_view_projects) , INIT_WIDGET(_menu_view_refresh) - , INIT_WIDGET(_menu_view_toolbar) + , INIT_WIDGET(_menu_view_statusbar) , INIT_WIDGET(_menu_zoom_in) , INIT_WIDGET(_menu_zoom_out) + , INIT_WIDGET(_menu_zoom_full) , INIT_WIDGET(_menu_zoom_normal) , INIT_WIDGET(_messages_clear_but) , INIT_WIDGET(_messages_close_but) , INIT_WIDGET(_messages_win) , INIT_WIDGET(_project_list_viewport) + , INIT_WIDGET(_latency_frames_label) + , INIT_WIDGET(_latency_ms_label) , INIT_WIDGET(_sample_rate_label) , INIT_WIDGET(_status_text) - , INIT_WIDGET(_toolbar) - , INIT_WIDGET(_zoom_full_but) - , INIT_WIDGET(_zoom_normal_but) + , INIT_WIDGET(_statusbar) { _settings_filename = getenv("HOME"); _settings_filename += "/.patchagerc"; @@ -181,8 +150,6 @@ Patchage::Patchage(int argc, char** argv) _about_win->property_logo_icon_name() = "patchage"; gtk_window_set_default_icon_name("patchage"); - gtkmm_set_width_for_given_text(*_buffer_size_combo, "4096 frames", 40); - _main_scrolledwin->add(*_canvas); _main_scrolledwin->property_hadjustment().get_value()->set_step_increment(10); @@ -191,15 +158,6 @@ Patchage::Patchage(int argc, char** argv) _main_scrolledwin->signal_scroll_event().connect( sigc::mem_fun(this, &Patchage::on_scroll)); - _buffer_size_combo->signal_changed().connect( - sigc::mem_fun(this, &Patchage::buffer_size_changed)); - _clear_load_but->signal_clicked().connect( - sigc::mem_fun(this, &Patchage::clear_load)); - _zoom_normal_but->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &Patchage::zoom), 1.0)); - _zoom_full_but->signal_clicked().connect( - sigc::mem_fun(_canvas.get(), &PatchageCanvas::zoom_full)); - #ifdef HAVE_LASH _menu_open_session->signal_activate().connect( sigc::mem_fun(this, &Patchage::show_load_project_dialog)); @@ -228,8 +186,8 @@ Patchage::Patchage(int argc, char** argv) sigc::mem_fun(this, &Patchage::refresh)); _menu_view_arrange->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_arrange)); - _menu_view_toolbar->signal_activate().connect( - sigc::mem_fun(this, &Patchage::on_view_toolbar)); + _menu_view_statusbar->signal_activate().connect( + sigc::mem_fun(this, &Patchage::on_view_statusbar)); _menu_view_messages->signal_toggled().connect( sigc::mem_fun(this, &Patchage::on_show_messages)); _menu_view_projects->signal_toggled().connect( @@ -240,6 +198,8 @@ Patchage::Patchage(int argc, char** argv) sigc::mem_fun(this, &Patchage::on_zoom_in)); _menu_zoom_out->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_zoom_out)); + _menu_zoom_full->signal_activate().connect( + sigc::mem_fun(this, &Patchage::on_zoom_full)); _menu_zoom_normal->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_zoom_normal)); @@ -339,7 +299,7 @@ Patchage::attach() refresh(); - update_toolbar(); + update_statusbar(); } bool @@ -396,12 +356,27 @@ Patchage::idle_callback() } void -Patchage::update_toolbar() +Patchage::update_statusbar() { #if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) if (_enable_refresh && _jack_driver->is_attached()) { _enable_refresh = false; - _buffer_size_combo->set_active((int)log2f(_jack_driver->buffer_size()) - 5); + + const jack_nframes_t buffer_size = _jack_driver->buffer_size(); + const jack_nframes_t sample_rate = _jack_driver->sample_rate(); + + std::stringstream ss; + ss << buffer_size; + _latency_frames_label->set_text(ss.str()); + + ss.str(""); + ss << (sample_rate / 1000); + _sample_rate_label->set_text(ss.str()); + + ss.str(""); + ss << buffer_size * 1000 / sample_rate; + _latency_ms_label->set_text(ss.str()); + _enable_refresh = true; } #endif @@ -481,16 +456,6 @@ Patchage::store_window_location() } void -Patchage::clear_load() -{ -#if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) - _main_xrun_progress->set_fraction(0.0); - _jack_driver->reset_xruns(); - _jack_driver->reset_max_dsp_load(); -#endif -} - -void Patchage::error_msg(const std::string& msg) { #if defined(LOG_TO_STATUS) @@ -541,7 +506,7 @@ Patchage::connect_widgets() { #if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) _jack_driver->signal_attached.connect( - sigc::mem_fun(this, &Patchage::update_toolbar)); + sigc::mem_fun(this, &Patchage::update_statusbar)); _jack_driver->signal_attached.connect(sigc::bind( sigc::mem_fun(*_menu_jack_connect, &Gtk::MenuItem::set_sensitive), false)); _jack_driver->signal_attached.connect( @@ -636,6 +601,12 @@ Patchage::on_zoom_out() } void +Patchage::on_zoom_full() +{ + _canvas->zoom_full(); +} + +void Patchage::on_zoom_normal() { _canvas->set_zoom_and_font_size(1.0, _canvas->get_default_font_size()); @@ -701,12 +672,12 @@ Patchage::on_store_positions() } void -Patchage::on_view_toolbar() +Patchage::on_view_statusbar() { - if (_menu_view_toolbar->get_active()) - _toolbar->show(); + if (_menu_view_statusbar->get_active()) + _statusbar->show(); else - _toolbar->hide(); + _statusbar->hide(); } bool @@ -716,23 +687,6 @@ Patchage::on_scroll(GdkEventScroll* ev) } void -Patchage::buffer_size_changed() -{ -#if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) - const int selected = _buffer_size_combo->get_active_row_number(); - - if (selected == -1) { - update_toolbar(); - } else { - jack_nframes_t buffer_size = 1 << (selected+5); - - if ( ! _jack_driver->set_buffer_size(buffer_size)) - update_toolbar(); // reset combo box to actual value - } -#endif -} - -void Patchage::enqueue_resize(boost::shared_ptr<FlowCanvas::Module> module) { if (module) diff --git a/src/Patchage.hpp b/src/Patchage.hpp index 0c61d0d..459e361 100644 --- a/src/Patchage.hpp +++ b/src/Patchage.hpp @@ -95,9 +95,10 @@ protected: void on_show_messages(); void on_show_projects(); void on_store_positions(); - void on_view_toolbar(); + void on_view_statusbar(); void on_zoom_in(); void on_zoom_out(); + void on_zoom_full(); void on_zoom_normal(); bool on_scroll(GdkEventScroll* ev); @@ -105,7 +106,7 @@ protected: void zoom(double z); bool idle_callback(); bool update_load(); - void update_toolbar(); + void update_statusbar(); void buffer_size_changed(); @@ -145,8 +146,6 @@ protected: bool _enable_refresh; Widget<Gtk::AboutDialog> _about_win; - Widget<Gtk::ComboBox> _buffer_size_combo; - Widget<Gtk::ToolButton> _clear_load_but; Widget<Gtk::ScrolledWindow> _main_scrolledwin; Widget<Gtk::Window> _main_win; Widget<Gtk::ProgressBar> _main_xrun_progress; @@ -162,19 +161,20 @@ protected: Widget<Gtk::CheckMenuItem> _menu_view_messages; Widget<Gtk::CheckMenuItem> _menu_view_projects; Widget<Gtk::MenuItem> _menu_view_refresh; - Widget<Gtk::CheckMenuItem> _menu_view_toolbar; + Widget<Gtk::CheckMenuItem> _menu_view_statusbar; Widget<Gtk::ImageMenuItem> _menu_zoom_in; Widget<Gtk::ImageMenuItem> _menu_zoom_out; + Widget<Gtk::ImageMenuItem> _menu_zoom_full; Widget<Gtk::ImageMenuItem> _menu_zoom_normal; Widget<Gtk::Button> _messages_clear_but; Widget<Gtk::Button> _messages_close_but; Widget<Gtk::Dialog> _messages_win; Widget<Gtk::Viewport> _project_list_viewport; + Widget<Gtk::Label> _latency_frames_label; + Widget<Gtk::Label> _latency_ms_label; Widget<Gtk::Label> _sample_rate_label; Widget<Gtk::TextView> _status_text; - Widget<Gtk::Toolbar> _toolbar; - Widget<Gtk::ToolButton> _zoom_full_but; - Widget<Gtk::ToolButton> _zoom_normal_but; + Widget<Gtk::Statusbar> _statusbar; }; #endif // PATCHAGE_PATCHAGE_HPP diff --git a/src/patchage.ui b/src/patchage.ui index c18e3cc..615225c 100644 --- a/src/patchage.ui +++ b/src/patchage.ui @@ -8,6 +8,7 @@ <child> <object class="GtkVBox" id="main_vbox"> <property name="visible">True</property> + <property name="orientation">vertical</property> <child> <object class="GtkMenuBar" id="menubar"> <property name="visible">True</property> @@ -118,16 +119,6 @@ <child type="submenu"> <object class="GtkMenu" id="view_menu_menu"> <child> - <object class="GtkCheckMenuItem" id="menu_view_toolbar"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Toolbar</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_menu_view_toolbar_activate"/> - </object> - </child> - <child> <object class="GtkCheckMenuItem" id="menu_view_projects"> <property name="visible">True</property> <property name="label" translatable="yes">_Projects</property> @@ -145,6 +136,16 @@ </object> </child> <child> + <object class="GtkCheckMenuItem" id="menu_view_statusbar"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Statusbar</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_menu_view_toolbar_activate"/> + </object> + </child> + <child> <object class="GtkSeparatorMenuItem" id="menuitem1"> <property name="visible">True</property> </object> @@ -168,6 +169,14 @@ </object> </child> <child> + <object class="GtkImageMenuItem" id="menu_zoom_full"> + <property name="label">gtk-zoom-fit</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </object> + </child> + <child> <object class="GtkImageMenuItem" id="menu_zoom_normal"> <property name="label">gtk-zoom-100</property> <property name="visible">True</property> @@ -233,168 +242,12 @@ </packing> </child> <child> - <object class="GtkToolbar" id="toolbar"> - <property name="visible">True</property> - <property name="toolbar_style">icons</property> - <property name="show_arrow">False</property> - <property name="icon_size">1</property> - <property name="icon_size_set">True</property> - <child> - <object class="GtkToolItem" id="toolitem28"> - <property name="visible">True</property> - <property name="visible_vertical">False</property> - <child> - <object class="GtkAlignment" id="alignment2"> - <property name="visible">True</property> - <property name="yscale">0</property> - <child> - <object class="GtkHBox" id="hbox4"> - <property name="visible">True</property> - <child> - <object class="GtkLabel" id="label10"> - <property name="visible">True</property> - <property name="label" translatable="yes"> Latency: </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkComboBoxEntry" id="buffer_size_combo"> - <property name="visible">True</property> - <property name="border_width">1</property> - </object> - <packing> - <property name="padding">1</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="sample_rate_label"> - <property name="label" translatable="yes">48</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">1</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label9"> - <property name="xpad">1</property> - <property name="label" translatable="yes">kHz</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <object class="GtkSeparatorToolItem" id="separatortoolitem3"> - <property name="visible">True</property> - <property name="border_width">8</property> - </object> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="clear_load_but"> - <property name="visible">True</property> - <property name="stock_id">gtk-clear</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkToolItem" id="toolitem30"> - <property name="visible">True</property> - <child> - <object class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="yscale">0</property> - <child> - <object class="GtkProgressBar" id="main_xrun_progress"> - <property name="visible">True</property> - <property name="pulse_step">0.10000000149</property> - <property name="text" translatable="yes">0 Dropouts</property> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <object class="GtkSeparatorToolItem" id="toolbutton1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="draw">False</property> - </object> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <object class="GtkSeparatorToolItem" id="toolbutton2"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </object> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="zoom_normal_but"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="stock_id">gtk-zoom-100</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="zoom_full_but"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="stock_id">gtk-zoom-fit</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - <child> <object class="GtkHPaned" id="hpaned1"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="position">204</property> + <property name="position_set">True</property> <child> <object class="GtkViewport" id="project_list_viewport"> <property name="visible">True</property> @@ -416,8 +269,6 @@ <object class="GtkScrolledWindow" id="main_scrolledwin"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="is_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> <property name="receives_default">True</property> @@ -435,6 +286,117 @@ </child> </object> <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkStatusbar" id="statusbar"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">Latency: </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="latency_frames_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">1024</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="frames_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"> frames @ </property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="sample_rate_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">48</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">1</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="label" translatable="yes"> kHz (</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="latency_ms_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">21</property> + </object> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label" translatable="yes"> ms)</property> + </object> + <packing> + <property name="position">6</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkProgressBar" id="main_xrun_progress"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="pulse_step">0.10000000149</property> + <property name="text" translatable="yes">0 Dropouts</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="padding">2</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="padding">1</property> <property name="position">2</property> </packing> </child> |