[Goodies-commits] r4049 - xfce4-mailwatch-plugin/trunk/panel-plugin
Brian Tarricone
kelnos at xfce.org
Fri Mar 14 10:25:46 CET 2008
Author: kelnos
Date: 2008-03-14 09:25:46 +0000 (Fri, 14 Mar 2008)
New Revision: 4049
Modified:
xfce4-mailwatch-plugin/trunk/panel-plugin/mailwatch-plugin.c
Log:
hopefully fix icon sizing. it looks a little less tiny now.
Modified: xfce4-mailwatch-plugin/trunk/panel-plugin/mailwatch-plugin.c
===================================================================
--- xfce4-mailwatch-plugin/trunk/panel-plugin/mailwatch-plugin.c 2008-03-14 09:15:03 UTC (rev 4048)
+++ xfce4-mailwatch-plugin/trunk/panel-plugin/mailwatch-plugin.c 2008-03-14 09:25:46 UTC (rev 4049)
@@ -27,8 +27,8 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfcegui4/libxfcegui4.h>
-#include <libxfcegui4/xfce_scaled_image.h>
#include <libxfce4panel/xfce-panel-plugin.h>
+#include <libxfce4panel/xfce-panel-convenience.h>
#include "mailwatch.h"
#include "mailwatch-mailbox.h"
@@ -78,38 +78,16 @@
LOGLIST_N_COLUMNS
};
+static gboolean mailwatch_set_size(XfcePanelPlugin *plugin,
+ gint wsize,
+ XfceMailwatchPlugin *mwp);
+
static void
mailwatch_set_default_config(XfceMailwatchPlugin *mwp)
{
mwp->log_lines = 200;
mwp->show_log_status = TRUE;
}
-
-static void
-mailwatch_set_icon(XfceMailwatchPlugin *mwp, gboolean newmail)
-{
- GdkPixbuf *pb = newmail ?
- gdk_pixbuf_copy(mwp->pix_newmail) :
- gdk_pixbuf_copy(mwp->pix_normal);
- GdkPixbuf *overlay = NULL;
- gint h, ow, oh;
-
- if( mwp->log_status && mwp->show_log_status &&
- mwp->log_status < XFCE_MAILWATCH_N_LOG_LEVELS ) {
- overlay = mwp->pix_log[mwp->log_status];
- }
-
- h = gdk_pixbuf_get_height(pb);
- if(overlay) {
- ow = gdk_pixbuf_get_width(overlay);
- oh = gdk_pixbuf_get_height(overlay);
- gdk_pixbuf_composite(overlay, pb, 0, h - oh, ow, oh, 0, h - oh,
- 1.0, 1.0, GDK_INTERP_BILINEAR, 255);
- }
-
- xfce_scaled_image_set_from_pixbuf(XFCE_SCALED_IMAGE(mwp->image ), pb);
- g_object_unref(G_OBJECT(pb));
-}
static void
mailwatch_new_messages_changed_cb(XfceMailwatch *mailwatch, gpointer arg,
@@ -119,14 +97,18 @@
guint new_messages = GPOINTER_TO_UINT( arg );
if(new_messages == 0 && mwp->newmail_icon_visible) {
- mailwatch_set_icon( mwp, FALSE );
- gtk_tooltips_set_tip(mwp->tooltip, mwp->button, _("No new mail"), NULL);
mwp->newmail_icon_visible = FALSE;
mwp->new_messages = 0;
+ mailwatch_set_size(mwp->plugin,
+ xfce_panel_plugin_get_size(mwp->plugin),
+ mwp);
+ gtk_tooltips_set_tip(mwp->tooltip, mwp->button, _("No new mail"), NULL);
} else if(new_messages > 0) {
if(!mwp->newmail_icon_visible) {
- mailwatch_set_icon( mwp, TRUE );
mwp->newmail_icon_visible = TRUE;
+ mailwatch_set_size(mwp->plugin,
+ xfce_panel_plugin_get_size(mwp->plugin),
+ mwp);
}
if(new_messages != mwp->new_messages) {
GString *ttip_str = g_string_sized_new(64);
@@ -237,7 +219,9 @@
if( entry->level > mwp->log_status ) {
mwp->log_status = entry->level;
- mailwatch_set_icon( mwp, mwp->newmail_icon_visible );
+ mailwatch_set_size(mwp->plugin,
+ xfce_panel_plugin_get_size(mwp->plugin),
+ mwp);
}
while(gtk_tree_model_iter_n_children(GTK_TREE_MODEL(mwp->loglist), NULL) > mwp->log_lines) {
@@ -268,16 +252,46 @@
return pix;
}
+static GdkPixbuf *
+mailwatch_build_icon(XfceMailwatchPlugin *mwp,
+ gboolean newmail)
+{
+ GdkPixbuf *pb = newmail ? gdk_pixbuf_copy(mwp->pix_newmail)
+ : gdk_pixbuf_copy(mwp->pix_normal);
+ GdkPixbuf *overlay = NULL;
+ gint h, ow, oh;
+
+ if(mwp->log_status && mwp->show_log_status
+ && mwp->log_status < XFCE_MAILWATCH_N_LOG_LEVELS)
+ {
+ overlay = mwp->pix_log[mwp->log_status];
+ }
+
+ h = gdk_pixbuf_get_height(pb);
+ if(overlay) {
+ ow = gdk_pixbuf_get_width(overlay);
+ oh = gdk_pixbuf_get_height(overlay);
+ gdk_pixbuf_composite(overlay, pb, 0, h - oh, ow, oh, 0, h - oh,
+ 1.0, 1.0, GDK_INTERP_BILINEAR, 255);
+ }
+
+ return pb;
+}
+
static gboolean
mailwatch_set_size(XfcePanelPlugin *plugin, gint wsize,
XfceMailwatchPlugin *mwp)
{
- gint size, i;
+ gint size, width, height, i;
GtkWidget *dummy;
gchar *icon;
+ GdkPixbuf *pb;
+ /* this is such lame lame voodoo magic. the x/ythickness stuff
+ * shouldn't be needed, since i think the panel button convienence
+ * thingo sets them to zero, but we'll leave it for now. */
size = wsize - MAX(GTK_WIDGET(mwp->button)->style->xthickness,
- GTK_WIDGET(mwp->button)->style->ythickness) - 1;
+ GTK_WIDGET(mwp->button)->style->ythickness) * 2 - 2;
if(mwp->pix_normal)
g_object_unref(G_OBJECT(mwp->pix_normal));
@@ -306,10 +320,16 @@
gtk_widget_destroy(dummy);
- mailwatch_set_icon(mwp, mwp->newmail_icon_visible);
-
- gtk_widget_set_size_request(mwp->button, wsize, wsize);
+ pb = mailwatch_build_icon(mwp, mwp->newmail_icon_visible);
+ width = gdk_pixbuf_get_width(pb);
+ height = gdk_pixbuf_get_height(pb);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(mwp->image), pb);
+ g_object_unref(G_OBJECT(pb));
+ width += wsize - size;
+ height += wsize - size;
+ gtk_widget_set_size_request(mwp->button, width, height);
+
return TRUE;
}
@@ -331,8 +351,8 @@
}
mwp->tooltip = gtk_tooltips_new();
-
- mwp->button = gtk_button_new();
+
+ mwp->button = xfce_create_panel_button();
gtk_button_set_relief(GTK_BUTTON(mwp->button), GTK_RELIEF_NONE);
gtk_widget_show(mwp->button);
gtk_container_add(GTK_CONTAINER(plugin), mwp->button);
@@ -344,7 +364,7 @@
xfce_panel_plugin_add_action_widget(plugin, mwp->button);
- mwp->image = xfce_scaled_image_new();
+ mwp->image = gtk_image_new();
gtk_widget_show(mwp->image);
gtk_container_add(GTK_CONTAINER(mwp->button), mwp->image);
@@ -520,7 +540,9 @@
mwp->show_log_status = gtk_toggle_button_get_active(tb);
have_new_msgs = !!xfce_mailwatch_get_new_messages(mwp->mailwatch);
- mailwatch_set_icon(mwp, have_new_msgs);
+ mailwatch_set_size(mwp->plugin,
+ xfce_panel_plugin_get_size(mwp->plugin),
+ mwp);
}
static void
@@ -537,7 +559,9 @@
}
mwp->log_status = 0;
- mailwatch_set_icon( mwp, mwp->newmail_icon_visible );
+ mailwatch_set_size(mwp->plugin,
+ xfce_panel_plugin_get_size(mwp->plugin),
+ mwp);
dialog = gtk_dialog_new_with_buttons(_( "Mailwatch log" ),
GTK_WINDOW(gtk_widget_get_toplevel(widget)),
More information about the Goodies-commits
mailing list