menu newmdimenu() { menu m ; if (!ismdi()) return NULL; m = newmenu(G_("Windows")); setvalue(newmenuitem(G_("Cascade"),0,mdimenu),1); setvalue(newmenuitem(G_("Tile &Horizontally"),0,mdimenu),2); setvalue(newmenuitem(G_("Tile &Vertically"),0,mdimenu),3); setvalue(newmenuitem(G_("Arrange Icons"),0,mdimenu),4); current_menubar->menubar = m; return m; }
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; } }
static int RguiWindowMenu() { if (ismdi()) newmdimenu(); else { MCHECK(newmenu(G_("Windows"))); MCHECK(newmenuitem(G_("Cascade"), 0, menucascade)); MCHECK(newmenuitem(G_("Tile &Horizontally"), 0, menutilehoriz)); MCHECK(newmenuitem(G_("Tile &Vertically"), 0, menutilevert)); MCHECK(newmenuitem(G_("Minimize group"), 0, menuminimizegroup)); MCHECK(newmenuitem(G_("Restore group"), 0, menurestoregroup)); } return 0; }
int RguiPackageMenu(PkgMenuItems pmenu) { MCHECK(newmenu(G_("Packages"))); MCHECK(pmenu->mpkgl = newmenuitem(G_("Load package..."), 0, menupkgload)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(pmenu->mpkgm = newmenuitem(G_("Set CRAN mirror..."), 0, menupkgcranmirror)); MCHECK(pmenu->mrepos = newmenuitem(G_("Select repositories..."), 0, menupkgrepos)); MCHECK(pmenu->mpkgi = newmenuitem(G_("Install package(s)..."), 0, menupkginstallpkgs)); MCHECK(pmenu->mpkgu = newmenuitem(G_("Update packages..."), 0, menupkgupdate)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(pmenu->mpkgil = newmenuitem(G_("Install package(s) from local zip files..."), 0, menupkginstalllocal)); return 0; }
menuitem newmenuitem(const char *name, int key, menufn fn) { object obj; UINT flags; char str[256]; if (! current_menu) current_menu = newmenu("Special"); if (! current_menu) return NULL; if (! name) name = "-"; /* separator */ key = toupper(key); /* make it uppercase */ obj = new_object(MenuitemObject, 0, current_menu); if (obj) { obj->die = private_delmenu; obj->id = id++; obj->key = key; obj->action = fn; obj->value = 0; obj->text = new_string(name); obj->state |= Enabled; if (name[0] == '-') { flags = MF_SEPARATOR; name = NULL; } else { flags = MF_STRING; setmenustring(obj, str, name, key); name = str; } myAppendMenu(current_menu->handle, flags, obj->id, name); } return (menuitem) obj; }
static pager pagercreate(void) { ConsoleData p; int w, h, i, x, y, w0, h0; pager c; menuitem m; p = newconsoledata((consolefn) ? consolefn : FixedFont, pagerrow, pagercol, 0, 0, guiColors, PAGER, 0, 0); if (!p) return NULL; /* if (ismdi()) { x = y = w = h = 0; } else { w = WIDTH ; h = HEIGHT; x = (devicewidth(NULL) - w) / 2; y = (deviceheight(NULL) - h) / 2 ; } */ w = WIDTH ; h = HEIGHT; /* centre a single pager, randomly place each of multiple pagers */ #ifdef USE_MDI if(ismdi()) { RECT *pR = RgetMDIsize(); w0 = pR->right; h0 = pR->bottom; } else { #endif w0 = devicewidth(NULL); h0 = deviceheight(NULL); #ifdef USE_MDI } #endif x = (w0 - w) / 2; x = x > 20 ? x:20; y = (h0 - h) / 2; y = y > 20 ? y:20; if(pagerMultiple) { #ifdef Win32 DWORD rand = GetTickCount(); #else int rand = 0; #endif int w0 = 0.4*x, h0 = 0.4*y; w0 = w0 > 20 ? w0 : 20; h0 = h0 > 20 ? h0 : 20; x += (rand % w0) - w0/2; y += ((rand/w0) % h0) - h0/2; } c = (pager) newwindow("PAGER", rect(x, y, w, h), Document | StandardWindow | Menubar | VScrollbar | HScrollbar | TrackMouse); if (!c) { freeConsoleData(p); return NULL; } setdata(c, p); if(h == 0) HEIGHT = getheight(c); if(w == 0) WIDTH = getwidth(c); COLS = WIDTH / FW - 1; ROWS = HEIGHT / FH - 1; BORDERX = (WIDTH - COLS*FW) / 2; BORDERY = (HEIGHT - ROWS*FH) / 2; gsetcursor(c, ArrowCursor); gchangescrollbar(c, VWINSB, 0, 0, ROWS, 0); gchangescrollbar(c, HWINSB, 0, COLS-1, COLS, 1); setbackground(c, guiColors[pagerbg]); #ifdef USE_MDI if (ismdi()) { int btsize = 24; rect r = rect(2, 2, btsize, btsize); control tb, bt; addto(c); MCHECK(tb = newtoolbar(btsize + 4)); gsetcursor(tb, ArrowCursor); addto(tb); MCHECK(bt = newtoolbutton(open_image, r, menueditoropen)); MCHECK(addtooltip(bt, G_("Open script"))); gsetcursor(bt, ArrowCursor); /* wants NULL as data, not the pager */ r.x += (btsize + 6) ; MCHECK(bt = newtoolbutton(copy1_image, r, pagerpaste)); MCHECK(addtooltip(bt, G_("Paste to console"))); gsetcursor(bt, ArrowCursor); setdata(bt, (void *) c); r.x += (btsize + 6) ; MCHECK(bt = newtoolbutton(copy1_image, r, pagerpastecmds)); MCHECK(addtooltip(bt, G_("Paste commands to console"))); gsetcursor(bt, ArrowCursor); setdata(bt, (void *) c); r.x += (btsize + 6) ; MCHECK(bt = newtoolbutton(print_image, r, pagerprint)); MCHECK(addtooltip(bt, G_("Print"))); gsetcursor(bt, ArrowCursor); setdata(bt, (void *) c); r.x += (btsize + 6) ; MCHECK(bt = newtoolbutton(console_image, r, pagerconsole)); MCHECK(addtooltip(bt, G_("Return focus to Console"))); gsetcursor(bt, ArrowCursor); setdata(bt, (void *) c); } #endif addto(c); MCHECK(m = gpopup(pagermenuact, PagerPopup)); setdata(m, c); setdata(p->mpopcopy = PagerPopup[0].m, c); setdata(p->mpoppaste = PagerPopup[1].m, c); setdata(p->mpoppastecmds = PagerPopup[2].m, c); setdata(PagerPopup[3].m, c); setdata(PagerPopup[5].m, c); setdata(PagerPopup[7].m, c); MCHECK(m = newmenubar(pagermenuact)); setdata(m, c); MCHECK(newmenu(G_("File"))); MCHECK(m = newmenuitem(G_("New script"), 'N', menueditornew)); MCHECK(m = newmenuitem(G_("Open script..."), 'O', menueditoropen)); MCHECK(m = newmenuitem(G_("Print..."), 'P', pagerprint)); setdata(m, c); MCHECK(m = newmenuitem(G_("Save to File..."), 'S', pagersavefile)); setdata(m, c); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(m = newmenuitem(G_("Close"), 0, pagerclose)); setdata(m, c); MCHECK(newmenu(G_("Edit"))); MCHECK(p->mcopy = newmenuitem(G_("Copy"), 'C', pagercopy)); setdata(p->mcopy, c); MCHECK(p->mpaste = newmenuitem(G_("Paste to console"), 'V', pagerpaste)); setdata(p->mpaste, c); MCHECK(p->mpastecmds = newmenuitem(G_("Paste commands to console"), 0, pagerpastecmds)); setdata(p->mpastecmds, c); MCHECK(m = newmenuitem(G_("Select all"), 'A', pagerselectall)); setdata(m, c); if (!pagerMultiple) { MCHECK(newmenu(G_("View"))); for (i = 0; i < PAGERMAXKEPT; i++) { snprintf(pagerTitles[i], PAGERMAXTITLE+8, "&%c. ", 'A' + i); MCHECK(pagerMenus[i] = newmenuitem(&pagerTitles[i][1], 0, pagerchangeview)); setvalue(pagerMenus[i], i); } } #ifdef USE_MDI if (ismdi()) newmdimenu(); if (ismdi() && !(RguiMDI & RW_TOOLBAR)) toolbar_hide(); #endif MCHECK(BM = newbitmap(WIDTH, HEIGHT, 2)); setdata(c, p); sethit(c, console_sbf); setresize(c, consoleresize); setredraw(c, drawconsole); setdel(c, delpager); setclose(c, pagerbclose); setkeyaction(c, console_ctrlkeyin); setkeydown(c, console_normalkeyin); setmousedrag(c, console_mousedrag); setmouserepeat(c, console_mouserep); setmousedown(c, console_mousedown); return(c); }
static editor neweditor(void) { int x, y, w, h, w0, h0; editor c; menuitem m; textbox t; long flags; font editorfn = (consolefn ? consolefn : FixedFont); EditorData p = neweditordata(0, NULL); DWORD rand; w = (pagercol + 1)*fontwidth(editorfn); h = (pagerrow + 1)*fontheight(editorfn) + 1; #ifdef USE_MDI if(ismdi()) { RECT *pR = RgetMDIsize(); w0 = pR->right; h0 = pR->bottom; } else { #endif w0 = devicewidth(NULL); h0 = deviceheight(NULL); #ifdef USE_MDI } #endif x = (w0 - w) / 2; x = x > 20 ? x : 20; y = (h0 - h) / 2; y = y > 20 ? y : 20; rand = GetTickCount(); w0 = 0.4*x; h0 = 0.4*y; w0 = w0 > 20 ? w0 : 20; h0 = h0 > 20 ? h0 : 20; x += (rand % w0) - w0/2; y += ((rand/w0) % h0) - h0/2; flags = StandardWindow | Menubar; #ifdef USE_MDI if (ismdi()) flags |= Document; #endif c = (editor) newwindow("", rect(x, y, w, h), flags); t = newrichtextarea(NULL, rect(0, 0, w, h)); setdata(c, t); setdata(t, p); gsetcursor(c, ArrowCursor); setforeground(c, guiColors[editorfg]); setbackground(c, guiColors[editorbg]); setbackground(t, guiColors[editorbg]); #ifdef USE_MDI if (ismdi() && (RguiMDI & RW_TOOLBAR)) { int btsize = 24; rect r = rect(2, 2, btsize, btsize); control tb, bt; addto(c); MCHECK(tb = newtoolbar(btsize + 4)); addto(tb); MCHECK(bt = newtoolbutton(open_image, r, menueditoropen)); MCHECK(addtooltip(bt, G_("Open script"))); setdata(bt, c); r.x += (btsize + 1) ; MCHECK(bt = newtoolbutton(save_image, r, menueditorsave)); MCHECK(addtooltip(bt, G_("Save script"))); setdata(bt, c); r.x += (btsize + 6); MCHECK(bt = newtoolbutton(copy1_image, r, menueditorrun)); MCHECK(addtooltip(bt, G_("Run line or selection"))); setdata(bt, t); r.x += (btsize + 6); MCHECK(bt = newtoolbutton(console_image, r, editorconsole)); MCHECK(addtooltip(bt, G_("Return focus to Console"))); r.x += (btsize + 6); MCHECK(bt = newtoolbutton(print_image, r, editorprint)); MCHECK(addtooltip(bt, G_("Print script"))); setdata(bt, t); MCHECK(addtooltip(bt, G_("Print"))); } #endif addto(c); /* Right-click context menu */ MCHECK(m = gpopup(editormenuact, EditorPopup)); setdata(m, t); setdata(EditorPopup[0].m, t); setdata(EditorPopup[2].m, t); setdata(p->mpopcut = EditorPopup[4].m, t); setdata(p->mpopcopy = EditorPopup[5].m, t); setdata(EditorPopup[6].m, t); setdata(p->mpopdelete = EditorPopup[7].m, t); setdata(EditorPopup[9].m, t); addto(c); MCHECK(m = newmenubar(editormenuact)); setdata(m, t); MCHECK(newmenu(G_("File"))); MCHECK(m = newmenuitem(G_("New script"), 'N', menueditornew)); setdata(m, c); MCHECK(m = newmenuitem(G_("Open script..."), 'O', menueditoropen)); setdata(m, c); MCHECK(m = newmenuitem(G_("Save"), 'S', menueditorsave)); setdata(m, c); MCHECK(m = newmenuitem(G_("Save as..."), 0, menueditorsaveas)); setdata(m, c); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(m = newmenuitem(G_("Print..."), 0, editorprint)); setdata(m, t); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(m = newmenuitem(G_("Close script"), 0, menueditorclose)); setdata(m, c); MCHECK(newmenu(G_("Edit"))); MCHECK(m = newmenuitem(G_("Undo"), 'Z', editorundo)); setdata(m, t); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(p->mcut = newmenuitem(G_("Cut"), 'X', editorcut)); setdata(p->mcut, t); MCHECK(p->mcopy = newmenuitem(G_("Copy"), 'C', editorcopy)); setdata(p->mcopy, t); MCHECK(m = newmenuitem(G_("Paste"), 'V', editorpaste)); setdata(m, t); MCHECK(p->mdelete = newmenuitem(G_("Delete"), 0, editordelete)); setdata(p->mdelete, t); MCHECK(m = newmenuitem(G_("Select all"), 'A', editorselectall)); setdata(m, t); MCHECK(newmenuitem(G_("Clear console"), 'L', menuclear)); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(m = newmenuitem(G_("Run line or selection"), 'R', menueditorrun)); setdata(m, t); MCHECK(m = newmenuitem(G_("Run all"), 0, editorrunall)); setdata(m, t); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(p->mfind = newmenuitem(G_("Find..."), 'F', editorfind)); setdata(p->mfind, t); MCHECK(p->mreplace = newmenuitem(G_("Replace..."), 'H', editorreplace)); setdata(p->mreplace, t); MCHECK(m = newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("GUI preferences..."), 0, menuconfig)); /* Packages menu should go here */ p->pmenu = (PkgMenuItems) malloc(sizeof(struct structPkgMenuItems)); RguiPackageMenu(p->pmenu); #ifdef USE_MDI newmdimenu(); /* Create and fill the 'Window' menu */ #endif MCHECK(m = newmenu(G_("Help"))); MCHECK(newmenuitem(G_("Editor"), 0, menueditorhelp)); MCHECK(newmenuitem("-", 0, NULL)); p->hmenu = (HelpMenuItems) malloc(sizeof(struct structHelpMenuItems)); RguiCommonHelp(m, p->hmenu); settextfont(t, editorfn); setforeground(t, guiColors[editorfg]); setresize(c, editorresize); setclose(c, editorclose); setdel(c, editordel); setdel(t, textboxdel); setonfocus(c, editorfocus); setkeyaction(t, editorcontrolkeydown); setkeydown(t, editorasciikeydown); /* Store pointer to new editor in global array */ REditors[neditors] = c; ++neditors; return c; }
NETHER::NETHER(char *mapname) { #ifdef _WRITE_REPORT_ debug_fp=fopen("report.txt","w"); fprintf(debug_fp,"Creating game...\n"); fflush(debug_fp); #endif if (shadows==1) { lightpos[0]=-1000; lightpos[1]=-3000; lightpos[2]=5000; lightpos[3]=1; lightposv.x=lightpos[0]; lightposv.y=lightpos[1]; lightposv.z=lightpos[2]; } else { lightpos[0]=0; lightpos[1]=0; lightpos[2]=5000; lightpos[3]=1; lightposv.x=lightpos[0]; lightposv.y=lightpos[1]; lightposv.z=lightpos[2]; } /* if */ #ifdef _WRITE_REPORT_ fprintf(debug_fp,"loading objects...\n"); fflush(debug_fp); #endif loadobjects(); #ifdef _WRITE_REPORT_ fprintf(debug_fp,"loading map...\n"); fflush(debug_fp); #endif /* Load map: */ if (!loadmap(mapname)) { map_w=map_h=0; map=0; } /* if */ #ifdef _WRITE_REPORT_ fprintf(debug_fp,"Initializing game variables...\n"); fflush(debug_fp); #endif /* Set camera: */ viewp.x=map_w/2; viewp.y=0; camera.x=6; camera.y=-6; camera.z=11; zoom=1; /* Init game: */ day=0; hour=0; minute=0; second=0; shipp.x=4.0; shipp.y=2.0; shipp.z=3.0; ship_op=OP_NONE; ship_op2=OP_NONE; ship_timemoving=0; resources[0][0]=20; resources[0][1]=0; resources[0][2]=0; resources[0][3]=0; resources[0][4]=0; resources[0][5]=0; resources[0][6]=0; resources[1][0]=20; resources[1][1]=0; resources[1][2]=0; resources[1][3]=0; resources[1][4]=0; resources[1][5]=0; resources[1][6]=0; statistics[0][0]=0; statistics[0][1]=0; statistics[0][2]=0; statistics[0][3]=0; statistics[0][4]=0; statistics[0][5]=0; statistics[0][6]=0; statistics[0][7]=0; statistics[1][0]=0; statistics[1][1]=0; statistics[1][2]=0; statistics[1][3]=0; statistics[1][4]=0; statistics[1][5]=0; statistics[1][6]=0; statistics[1][7]=0; recomputestatistics=true; game_state=STATE_PLAYING; animation_timer=0; construction_pointer=0; controlled=0; game_finished=0; game_started=INTRO_TIME; #ifdef _WRITE_REPORT_ fprintf(debug_fp,"Creating menus...\n"); fflush(debug_fp); #endif /* Init status: */ newmenu(GENERAL_MENU); redrawmenu=2; redrawradar=1; #ifdef _WRITE_REPORT_ fprintf(debug_fp,"Initializing AI...\n"); fflush(debug_fp); #endif /* Init AI: */ AI_precomputations(); #ifdef _WRITE_REPORT_ fprintf(debug_fp,"Loading sounds...\n"); fflush(debug_fp); #endif /* Load sounds: */ S_shot=Mix_LoadWAV("/usr/local/share/netherearth/sound/shot.wav"); S_explosion=Mix_LoadWAV("/usr/local/share/netherearth/sound/explosion.wav"); S_select=Mix_LoadWAV("/usr/local/share/netherearth/sound/select.wav"); S_wrong=Mix_LoadWAV("/usr/local/share/netherearth/sound/wrong.wav"); S_construction=Mix_LoadWAV("/usr/local/share/netherearth/sound/construction.wav"); #ifdef _WRITE_REPORT_ fprintf(debug_fp,"Game created.\n"); fflush(debug_fp); #endif } /* NETHER::NETHER */
bool NETHER::option_cycle(unsigned char *keyboard) { switch(game_state) { case STATE_PAUSE: if (keyboard[fire_key] && !old_keyboard[fire_key]) { switch(option_menu) { case 0: game_state=STATE_PLAYING; break; case 1: game_state=STATE_LOADINGGAME; option_menu=0; break; case 2: game_state=STATE_SAVINGGAME; option_menu=0; break; case 3: return false; break; } /* if */ } /* if */ if (keyboard[down_key] && !old_keyboard[down_key]) { option_menu++; if (option_menu>=4) option_menu=0; } /* if */ if (keyboard[up_key] && !old_keyboard[up_key]) { option_menu--; if (option_menu<0) option_menu=3; } /* if */ break; case STATE_SAVINGGAME: if (keyboard[fire_key] && !old_keyboard[fire_key]) { switch(option_menu) { case 0: game_state=STATE_PAUSE; option_menu=2; break; case 1: case 2: case 3: case 4: { char filename[80]; sprintf(filename,"savedgame%i.txt",option_menu-1); save_game(filename); //save_debug_report("debugreport.txt"); game_state=STATE_PAUSE; option_menu=2; redrawmenu=2; redrawradar=1; } } /* if */ } /* if */ if (keyboard[down_key] && !old_keyboard[down_key]) { option_menu++; if (option_menu>=5) option_menu=0; } /* if */ if (keyboard[up_key] && !old_keyboard[up_key]) { option_menu--; if (option_menu<0) option_menu=4; } /* if */ break; case STATE_LOADINGGAME: if (keyboard[fire_key] && !old_keyboard[fire_key]) { switch(option_menu) { case 0: game_state=STATE_PAUSE; option_menu=1; break; case 1: case 2: case 3: case 4: { char filename[80]; sprintf(filename,"savedgame%i.txt",option_menu-1); killmenu(act_menu); load_game(filename); newmenu(act_menu); redrawmenu=2; recomputestatistics=true; game_finished=0; game_started=INTRO_TIME; game_state=STATE_PAUSE; option_menu=2; } } /* switch */ } /* if */ if (keyboard[down_key] && !old_keyboard[down_key]) { option_menu++; if (option_menu>=5) option_menu=0; } /* if */ if (keyboard[up_key] && !old_keyboard[up_key]) { option_menu--; if (option_menu<0) option_menu=4; } /* if */ break; } /* switch */ return true; } /* NETHER::option_cycle */
int setupui(void) { char *p, *ctype, Rlocale[1000] = ""; /* Windows' locales can be very long */ initapp(0, 0); /* set locale before doing anything with menus */ setlocale(LC_CTYPE, ""); /* necessary in case next fails to set a valid locale */ if((p = getenv("LC_ALL"))) strcpy(Rlocale, p); if((p = getenv("LC_CTYPE"))) strcpy(Rlocale, p); if (strcmp(Rlocale, "C") == 0) strcpy(Rlocale, "en"); setlocale(LC_CTYPE, Rlocale); mbcslocale = MB_CUR_MAX > 1; ctype = setlocale(LC_CTYPE, NULL); p = strrchr(ctype, '.'); if(p && isdigit(p[1])) localeCP = atoi(p+1); else localeCP = 1252; readconsolecfg(); int flags = StandardWindow | Document | Menubar; if(mbcslocale) flags |= UseUnicode; if (RguiMDI & RW_MDI) { TRACERUI("Rgui"); RFrame = newwindow( #ifdef _WIN64 "RGui (64-bit)", #else "RGui (32-bit)", #endif MDIsize, StandardWindow | Menubar | Workspace); setclose(RFrame, closeconsole); show(RFrame); TRACERUI("Rgui done"); TRACERUI("Console"); if (!(RConsole = newconsole("R Console", flags ))) return 0; TRACERUI("Console done"); } else { TRACERUI("Console"); #ifdef _WIN64 if (!(RConsole = newconsole("R Console (64-bit)", flags ))) return 0; #else if (!(RConsole = newconsole("R Console (32-bit)", flags ))) return 0; #endif TRACERUI("Console done"); } if (ismdi()) { int btsize = 24; rect r = rect(2, 2, btsize, btsize); control tb, bt; MCHECK(tb = newtoolbar(btsize + 4)); addto(tb); MCHECK(bt = newtoolbutton(open_image, r, menueditoropen)); MCHECK(addtooltip(bt, G_("Open script"))); r.x += (btsize + 1) ; MCHECK(bt = newtoolbutton(open1_image, r, menuloadimage)); MCHECK(addtooltip(bt, G_("Load workspace"))); r.x += (btsize + 1) ; MCHECK(bt = newtoolbutton(save_image, r, menusaveimage)); MCHECK(addtooltip(bt, G_("Save workspace"))); r.x += (btsize + 6); MCHECK(bt = newtoolbutton(copy_image, r, buttoncopy)); MCHECK(addtooltip(bt, G_("Copy"))); r.x += (btsize + 1); MCHECK(bt = newtoolbutton(paste_image, r, buttonpaste)); MCHECK(addtooltip(bt, G_("Paste"))); r.x += (btsize + 1); MCHECK(bt = newtoolbutton(copypaste_image, r, buttoncopypaste)); MCHECK(addtooltip(bt, G_("Copy and paste"))); r.x += (btsize + 6); MCHECK(bt = newtoolbutton(stop_image, r, buttonkill)); MCHECK(addtooltip(bt, G_("Stop current computation"))); r.x += (btsize + 6) ; MCHECK(bt = newtoolbutton(print_image, r, menuprint)); MCHECK(addtooltip(bt, G_("Print"))); } if (ismdi() && (RguiMDI & RW_STATUSBAR)) { TRACERUI("status bar"); addstatusbar(); addto(RConsole); TRACERUI("status bar done"); } if (ismdi()) { char s[256]; PrintVersionString(s, 256); setstatus(s); } addto(RConsole); setclose(RConsole, closeconsole); setdrop(RConsole, dropconsole); MCHECK(RConsolePopup = gpopup(popupact, ConsolePopup)); MCHECK(RMenuBar = newmenubar(menuact)); MCHECK(newmenu(G_("File"))); MCHECK(msource = newmenuitem(G_("Source R code..."), 0, menusource)); MCHECK(newmenuitem(G_("New script"), 0, menueditornew)); MCHECK(newmenuitem(G_("Open script..."), 0, menueditoropen)); MCHECK(mdisplay = newmenuitem(G_("Display file(s)..."), 0, menudisplay)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mload = newmenuitem(G_("Load Workspace..."), 0, menuloadimage)); MCHECK(msave = newmenuitem(G_("Save Workspace..."), 'S', menusaveimage)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mloadhistory = newmenuitem(G_("Load History..."), 0, menuloadhistory)); MCHECK(msavehistory = newmenuitem(G_("Save History..."), 0, menusavehistory)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("Change dir..."), 0, menuchangedir)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("Print..."), 'P', menuprint)); MCHECK(newmenuitem(G_("Save to File..."), 0, menusavefile)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(newmenuitem(G_("Exit"), 0, menuexit)); MCHECK(newmenu(G_("Edit"))); MCHECK(mcopy = newmenuitem(G_("Copy"), 'C', menucopy)); MCHECK(mpaste = newmenuitem(G_("Paste"), 'V', menupaste)); MCHECK(mpastecmds = newmenuitem(G_("Paste commands only"), 0, menupastecmds)); MCHECK(mcopypaste = newmenuitem(G_("Copy and Paste"), 'X', menucopypaste)); MCHECK(newmenuitem(G_("Select all"), 0, menuselectall)); MCHECK(newmenuitem(G_("Clear console"), 'L', menuclear)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mde = newmenuitem(G_("Data editor..."), 0, menude)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mconfig = newmenuitem(G_("GUI preferences..."), 0, menuconfig)); if (ismdi()) { MCHECK(newmenu(G_("View"))); MCHECK(mtools = newmenuitem(G_("Toolbar"), 0, menutools)); MCHECK(mstatus = newmenuitem(G_("Statusbar"), 0, menustatus)); if(RguiMDI & RW_TOOLBAR) check(mtools); if(RguiMDI & RW_STATUSBAR) check(mstatus); } MCHECK(newmenu(G_("Misc"))); MCHECK(newmenuitem(G_("Stop current computation \tESC"), 0, menukill)); MCHECK(newmenuitem(G_("Stop all computations"), 0, menukillall)); if (DebugMenuitem || isdebuggerpresent()) MCHECK(newmenuitem(G_("Break to debugger"), 0, menudebug)); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mlazy = newmenuitem(G_("Buffered output"), 'W', menulazy)); MCHECK(mcomplete = newmenuitem(G_("Word completion"), 0, menucomplete)); check(mcomplete); MCHECK(mfncomplete = newmenuitem(G_("Filename completion"), 0, menufncomplete)); if(check_file_completion()) check(mfncomplete); else uncheck(mfncomplete); MCHECK(newmenuitem("-", 0, NULL)); MCHECK(mls = newmenuitem(G_("List objects"), 0, menuls)); MCHECK(mrm = newmenuitem(G_("Remove all objects"), 0, menurm)); MCHECK(msearch = newmenuitem(G_("List search &path"), 0, menusearch)); pmenu = (PkgMenuItems) malloc(sizeof(struct structPkgMenuItems)); RguiPackageMenu(pmenu); RguiWindowMenu(); MCHECK(m = newmenu(G_("Help"))); MCHECK(newmenuitem(G_("Console"), 0, menuconsolehelp)); MCHECK(newmenuitem("-", 0, NULL)); CheckForManuals(); hmenu = (HelpMenuItems) malloc(sizeof(struct structHelpMenuItems)); RguiCommonHelp(m, hmenu); consolesetbrk(RConsole, menukill, ESC, 0); wgl_hist_init(R_HistorySize, 0); if (R_RestoreHistory) wgl_loadhistory(R_HistoryFile); if (ismdi() && !(RguiMDI & RW_TOOLBAR)) toolbar_hide(); show(RConsole); return 1; }