Exemple #1
0
static GtkWidget *
menu_item_new (MenuItem *menuitem, int workspace_id)
{
  unsigned int key;
  MetaVirtualModifier mods;
  const char *i18n_label;
  GtkWidget *mi;
  GtkWidget *accel_label;

  if (menuitem->type == MENU_ITEM_NORMAL)
    {
      mi = gtk_menu_item_new ();
    }
  else if (menuitem->type == MENU_ITEM_IMAGE)
    {
      GtkWidget *image;
      
      image = gtk_image_new_from_stock (menuitem->stock_id, GTK_ICON_SIZE_MENU);
      mi = gtk_image_menu_item_new ();
     
      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
      gtk_widget_show (image);
    }
  else if (menuitem->type == MENU_ITEM_CHECKBOX)
    {
      mi = gtk_check_menu_item_new ();
      
      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
                                      menuitem->checked);
    }    
  else if (menuitem->type == MENU_ITEM_RADIOBUTTON)
    {
      mi = gtk_check_menu_item_new ();

      gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (mi),
                                             TRUE);
      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
                                      menuitem->checked);
    }
  else if (menuitem->type == MENU_ITEM_WORKSPACE_LIST)
    return NULL;
  else
    return gtk_separator_menu_item_new ();

  i18n_label = _(menuitem->label);
  meta_core_get_menu_accelerator (menuitem->op, workspace_id, &key, &mods);

  accel_label = meta_accel_label_new_with_mnemonic (i18n_label);
  gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5);

  gtk_container_add (GTK_CONTAINER (mi), accel_label);
  gtk_widget_show (accel_label);

  meta_accel_label_set_accelerator (META_ACCEL_LABEL (accel_label),
                                    key, mods);
  
  return mi;
}
Exemple #2
0
static GtkWidget * AddMenuCheckItem(GtkWidget *window1, const char * immagine_xpm, GtkWidget* Menu,const char* label, gboolean state, int Number)
{
    GtkWidget * Label = NULL;
    GtkWidget * Pixmap = NULL;
    GtkWidget * hbox = NULL;
    GtkWidget * Item = NULL;

    GdkPixmap *PixmapIcon = NULL;
    GdkColor transparent;
    GdkBitmap *MaskIcon = NULL;

    PixmapIcon = gdk_pixmap_create_from_xpm_d (window1->window, &MaskIcon, &transparent,(gchar **)immagine_xpm );
    Pixmap = gtk_pixmap_new (PixmapIcon, MaskIcon);
    gdk_pixmap_unref (PixmapIcon);

    Item=gtk_check_menu_item_new();
    Label = gtk_label_new (label);

    hbox = gtk_hbox_new (FALSE, 8);
    gtk_box_pack_start (GTK_BOX (hbox), Pixmap, FALSE, FALSE, 0);
    gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0);
    gtk_container_add (GTK_CONTAINER (Item), hbox);

    gtk_menu_append( GTK_MENU( Menu ),Item );

    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item),state);
    gtk_signal_connect_object( GTK_OBJECT(Item),"activate",
                               GTK_SIGNAL_FUNC(ActivateMenuItem),(gpointer)Number );
    gtk_menu_item_right_justify (GTK_MENU_ITEM (Item));
    gtk_widget_show_all(Item);

    return Item;
}
// Operator cast to GtkWidget* for packing into a menu
TextMenuItemAccelerator::operator GtkWidget* () {
	
	// Create the menu item, with or without a toggle
	GtkWidget* menuItem;
	if (_isToggle)
		menuItem = gtk_check_menu_item_new();
	else
		menuItem = gtk_menu_item_new();
	
	// Create the text. This consists of the icon, the label string (left-
	// aligned) and the accelerator string (right-aligned).
	GtkWidget* hbx = gtk_hbox_new(FALSE, 4);
	
	// Try to pack in icon ONLY if it is valid
	if (_icon != NULL) {
		_iconImage = gtk_image_new_from_pixbuf(_icon);
		gtk_box_pack_start(GTK_BOX(hbx), _iconImage, FALSE, FALSE, 0);
	}
	
	_label = gtk_label_new_with_mnemonic(_labelText.c_str());
	_accel = gtk_label_new_with_mnemonic(_accelLabelText.c_str());
	
	gtk_box_pack_start(GTK_BOX(hbx), _label, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(hbx), gtk_label_new(" "), FALSE, FALSE, 12);
	gtk_box_pack_end(GTK_BOX(hbx), _accel, FALSE, FALSE, 0);
	
	// Pack the label structure into the MenuItem
	gtk_container_add(GTK_CONTAINER(menuItem), hbx);
	
	return menuItem;
}
Exemple #4
0
/* colorlabel_create_check_color_menu_item() - creates a color
 * menu item with a check box */
