X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui.c;h=c62f3266501ea50d37da815e7507143ed6d89daa;hb=45c8086f97097df36ba8cd0552f152be80f79b12;hp=5a00a93d0b5102ff33bc8e4e8d1c47537df06065;hpb=e865e692994c2cc3d87d346c9ee354e6f82925ea;p=psensor.git diff --git a/src/ui.c b/src/ui.c index 5a00a93..c62f326 100644 --- a/src/ui.c +++ b/src/ui.c @@ -1,43 +1,74 @@ /* - Copyright (C) 2010-2011 jeanfi@gmail.com - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA -*/ - + * Copyright (C) 2010-2011 jeanfi@gmail.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ #include "cfg.h" #include "ui.h" #include "ui_graph.h" #include "ui_pref.h" #include "ui_sensorpref.h" #include "ui_sensorlist.h" +#include "ui_status.h" #include "ui_appindicator.h" +static void save_window_pos(struct ui_psensor *ui) +{ + gboolean visible; + GtkWindow *win; + struct config *cfg; + + visible = gtk_widget_get_visible(ui->main_window); + log_debug("Window visible: %d", visible); + + if (visible == TRUE) { + cfg = ui->config; + + win = GTK_WINDOW(ui->main_window); + + gtk_window_get_position(win, &cfg->window_x, &cfg->window_y); + log_debug("Window position: %d %d", + cfg->window_x, + cfg->window_y); + + gtk_window_get_size(win, + &cfg->window_w, + &cfg->window_h); + log_debug("Window size: %d %d", cfg->window_w, cfg->window_h); + + cfg->window_divider_pos + = gtk_paned_get_position(GTK_PANED(ui->sensor_box)); + + config_save(cfg); + } +} + static gboolean on_delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { struct ui_psensor *ui = data; -#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029) - if (is_appindicator_supported()) + save_window_pos(ui); + + log_debug("is_status_supported: %d\n", is_status_supported()); + + if (is_appindicator_supported() || is_status_supported()) gtk_widget_hide(ui->main_window); - else + else ui_psensor_quit(ui); -#else - ui_psensor_quit(ui); -#endif return TRUE; } @@ -84,6 +115,9 @@ static void cb_sensor_preferences(GtkMenuItem *mi, gpointer data) void ui_psensor_quit(struct ui_psensor *ui) { + save_window_pos(ui); + + log_debug("Destroy main window"); gtk_widget_destroy(ui->main_window); gtk_main_quit(); } @@ -174,13 +208,23 @@ static unsigned int enable_alpha_channel(GtkWidget *w) void ui_window_create(struct ui_psensor *ui) { - GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget *window, *menubar; GdkScreen *screen; GdkPixbuf *icon; GtkIconTheme *icon_theme; - GtkWidget *menubar; + struct config *cfg; + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + + cfg = ui->config; + if (cfg->window_restore_enabled) + gtk_window_move(GTK_WINDOW(window), + cfg->window_x, + cfg->window_y); - gtk_window_set_default_size(GTK_WINDOW(window), 800, 200); + gtk_window_set_default_size(GTK_WINDOW(window), + cfg->window_w, + cfg->window_h); gtk_window_set_title(GTK_WINDOW(window), _("Psensor - Temperature Monitor")); @@ -188,12 +232,11 @@ void ui_window_create(struct ui_psensor *ui) screen = gtk_widget_get_screen(window); - if (ui->config->alpha_channel_enabled - && gdk_screen_is_composited(screen)) { + if (cfg->alpha_channel_enabled && gdk_screen_is_composited(screen)) { if (!enable_alpha_channel(window)) - ui->config->alpha_channel_enabled = 0; + cfg->alpha_channel_enabled = 0; } else { - ui->config->alpha_channel_enabled = 0; + cfg->alpha_channel_enabled = 0; } icon_theme = gtk_icon_theme_get_default(); @@ -207,10 +250,10 @@ void ui_window_create(struct ui_psensor *ui) "delete_event", G_CALLBACK(on_delete_event_cb), ui); gtk_window_set_decorated(GTK_WINDOW(window), - ui->config->window_decoration_enabled); + cfg->window_decoration_enabled); gtk_window_set_keep_below(GTK_WINDOW(window), - ui->config->window_keep_below_enabled); + cfg->window_keep_below_enabled); /* main box */ menubar = get_menu(ui); @@ -225,15 +268,7 @@ void ui_window_create(struct ui_psensor *ui) ui->main_window = window; ui->menu_bar = menubar; -#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029) - if (ui->config->hide_on_startup) - gtk_widget_show_all(ui->main_box); - else - gtk_widget_show_all(ui->main_window); -#else - gtk_widget_show_all(ui->main_window); -#endif - + gtk_widget_show_all(ui->main_box); } static void menu_bar_show(unsigned int show, struct ui_psensor *ui) @@ -286,6 +321,10 @@ void ui_window_update(struct ui_psensor *ui) GTK_WIDGET(ui->w_graph), TRUE, TRUE); } + if (cfg->window_restore_enabled) + gtk_paned_set_position(GTK_PANED(ui->sensor_box), + ui->config->window_divider_pos); + if (!init) g_object_unref(GTK_WIDGET(ui->ui_sensorlist->widget)); @@ -296,3 +335,9 @@ void ui_window_update(struct ui_psensor *ui) else menu_bar_show(1, ui); } + +void ui_window_show(struct ui_psensor *ui) +{ + log_debug("ui_window_show()"); + gtk_window_present(GTK_WINDOW(ui->main_window)); +}