added menu
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 24 Apr 2011 21:44:19 +0000 (21:44 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 24 Apr 2011 21:44:19 +0000 (21:44 +0000)
NEWS
src/main.c
src/ui.c
src/ui.h
src/ui_appindicator.c

diff --git a/NEWS b/NEWS
index 73534d1..3465c34 100644 (file)
--- 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
 
index 7b8deb9..2fa038f 100644 (file)
@@ -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 */
index 6cc04f3..af021f4 100644 (file)
--- 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, "<Branch>"},
+       {"/Psensor/Preferences",
+        NULL, NULL, 0, "<Item>"},
+       {"/Psensor/sep1",
+        NULL, NULL, 0, "<Separator>"},
+       {"/Psensor/Quit",
+        "", NULL, 0, "<StockItem>", 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, "<main>", NULL);
+
+       gtk_item_factory_create_items(item_factory,
+                                     nmenu_items, menu_items, NULL);
+       return gtk_item_factory_get_widget(item_factory, "<main>");
+}
+
+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) {
index affb9a8..489f2d7 100644 (file)
--- 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
index c259a00..7d507a3 100644 (file)
@@ -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));
 }