GtkWidget *colorlabel_create_check_color_menu_item(gint color_index, gboolean force, gint menu_index)
{
	GtkWidget *label; 
	GtkWidget *hbox; 
	GtkWidget *vbox; 
	GtkWidget *item;
	gchar *accel;
	
	G_RETURN_VAL_IF_INVALID_COLOR(color_index, NULL);

	item = gtk_check_menu_item_new();

	if (force) {
		label_colors[menu_index][color_index].changed |= LCCF_COLOR;
		label_colors[menu_index][color_index].changed |= LCCF_LABEL;
	}
	colorlabel_recreate(color_index);

	/* XXX: gnome-core::panel::menu.c is a great example of
	 * how to create pixmap menus */
	label = gtk_label_new(label_colors[menu_index][color_index].label);

	gtk_widget_show(label);
	hbox = gtk_hbox_new(FALSE, 0);
	gtk_widget_show(hbox);
	gtk_container_add(GTK_CONTAINER(item), hbox);

	vbox = gtk_vbox_new(TRUE, 0);
	gtk_widget_show(vbox);
	gtk_container_set_border_width(GTK_CONTAINER(vbox), 1);

	gtk_container_add(GTK_CONTAINER(vbox),
			  label_colors[menu_index][color_index].widget);
	gtk_widget_show(label_colors[menu_index][color_index].widget);

	gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
	if (color_index < 9) {
		accel = gtk_accelerator_get_label(GDK_KEY_1+color_index, GDK_CONTROL_MASK);
		label = gtk_label_new(accel);
		gtk_widget_show(label);
		gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
		g_free(accel);
		gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 4);
		g_object_set_data(G_OBJECT(item), "accel_label", label);
	} else {
		label = gtk_label_new("");
		gtk_widget_show(label);
		gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
		gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 4);
		g_object_set_data(G_OBJECT(item), "accel_label", label);
	}
	return item;
}
Exemple #5
0
static GtkWidget *build_roll_menu(void)
{
	GtkWidget *menu;
	gint i;
	gchar buffer[128];
	MapTheme *theme = theme_get_current();
	THEME_COLOR tcolor;
	GdkColor *color;
	GtkWidget *item;
	GtkWidget *label;

	menu = gtk_menu_new();

	for (i = 2; i <= 12; i++) {
		if (i == 7)
			continue;

		tcolor = (i == 6 || i == 8) ? TC_CHIP_H_FG : TC_CHIP_FG;
		color = &theme->colors[tcolor].color;
		sprintf(buffer,
			"<span foreground=\"#%04x%04x%04x\">%d</span>",
			color->red, color->green, color->blue, i);

		item = gtk_check_menu_item_new();
		label = gtk_label_new("");
		gtk_label_set_markup(GTK_LABEL(label), buffer);
		gtk_container_add(GTK_CONTAINER(item), label);

		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
		g_signal_connect(G_OBJECT(item), "toggled",
				 G_CALLBACK(select_roll_cb),
				 GINT_TO_POINTER(i));
		gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM
						      (item), TRUE);
		roll_numbers[i] = item;
	}

	gtk_menu_shell_append(GTK_MENU_SHELL(menu),
			      gtk_separator_menu_item_new());

	/* Menu item */
	item = gtk_check_menu_item_new_with_label(_("Shuffle"));
	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
	g_signal_connect(G_OBJECT(item), "toggled",
			 G_CALLBACK(select_shuffle_cb), NULL);
	shuffle_tile = GTK_CHECK_MENU_ITEM(item);

	gtk_widget_show_all(menu);
	return menu;
}
static GtkWidget *
panel_menu_item_presence_new (TpAccountManager                *account_manager,
			      PanelSessionManagerPresenceType  presence_type,
			      const char                      *name,
			      const char                      *icon,
			      gboolean                         use_icon)
{
	GtkWidget *item;

	if (!account_manager)
		return NULL;

	item = gtk_check_menu_item_new ();
	setup_menuitem (item, GTK_ICON_SIZE_INVALID, NULL, name);
	gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);

	/* TODO: we need to add an icon at the right of this CheckMenuItem */
