Start and stop A2J bridge menu entries

This commit is contained in:
Nedko Arnaudov 2008-09-13 15:26:22 +03:00
parent 79ffd453ec
commit 057bfda4e4
5 changed files with 80 additions and 0 deletions

View File

@ -93,6 +93,8 @@ Patchage::Patchage(int argc, char** argv)
, INIT_WIDGET(_menu_help_about)
, INIT_WIDGET(_menu_jack_start)
, INIT_WIDGET(_menu_jack_stop)
, INIT_WIDGET(_menu_a2j_start)
, INIT_WIDGET(_menu_a2j_stop)
, INIT_WIDGET(_menu_load_project)
, INIT_WIDGET(_menu_save_all_projects)
, INIT_WIDGET(_menu_close_all_projects)
@ -220,6 +222,11 @@ Patchage::Patchage(int argc, char** argv)
_menu_jack_stop->signal_activate().connect(
sigc::mem_fun(_jack, &jack_proxy::stop_server));
_menu_a2j_start->signal_activate().connect(
sigc::mem_fun(_a2j, &a2j_proxy::start_bridge));
_menu_a2j_stop->signal_activate().connect(
sigc::mem_fun(_a2j, &a2j_proxy::stop_bridge));
jack_status_changed(_jack->is_started());
connect_widgets();
@ -573,16 +580,24 @@ Patchage::set_a2j_status(
{
case A2J_STATUS_NO_RESPONSE:
status_text = "A2J N/A";
_menu_a2j_start->set_sensitive(false);
_menu_a2j_stop->set_sensitive(false);
break;
case A2J_STATUS_BRIDGE_STOPPED:
status_text = "A2J bridge stopped";
_menu_a2j_start->set_sensitive(true);
_menu_a2j_stop->set_sensitive(false);
break;
case A2J_STATUS_BRIDGE_STARTED:
status_text = "A2J bridge started";
_menu_a2j_start->set_sensitive(false);
_menu_a2j_stop->set_sensitive(true);
break;
default:
error_msg(str(boost::format("Unknown A2J status %u") % status));
status_text = "Unknown A2J status";
_menu_a2j_start->set_sensitive(true);
_menu_a2j_stop->set_sensitive(true);
break;
}

View File

@ -165,6 +165,8 @@ protected:
Widget<Gtk::MenuItem> _menu_help_about;
Widget<Gtk::MenuItem> _menu_jack_start;
Widget<Gtk::MenuItem> _menu_jack_stop;
Widget<Gtk::MenuItem> _menu_a2j_start;
Widget<Gtk::MenuItem> _menu_a2j_stop;
Widget<Gtk::MenuItem> _menu_load_project;
Widget<Gtk::MenuItem> _menu_save_all_projects;
Widget<Gtk::MenuItem> _menu_close_all_projects;

View File

@ -310,3 +310,29 @@ a2j_proxy_impl::is_started()
return started;
}
void
a2j_proxy::start_bridge()
{
DBusMessage * reply_ptr;
if (!_impl_ptr->call(true, A2J_IFACE_CONTROL, "start", &reply_ptr, DBUS_TYPE_INVALID))
{
return;
}
dbus_message_unref(reply_ptr);
}
void
a2j_proxy::stop_bridge()
{
DBusMessage * reply_ptr;
if (!_impl_ptr->call(true, A2J_IFACE_CONTROL, "stop", &reply_ptr, DBUS_TYPE_INVALID))
{
return;
}
dbus_message_unref(reply_ptr);
}

View File

@ -40,6 +40,12 @@ public:
string& alsa_client_name,
string& alsa_port_name);
void
start_bridge();
void
stop_bridge();
private:
a2j_proxy_impl * _impl_ptr;
};

View File

@ -144,6 +144,37 @@
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_a2j_start">
<property name="visible">True</property>
<property name="label" translatable="yes">Start A2J bridge</property>
<property name="use_underline">True</property>
<accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image11">
<property name="visible">True</property>
<property name="stock">gtk-media-play</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_a2j_stop">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">Stop A2J bridge</property>
<property name="use_underline">True</property>
<accelerator key="A" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image12">
<property name="visible">True</property>
<property name="stock">gtk-media-stop</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
</widget>
</child>
</widget>