示例#1
0
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;
}
示例#2
0
文件: na.c 项目: inguin/nall
/* 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);
}
示例#3
0
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;
}
示例#4
0
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;
}