コード例 #1
0
ファイル: menu.cpp プロジェクト: Annovae/Dolphin-Core
wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
{
    if ( !wxMenuBase::DoRemove(item) )
        return NULL;

    GtkWidget * const mitem = item->GetMenuItem();
    if (!gtk_check_version(2,12,0))
    {
        // gtk_menu_item_remove_submenu() is deprecated since 2.12, but
        // gtk_menu_item_set_submenu() can now be used with NULL submenu now so
        // just do use it.
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL);
    }
    else // GTK+ < 2.12
    {
        // In 2.10 calling gtk_menu_item_set_submenu() with NULL submenu
        // results in critical GTK+ error messages so use the old function
        // instead.
        gtk_menu_item_remove_submenu(GTK_MENU_ITEM(mitem));
    }

    gtk_widget_destroy(mitem);
    item->SetMenuItem(NULL);

    return item;
}
コード例 #2
0
ファイル: menu.cpp プロジェクト: mael15/wxWidgets
wxMenu *wxMenuBar::Remove(size_t pos)
{
    wxMenu *menu = wxMenuBarBase::Remove(pos);
    if ( !menu )
        return NULL;

    // remove item from menubar before destroying item to avoid spurious
    // warnings from Ubuntu libdbusmenu
    gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner);
    // remove submenu to avoid destroying it when item is destroyed
#ifdef __WXGTK3__
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->m_owner), NULL);
#else
    gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu->m_owner));
#endif

    gtk_widget_destroy( menu->m_owner );
    g_object_unref(menu->m_owner);
    menu->m_owner = NULL;

    if ( m_menuBarFrame )
        DetachFromFrame( menu, m_menuBarFrame );

    return menu;
}
コード例 #3
0
static void
board_window_rebuild_board_menu (window_board_t *win)
{
	if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (win->board_menu)))
		gtk_menu_item_remove_submenu (GTK_MENU_ITEM (win->board_menu));

	GtkWidget *submenu = gtk_menu_new ();
	gtk_menu_item_set_submenu (GTK_MENU_ITEM (win->board_menu), submenu);

	int i;
	GSList *group = NULL;
	for (i = 0; i < win->n_boards; i++) {
		board *b = win->boards[i];
		GString *label = g_string_new (b->name->str);
		g_string_append_printf (label, " (%s)",
			contract_string (b->level, b->trumps, b->declarer, b->doubled));
		GtkWidget *menuitem = gtk_radio_menu_item_new_with_label (group, label->str);
		g_string_free (label, TRUE);

		group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem));
		if (i == win->cur)
			gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
		g_signal_connect (G_OBJECT (menuitem), "activate",
			G_CALLBACK (board_menu_select), &(win->board_numbers[i])); /* pointer to array index */

		gtk_menu_shell_append (GTK_MENU_SHELL (submenu), menuitem);
		gtk_widget_show (menuitem);
	}
}
コード例 #4
0
ファイル: utils_menu.c プロジェクト: ashie/gimageview
/*
 *  menu_remove_submenu:
 *     @ Set sub menu.
 *
 *  widget  : Menu widget to set sub menu.
 *  path    : Menu path to check menu item.
 *  submenu : Submenu widget.
 */
