// Get the file name from the file selection box W string get_file(Widget w, XtPointer, XtPointer call_data) { XmFileSelectionBoxCallbackStruct *cbs = (XmFileSelectionBoxCallbackStruct *)call_data; String s; if (!XmStringGetLtoR(cbs->value, MSTRING_DEFAULT_CHARSET, &s)) return NO_GDB_ANSWER; string filename = s; XtFree(s); if (filename.empty() || filename[0] != '/') { String dir; if (!XmStringGetLtoR(cbs->dir, MSTRING_DEFAULT_CHARSET, &dir)) return NO_GDB_ANSWER; filename = string(dir) + "/" + filename; XtFree(dir); } if (is_directory(filename)) { MString filter(filename); XmFileSelectionDoSearch(w, filter.xmstring()); return ""; } return filename; }
static void workingdir_apply_notify_proc(Widget, XtPointer, XtPointer) { Arg args; XmString list_item; char *s; char buf[MAXPATHLEN]; XtSetArg(args, XmNtextString, &list_item); XtGetValues(workingd_dialog, &args, 1); XmStringGetLtoR(list_item, charset, &s); strcpy(buf, s); XtFree(s); if (buf[0] == '~') { expand_tilde(buf); } if (chdir(buf) >= 0) { strcpy(workingdir, buf); set_title(workingdir); XmFileSelectionDoSearch(workingd_dialog, NULL); } else { errwin("Can't change to directory"); } XtUnmanageChild(workingd_dialog); }
void create_savefit_popup(Widget w, XtPointer client_data, XtPointer call_data) { Widget fr, dialog; XmString dirmask; set_wait_cursor(); if (savefit_dialog == NULL) { savefit_dialog = XmCreateFileSelectionDialog(app_shell, "savefit_dialog", NULL, 0); XtVaSetValues(XtParent(savefit_dialog), XmNtitle, "Save fit parameter file", NULL); XtAddCallback(savefit_dialog, XmNcancelCallback, (XtCallbackProc) destroy_dialog, savefit_dialog); XtAddCallback(savefit_dialog, XmNokCallback, (XtCallbackProc) do_savefit_proc, 0); XtAddCallback(savefit_dialog, XmNhelpCallback, (XtCallbackProc) HelpCB, (XtPointer) NULL); fr = XmCreateFrame(savefit_dialog, "fr", NULL, 0); dialog = XmCreateRowColumn(fr, "dialog_rc", NULL, 0); save_title_item = CreateTextItem2(dialog, 25, "Title: "); XtManageChild(dialog); XtManageChild(fr); } XtManageChild(savefit_dialog); XtRaise(XtParent(savefit_dialog)); xv_setstr(save_title_item, nonl_opts.title); dirmask = XmStringCreateSimple(workingdir); XmFileSelectionDoSearch(savefit_dialog, dirmask); XmStringFree(dirmask); unset_wait_cursor(); }
void RestoreStateCallback( Widget w, XtPointer client_data, XtPointer call_data) { if( w || client_data || call_data ){/* to satisfy the IRIX646 compiler */} XmFileSelectionDoSearch( restore_state_dialog, NULL ); XtManageChild( restore_state_dialog ); }
static void select_dir(Widget, XtPointer, XmListCallbackStruct *cbs) { char buf[MAXPATHLEN], *str; XmStringGetLtoR(cbs->item, charset, &str); strcpy(buf, str); XtFree(str); xv_setstr(dir_item, buf); XmFileSelectionDoSearch(workingd_dialog, NULL); }
char *UIFileSelection(Widget widget, int match) { XmString dirMask; XtVaGetValues(widget, XmNdirMask, &dirMask, NULL); XtVaSetValues(widget, XmNmustMatch, match, NULL); XmFileSelectionDoSearch(widget, dirMask); XtManageChild(widget); _UIFileName = NULL; while (UILoop()); XtUnmanageChild(widget); return (_UIFileName); }
void HGU_XmMapDialogCb( Widget w, XtPointer client_data, XtPointer call_data) { Widget dialog=(Widget) client_data; if( dialog ) { XtManageChild(dialog); XtPopup(XtParent(dialog), XtGrabNone); XtMapWidget(XtParent(dialog)); if( XmIsFileSelectionBox(dialog) == True ) { XmFileSelectionDoSearch(dialog, NULL); } } return; }
/* * file->open */ void mgv_file_open(Widget w, XtPointer closure, XtPointer call) { MGV *m = (MGV *)closure; USEUP(w); USEUP(call); assert(MgvOK(m)); if(m->fs_open == NULL) { if((m->fs_open = wl_create(m->main, file_open)) == NULL) return; wl_callback(XtParent(m->fs_open), &fo_cb[0], (XtPointer)m); } else { XmFileSelectionDoSearch(m->fs_open, NULL); } wl_dlg_popup(m->fs_open); }
/* * file->save */ void mgv_file_save(Widget w, XtPointer closure, XtPointer call) { MGV *m = (MGV *)closure; USEUP(w); USEUP(call); assert(MgvOK(m)); if(m->fs_save == NULL) { if((m->fs_save = wl_create(m->main, file_save)) == NULL) return; mgv_sens(m->senscache, m->sens); wl_callback(XtParent(m->fs_save), &fs_cb[0], (XtPointer)m); } else { XmFileSelectionDoSearch(m->fs_save, NULL); } wl_dlg_popup(m->fs_save); }
// Make sure that every new filter call is performed in all other // dialogs as well static void FilterAllCB(Widget dialog, XtPointer client_data, XtPointer call_data) { SyncFiltersCB(dialog, client_data, call_data); // std::clog << "widget = " << longName(dialog) << "\n"; while (dialog != 0 && !XmIsFileSelectionBox(dialog)) dialog = XtParent(dialog); // std::clog << "dialog = " << longName(dialog) << "\n"; for (int i = 0; i < file_dialogs.size(); i++) { if (file_dialogs[i] != dialog) { // std::clog << "other dialog = " << longName(file_dialogs[i]) << "\n"; XmFileSelectionDoSearch(file_dialogs[i], 0); } } }
void FSBPopupCallback( Widget w, XtPointer client_data, XtPointer call_data) { XmString dirSpec; /* confirm we have been given a file selection box widget */ if( XmIsFileSelectionBox(w) ) { /* get the current value so it can be reset */ XtVaGetValues(w, XmNdirSpec, &dirSpec, NULL); /* update the selection */ XmFileSelectionDoSearch( w, NULL ); /* reset the value */ XtVaSetValues(w, XmNdirSpec, dirSpec, NULL); } return; }
void create_workingdir_popup(Widget w, XtPointer, XtPointer) { XmString str; set_wait_cursor(); if (workingd_dialog == NULL) { workingd_dialog = XmCreateFileSelectionDialog(app_shell, (char *)"workingd_dialog", NULL, 0); XtVaSetValues(XtParent(workingd_dialog), XmNtitle, "Set working directory", NULL); XtAddCallback(workingd_dialog, XmNcancelCallback, (XtCallbackProc)destroy_dialog, (XtPointer)workingd_dialog); XtAddCallback(workingd_dialog, XmNokCallback, (XtCallbackProc)workingdir_apply_notify_proc, (XtPointer)0); /* unmanage unneeded items */ w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_LIST); XtUnmanageChild(XtParent(w)); w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_LIST_LABEL); XtUnmanageChild(w); w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_FILTER_LABEL); XtUnmanageChild(w); w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_FILTER_TEXT); XtUnmanageChild(w); w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_APPLY_BUTTON); XtUnmanageChild(w); /* save the name of the text item used for definition */ dir_item = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_TEXT); /* Add a callback to the dir list */ w = XmFileSelectionBoxGetChild(workingd_dialog, XmDIALOG_DIR_LIST); XtAddCallback(w, XmNsingleSelectionCallback, (XtCallbackProc)select_dir, (XtPointer)0); XtVaSetValues(w, XmNselectionPolicy, XmSINGLE_SELECT, NULL); } xv_setstr(dir_item, workingdir); XtVaSetValues(workingd_dialog, XmNdirectory, str = XmStringCreateLtoR(workingdir, charset), NULL); XmFileSelectionDoSearch(workingd_dialog, NULL); XmStringFree(str); XtRaise(workingd_dialog); unset_wait_cursor(); }
/* ARGSUSED */ void LocalProduct_Callback ( Widget w, long which, XmFileSelectionBoxCallbackStruct *call ) { Widget list; int itemc; /*---------------------------------------------------------------------*/ switch( which ) { case 0: /* ok callback (select) */ OpenModel = 1; Select_File_Callback( local_toplevel, NULL, call); XtManageChild( group_select_toplevel ); break; case 1: /* cancel callback (close) */ XtUnmanageChild( local_toplevel ); break; case 2: /* apply callback ( update model ) */ list = XmFileSelectionBoxGetChild( local_toplevel, XmDIALOG_LIST); XtVaGetValues(list, XmNitemCount, &itemc, NULL); XmListDeselectAllItems(list); XmFileSelectionDoSearch( local_toplevel, call->mask); XmListSetHorizPos(list, call->dir_length); XtVaSetValues(list, XmNitemCount, itemc, NULL); break; } }
void create_openfit_popup(Widget w, XtPointer client_data, XtPointer call_data) { XmString dirmask; set_wait_cursor(); if (openfit_dialog == NULL) { openfit_dialog = XmCreateFileSelectionDialog(app_shell, "openfit_dialog", NULL, 0); XtVaSetValues(XtParent(openfit_dialog), XmNtitle, "Open fit parameter file", NULL); XtAddCallback(openfit_dialog, XmNcancelCallback, (XtCallbackProc) destroy_dialog, openfit_dialog); XtAddCallback(openfit_dialog, XmNokCallback, (XtCallbackProc) do_openfit_proc, 0); XtAddCallback(openfit_dialog, XmNhelpCallback, (XtCallbackProc) HelpCB, (XtPointer) NULL); } XtManageChild(openfit_dialog); XtRaise(XtParent(openfit_dialog)); dirmask = XmStringCreateSimple(workingdir); XmFileSelectionDoSearch(openfit_dialog, dirmask); XmStringFree(dirmask); unset_wait_cursor(); }
int wxFileDialog::ShowModal() { wxBeginBusyCursor(); // static char fileBuf[512]; Widget parentWidget = (Widget) 0; if (m_parent) parentWidget = (Widget) m_parent->GetTopWidget(); else parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); // prepare the arg list Display* dpy = XtDisplay(parentWidget); Arg args[10]; int ac = 0; if (m_backgroundColour.IsOk()) { wxComputeColours (dpy, & m_backgroundColour, NULL); XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++; XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++; } wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); #if __WXMOTIF20__ && !__WXLESSTIF__ XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++; #else XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++; #endif Widget fileSel = XmCreateFileSelectionDialog(parentWidget, wxMOTIF_STR("file_selector"), args, ac); #define wxFSChild( name ) \ XmFileSelectionBoxGetChild(fileSel, name) XtUnmanageChild(wxFSChild(XmDIALOG_HELP_BUTTON)); Widget filterWidget = wxFSChild(XmDIALOG_FILTER_TEXT); Widget selectionWidget = wxFSChild(XmDIALOG_TEXT); Widget dirListWidget = wxFSChild(XmDIALOG_DIR_LIST); Widget fileListWidget = wxFSChild(XmDIALOG_LIST); // for changing labels Widget okWidget = wxFSChild(XmDIALOG_OK_BUTTON); Widget applyWidget = wxFSChild(XmDIALOG_APPLY_BUTTON); Widget cancelWidget = wxFSChild(XmDIALOG_CANCEL_BUTTON); Widget dirlistLabel = wxFSChild(XmDIALOG_DIR_LIST_LABEL); Widget filterLabel = wxFSChild(XmDIALOG_FILTER_LABEL); Widget listLabel = wxFSChild(XmDIALOG_LIST_LABEL); Widget selectionLabel = wxFSChild(XmDIALOG_SELECTION_LABEL); #undef wxFSChild // change labels wxXmString btnOK( wxGetStockLabel( wxID_OK, false ) ), btnCancel( wxGetStockLabel( wxID_CANCEL, false ) ), btnFilter( _("Filter") ), lblFilter( _("Filter") ), lblDirectories( _("Directories") ), lblFiles( _("Files" ) ), lblSelection( _("Selection") ); XtVaSetValues( okWidget, XmNlabelString, btnOK(), NULL ); XtVaSetValues( applyWidget, XmNlabelString, btnFilter(), NULL ); XtVaSetValues( cancelWidget, XmNlabelString, btnCancel(), NULL ); XtVaSetValues( dirlistLabel, XmNlabelString, lblDirectories(), NULL ); XtVaSetValues( filterLabel, XmNlabelString, lblFilter(), NULL ); XtVaSetValues( listLabel, XmNlabelString, lblFiles(), NULL ); XtVaSetValues( selectionLabel, XmNlabelString, lblSelection(), NULL ); Widget shell = XtParent(fileSel); if ( !m_message.empty() ) XtVaSetValues(shell, XmNtitle, (const char*)m_message.mb_str(), NULL); if (!m_wildCard.empty()) { // return something understandable by Motif wxString wildCard = ParseWildCard( m_wildCard ); wxString filter; if (!m_dir.empty()) filter = m_dir + wxString("/") + wildCard; else filter = wildCard; XmTextSetString(filterWidget, filter.char_str()); XmFileSelectionDoSearch(fileSel, NULL); } // Suggested by Terry Gitnick, 16/9/97, because of change in Motif // file selector on Solaris 1.5.1. if ( !m_dir.empty() ) { wxXmString thePath( m_dir ); XtVaSetValues (fileSel, XmNdirectory, thePath(), NULL); } wxString entirePath; if (!m_dir.empty()) { entirePath = m_dir + wxString("/") + m_fileName; } else { entirePath = m_fileName; } if (!entirePath.empty()) { XmTextSetString(selectionWidget, entirePath.char_str()); } XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); XtAddCallback(fileSel, XmNunmapCallback, (XtCallbackProc)wxFileSelClose, (XtPointer)this); //#if XmVersion > 1000 // I'm not sure about what you mean with XmVersion. // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200 // (Motif1.1.4 ==> XmVersion 1100 ) // Nevertheless, I put here a #define, so anyone can choose in (I)makefile. // #if !DEFAULT_FILE_SELECTOR_SIZE int width = wxFSB_WIDTH; int height = wxFSB_HEIGHT; XtVaSetValues(fileSel, XmNwidth, width, XmNheight, height, XmNresizePolicy, XmRESIZE_NONE, NULL); #endif wxDoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE); wxDoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE); wxChangeListBoxColours(this, dirListWidget); wxChangeListBoxColours(this, fileListWidget); XtManageChild(fileSel); m_fileSelectorAnswer = wxEmptyString; m_fileSelectorReturned = false; wxEndBusyCursor(); XtAddGrab(XtParent(fileSel), True, False); XtAppContext context = (XtAppContext) wxTheApp->GetAppContext(); XEvent event; while (!m_fileSelectorReturned) { XtAppNextEvent(context, &event); XtDispatchEvent(&event); } XtRemoveGrab(XtParent(fileSel)); XtUnmapWidget(XtParent(fileSel)); XtDestroyWidget(XtParent(fileSel)); // Now process all events, because otherwise // this might remain on the screen wxFlushEvents(XtDisplay(fileSel)); m_path = m_fileSelectorAnswer; m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); m_dir = wxPathOnly(m_path); if (m_fileName.empty()) return wxID_CANCEL; else return wxID_OK; }
void XSilChessWindow::HandleCallbackOrEvent(Widget widget, XmAnyCallbackStruct * cbs, XEvent * event) { XGCValues gcval; const char * file_name; XmString xms; char tmp[512]; int i; if (widget==BFileLoad) { XtUnmanageChild(LoadDialog); XmFileSelectionDoSearch(LoadDialog,NULL); XtManageChild(LoadDialog); } else if (widget==BFileSave) { XtUnmanageChild(SaveDialog); XmFileSelectionDoSearch(SaveDialog,NULL); XtManageChild(SaveDialog); } else if (widget==BFileExit) { exit(0); } else if (widget==BGameNew) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->StartNewGame(); RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); } else if (widget==BGameFlip) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->SetHumanWhite(!Machine->IsHumanWhite()); RT.SetWorld(Machine); UpdateStatusBar(); UpdateView(); } else if (widget==BGameUndo) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->UndoMove(); if (!Machine->IsHumanOn()) Machine->UndoMove(); RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); } else if (widget==BGameList) { XtUnmanageChild(ListDialog); XtManageChild(ListDialog); } else if (widget==LoadDialog) { AbortSearching=true; HintWanted=false; HintValid=false; file_name=XmTextGetString( XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT) ); if (!Machine->Load(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to load '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); UpdateDepthMenu(); } else if (widget==SaveDialog) { file_name=XmTextGetString( XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT) ); if (access(file_name,F_OK)!=-1) { XtUnmanageChild(OverwriteDialog); sprintf(tmp,"OK to overwrite '%s'?",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(OverwriteDialog,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(OverwriteDialog); strcpy(OverwriteFile,file_name); } else if (!Machine->Save(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to save '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } } else if (widget==OverwriteDialog) { file_name=OverwriteFile; if (!Machine->Save(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to save '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } } else if (widget==ViewArea) { if (cbs!=NULL && cbs->reason==XmCR_EXPOSE && cbs->event && cbs->event->xexpose.count==0) { UpdateView(); } else if (cbs!=NULL && cbs->reason==XmCR_RESIZE) { XtVaGetValues(ViewArea,XmNwidth,&ViewWidth,(char*)NULL); XtVaGetValues(ViewArea,XmNheight,&ViewHeight,(char*)NULL); RT.SetViewSize(ViewWidth,ViewHeight); UpdateView(); } else if (event!=NULL && event->type==ButtonPress) { MousePress(event->xbutton.x,event->xbutton.y); } else if (event!=NULL && event->type==MapNotify && !ViewWin) { ViewWin=XtWindow(ViewArea); ViewGC=XtGetGC(ViewArea,0,&gcval); } } else if (widget==BCompHint) { AbortSearching=true; HintWanted=true; HintValid=false; UpdateStatusBar(); } else if (widget==BHelpAbout) { XtUnmanageChild(AboutDialog); XtManageChild(AboutDialog); } else if (widget==LDClose) { XtUnmanageChild(ListDialog); } else { for (i=0; i<=SilChessMachine::MAX_SEARCH_DEPTH; i++) { if (widget==BDepth[i] && cbs!=NULL) { if (((XmToggleButtonCallbackStruct*)cbs)->set) { AbortSearching=true; Machine->SetSearchDepth(i); UpdateStatusBar(); } } } } do { DoPainting(); DoSearching(); } while(NeedPainting && !IsPainting && ViewWin); }