gui: initial dialog for starting programs
This commit is contained in:
parent
185034b263
commit
94c197fe33
243
gui/gui.glade
243
gui/gui.glade
|
@ -136,7 +136,7 @@
|
|||
<property name="use_underline">True</property>
|
||||
<accelerator key="U" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="menu-item-image5">
|
||||
<widget class="GtkImage" id="menu-item-image17">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-close</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -151,7 +151,7 @@
|
|||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_delete_project_menuitem_activate"/>
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image823">
|
||||
<widget class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-delete</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -247,15 +247,30 @@
|
|||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="application_menu_item">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Application</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="application_menu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_item_start_app">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="label" translatable="yes">Start Application</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Run...</property>
|
||||
<property name="use_underline">True</property>
|
||||
<accelerator key="R" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||
<accelerator key="F2" modifiers="" signal="activate"/>
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="menu-item-image12">
|
||||
<widget class="GtkImage" id="menu-item-image151">
|
||||
<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">gtk-execute</property>
|
||||
</widget>
|
||||
</child>
|
||||
|
@ -320,7 +335,7 @@
|
|||
<property name="label" translatable="yes">_Configure JACK</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="menu-item-image17">
|
||||
<widget class="GtkImage" id="menu-item-image18">
|
||||
<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">gtk-preferences</property>
|
||||
|
@ -1021,4 +1036,220 @@ along with LADI Session Handler; if not, write to the Free Software Foundation,
|
|||
<property name="message_type">GTK_MESSAGE_ERROR</property>
|
||||
<property name="buttons">GTK_BUTTONS_CLOSE</property>
|
||||
</widget>
|
||||
<widget class="GtkDialog" id="app_dialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">Run custom command</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
|
||||
<property name="default_width">400</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="transient_for">main_win</property>
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="dialog-vbox10">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">GTK_ORIENTATION_VERTICAL</property>
|
||||
<property name="spacing">2</property>
|
||||
<property name="orientation">GTK_ORIENTATION_VERTICAL</property>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">7</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="column_spacing">5</property>
|
||||
<property name="row_spacing">5</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Command:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label5">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Name:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="app_name_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">•</property>
|
||||
<property name="activates_default">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="app_terminal_check_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">Run in Terminal</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="app_level0">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">Level 0</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="app_level1">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">Level 1</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">app_level0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="app_command_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="has_focus">True</property>
|
||||
<property name="invisible_char">•</property>
|
||||
<property name="activates_default">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="app_level2">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">Level 2</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">app_level0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="app_level3">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">Level 3</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">app_level0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="bottom_attach">7</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="dialog-action_area10">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">1</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="has_default">True</property>
|
||||
<property name="receives_default">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="label" translatable="yes">gtk-ok</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">2</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
||||
|
|
42
gui/main.c
42
gui/main.c
|
@ -57,14 +57,15 @@ GtkWidget * g_menu_item_rename_studio;
|
|||
GtkWidget * g_menu_item_create_room;
|
||||
GtkWidget * g_menu_item_destroy_room;
|
||||
GtkWidget * g_menu_item_load_project;
|
||||
GtkWidget * g_menu_item_start_app;
|
||||
GtkWidget * g_menu_item_daemon_exit;
|
||||
GtkWidget * g_menu_item_jack_configure;
|
||||
GtkWidget * g_studio_status_label;
|
||||
GtkWidget * g_menu_item_view_toolbar;
|
||||
GtkWidget * g_toolbar;
|
||||
GtkWidget * g_menu_item_start_app;
|
||||
|
||||
GtkWidget * g_name_dialog;
|
||||
GtkWidget * g_app_dialog;
|
||||
|
||||
graph_view_handle g_jack_view = NULL;
|
||||
graph_view_handle g_studio_view = NULL;
|
||||
|
@ -224,6 +225,32 @@ void error_message_box(const char * failed_operation)
|
|||
gtk_widget_hide(dialog);
|
||||
}
|
||||
|
||||
void run_custom_command_dialog(void)
|
||||
{
|
||||
guint result;
|
||||
GtkEntry * command_entry = GTK_ENTRY(get_glade_widget("app_command_entry"));
|
||||
GtkEntry * name_entry = GTK_ENTRY(get_glade_widget("app_name_entry"));
|
||||
GtkToggleButton * terminal_button = GTK_TOGGLE_BUTTON(get_glade_widget("app_terminal_check_button"));
|
||||
/* GtkToggleButton * level0_button = GTK_TOGGLE_BUTTON(get_glade_widget("app_level0")); */
|
||||
/* GtkToggleButton * level1_button = GTK_TOGGLE_BUTTON(get_glade_widget("app_level1")); */
|
||||
/* GtkToggleButton * level2_button = GTK_TOGGLE_BUTTON(get_glade_widget("app_level2")); */
|
||||
/* GtkToggleButton * level3_button = GTK_TOGGLE_BUTTON(get_glade_widget("app_level3")); */
|
||||
|
||||
gtk_entry_set_text(name_entry, "");
|
||||
gtk_entry_set_text(command_entry, "");
|
||||
gtk_toggle_button_set_active(terminal_button, FALSE);
|
||||
|
||||
gtk_widget_show(g_app_dialog);
|
||||
|
||||
result = gtk_dialog_run(GTK_DIALOG(g_app_dialog));
|
||||
if (result == 2)
|
||||
{
|
||||
log_info("'%s':'%s' %s", gtk_entry_get_text(name_entry), gtk_entry_get_text(command_entry), gtk_toggle_button_get_active(terminal_button) ? "terminal" : "shell");
|
||||
}
|
||||
|
||||
gtk_widget_hide(g_app_dialog);
|
||||
}
|
||||
|
||||
static void arrange(void)
|
||||
{
|
||||
canvas_handle canvas;
|
||||
|
@ -392,6 +419,11 @@ static void new_studio(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void start_app(void)
|
||||
{
|
||||
run_custom_command_dialog();
|
||||
}
|
||||
|
||||
static void start_studio(void)
|
||||
{
|
||||
log_info("start studio request");
|
||||
|
@ -469,10 +501,10 @@ void control_proxy_on_studio_appeared(void)
|
|||
gtk_widget_set_sensitive(g_menu_item_save_studio, true);
|
||||
gtk_widget_set_sensitive(g_menu_item_unload_studio, true);
|
||||
gtk_widget_set_sensitive(g_menu_item_rename_studio, true);
|
||||
gtk_widget_set_sensitive(g_menu_item_start_app, true);
|
||||
//gtk_widget_set_sensitive(g_menu_item_create_room, true);
|
||||
//gtk_widget_set_sensitive(g_menu_item_destroy_room, true);
|
||||
//gtk_widget_set_sensitive(g_menu_item_load_project, true);
|
||||
//gtk_widget_set_sensitive(g_menu_item_start_app, true);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(g_studio_status_label), name);
|
||||
|
||||
|
@ -496,10 +528,10 @@ void control_proxy_on_studio_disappeared(void)
|
|||
gtk_widget_set_sensitive(g_menu_item_save_studio, false);
|
||||
gtk_widget_set_sensitive(g_menu_item_unload_studio, false);
|
||||
gtk_widget_set_sensitive(g_menu_item_rename_studio, false);
|
||||
gtk_widget_set_sensitive(g_menu_item_start_app, false);
|
||||
//gtk_widget_set_sensitive(g_menu_item_create_room, false);
|
||||
//gtk_widget_set_sensitive(g_menu_item_destroy_room, false);
|
||||
//gtk_widget_set_sensitive(g_menu_item_load_project, false);
|
||||
//gtk_widget_set_sensitive(g_menu_item_start_app, false);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(g_studio_status_label), "No studio loaded");
|
||||
|
||||
|
@ -643,6 +675,7 @@ int main(int argc, char** argv)
|
|||
g_xrun_progress_bar = get_glade_widget("xrun_progress_bar");
|
||||
g_buffer_size_combo = get_glade_widget("buffer_size_combo");
|
||||
g_menu_item_new_studio = get_glade_widget("menu_item_new_studio");
|
||||
g_menu_item_start_app = get_glade_widget("menu_item_start_app");
|
||||
g_menu_item_start_studio = get_glade_widget("menu_item_start_studio");
|
||||
g_menu_item_stop_studio = get_glade_widget("menu_item_stop_studio");
|
||||
g_menu_item_save_studio = get_glade_widget("menu_item_save_studio");
|
||||
|
@ -651,7 +684,6 @@ int main(int argc, char** argv)
|
|||
g_menu_item_create_room = get_glade_widget("menu_item_create_room");
|
||||
g_menu_item_destroy_room = get_glade_widget("menu_item_destroy_room");
|
||||
g_menu_item_load_project = get_glade_widget("menu_item_load_project");
|
||||
g_menu_item_start_app = get_glade_widget("menu_item_start_app");
|
||||
g_menu_item_daemon_exit = get_glade_widget("menu_item_daemon_exit");
|
||||
g_menu_item_jack_configure = get_glade_widget("menu_item_jack_configure");
|
||||
g_studio_status_label = get_glade_widget("studio_status_label");
|
||||
|
@ -659,6 +691,7 @@ int main(int argc, char** argv)
|
|||
g_toolbar = get_glade_widget("toolbar");
|
||||
|
||||
g_name_dialog = get_glade_widget("name_dialog");
|
||||
g_app_dialog = get_glade_widget("app_dialog");
|
||||
|
||||
init_studio_list(&g_load_studio_list, "menu_item_load_studio", "load_studio_menu", on_load_studio);
|
||||
init_studio_list(&g_delete_studio_list, "menu_item_delete_studio", "delete_studio_menu", on_delete_studio);
|
||||
|
@ -702,6 +735,7 @@ int main(int argc, char** argv)
|
|||
g_signal_connect(G_OBJECT(g_menu_item_daemon_exit), "activate", G_CALLBACK(daemon_exit), NULL);
|
||||
g_signal_connect(G_OBJECT(g_menu_item_jack_configure), "activate", G_CALLBACK(jack_configure), NULL);
|
||||
g_signal_connect(G_OBJECT(get_glade_widget("menu_item_help_about")), "activate", G_CALLBACK(show_about), NULL);
|
||||
g_signal_connect(G_OBJECT(g_menu_item_start_app), "activate", G_CALLBACK(start_app), NULL);
|
||||
|
||||
gtk_widget_show(g_main_win);
|
||||
|
||||
|
|
Loading…
Reference in New Issue