diff options
author | Victor Kareh <[email protected]> | 2018-05-02 06:24:14 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-05-12 22:22:15 +0200 |
commit | a03ead3c85f5597d8394bf87b9bbddd76d775ae9 (patch) | |
tree | 6814da6859812eeddd920790303eb4aeb8f783c1 /battstat/battstat_applet.c | |
parent | 7185a704026f9fccf253c0993be986d359f16526 (diff) | |
download | mate-applets-a03ead3c85f5597d8394bf87b9bbddd76d775ae9.tar.bz2 mate-applets-a03ead3c85f5597d8394bf87b9bbddd76d775ae9.tar.xz |
battstat: Load theme icons instead of pixmaps
Also remove the outdated option for expanded view.
Diffstat (limited to 'battstat/battstat_applet.c')
-rw-r--r-- | battstat/battstat_applet.c | 588 |
1 files changed, 63 insertions, 525 deletions
diff --git a/battstat/battstat_applet.c b/battstat/battstat_applet.c index e45b246a..9cc791ea 100644 --- a/battstat/battstat_applet.c +++ b/battstat/battstat_applet.c @@ -45,7 +45,6 @@ #endif #include "battstat.h" -#include "pixmaps.h" #ifndef gettext_noop #define gettext_noop(String) (String) @@ -72,168 +71,6 @@ static const GtkActionEntry battstat_menu_actions [] = { #define AC_POWER_STRING _("System is running on AC power") #define DC_POWER_STRING _("System is running on battery power") -/* The icons for Battery, Critical, AC and Charging */ -static GdkPixbuf *statusimage[STATUS_PIXMAP_NUM]; - -/* Assuming a horizontal battery, the colour is drawn into it one horizontal - line at a time as a vertical gradient. The following arrays decide where - each horizontal line starts (the length of the lines varies with the - percentage battery life remaining). -*/ -static const int pixel_offset_top[]={ 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5 }; -static const int pixel_top_length[]={ 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2 }; -static const int pixel_offset_bottom[]={ 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38 }; - - -/* The following array is the colour of each line. The (slightly) varying - colours are what makes for the gradient effect. The 'dark' colours are - used to draw the end of the bar, giving it more of a 3D look. The code - assumes that all of these arrays will have the same number of elements. -*/ -static GdkColor green[] = { - {0,0x7A00,0xDB00,0x7000}, - {0,0x9100,0xE900,0x8500}, - {0,0xA000,0xF100,0x9500}, - {0,0x9600,0xEE00,0x8A00}, - {0,0x8E00,0xE900,0x8100}, - {0,0x8500,0xE500,0x7700}, - {0,0x7C00,0xDF00,0x6E00}, - {0,0x7300,0xDA00,0x6500}, - {0,0x6A00,0xD600,0x5B00}, - {0,0x6000,0xD000,0x5100}, - {0,0x5600,0xCA00,0x4600}, - {0,0x5100,0xC100,0x4200}, -}; - -static GdkColor red[] = { - {0,0xD900,0x7200,0x7400}, - {0,0xE600,0x8800,0x8C00}, - {0,0xF000,0x9600,0x9A00}, - {0,0xEB00,0x8D00,0x9100}, - {0,0xE700,0x8300,0x8800}, - {0,0xE200,0x7A00,0x7F00}, - {0,0xDD00,0x7100,0x7600}, - {0,0xD800,0x6700,0x6D00}, - {0,0xD300,0x5D00,0x6300}, - {0,0xCD00,0x5400,0x5900}, - {0,0xC800,0x4900,0x4F00}, - {0,0xC100,0x4200,0x4700}, -}; - -static GdkColor yellow[] = { - {0,0xD800,0xD900,0x7200}, - {0,0xE600,0xE500,0x8800}, - {0,0xF000,0xEF00,0x9600}, - {0,0xEB00,0xEA00,0x8D00}, - {0,0xE700,0xE600,0x8300}, - {0,0xE200,0xE100,0x7A00}, - {0,0xDD00,0xDC00,0x7100}, - {0,0xD800,0xD700,0x6700}, - {0,0xD300,0xD200,0x5D00}, - {0,0xCD00,0xCC00,0x5400}, - {0,0xC800,0xC600,0x4900}, - {0,0xC100,0xBF00,0x4200}, -}; - -static GdkColor orange[] = { - {0,0xD900,0xAD00,0x7200}, - {0,0xE600,0xBB00,0x8800}, - {0,0xF000,0xC700,0x9600}, - {0,0xEB00,0xC000,0x8D00}, - {0,0xE700,0xB900,0x8300}, - {0,0xE200,0xB300,0x7A00}, - {0,0xDD00,0xAB00,0x7100}, - {0,0xD800,0xA400,0x6700}, - {0,0xD300,0x9E00,0x5D00}, - {0,0xCD00,0x9600,0x5400}, - {0,0xC800,0x8D00,0x4900}, - {0,0xC100,0x8600,0x4200}, -}; - -static GdkColor darkgreen[] = { - {0,0x6500,0xC600,0x5B00}, - {0,0x7B00,0xD300,0x6F00}, - {0,0x8A00,0xDB00,0x7F00}, - {0,0x8000,0xD800,0x7400}, - {0,0x7800,0xD400,0x6B00}, - {0,0x6F00,0xCF00,0x6200}, - {0,0x6600,0xCA00,0x5900}, - {0,0x5D00,0xC500,0x5000}, - {0,0x5400,0xC100,0x4600}, - {0,0x4B00,0xBB00,0x3C00}, - {0,0x4100,0xB600,0x3100}, - {0,0x3C00,0xAC00,0x2D00}, -}; - -static GdkColor darkorange[] = { - {0,0xC400,0x9700,0x5C00}, - {0,0xD000,0xA500,0x7200}, - {0,0xDA00,0xB100,0x8000}, - {0,0xD500,0xAA00,0x7700}, - {0,0xD100,0xA300,0x6D00}, - {0,0xCD00,0x9D00,0x6400}, - {0,0xC700,0x9600,0x5B00}, - {0,0xC300,0x8F00,0x5200}, - {0,0xBE00,0x8800,0x4800}, - {0,0xB800,0x8100,0x3F00}, - {0,0xB300,0x7900,0x3400}, - {0,0xAC00,0x7200,0x2D00}, -}; - -static GdkColor darkyellow[] = { - {0,0xC200,0xC400,0x5C00}, - {0,0xD000,0xCF00,0x7200}, - {0,0xDA00,0xD900,0x8000}, - {0,0xD500,0xD400,0x7700}, - {0,0xD100,0xD000,0x6D00}, - {0,0xCD00,0xCB00,0x6400}, - {0,0xC700,0xC600,0x5B00}, - {0,0xC300,0xC200,0x5200}, - {0,0xBE00,0xBD00,0x4800}, - {0,0xB800,0xB700,0x3F00}, - {0,0xB300,0xB200,0x3400}, - {0,0xAC00,0xAA00,0x2D00}, -}; - -static GdkColor darkred[] = { - {0,0xC900,0x6200,0x6400}, - {0,0xD600,0x7800,0x7C00}, - {0,0xDA00,0x8000,0x8500}, - {0,0xD500,0x7700,0x7B00}, - {0,0xD100,0x6D00,0x7200}, - {0,0xCD00,0x6400,0x6900}, - {0,0xC700,0x5B00,0x6100}, - {0,0xC300,0x5200,0x5700}, - {0,0xBE00,0x4800,0x4E00}, - {0,0xB800,0x3F00,0x4400}, - {0,0xB100,0x3200,0x3700}, - {0,0xA200,0x3200,0x3700}, -}; - -/* Initialise the global static variables that store our status pixmaps from - their XPM format (as stored in pixmaps.h). This should only be done once - since they are global variables. -*/ -/* FIXME: We should be using named icons here... */ -static void -initialise_global_pixmaps( void ) -{ - statusimage[STATUS_PIXMAP_BATTERY] = - gdk_pixbuf_new_from_xpm_data ((const char **) battery_small_xpm); - - statusimage[STATUS_PIXMAP_METER] = - gdk_pixbuf_new_from_xpm_data ((const char **) battery_small_meter_xpm); - - statusimage[STATUS_PIXMAP_AC] = - gdk_pixbuf_new_from_xpm_data ((const char **) ac_small_xpm); - - statusimage[STATUS_PIXMAP_CHARGE] = - gdk_pixbuf_new_from_xpm_data ((const char **) charge_small_xpm); - - statusimage[STATUS_PIXMAP_WARNING] = - gdk_pixbuf_new_from_xpm_data ((const char **) warning_small_xpm); -} - /* Our backends may be either event driven or poll-based. * If they are event driven then we know this the first time we * receive an event. @@ -284,7 +121,6 @@ static_global_initialisation (ProgressData *battstat) if (!first_time) return NULL; - initialise_global_pixmaps(); err = power_management_initialise (status_change_callback); return err; @@ -393,17 +229,17 @@ battery_full_notify (GtkWidget *applet) if (!notify_is_initted () && !notify_init (_("Battery Monitor"))) return FALSE; - icon = gtk_icon_theme_load_icon ( + icon = gtk_icon_theme_load_icon_for_scale ( gtk_icon_theme_get_default (), "battery", 48, + gtk_widget_get_scale_factor (applet), GTK_ICON_LOOKUP_USE_BUILTIN, NULL); NotifyNotification *n = notify_notification_new (_("Your battery is now fully recharged"), "", /* "battery" */ NULL); - /* XXX: it would be nice to pass this as a named icon */ - notify_notification_set_icon_from_pixbuf (n, icon); + notify_notification_set_image_from_pixbuf (n, icon); g_object_unref (icon); result = notify_notification_show (n, &error); @@ -432,7 +268,7 @@ battery_full_dialog (GtkWidget *applet) return; GtkWidget *dialog, *hbox, *image, *label; - GdkPixbuf *pixbuf; + cairo_surface_t *surface; gchar *new_label; dialog = gtk_dialog_new_with_buttons ( @@ -448,14 +284,16 @@ battery_full_dialog (GtkWidget *applet) gtk_container_set_border_width (GTK_CONTAINER (dialog), 6); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - pixbuf = gtk_icon_theme_load_icon ( + surface = gtk_icon_theme_load_surface ( gtk_icon_theme_get_default (), "battery", 48, + gtk_widget_get_scale_factor (applet), + NULL, GTK_ICON_LOOKUP_USE_BUILTIN, NULL); - image = gtk_image_new_from_pixbuf (pixbuf); - g_object_unref (pixbuf); + image = gtk_image_new_from_surface (surface); + cairo_surface_destroy (surface); gtk_box_pack_start (GTK_BOX (hbox), image, TRUE, TRUE, 6); new_label = g_strdup_printf ( "<span weight=\"bold\" size=\"larger\">%s</span>", @@ -584,7 +422,7 @@ battery_low_dialog( ProgressData *battery, BatteryStatus *info ) { GtkWidget *hbox, *image, *label; GtkWidget *vbox; - GdkPixbuf *pixbuf; + cairo_surface_t *surface; /* If the dialog is already displayed then don't display it again. */ if( battery->battery_low_dialog != NULL ) @@ -609,13 +447,15 @@ battery_low_dialog( ProgressData *battery, BatteryStatus *info ) 6); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); - pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), + surface = gtk_icon_theme_load_surface (gtk_icon_theme_get_default (), "battery", 48, + gtk_widget_get_scale_factor (GTK_WIDGET (hbox)), + NULL, GTK_ICON_LOOKUP_USE_BUILTIN, NULL); - image = gtk_image_new_from_pixbuf (pixbuf); - g_object_unref (pixbuf); + image = gtk_image_new_from_surface (surface); + cairo_surface_destroy (surface); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 6); gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0); @@ -675,157 +515,6 @@ update_tooltip( ProgressData *battstat, BatteryStatus *info ) g_free (tiptext); } -static void -pixbuf_draw_line( GdkPixbuf *pixbuf, GdkColor *colour, int x1, int y1, int x2, int y2) -{ - guchar *pixels = gdk_pixbuf_get_pixels (pixbuf); - int stride = gdk_pixbuf_get_rowstride (pixbuf); - int channels = gdk_pixbuf_get_n_channels (pixbuf); - guchar r, g, b, a; - int i, n; - - r = colour->red >> 8; - g = colour->green >> 8; - b = colour->blue >> 8; - a = 0xFF; - - pixels += stride * y1 + 4 * x1; - - if (x1 == x2) - { - /* stride = gdk_pixbuf_get_rowstride (pixbuf); */ - n = y2 - y1; - } - else if (y1 == y2) - { - stride = gdk_pixbuf_get_n_channels (pixbuf); - n = x2 - x1; - } - else - g_assert_not_reached (); - - for (i = 0; i < n; i++) - { - pixels[0] = r; - pixels[1] = g; - pixels[2] = b; - if (channels == 4) - pixels[3] = a; - - pixels += stride; - } -} - -/* Redraw the battery meter image. - */ -static void -update_battery_image (ProgressData *battstat, int batt_percent, int batt_time) -{ - GdkColor *color, *darkcolor; - GdkPixbuf *pixbuf; - guint progress_value; - gint i, x; - int batt_life; - - if (!battstat->showbattery) - return; - - batt_life = !battstat->red_value_is_time ? batt_percent : batt_time; - - if (batt_life <= battstat->red_val) - { - color = red; - darkcolor = darkred; - } - else if (batt_life <= battstat->orange_val) - { - color = orange; - darkcolor = darkorange; - } - else if (batt_life <= battstat->yellow_val) - { - color = yellow; - darkcolor = darkyellow; - } - else - { - color = green; - darkcolor = darkgreen; - } - - /* Depending on if the meter is horizontally oriented start out with the - appropriate XPM image (from pixmaps.h) - */ - if (battstat->horizont) - pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) battery_gray_xpm); - else - pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) battery_y_gray_xpm); - - /* The core code responsible for painting the battery meter. For each - colour in our gradient array, draw a vertical or horizontal line - depending on the current orientation of the meter. - */ - if (battstat->draintop) { - progress_value = PROGLEN * batt_life / 100.0; - - for( i = 0; i < G_N_ELEMENTS( orange ); i++ ) - { - if (battstat->horizont) - pixbuf_draw_line (pixbuf, &color[i], pixel_offset_top[i], i + 2, - pixel_offset_top[i] + progress_value, i + 2); - else - pixbuf_draw_line (pixbuf, &color[i], i + 2, pixel_offset_top[i], - i + 2, pixel_offset_top[i] + progress_value); - } - } - else - { - progress_value = PROGLEN * batt_life / 100.0; - - for( i = 0; i < G_N_ELEMENTS( orange ); i++) - { - if (battstat->horizont) - pixbuf_draw_line (pixbuf, &color[i], pixel_offset_bottom[i], i + 2, - pixel_offset_bottom[i] - progress_value, i + 2); - else - pixbuf_draw_line (pixbuf, &color[i], i + 2, - pixel_offset_bottom[i] - 1, i + 2, - pixel_offset_bottom[i] - progress_value); - } - - for( i = 0; i < G_N_ELEMENTS( orange ); i++ ) - { - x = pixel_offset_bottom[i] - progress_value - pixel_top_length[i]; - if (x < pixel_offset_top[i]) - x = pixel_offset_top[i]; - - if (progress_value < 33) - { - if (battstat->horizont) - pixbuf_draw_line (pixbuf, &darkcolor[i], - pixel_offset_bottom[i] - progress_value - 1, - i + 2, x, i + 2); - else - pixbuf_draw_line (pixbuf, &darkcolor[i], i + 2, - pixel_offset_bottom[i] - progress_value - 1, - i + 2, x); - } - } - } - - /* Store our newly created pixmap into the GtkImage. This results in - the last reference to the old pixmap/mask being dropped. - */ - gtk_image_set_from_pixbuf( GTK_IMAGE(battstat->battery), - pixbuf); - - /* The GtkImage does not assume a reference to the pixmap or mask; - you still need to unref them if you own references. GtkImage will - add its own reference rather than adopting yours. - */ - g_object_unref( G_OBJECT(pixbuf) ); -} - /* Update the text label that either shows the percentage of time left. */ static void @@ -861,98 +550,57 @@ update_percent_label( ProgressData *battstat, BatteryStatus *info ) static void possibly_update_status_icon( ProgressData *battstat, BatteryStatus *info ) { - StatusPixmapIndex pixmap_index; - int batt_life, last_batt_life; + GtkIconTheme *theme; + cairo_surface_t *surface; + gint icon_size, icon_scale; + gchar *icon_name; + int batt_life; batt_life = !battstat->red_value_is_time ? info->percent : info->minutes; - last_batt_life = !battstat->red_value_is_time ? battstat->last_batt_life : - battstat->last_minutes; - if( info->on_ac_power ) + if (batt_life <= battstat->red_val) { - if( info->charging ) - pixmap_index = STATUS_PIXMAP_CHARGE; + if (info->charging) + icon_name = g_strdup("battery-caution-charging"); else - pixmap_index = STATUS_PIXMAP_AC; + icon_name = g_strdup("battery-caution"); } - else /* on battery */ + else if (batt_life <= battstat->orange_val) { - if (batt_life > battstat->red_val) - pixmap_index = STATUS_PIXMAP_BATTERY; + if (info->charging) + icon_name = g_strdup("battery-low-charging"); else - pixmap_index = STATUS_PIXMAP_WARNING; + icon_name = g_strdup("battery-low"); } - - /* If we are showing the full length battery meter then the status icon - should display static icons. If we are not showing the full meter - then the status icon will show a smaller meter if we are on battery. - */ - if( !battstat->showbattery && - (pixmap_index == STATUS_PIXMAP_BATTERY || - pixmap_index == STATUS_PIXMAP_WARNING) ) - pixmap_index = STATUS_PIXMAP_METER; - - - /* Take care of drawing the smaller meter. */ - if( pixmap_index == STATUS_PIXMAP_METER && - (batt_life != last_batt_life || - battstat->last_pixmap_index != STATUS_PIXMAP_METER) ) + else if (batt_life <= battstat->yellow_val) { - GdkColor *colour; - GdkPixbuf *meter; - guint progress_value; - gint i, x; - - /* Pull in a clean version of the icons so that we don't paint over - top of the same icon over and over. We neglect to free/update the - statusmask here since it will always stay the same. - */ - meter = gdk_pixbuf_copy ( statusimage[STATUS_PIXMAP_METER]); - - if (batt_life <= battstat->red_val) - { - colour = red; - } - else if (batt_life <= battstat->orange_val) - { - colour = orange; - } - else if (batt_life <= battstat->yellow_val) - { - colour = yellow; - } + if (info->charging) + icon_name = g_strdup("battery-good-charging"); else - { - colour = green; - } + icon_name = g_strdup("battery-good"); + } + else if (info->on_ac_power) + { + if (info->charging) + icon_name = g_strdup("battery-full-charging"); + else + icon_name = g_strdup("battery-full-charged"); + } + else + { + icon_name = g_strdup("battery-full"); + } - progress_value = 12 * info->percent / 100.0; + theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (battstat->applet))); - for( i = 0; i < 10; i++ ) - { - if( i >= 2 && i <= 7 ) - x = 17; - else - x = 16; - - pixbuf_draw_line( meter, &colour[(i * 13 / 10)], - i + 1, x - progress_value, - i + 1, x ); - } + icon_size = mate_panel_applet_get_size (MATE_PANEL_APPLET (battstat->applet)); + icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (battstat->applet)); - /* force a redraw immediately */ - gtk_image_set_from_pixbuf( GTK_IMAGE (battstat->status), meter); + surface = gtk_icon_theme_load_surface (theme, icon_name, icon_size, icon_scale, NULL, 0, NULL); + g_free (icon_name); - /* free our private pixmap copy */ - g_object_unref( G_OBJECT( meter ) ); - battstat->last_pixmap_index = STATUS_PIXMAP_METER; - } - else if( pixmap_index != battstat->last_pixmap_index ) - { - gtk_image_set_from_pixbuf (GTK_IMAGE (battstat->status), - statusimage[pixmap_index]); - battstat->last_pixmap_index = pixmap_index; - } + gtk_image_set_from_surface (GTK_IMAGE(battstat->status), surface); + cairo_surface_destroy (surface); } /* Gets called as a gtk_timeout once per second. Checks for updates and @@ -1016,12 +664,8 @@ check_for_updates( gpointer data ) battery_low_dialog(battstat, &info); if(battstat->beep) - gdk_beep(); + gdk_display_beep (gdk_display_get_default ()); } -#if 0 - /* FIXME: mate-applets doesn't depend on libmate anymore */ - mate_triggers_do ("", NULL, "battstat_applet", "LowBattery", NULL); -#endif } if( battstat->last_charging && @@ -1033,17 +677,12 @@ check_for_updates( gpointer data ) info.percent > 99) { /* Inform that battery now fully charged */ -#if 0 - /* FIXME: mate-applets doesn't depend on libmate anymore */ - mate_triggers_do ("", NULL, "battstat_applet", "BatteryFull", NULL); -#endif - if(battstat->fullbattnot) { battery_full_dialog (battstat->applet); if (battstat->beep) - gdk_beep(); + gdk_display_beep (gdk_display_get_default ()); } } @@ -1066,12 +705,6 @@ check_for_updates( gpointer data ) battery_low_update_text( battstat, &info ); } - if( info.percent != battstat->last_batt_life ) - { - /* Update the battery meter image */ - update_battery_image (battstat, info.percent, info.minutes); - } - if( (battstat->showtext == APPLET_SHOW_PERCENT && battstat->last_batt_life != info.percent) || (battstat->showtext == APPLET_SHOW_TIME && @@ -1116,7 +749,6 @@ destroy_applet( GtkWidget *widget, ProgressData *battstat ) g_object_unref( G_OBJECT(battstat->status) ); g_object_unref( G_OBJECT(battstat->percent) ); - g_object_unref( G_OBJECT(battstat->battery) ); g_free( battstat ); @@ -1278,7 +910,6 @@ size_allocate( MatePanelApplet *applet, GtkAllocation *allocation, static void load_preferences(ProgressData *battstat) { - MatePanelApplet *applet = MATE_PANEL_APPLET (battstat->applet); GSettings *settings = battstat->settings; if (DEBUG) g_print("load_preferences()\n"); @@ -1297,15 +928,6 @@ load_preferences(ProgressData *battstat) battstat->lowbattnotification = g_settings_get_boolean (settings, "low-battery-notification"); battstat->fullbattnot = g_settings_get_boolean (settings, "full-battery-notification"); battstat->beep = g_settings_get_boolean (settings, "beep"); - battstat->draintop = g_settings_get_boolean (settings, "drain-from-top"); - - battstat->showstatus = g_settings_get_boolean (settings, "show-status"); - battstat->showbattery = g_settings_get_boolean (settings, "show-battery"); - - /* for miagration from older versions */ - if (battstat->showstatus && battstat->showbattery) - battstat->showbattery = FALSE; - battstat->showtext = g_settings_get_int (settings, "show-text"); } @@ -1359,90 +981,28 @@ grid_layout_attach (GtkGrid *grid, LayoutLocation loc, GtkWidget *child) void reconfigure_layout( ProgressData *battstat ) { - gboolean up_down_order = FALSE; - gboolean do_square = FALSE; LayoutConfiguration c; - int battery_horiz = 0; - int needwidth; - /* Decide if we are doing to do 'square' mode. */ + /* Default to no elements being displayed. */ + c.status = c.text = LAYOUT_NONE; + switch( battstat->orienttype ) { case MATE_PANEL_APPLET_ORIENT_UP: case MATE_PANEL_APPLET_ORIENT_DOWN: - up_down_order = TRUE; - - /* Need to be at least 46px tall to do square mode on a horiz. panel */ - if( battstat->height >= 46 ) - do_square = TRUE; + /* Stack horizontally for top and bottom panels. */ + c.status = LAYOUT_LEFT; + if( battstat->showtext ) + c.text = LAYOUT_RIGHT; break; case MATE_PANEL_APPLET_ORIENT_LEFT: case MATE_PANEL_APPLET_ORIENT_RIGHT: - /* We need 64px to fix the text beside anything. */ - if( battstat->showtext ) - needwidth = 64; - /* We need 48px to fix the icon and battery side-by-side. */ - else - needwidth = 48; - - if( battstat->width >= needwidth ) - do_square = TRUE; - break; - } - - /* Default to no elements being displayed. */ - c.status = c.text = c.battery = LAYOUT_NONE; - - if( do_square ) - { - /* Square mode is only useful if we have the battery meter shown. */ - if( battstat->showbattery ) - { - c.battery = LAYOUT_LONG; - - /* if( battstat->showstatus ) */ /* make this always true */ - c.status = LAYOUT_TOPLEFT; - - if( battstat->showtext ) - c.text = LAYOUT_LEFT; - } - else - { - /* We have enough room to do 'square' mode but the battery meter is - not requested. We can, instead, take up the extra space by stacking - our items in the opposite order that we normally would (ie: stack - horizontally on a vertical panel and vertically on horizontal). - */ - up_down_order = !up_down_order; - do_square = FALSE; - } - } - - if( !do_square ) - { - if( up_down_order ) - { - /* Stack horizontally for top and bottom panels. */ - /* if( battstat->showstatus ) */ /* make this always true */ - c.status = LAYOUT_LEFT; - if( battstat->showbattery ) - c.battery = LAYOUT_CENTRE; - if( battstat->showtext ) - c.text = LAYOUT_RIGHT; - - battery_horiz = 1; - } - else - { /* Stack vertically for left and right panels. */ - /* if( battstat->showstatus ) */ /* make this always true */ - c.status = LAYOUT_TOP; - if( battstat->showbattery ) - c.battery = LAYOUT_CENTRE; + c.status = LAYOUT_TOP; if( battstat->showtext ) - c.text = LAYOUT_BOTTOM; - } + c.text = LAYOUT_BOTTOM; + break; } if( memcmp( &c, &battstat->layout, sizeof (LayoutConfiguration) ) ) @@ -1456,14 +1016,9 @@ reconfigure_layout( ProgressData *battstat ) if( battstat->layout.status ) gtk_container_remove( GTK_CONTAINER( battstat->grid ), battstat->status ); - if( battstat->layout.battery ) - gtk_container_remove( GTK_CONTAINER( battstat->grid ), - battstat->battery ); /* Attach the elements to their new locations. */ grid_layout_attach( GTK_GRID(battstat->grid), - c.battery, battstat->battery ); - grid_layout_attach( GTK_GRID(battstat->grid), c.status, battstat->status ); grid_layout_attach( GTK_GRID(battstat->grid), c.text, battstat->percent ); @@ -1471,17 +1026,6 @@ reconfigure_layout( ProgressData *battstat ) gtk_widget_show_all( battstat->applet ); } - /* If we are showing the battery meter and we weren't showing it before or - if the orientation has changed, we had better update it right now. - */ - if( (c.battery && !battstat->layout.battery) || - battery_horiz != battstat->horizont ) - { - battstat->horizont = battery_horiz; - update_battery_image (battstat, - battstat->last_batt_life, battstat->last_minutes); - } - battstat->layout = c; /* Check for generic updates. This is required, for example, to make sure @@ -1506,7 +1050,6 @@ create_layout(ProgressData *battstat) battstat->grid = gtk_grid_new (); battstat->percent = gtk_label_new( "" ); battstat->status = gtk_image_new(); - battstat->battery = gtk_image_new(); /* When you first get a pointer to a newly created GtkWidget it has one 'floating' reference. When you first add this widget to a container @@ -1518,15 +1061,12 @@ create_layout(ProgressData *battstat) */ g_object_ref( battstat->status ); g_object_ref( battstat->percent ); - g_object_ref( battstat->battery ); g_object_ref_sink( G_OBJECT( battstat->status ) ); g_object_ref_sink( G_OBJECT( battstat->percent ) ); - g_object_ref_sink( G_OBJECT( battstat->battery ) ); /* Let reconfigure_layout know that the grid is currently empty. */ battstat->layout.status = LAYOUT_NONE; battstat->layout.text = LAYOUT_NONE; - battstat->layout.battery = LAYOUT_NONE; /* Put the grid directly inside the applet and show everything. */ gtk_widget_set_halign (battstat->grid, GTK_ALIGN_CENTER); @@ -1580,10 +1120,8 @@ battstat_applet_fill (MatePanelApplet *applet) battstat->refresh_label = TRUE; battstat->last_batt_life = 1000; battstat->last_acline_status = 1000; - battstat->last_pixmap_index = 1000; battstat->last_charging = 1000; battstat->orienttype = mate_panel_applet_get_orient (applet); - battstat->horizont = TRUE; battstat->battery_low_dialog = NULL; battstat->battery_low_label = NULL; battstat->timeout = -1; |