/* FIXME: only one level of sub-menu - no checks -*/ static int addmenuitemarray(menu m,MenuItem a[]) { menu ma = m; int i = 0; while (a[i].nm) { if (!strcmp(a[i].nm,"@STARTMENU")) { i += 1; ma = newsubmenu(m, G_(a[i].nm)); } else if (!strcmp(a[i].nm,"@ENDMENU")) { i += 1; ma = m; } else if (!strcmp(a[i].nm,"@STARTSUBMENU")) { i += 1; newsubmenu(ma,a[i].nm); } else if (!strcmp(a[i].nm,"@ENDSUBMENU")) { i += 1; } else if (!strcmp(a[i].nm,"@MDIMENU")) { if (!(a[i].m = newmdimenu())) return 0; ma = a[i].m; } else { if (!(a[i].m = newmenuitem(G_(a[i].nm), a[i].key, a[i].fn))) return 0; } i += 1; } return 1; }
menu newpopup(actionfn fn) { menu mnew; if (!current_window) return 0; mnew = newsubmenu(current_window,""); mnew->action = fn; current_window->popup = mnew; current_menu = mnew; return mnew; }
int winaddmenu(const char *name, char *errmsg) { const char *submenu = name; char *p, start[501]; menu parent; if (getMenu(name)) return 0; /* Don't add repeats */ if (nmenus >= alloc_menus) { if(alloc_menus <= 0) { alloc_menus = 10; usermenus = (menu *) malloc(sizeof(menu) * alloc_menus); usermenunames = (char **) malloc(sizeof(char *) * alloc_menus); } else { alloc_menus += 10; usermenus = (menu *) realloc(usermenus, sizeof(menu) * alloc_menus); usermenunames = (char **) realloc(usermenunames, sizeof(char *) * alloc_menus); } } if (strlen(name) > 500) { strcpy(errmsg, G_("'menu' is limited to 500 bytes")); return 5; } p = Rf_strrchr(name, '/'); if (p) { submenu = p + 1; strcpy(start, name); *Rf_strrchr(start, '/') = '\0'; parent = getMenu(start); if (!parent) { strcpy(errmsg, G_("base menu does not exist")); return 3; } m = newsubmenu(parent, submenu); } else { addto(RMenuBar); m = newmenu(submenu); } if (m) { usermenus[nmenus] = m; usermenunames[nmenus] = strdup(name); nmenus++; show(RConsole); return 0; } else { strcpy(errmsg, G_("failed to allocate menu")); return 1; } }
TreeView::TreeView( bool controlCenter, KActionCollection *ac, QWidget *parent, const char *name ) : K3ListView(parent), m_ac(ac), m_rmb(0), m_clipboard(0), m_clipboardFolderInfo(0), m_clipboardEntryInfo(0), m_controlCenter(controlCenter), m_layoutDirty(false) { setObjectName(name); setFrameStyle(QFrame::WinPanel | QFrame::Sunken); setAllColumnsShowFocus(true); setRootIsDecorated(true); setSorting(-1); setAcceptDrops(true); setDropVisualizer(true); setDragEnabled(true); setMinimumWidth(240); addColumn(""); header()->hide(); connect(this, SIGNAL(dropped(QDropEvent*, Q3ListViewItem*, Q3ListViewItem*)), SLOT(slotDropped(QDropEvent*, Q3ListViewItem*, Q3ListViewItem*))); connect(this, SIGNAL(clicked( Q3ListViewItem* )), SLOT(itemSelected( Q3ListViewItem* ))); connect(this,SIGNAL(selectionChanged ( Q3ListViewItem * )), SLOT(itemSelected( Q3ListViewItem* ))); connect(this, SIGNAL(rightButtonPressed(Q3ListViewItem*, const QPoint&, int)), SLOT(slotRMBPressed(Q3ListViewItem*, const QPoint&))); // connect actions connect(m_ac->action("newitem"), SIGNAL(activated()), SLOT(newitem())); connect(m_ac->action("newsubmenu"), SIGNAL(activated()), SLOT(newsubmenu())); if (m_ac->action("newsep")) connect(m_ac->action("newsep"), SIGNAL(activated()), SLOT(newsep())); m_menuFile = new MenuFile( KStandardDirs::locateLocal("xdgconf-menu", "applications-kmenuedit.menu")); m_rootFolder = new MenuFolderInfo; m_separator = new MenuSeparatorInfo; m_drag = 0; // Read menu format configuration information KSharedConfig::Ptr pConfig = KSharedConfig::openConfig("kickerrc"); KConfigGroup cg(pConfig, "menus"); m_detailedMenuEntries = cg.readEntry("DetailedMenuEntries", true); if (m_detailedMenuEntries) { m_detailedEntriesNamesFirst = cg.readEntry("DetailedEntriesNamesFirst", false); } }
menu newmenu(const char *name) { return newsubmenu(current_menubar, name); }
int RguiCommonHelp(menu m, HelpMenuItems hmenu) { addto(m); MCHECK(hmenu->mFAQ = newmenuitem(G_("FAQ on R"), 0, menuFAQ)); if (!check_doc_file("doc\\manual\\R-FAQ.html")) disable(hmenu->mFAQ); MCHECK(hmenu->mrwFAQ = newmenuitem(G_("FAQ on R for &Windows"), 0, menurwFAQ)); if (!check_doc_file("doc\\html\\rw-FAQ.html")) disable(hmenu->mrwFAQ); if (!lmanintro && !lmanref && !lmandata && !lmanlang && !lmanext && !lmanint && !lmanadmin && !lmanSweave) { MCHECK(hmenu->mman0 = newmenuitem(G_("Manuals (in PDF)"), 0, NULL)); disable(hmenu->mman0); } else { MCHECK(hmenu->mman = newsubmenu(m, G_("Manuals (in PDF)"))); MCHECK(hmenu->mmanintro = newmenuitem("An &Introduction to R", 0, menumainman)); if (!lmanintro) disable(hmenu->mmanintro); MCHECK(hmenu->mmanref = newmenuitem("R &Reference", 0, menumainref)); if (!lmanref) disable(hmenu->mmanref); MCHECK(hmenu->mmandata = newmenuitem("R Data Import/Export", 0, menumaindata)); if (!lmandata) disable(hmenu->mmandata); MCHECK(hmenu->mmanlang = newmenuitem("R Language Definition", 0, menumainlang)); if (!lmanlang) disable(hmenu->mmanlang); MCHECK(hmenu->mmanext = newmenuitem("Writing R Extensions", 0, menumainext)); if (!lmanext) disable(hmenu->mmanext); MCHECK(hmenu->mmanint = newmenuitem("R Internals", 0, menumainint)); if (!lmanint) disable(hmenu->mmanint); MCHECK(hmenu->mmanadmin = newmenuitem("R Installation and Administration", 0, menumainadmin)); if (!lmanadmin) disable(hmenu->mmanadmin); MCHECK(hmenu->mmanSweave = newmenuitem("Sweave User", 0, menumainSweave)); if (!lmanSweave) disable(hmenu->mmanSweave); } addto(m); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(hmenu->mhelp = newmenuitem(G_("R functions (text)..."), 0, menuhelp)); MCHECK(hmenu->mhelpstart = newmenuitem(G_("Html help"), 0, menuhelpstart)); if (!check_doc_file("doc\\html\\index.html")) disable(hmenu->mhelpstart); MCHECK(hmenu->mhelpsearch = newmenuitem(G_("Search help..."), 0, menuhelpsearch)); MCHECK(hmenu->msearchRsite = newmenuitem("search.r-project.org ...", 0, menusearchRsite)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(hmenu->mapropos = newmenuitem(G_("Apropos..."), 0, menuapropos)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("R Project home page"), 0, menuRhome)); MCHECK(hmenu->mCRAN = newmenuitem(G_("CRAN home page"), 0, menuCRAN)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("About"), 0, menuabout)); return 0; }