static void sensor_disabled(IsManager *manager, IsSensor *sensor, IsIndicator *self) { IsIndicatorPrivate *priv = self->priv; _sensor_disabled(sensor, self); if (priv->menu_items) { /* ignore if was not primary sensor, otherwise, get a new one */ if (sensor != priv->primary) { goto out; } /* choose top-most menu item and set it as primary one */ GtkWidget *menu_item = GTK_WIDGET(priv->menu_items->data); /* activate it to make this the new primary sensor */ gtk_menu_item_activate(GTK_MENU_ITEM(menu_item)); } else { is_indicator_set_label(self, _("No active sensors")); #if !HAVE_APPINDICATOR gtk_status_icon_set_from_stock(GTK_STATUS_ICON(self), GTK_STOCK_DIALOG_WARNING); #endif g_clear_object(&priv->primary); } out: return; }
/* reap each script output and refresh the tooltip buffer */ void na_update_tooltip(void) { gchar tooltip_buffer[BUFSIZ]; gint status; status = 0; tooltip_buffer[0] = '\0'; GtkTreeModel* tree = GTK_TREE_MODEL(nall_globals.script_list); GtkTreeIter iter; gboolean valid = gtk_tree_model_get_iter_first(tree, &iter); while (valid) { gboolean enabled; run_data_t* s; gtk_tree_model_get(tree, &iter, COLUMN_ENABLED, &enabled, COLUMN_RUN_DATA, &s, -1); if (s->initialized && enabled) { na_script_append_out(s, tooltip_buffer); na_script_collect_status(s, &status); } valid = gtk_tree_model_iter_next(tree, &iter); } int len = strlen(tooltip_buffer); if (len > 0 && tooltip_buffer[len - 1] == '\n') tooltip_buffer[len - 1]='\0'; gtk_status_icon_set_tooltip(nall_globals.icon, tooltip_buffer); const gchar* icon = (status == 0) ? GTK_STOCK_INFO : GTK_STOCK_DIALOG_WARNING; gtk_status_icon_set_from_stock(nall_globals.icon, icon); }
void configbuttonCreateMenu(CONFIGBUTTON *c) { struct PLUGIN_SUB_ENTRY *plugin_sub; int i; GtkWidget *image; GtkWidget *submenu; c->menu = gtk_menu_new(); updatePlugins(c); gtk_status_icon_set_from_stock(c->icon, GTK_STOCK_PREFERENCES); for (i = 0; i < c->plugins; i++) { c->plugin[i].item = gtk_image_menu_item_new_with_label(c->plugin[i].info->label); if (c->plugin[i].info->icon_path != NULL) { image = gtk_image_new_from_file(c->plugin[i].info->icon_path); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(c->plugin[i].item), image); } if (c->plugin[i].info->submenu == NULL) g_signal_connect(G_OBJECT(c->plugin[i].item), "activate", G_CALLBACK(configbuttonActivate), &c->plugin[i]); else { plugin_sub = c->plugin[i].info->submenu; submenu = gtk_menu_new(); while (plugin_sub != NULL) { if (plugin_sub->visible == 0) { plugin_sub = plugin_sub->next; continue; } plugin_sub->item = gtk_image_menu_item_new_with_label(plugin_sub->label); if (plugin_sub->icon_path != NULL) { image = gtk_image_new_from_file(plugin_sub->icon_path); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(plugin_sub->item), image); } g_signal_connect(G_OBJECT(plugin_sub->item), "activate", G_CALLBACK(configbuttonActivateSubmenu), plugin_sub); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), plugin_sub->item); plugin_sub->activate = c->plugin[i].activate; plugin_sub = plugin_sub->next; } gtk_menu_item_set_submenu(GTK_MENU_ITEM(c->plugin[i].item), submenu); } gtk_menu_shell_append(GTK_MENU_SHELL(c->menu), c->plugin[i].item); } gtk_widget_show_all(c->menu); return; }
static void sensor_added(IsManager *manager, IsSensor *sensor, IsIndicator *self) { /* if a sensor has been added and we haven't yet got any enabled sensors to display (and hence no primary sensor), change our text to show this */ if (!self->priv->menu_items) { is_indicator_set_label(self, _("No active sensors")); #if !HAVE_APPINDICATOR gtk_status_icon_set_from_stock(GTK_STATUS_ICON(self), GTK_STOCK_DIALOG_WARNING); #endif } }
int main (int argc, char *argv[]) { GtkStatusIcon *icon; GtkWidget *menu; GtkWidget *quit_item; GtkWidget *window; GtkTextBuffer *buffer; GError *error = NULL; int seen_errors; gchar *file; bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (!gtk_init_with_args (&argc, &argv, _("[FILE]"), entries, GETTEXT_PACKAGE, &error)) { g_print ("%s\n", error ? error->message : "Beep"); exit (1); } if (argc > 1) file = argv[1]; else file = DEFAULT_LOG; buffer = read_boot_log (file, &seen_errors, &error); if (buffer == NULL) { g_print ("%s\n", error ? error->message : "Blop"); exit (1); } window = create_window (buffer); if (show_icon) { menu = gtk_menu_new (); quit_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL); gtk_menu_append (GTK_MENU (menu), quit_item); gtk_widget_show_all (menu); g_signal_connect (quit_item, "activate", G_CALLBACK (gtk_main_quit), NULL); icon = gtk_status_icon_new (); if (seen_errors == 2) gtk_status_icon_set_from_stock (icon, GTK_STOCK_DIALOG_WARNING); else if (seen_errors == 1 || force) gtk_status_icon_set_from_stock (icon, GTK_STOCK_INFO); else exit (0); gtk_status_icon_set_tooltip (icon, _("Boot messages")); g_signal_connect (icon, "activate", G_CALLBACK (activate_icon), window); g_signal_connect (icon, "popup-menu", G_CALLBACK (popup_menu), menu); } else gtk_window_present (GTK_WINDOW (window)); gtk_main (); return 0; }