gfio: add support for making job menu visible or not
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/gfio.c b/gfio.c
index 4bc3a3e..40ef34c 100644
--- a/gfio.c
+++ b/gfio.c
@@ -104,6 +104,8 @@
* Main window widgets and data
*/
struct gui {
+ GtkUIManager *uimanager;
+ GtkWidget *menu;
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *topvbox;
@@ -2335,6 +2337,14 @@
</ui> \
";
+static void set_job_menu_visible(struct gui *ui, int visible)
+{
+ GtkWidget *job;
+
+ job = gtk_ui_manager_get_widget(ui->uimanager, "/MainMenu/JobMenu");
+ gtk_widget_set_sensitive(job, visible);
+}
+
static GtkWidget *get_menubar_menu(GtkWidget *window, GtkUIManager *ui_manager,
struct gui *ui)
{
@@ -2348,6 +2358,7 @@
gtk_ui_manager_add_ui_from_string(GTK_UI_MANAGER(ui_manager), ui_string, -1, &error);
gtk_window_add_accel_group(GTK_WINDOW(window), gtk_ui_manager_get_accel_group(ui_manager));
+
return gtk_ui_manager_get_widget(ui_manager, "/MainMenu");
}
@@ -2571,14 +2582,16 @@
guint page, gpointer data)
{
+ struct gui *ui = (struct gui *) data;
+
+ set_job_menu_visible(ui, page);
return TRUE;
}
static void init_ui(int *argc, char **argv[], struct gui *ui)
{
GtkSettings *settings;
- GtkUIManager *uimanager;
- GtkWidget *menu, *vbox;
+ GtkWidget *vbox;
/* Magical g*thread incantation, you just need this thread stuff.
* Without it, the update that happens in gfio_update_thread_status
@@ -2603,9 +2616,9 @@
ui->vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(ui->window), ui->vbox);
- uimanager = gtk_ui_manager_new();
- menu = get_menubar_menu(ui->window, uimanager, ui);
- gfio_ui_setup(settings, menu, ui->vbox, uimanager);
+ ui->uimanager = gtk_ui_manager_new();
+ ui->menu = get_menubar_menu(ui->window, ui->uimanager, ui);
+ gfio_ui_setup(settings, ui->menu, ui->vbox, ui->uimanager);
ui->notebook = gtk_notebook_new();
g_signal_connect(ui->notebook, "switch-page", G_CALLBACK(notebook_switch_page), ui);