void
menu_remove_submenu (GtkWidget *widget, const gchar *path, GtkWidget *submenu)
{
   GtkWidget *menuitem;
   GtkItemFactory *ifactory;

   ifactory = gtk_item_factory_from_widget (widget);
   menuitem = gtk_item_factory_get_item (ifactory, path);
   gtk_menu_item_remove_submenu (GTK_MENU_ITEM (menuitem));
}
コード例 #5
0
ファイル: menuitem.c プロジェクト: amery/clip-angelo
int
clip_GTK_MENUITEMREMOVESUBMENU(ClipMachine * ClipMachineMemory)
{
   C_widget *citm = _fetch_cw_arg(ClipMachineMemory);

   CHECKCWID(citm, GTK_IS_MENU_ITEM);
   gtk_menu_item_remove_submenu(GTK_MENU_ITEM(citm->widget));
   return 0;
 err:
   return 1;
}
コード例 #6
0
ファイル: encoder.cpp プロジェクト: dyne/MuSE
void enc_profmenu(struct encdata *enc)
{
	char *aprof;
	GtkWidget *tmplabel, *tmplabel1, *tmpmenu;
	GList *listrunner;
	struct encprof *tmp;

	tmpmenu = gtk_menu_new();

	if(enc->outchan->tipo == MP3) {
		tmplabel = gtk_menu_item_new_with_label(_("Save..."));
		g_object_set_data(G_OBJECT(tmplabel), "type", (void *) "lame");
		
		tmplabel1 = gtk_menu_item_new_with_label(_("Remove..."));
		g_object_set_data(G_OBJECT(tmplabel1), "type", (void *) "lame");
		
		listrunner = g_list_first(lameprof);
	} else {
		tmplabel = gtk_menu_item_new_with_label(_("Save..."));
		g_object_set_data(G_OBJECT(tmplabel), "type", (void *) "ogg");
		
		tmplabel1 = gtk_menu_item_new_with_label(_("Remove..."));
		g_object_set_data(G_OBJECT(tmplabel1), "type", (void *) "ogg");

		listrunner = g_list_first(vorbisprof);
	}

	g_signal_connect(G_OBJECT(tmplabel), "activate",
			G_CALLBACK(win_profile_save), (void *) enc);
	g_signal_connect(G_OBJECT(tmplabel1), "activate",
			G_CALLBACK(win_profile_remove), (void *) enc);
	gtk_menu_append(GTK_MENU(tmpmenu), tmplabel);
	gtk_menu_append(GTK_MENU(tmpmenu), tmplabel1);
	
	tmplabel = gtk_menu_item_new_with_label(_("Load"));
	gtk_menu_append(GTK_MENU(tmpmenu), tmplabel);
	while(listrunner) {
		tmp = (struct encprof *) listrunner->data;
		aprof = tmp->name;
		tmplabel = gtk_menu_item_new_with_label(aprof);
		g_signal_connect(G_OBJECT(tmplabel), "activate",
			       G_CALLBACK(gcb_enc_put), enc);
		gtk_menu_append(GTK_MENU(tmpmenu), tmplabel);
		//FIXME : missing remove in profile API
		listrunner = g_list_next(listrunner);
	}

	gtk_menu_item_remove_submenu(GTK_MENU_ITEM(enc->profroot));
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(enc->profroot), tmpmenu);
	gtk_widget_show_all(tmpmenu);

}
コード例 #7
0
void EvalCcRqREMOVEMENUITEM (CrossCallInfo *pcci)		/* menu, HITEM; no result. */
{
    GtkWidget *menu, *menu_item;
    printf("EvalCcRqREMOVEMENUITEM\n");

    menu = GTK_WIDGET(pcci->p1);
    menu_item = GTK_WIDGET(pcci->p2);

    gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu_item));
    gtk_widget_destroy(menu_item);

    MakeReturn0Cci (pcci);
}
コード例 #8
0
ファイル: rbgtkmenuitem.c プロジェクト: benolee/ruby-gnome2
static VALUE
mitem_remove_submenu(VALUE self)
{
    GtkMenuItem *item;
    GtkWidget *submenu;

    item = _SELF(self);
    submenu = gtk_menu_item_get_submenu(item);
    gtk_menu_item_remove_submenu(item);
    if (submenu)
        G_CHILD_REMOVE(self, GOBJ2RVAL(submenu));

    return self;
}
コード例 #9
0
/*	Remove a menu logically */
void EvalCcRqDELETEMENU (CrossCallInfo *pcci)			/* HMENU, HITEM; no result. */
{
    GtkWidget *menu, *menu_item;
    printf("EvalCcRqDELETEMENU\n");

    menu = GTK_WIDGET(pcci->p1);
    menu_item = GTK_WIDGET(pcci->p2);

    gtk_container_foreach(GTK_CONTAINER(menu), find_item_callback, (gpointer) &menu_item);
    if (menu_item != GTK_WIDGET(pcci->p2))
    {
        gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu_item));
        gtk_widget_destroy(menu_item);
    }

    MakeReturn0Cci (pcci);
}
コード例 #10
0
ファイル: menu.cpp プロジェクト: beanhome/dev
wxMenu *wxMenuBar::Remove(size_t pos)
{
    wxMenu *menu = wxMenuBarBase::Remove(pos);
    if ( !menu )
        return NULL;

    gtk_menu_item_remove_submenu( GTK_MENU_ITEM(menu->m_owner) );
    gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner);

    gtk_widget_destroy( menu->m_owner );
    menu->m_owner = NULL;

    if (m_menuBarFrame)
    {
        // OPTIMISE ME:  see comment in GtkAppend
        m_menuBarFrame->UpdateMenuBarSize();
    }

    return menu;
}
コード例 #11
0
ファイル: menu.cpp プロジェクト: mael15/wxWidgets
wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
{
    if ( !wxMenuBase::DoRemove(item) )
        return NULL;

    GtkWidget * const mitem = item->GetMenuItem();

    g_signal_handlers_disconnect_matched(mitem,
        GSignalMatchType(G_SIGNAL_MATCH_DATA), 0, 0, NULL, NULL, item);

#ifdef __WXGTK3__
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL);
#else
    gtk_menu_item_remove_submenu(GTK_MENU_ITEM(mitem));