#if 0
	if (use_icon) {
		GtkWidget *image;
		image = gtk_image_new_from_icon_name (icon,
						      panel_menu_icon_get_size ());
		gtk_container_add (GTK_CONTAINER (item), image);
	}
#endif

	g_object_set_data (G_OBJECT (item), "panel-menu-presence",
			   GINT_TO_POINTER (presence_type));

	g_signal_connect (item, "activate",
			  G_CALLBACK (panel_menu_item_activate_presence),
			  account_manager);
	g_signal_connect (G_OBJECT (item), "button_press_event",
			  G_CALLBACK (menu_dummy_button_press_event), NULL);

	return item;
}
JNIEXPORT jlong JNICALL
Java_org_gnome_gtk_GtkCheckMenuItem_gtk_1check_1menu_1item_1new
(
	JNIEnv* env,
	jclass cls
)
{
	GtkWidget* result;
	jlong _result;

	// call function
	result = gtk_check_menu_item_new();

	// translate return value to JNI type
	_result = (jlong) result;

	// cleanup return value
	if (result != NULL) {
		bindings_java_memory_cleanup((GObject*)result, TRUE);
	}

	// and finally
	return _result;
}
Exemple #8
0
static void
popup_prop_menu(GtkButton *prop_button, GdkEventButton *event,
                GtkWidget *widget)
{
    GtkWidget *menu_item, *hbox, *label, *img;
    GList *menu_item_list, *icon_list, *label_list, *tooltip_list, *action_list,
          *state_list, *list;
    int i, selected = -1;

    uim_toolbar_check_helper_connection(widget);

    menu_item_list = gtk_container_get_children(GTK_CONTAINER(prop_menu));
    icon_list = g_object_get_data(G_OBJECT(prop_button), "prop_icon");
    label_list = g_object_get_data(G_OBJECT(prop_button), "prop_label");
    tooltip_list = g_object_get_data(G_OBJECT(prop_button), "prop_tooltip");
    action_list = g_object_get_data(G_OBJECT(prop_button), "prop_action");
    state_list = g_object_get_data(G_OBJECT(prop_button), "prop_state");

    list = menu_item_list;
    while (list) {
        gtk_widget_destroy(list->data);
        list = list->next;
    }
    g_list_free(menu_item_list);

    gtk_widget_destroy(prop_menu);
    prop_menu = gtk_menu_new();

    /* check selected item */
    i = 0;
    while (state_list) {
        if (!strcmp("*", state_list->data)) {
            selected = i;
            break;
        }
        state_list = state_list->next;
        i++;
    }

    i = 0;
    while (label_list) {
        if (selected != -1) {
            menu_item = gtk_check_menu_item_new();
            label = gtk_label_new(label_list->data);
#if GTK_CHECK_VERSION(3, 2, 0)
            hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
#else
            hbox = gtk_hbox_new(FALSE, 0);
#endif
#if GTK_CHECK_VERSION(2, 4, 0)
            gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(menu_item),
                                                  TRUE);
#endif
            if (register_icon(icon_list->data))
                img = gtk_image_new_from_stock(icon_list->data, GTK_ICON_SIZE_MENU);
            else
                img = gtk_image_new_from_stock("null", GTK_ICON_SIZE_MENU);
            if (img) {
                gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 3);
                gtk_widget_show(img);
            }
            gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 3);
            gtk_container_add(GTK_CONTAINER(menu_item), hbox);
            gtk_widget_show(label);
            gtk_widget_show(hbox);
            if (i == selected)
                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), TRUE);
        } else {
            menu_item = gtk_image_menu_item_new_with_label(label_list->data);
            if (register_icon(icon_list->data)) {
                img = gtk_image_new_from_stock(icon_list->data, GTK_ICON_SIZE_MENU);
                gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), img);
