From 13a2f781c225ac11ac2ccce567eebfae37b0e856 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 24 Apr 2011 21:44:19 +0000 Subject: [PATCH] added menu --- NEWS | 1 + src/main.c | 2 +- src/ui.c | 41 +++++++++++++++++++++++++++++++++++++---- src/ui.h | 2 +- src/ui_appindicator.c | 4 ++-- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 73534d1..3465c34 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ ** merged french translation from v0.6.1.8 ** added missing french translation ** added different sizes of psensor.png +** psensor: added menu * v0.6.2.7 diff --git a/src/main.c b/src/main.c index 7b8deb9..2fa038f 100644 --- a/src/main.c +++ b/src/main.c @@ -380,7 +380,7 @@ int main(int argc, char **argv) associate_cb_alarm_raised(ui.sensors, &ui); /* main window */ - ui.main_window = ui_window_create(&ui); + ui_window_create(&ui); ui.sensor_box = NULL; /* drawing box */ diff --git a/src/ui.c b/src/ui.c index 6cc04f3..af021f4 100644 --- a/src/ui.c +++ b/src/ui.c @@ -32,13 +32,36 @@ void ui_psensor_quit() gtk_main_quit(); } -GtkWidget *ui_window_create(struct ui_psensor * ui) +static GtkItemFactoryEntry menu_items[] = { + {"/Psensor", NULL, NULL, 0, ""}, + {"/Psensor/Preferences", + NULL, NULL, 0, ""}, + {"/Psensor/sep1", + NULL, NULL, 0, ""}, + {"/Psensor/Quit", + "", NULL, 0, "", GTK_STOCK_QUIT}, +}; + +static gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); +static GtkWidget *get_menu() +{ + GtkItemFactory *item_factory; + + item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", NULL); + + gtk_item_factory_create_items(item_factory, + nmenu_items, menu_items, NULL); + return gtk_item_factory_get_widget(item_factory, "
"); +} + +void ui_window_create(struct ui_psensor * ui) { GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GdkScreen *screen; GdkColormap *colormap; GdkPixbuf *icon; GtkIconTheme *icon_theme; + GtkWidget *menubar; gtk_window_set_default_size(GTK_WINDOW(window), 800, 200); @@ -75,7 +98,17 @@ GtkWidget *ui_window_create(struct ui_psensor * ui) gtk_window_set_keep_below(GTK_WINDOW(window), ui->config->window_keep_below_enabled); - return window; + /* main box */ + menubar = get_menu(); + + ui->main_box = gtk_vbox_new(FALSE, 1); + + gtk_box_pack_start(GTK_BOX(ui->main_box), menubar, + FALSE, TRUE, 0); + + gtk_container_add(GTK_CONTAINER(window), ui->main_box); + + ui->main_window = window; } void ui_sensor_box_create(struct ui_psensor *ui) @@ -88,7 +121,7 @@ void ui_sensor_box_create(struct ui_psensor *ui) if (ui->sensor_box) { ui_sensorlist_create_widget(ui->ui_sensorlist); - gtk_container_remove(GTK_CONTAINER(ui->main_window), + gtk_container_remove(GTK_CONTAINER(ui->main_box), ui->sensor_box); ui->w_graph = ui_graph_create(ui); @@ -107,7 +140,7 @@ void ui_sensor_box_create(struct ui_psensor *ui) gtk_container_add(GTK_CONTAINER(w_sensorlist), ui->ui_sensorlist->widget); - gtk_container_add(GTK_CONTAINER(ui->main_window), ui->sensor_box); + gtk_box_pack_end(GTK_BOX(ui->main_box), ui->sensor_box, TRUE, TRUE, 2); if (cfg->sensorlist_position == SENSORLIST_POSITION_RIGHT || cfg->sensorlist_position == SENSORLIST_POSITION_BOTTOM) { diff --git a/src/ui.h b/src/ui.h index affb9a8..489f2d7 100644 --- a/src/ui.h +++ b/src/ui.h @@ -86,6 +86,6 @@ void ui_psensor_quit(); /* Creates the main GTK window */ -GtkWidget *ui_window_create(struct ui_psensor * ui); +void ui_window_create(struct ui_psensor * ui); #endif diff --git a/src/ui_appindicator.c b/src/ui_appindicator.c index c259a00..7d507a3 100644 --- a/src/ui_appindicator.c +++ b/src/ui_appindicator.c @@ -72,7 +72,7 @@ static GtkItemFactoryEntry menu_items[] = { }; static gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); -GtkWidget *ui_appindicator_get_menu(struct ui_psensor *ui) +static GtkWidget *get_menu(struct ui_psensor *ui) { GtkItemFactory *item_factory; @@ -126,6 +126,6 @@ void ui_appindicator_init(struct ui_psensor *ui) app_indicator_set_status(ui->indicator, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_attention_icon(ui->indicator, "psensor_hot"); - indicatormenu = ui_appindicator_get_menu(ui); + indicatormenu = get_menu(ui); app_indicator_set_menu(ui->indicator, GTK_MENU(indicatormenu)); } -- 2.7.4