#endif

    gtk_widget_destroy(mitem);
    item->SetMenuItem(NULL);

    return item;
}
コード例 #12
0
ファイル: menu.cpp プロジェクト: czxxjtu/wxPython-1
wxMenu *wxMenuBar::Remove(size_t pos)
{
    wxMenu *menu = wxMenuBarBase::Remove(pos);
    if ( !menu )
        return (wxMenu*) NULL;

    gtk_menu_item_remove_submenu( GTK_MENU_ITEM(menu->m_owner) );
    gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner);

    gtk_widget_destroy( menu->m_owner );
    menu->m_owner = NULL;

    if (m_invokingWindow)
    {
        // OPTIMISE ME:  see comment in GtkAppend
        wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame );

        if( frame )
            frame->UpdateMenuBarSize();
    }

    return menu;
}
コード例 #13
0
static void
menushell_build_children (GladeXML *xml, GtkWidget *w, 
			  GladeWidgetInfo *info)
{
    int i, j;
    MateUIInfo infos[2] = {
	{ MATE_APP_UI_ITEM },
	MATEUIINFO_END
    };

    for (i = 0; i < info->n_children; i++) {
	GladeChildInfo *cinfo = &info->children[i];
	GladeWidgetInfo *cwinfo = cinfo->child;
	GtkWidget *child;
	gchar *stock_name = NULL;
	
	for (j = 0; j < cwinfo->n_properties; j++) {
	    if (!strcmp (cwinfo->properties[j].name, "stock_item")) {
		stock_name = cwinfo->properties[j].value;
		break;
	    }
	}
	if (!stock_name) {
	    /* this is a normal menu item */
	    child = glade_xml_build_widget (xml, cwinfo);
	    gtk_menu_shell_append (GTK_MENU_SHELL (w), child);
	    continue;
	}
	/* load the template MateUIInfo for this item */
	if (!get_stock_uiinfo (stock_name, &infos[0])) {
	    /* failure ... */
	    if (!strncmp (stock_name, "MATEUIINFO_", 12))
		stock_name += 12;
	    child = gtk_menu_item_new_with_label (stock_name);
	    glade_xml_set_common_params (xml, child, cwinfo);
	    gtk_menu_shell_append (GTK_MENU_SHELL(w), child);
	    continue;
	}
	/* we now have the template for this item.  Now fill it in */
	for (j = 0; j < cwinfo->n_properties; j++) {
	    const char *name  = cwinfo->properties[j].name;
	    const char *value = cwinfo->properties[j].value;
	    if (!strcmp (name, "label"))
		infos[0].label = _(value);
	    else if (!strcmp (name, "tooltip"))
		infos[0].hint = _(value);
	}
	mate_app_fill_menu (GTK_MENU_SHELL(w), infos,
			     glade_xml_ensure_accel(xml), TRUE,
			     i);
	child = infos[0].widget;
	gtk_menu_item_remove_submenu(GTK_MENU_ITEM(child));
	glade_xml_set_common_params(xml, child, cwinfo);
    }

#if 0
    if (uline)
	glade_xml_pop_uline_accel(xml);
#endif
#if 0
    if (strcmp(info->classname, "GtkMenuBar") != 0 &&
	mate_preferences_get_menus_have_tearoff()) {
	GtkWidget *tearoff = gtk_tearoff_menu_item_new();
	
	gtk_menu_prepend(GTK_MENU(w), tearoff);
	gtk_widget_show(tearoff);
    }
#endif
}