#if GTK_CHECK_VERSION(2, 16, 0)
                gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(menu_item), TRUE);
#endif
            }
        }

        /* tooltips */
        gtk_widget_set_tooltip_text(menu_item,
                                    tooltip_list ? tooltip_list->data : NULL);

        /* add to the menu */
        gtk_menu_shell_append(GTK_MENU_SHELL(prop_menu), menu_item);

        gtk_widget_show(menu_item);
        g_signal_connect(G_OBJECT(menu_item), "activate",
                         G_CALLBACK(prop_menu_activate), prop_menu);
        g_object_set_data(G_OBJECT(menu_item), "prop_action",
                          action_list? action_list->data : NULL);
        label_list = label_list->next;
        if (icon_list)
            icon_list = icon_list->next;
        if (action_list)
            action_list = action_list->next;
        if (tooltip_list)
            tooltip_list = tooltip_list->next;
        i++;
    }

    g_signal_connect(G_OBJECT(GTK_MENU_SHELL(prop_menu)), "deactivate",
                     G_CALLBACK(prop_menu_shell_deactivate), NULL);

    gtk_menu_popup(GTK_MENU(prop_menu), NULL, NULL,
                   (GtkMenuPositionFunc)calc_menu_position,
                   (gpointer)prop_button, event->button,
                   gtk_get_current_event_time());
    prop_menu_showing = TRUE;
}
static void
sensor_enabled(IsManager *manager,
               IsSensor *sensor,
               gint position,
               IsIndicator *self)
{
  IsIndicatorPrivate *priv = self->priv;

  /* make sure we haven't seen this sensor before - if sensor has a
   * menu-item then ignore it */
  if (!g_object_get_data(G_OBJECT(sensor), "menu-item"))
  {
    GtkMenu *menu;
    GtkWidget *menu_item;

    is_debug("indicator", "Creating menu item for newly enabled sensor %s",
             is_sensor_get_path(sensor));

    g_signal_connect(sensor, "notify::value",
                     G_CALLBACK(sensor_notify),
                     self);
    g_signal_connect(sensor, "notify::label",
                     G_CALLBACK(sensor_notify),
                     self);
    g_signal_connect(sensor, "notify::alarmed",
                     G_CALLBACK(sensor_notify),
                     self);
    g_signal_connect(sensor, "notify::low-value",
                     G_CALLBACK(sensor_notify),
                     self);
    g_signal_connect(sensor, "notify::high-value",
                     G_CALLBACK(sensor_notify),
                     self);
    /* add a menu entry for this sensor */
    menu = is_indicator_get_menu(self);
    menu_item = gtk_check_menu_item_new();
    gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(menu_item),
                                          TRUE);
    g_object_set_data(G_OBJECT(sensor), "menu-item", menu_item);
    g_object_set_data(G_OBJECT(menu_item), "sensor", sensor);

    priv->menu_items = g_slist_insert(priv->menu_items, menu_item,
                                      position);
    /* if we haven't seen our primary sensor yet or if this is the
     * primary sensor, display this as primary anyway */
    if (!priv->primary ||
        g_strcmp0(is_sensor_get_path(sensor),
                  priv->primary_sensor_path) == 0)
    {
      is_debug("indicator", "Using sensor with path %s as primary",
               is_sensor_get_path(sensor));
      if (priv->primary)
      {
        GtkCheckMenuItem *item;
        /* uncheck menu item if exists for this
         * existing primary sensor */
        item = (GtkCheckMenuItem *)(g_object_get_data(G_OBJECT(priv->primary),
                                    "menu-item"));
        if (item)
        {
          is_debug("indicator", "Unchecking current primary sensor item");
          gtk_check_menu_item_set_active(item, FALSE);
        }
        g_object_unref(priv->primary);
      }
      priv->primary = g_object_ref(sensor);
      is_debug("indicator", "Checking new primary sensor item");
      gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item),
                                     TRUE);
      update_sensor_menu_item_label(self, sensor,
                                    GTK_MENU_ITEM(menu_item));
    }
    /* connect to toggled signal now - if we connect to it earlier
     * we may interpret the above menu_item_set_active as a user
     * initiated setting of the primary sensor rather than us just
     * picking the first available sensor */
    g_signal_connect(menu_item, "toggled",
                     G_CALLBACK(sensor_menu_item_toggled),
                     self);
    gtk_widget_show_all(menu_item);

    update_sensor_menu_item_label(self, sensor, GTK_MENU_ITEM(menu_item));
    gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menu_item, position);
  }
  else
  {
    is_debug("indicator", "Newly enabled sensor %s already has a menu-item, ignoring...",
             is_sensor_get_path(sensor));
  }
}
Exemple #10
0
static void sico_activated (GtkWidget *data)
{
	stashes_popup_menu = gtk_menu_new ();

	GtkWidget *mi = gtk_menu_item_new ();
	GtkWidget *w = gtk_label_new (NULL);
	gtk_label_set_markup (GTK_LABEL (w), _("<b>Encrypted folders:</b>"));
	gtk_container_add (GTK_CONTAINER (mi), w);
	gtk_widget_set_sensitive (mi, FALSE);
	gtk_menu_append (stashes_popup_menu, mi);

	int i = 0;
	std::vector<CryptPoint>::iterator it;
	// find out which ones are mounted
	for (it = cryptPoints.begin (); it != cryptPoints.end (); ++it, i++) {
		struct stat s;

		(*it).SetIsMounted (false);
		(*it).SetIsAvailable (false);

		if (stat ((*it).GetCryptDir (), &s) != -1) {
			if (S_ISDIR (s.st_mode)) (*it).SetIsAvailable (true);
		}

		// to get rid of festering mount points
		if (!config_keep_mountpoints) rmdir ((*it).GetMountDir ());

		if (is_mounted((*it).GetMountDir())) {
			if (S_ISDIR (s.st_mode)) (*it).SetIsMounted (true);
		}
	}
	
	i = 0;
	for (it = cryptPoints.begin (); it != cryptPoints.end (); ++it, i++) {
		mi = gtk_check_menu_item_new ();
		char buf[256];
		if ((*it).GetIsAvailable ()) {
			snprintf (buf, sizeof (buf), "%s", (*it).GetMountDir ());
		} else {
			snprintf (buf, sizeof (buf), "<span foreground=\"grey\">%s</span>", (*it).GetMountDir ());
		}
		GtkWidget *label = gtk_label_new (NULL);
		gtk_label_set_markup (GTK_LABEL (label), buf);
		gtk_container_add (GTK_CONTAINER (mi), label);
		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi), (*it).GetIsMounted ());
		//gtk_widget_set_sensitive (mi, (*it).GetIsAvailable ());
		gtk_menu_append (stashes_popup_menu, mi);
		g_signal_connect (G_OBJECT (mi), "toggled", G_CALLBACK (on_mount_check_item_toggled), GINT_TO_POINTER (i));
		g_signal_connect (G_OBJECT (mi), "button-release-event", G_CALLBACK (on_button_release), GINT_TO_POINTER (i));
	}

	mi = gtk_separator_menu_item_new ();
	gtk_menu_append (stashes_popup_menu, mi);

	mi = gtk_menu_item_new_with_label (_("Import EncFS folder"));
	g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (on_import_stash_clicked), NULL);
	gtk_menu_append (stashes_popup_menu, mi);
	
	mi = gtk_menu_item_new_with_label (_("New encrypted folder"));
	g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (on_create_new_stash_clicked), NULL);
	gtk_menu_append (stashes_popup_menu, mi);
	
	gtk_widget_show_all (stashes_popup_menu);

	gtk_menu_popup (GTK_MENU (stashes_popup_menu), NULL, NULL, gtk_status_icon_position_menu, sico,
			0, gtk_get_current_event_time ());
}