static void cairo_main_icon_constructed (GObject *object) { CairoMainIconPrivate * priv = GET_PRIVATE (object); GdkPixbuf * pbuf; gint size = awn_applet_get_size (priv->applet); G_OBJECT_CLASS (cairo_main_icon_parent_class)->constructed (object); awn_themed_icon_set_info_simple (AWN_THEMED_ICON(object),"cairo-menu",awn_applet_get_uid (priv->applet),"gnome-main-menu"); awn_themed_icon_set_size (AWN_THEMED_ICON (object),size); gtk_drag_dest_set (GTK_WIDGET (object), GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP, drop_types, n_drop_types, GDK_ACTION_COPY | GDK_ACTION_ASK); /* call our function in the module */ priv->menu_instance = get_menu_instance (priv->applet, (GetRunCmdFunc)cairo_menu_applet_get_run_cmd, (GetSearchCmdFunc)cairo_menu_applet_get_search_cmd, (AddIconFunc) cairo_menu_applet_add_icon, (CheckMenuHiddenFunc) cairo_menu_applet_check_hidden_menu, NULL, 0); g_idle_add ( (GSourceFunc)queue_menu_build, object); awn_icon_set_tooltip_text (AWN_ICON (object), _("Main Menu")); }
static GtkWidget * pixbuf_icon (GtkWidget *parent) { GdkPixbuf *pixbuf; GtkWidget *icon; pixbuf = gdk_pixbuf_new_from_file_at_size (PICTURE_FILE, 50, 50, NULL); icon = awn_icon_new (); awn_icon_set_from_pixbuf (AWN_ICON (icon), pixbuf); awn_icon_set_tooltip_text (AWN_ICON (icon), "Pixbuf Icon"); /* test the signals */ AwnEffects *fx = awn_overlayable_get_effects (AWN_OVERLAYABLE (icon)); g_signal_connect(fx, "animation-start", (GCallback)anim_started, NULL); g_signal_connect(fx, "animation-end", (GCallback)anim_ended, NULL); gtk_container_add (GTK_CONTAINER (parent), icon); gtk_widget_show (icon); g_signal_connect (icon, "button-release-event", G_CALLBACK (on_click), parent); g_object_unref (pixbuf); return icon; }
/* * GtkSocket callbacks */ static gboolean on_plug_removed (AwnAppletProxy *proxy, gpointer user_data) { AwnAppletProxyPrivate *priv; g_return_val_if_fail (AWN_IS_APPLET_PROXY (proxy), FALSE); priv = proxy->priv; /* reset our old position */ priv->old_x = 0; priv->old_y = 0; priv->old_w = 0; priv->old_h = 0; /* indicate that the applet crashed and allow restart */ priv->running = FALSE; priv->crashed = TRUE; awn_icon_set_tooltip_text (AWN_ICON (priv->throbber), _("Whoops! The applet crashed. Click to restart it.")); awn_throbber_set_type (AWN_THROBBER (priv->throbber), AWN_THROBBER_TYPE_SAD_FACE); awn_icon_set_hover_effects (AWN_ICON (priv->throbber), TRUE); g_signal_emit (proxy, _proxy_signals[APPLET_CRASHED], 0); return TRUE; }
void awn_applet_simple_set_tooltip_text (AwnAppletSimple *applet, const gchar *title) { g_return_if_fail (AWN_IS_APPLET_SIMPLE (applet)); awn_icon_set_tooltip_text (AWN_ICON (applet->priv->icon), title); }
static gboolean throbber_click (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { AwnAppletProxyPrivate *priv = AWN_APPLET_PROXY_GET_PRIVATE(user_data); if (!priv->running) { priv->crashed = FALSE; awn_icon_set_tooltip_text (AWN_ICON (priv->throbber), _("Loading applet...")); awn_throbber_set_type (AWN_THROBBER (priv->throbber), AWN_THROBBER_TYPE_NORMAL); awn_icon_set_hover_effects (AWN_ICON (priv->throbber), FALSE); awn_applet_proxy_execute (AWN_APPLET_PROXY (user_data)); } return FALSE; }
static GtkWidget * pixbuf_icon (GtkWidget *parent) { GdkPixbuf *pixbuf; GtkWidget *icon; pixbuf = gdk_pixbuf_new_from_file_at_size (PICTURE_FILE, 50, 50, NULL); icon = awn_icon_new (); awn_icon_set_from_pixbuf (AWN_ICON (icon), pixbuf); awn_icon_set_pos_type (AWN_ICON (icon), GTK_POS_BOTTOM); awn_icon_set_tooltip_text (AWN_ICON (icon), "Pixbuf Icon"); gtk_container_add (GTK_CONTAINER (parent), icon); gtk_widget_show (icon); g_signal_connect (icon, "button-release-event", G_CALLBACK (on_click), parent); g_object_unref (pixbuf); return icon; }
static GtkWidget * thin_surface_icon (GtkWidget *parent) { GtkWidget *icon; cairo_surface_t *surface; cairo_t *cr; surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 25, 75); cr = cairo_create (surface); cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); cairo_paint (cr); cairo_set_operator (cr, CAIRO_OPERATOR_OVER); cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, 0.8); cairo_rectangle (cr, 0, 0, 25, 75); cairo_fill_preserve (cr); cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.8); cairo_stroke (cr); cairo_destroy (cr); icon = awn_icon_new (); awn_icon_set_from_surface (AWN_ICON (icon), surface); awn_icon_set_tooltip_text (AWN_ICON (icon), "Thin Surface Icon"); gtk_container_add (GTK_CONTAINER (parent), icon); gtk_widget_show (icon); g_signal_connect (icon, "button-release-event", G_CALLBACK (on_click), parent); cairo_surface_destroy (surface); return icon; }
static void on_child_exit (GPid pid, gint status, gpointer user_data) { if (AWN_IS_APPLET_PROXY (user_data)) { AwnAppletProxyPrivate *priv = AWN_APPLET_PROXY_GET_PRIVATE (user_data); /* FIXME: we could do something with the status var... nice error messages?! */ /* switch (status) { case ???: awn_throbber_set_text (AWN_THROBBER (priv->throbber), _("...")); break; default: awn_throbber_set_text (AWN_THROBBER (priv->throbber), _("...")); break; } */ priv->running = FALSE; priv->crashed = TRUE; awn_throbber_set_type (AWN_THROBBER (priv->throbber), AWN_THROBBER_TYPE_SAD_FACE); awn_icon_set_tooltip_text (AWN_ICON (priv->throbber), _("Whoops! The applet crashed. Click to restart it.")); awn_icon_set_hover_effects (AWN_ICON (priv->throbber), TRUE); g_signal_emit (user_data, _proxy_signals[APPLET_CRASHED], 0); /* we won't call gtk_widget_show - on_plug_removed does that * and if the plug wasn't even added, the throbber widget is still visible */ } g_spawn_close_pid(pid); /* doesn't do anything on UNIX, but let's have it */ }
static void awn_applet_proxy_init (AwnAppletProxy *proxy) { AwnAppletProxyPrivate *priv; priv = proxy->priv = AWN_APPLET_PROXY_GET_PRIVATE (proxy); /* Connect to the socket signals */ g_signal_connect (proxy, "plug-removed", G_CALLBACK (on_plug_removed), NULL); g_signal_connect (proxy, "size-allocate", G_CALLBACK (on_size_alloc), NULL); awn_utils_ensure_transparent_bg (GTK_WIDGET (proxy)); /* Rest is for the crash notification window */ priv->running = TRUE; priv->crashed = FALSE; priv->throbber = awn_throbber_new_with_config ( awn_config_get_default (0, NULL)); awn_icon_set_tooltip_text (AWN_ICON (priv->throbber), _("Loading applet...")); g_signal_connect (priv->throbber, "button-release-event", G_CALLBACK (throbber_click), proxy); }
static gboolean _awn_CPUicon_update_icon(gpointer object) { AwnCPUiconPrivate * priv; AwnSysmoniconPrivate * sysmonicon_priv=NULL; AwnCPUicon * icon = object; AwnGraphSinglePoint *point; GList * list = NULL; gchar *text; priv = AWN_CPUICON_GET_PRIVATE (object); sysmonicon_priv = AWN_SYSMONICON_GET_PRIVATE (object); g_object_set (object, "invalidate",TRUE, NULL); /*FIXME change this to some type of graph_type thing */ if ( (AWN_IS_AREAGRAPH(sysmonicon_priv->graph)) || (AWN_IS_CIRCLEGRAPH(sysmonicon_priv->graph) )) { point = g_new0 (AwnGraphSinglePoint,1); *point = awn_CPUicon_get_load (object); /* Translators: %2.0lf is a number, %% is a percent sign, do not change them */ text = g_strdup_printf (_("CPU: %2.0lf%%"),point->value); // awn_tooltip_set_text (AWN_TOOLTIP(sysmonicon_priv->tooltip),text); awn_icon_set_tooltip_text (AWN_ICON(object),text); g_free (text); text = g_strdup_printf("%.0lf%%",point->value); g_object_set (priv->text_overlay, "text", text, NULL); g_free (text); list = g_list_prepend (list,point); awn_graph_add_data (sysmonicon_priv->graph,list); awn_sysmonicon_update_icon (AWN_SYSMONICON (icon)); g_free (point); g_list_free (list); } else if ( AWN_IS_BARGRAPH(sysmonicon_priv->graph)) { #undef NOW #undef LAST #define LAST (priv->times[priv->now]) #define NOW (priv->times[priv->now ^ 1]) AwnGraphSinglePoint avg_point = awn_CPUicon_get_load (object); gint i; GList * iter; glibtop_cpu cpu; glibtop_get_cpu(&cpu); for (i = 0; i < priv->num_cpus; i++) { gint64 total; gint64 total_used; gdouble percent_used; total = NOW[i][CPU_TOTAL] - LAST[i][CPU_TOTAL]; total_used = NOW[i][CPU_USED] - LAST[i][CPU_USED]; percent_used = total_used / (gdouble) total * 100.0; point = g_new0 (AwnGraphSinglePoint,1); point->value = percent_used; list = g_list_prepend (list,point); } text = g_strdup_printf (_("CPU: %2.0lf%%"), avg_point.value ); // awn_tooltip_set_text (AWN_TOOLTIP(sysmonicon_priv->tooltip),text); awn_icon_set_tooltip_text (AWN_ICON(object),text); g_free (text); text = g_strdup_printf("%.0lf%%",avg_point.value); g_object_set (priv->text_overlay, "text", text, NULL); g_free (text); awn_graph_add_data (sysmonicon_priv->graph,list); awn_sysmonicon_update_icon (AWN_SYSMONICON (icon)); for (iter = list; iter; iter=g_list_next(iter)) { g_free(iter->data); } g_list_free (list); #undef NOW #undef LAST } return TRUE; }