/*** JanoPrefs wants some additionnal information ***/ ULONG change_screen_mode(WORD *whd, ULONG ModeID) #endif { struct ScreenModeRequester *smr; if((smr = (void *) AllocAslRequestTags(ASL_ScreenModeRequest, ASLSM_DoWidth, FALSE, ASLSM_DoHeight, FALSE, ASLSM_DoAutoScroll, FALSE, ASLSM_DoOverscanType, FALSE, ASLSM_DoDepth, TRUE, ASLSM_InitialDisplayID, ModeID, ASLFR_Screen, (ULONG)Scr, TAG_DONE) )) { if( AslRequest(smr,NULL) ) { /* Extract some interresting information about screen */ #ifndef JANOPREF *Depth = smr->sm_DisplayDepth; #else whd[0] = smr->sm_DisplayWidth; whd[1] = smr->sm_DisplayHeight; whd[2] = smr->sm_DisplayDepth; #endif ModeID = smr->sm_DisplayID; } else ModeID = INVALID_ID; FreeAslRequest(smr); return ModeID; } return INVALID_ID; }
/*** Ask for a new font, fixed or not ***/ struct TextFont *change_fonts(struct TextAttr *buf, void *Wnd, BOOL fixed) { struct FontRequester *fr; struct TextFont *newfont = NULL; if((fr = (void *) AllocAslRequestTags(ASL_FontRequest, ASLFO_FixedWidthOnly, fixed, ASLFO_SleepWindow, TRUE, ASLFO_InitialName, (ULONG)buf->ta_Name, ASLFO_InitialSize, buf->ta_YSize, ASLFO_Window, (ULONG)Wnd, TAG_DONE))) { if( AslRequest(fr, NULL) ) { /* User may hit cancel! */ newfont = (void *) OpenDiskFont( &fr->fo_Attr ); if( newfont ) { CopyMem(&fr->fo_Attr, buf, sizeof(*buf)); /* The ta_Name field will be freed with FreeAslRequest call ! */ buf->ta_Name = newfont->tf_Message.mn_Node.ln_Name; } else ThrowError(Wnd, ErrMsg(ERR_LOADFONT)); } FreeAslRequest(fr); /* Window will be reinitiated later... */ } return newfont; }
static char *VSID_BrowseFile(char *select_text, char *pattern) { struct FileRequester *request; request = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest, ASL_Hail, select_text, (struct TagItem *)TAG_DONE); if (AslRequestTags(request, ASLFR_Window, vsid_window, ASLFR_InitialDrawer, "PROGDIR:", ASLFR_InitialPattern, pattern, ASLFR_PositiveText, select_text, (struct TagItem *)TAG_DONE)) { fname[0] = 0; strcat(fname,request->rf_Dir); if (fname[strlen(fname) - 1] != (UBYTE)58) { strcat(fname, "/"); } strcat(fname, request->rf_File); if (fname[strlen(fname) - 1] != (UBYTE)58 && fname[strlen(fname) - 1] != '/') { if (request) { FreeAslRequest(request); } return fname; } } if (request) { FreeAslRequest(request); } return NULL; }
void ami_file_req_init(void) { filereq = (struct FileRequester *)AllocAslRequest(ASL_FileRequest, NULL); savereq = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest, ASLFR_DoSaveMode, TRUE, ASLFR_RejectIcons, TRUE, ASLFR_InitialDrawer, nsoption_charp(download_dir), TAG_DONE); aslhookfunc.h_Entry = (void *)&ami_file_asl_mime_hook; aslhookfunc.h_SubEntry = NULL; aslhookfunc.h_Data = NULL; }
SDL_bool init_filerequester( struct machine *oric ) { AslBase = OpenLibrary( (CONST_STRPTR)AslName, 39 ); if( !AslBase ) return SDL_FALSE; #ifdef __amigaos4__ IAsl = (struct AslIFace *)GetInterface( AslBase, "main", 1, NULL ); if( !IAsl ) return SDL_FALSE; #endif req = (struct FileRequester *)AllocAslRequestTags( ASL_FileRequest, TAG_DONE ); if( !req ) return SDL_FALSE; return SDL_TRUE; }
STRPTR AslFile( STRPTR TitleText, STRPTR InitialPattern ) { struct Library * AslBase; STRPTR name = NULL; ENTER(); if((AslBase = OpenLibrary("asl.library", 0))) { struct FileRequester *freq; if((freq = AllocAslRequestTags(ASL_FileRequest, TAG_DONE))) { if(AslRequestTags(freq, ASLFR_TitleText, (ULONG)TitleText, ASLFR_InitialDrawer, (ULONG)GetString(AslFilePath,"PROGDIR:"), ASLFR_RejectIcons, TRUE, InitialPattern != NULL ? ASLFR_DoPatterns:TAG_IGNORE, TRUE, InitialPattern != NULL ? ASLFR_InitialPattern:TAG_IGNORE, (ULONG)InitialPattern, TAG_DONE)) { ULONG namelen; namelen = strlen(freq->fr_File) + strlen(freq->fr_Drawer) + 32; if((name = AllocVec(namelen + 1, MEMF_PUBLIC | MEMF_CLEAR))) { AddPart(name, freq->fr_Drawer, namelen); AddPart(name, freq->fr_File, namelen); set( AslFilePath, MUIA_String_Contents,(ULONG)freq->fr_Drawer); } } FreeAslRequest(freq); } else ShowError("Cannot alloc AslRequest!"); CloseLibrary( AslBase ); } else ShowError("Cannot open %s","asl.library"); DBG_STRING(name); return name; }
// Allocate a filerequester APTR alloc_filereq(void) { struct IBox coords; // Get current requester coordinates GetSemaphore(&GUI->req_lock,SEMF_SHARED,0); coords=GUI->req_coords; FreeSemaphore(&GUI->req_lock); // Allocate filerequester return AllocAslRequestTags( ASL_FileRequest, ASLFR_InitialLeftEdge,coords.Left, ASLFR_InitialTopEdge,coords.Top, ASLFR_InitialWidth,coords.Width, ASLFR_InitialHeight,coords.Height, TAG_END); }
// Solicit a font short request_font( struct Window *parent, char *title, char *buffer, short *size, ULONG flags, unsigned short font_pen_count, unsigned char *font_pen_table, short *fpen, short *bpen) { struct IBox coords; struct FontRequester *fontreq; short ret; // Get current requester coordinates GetSemaphore(&GUI->req_lock,SEMF_SHARED,0); coords=GUI->req_coords; FreeSemaphore(&GUI->req_lock); // Allocate fontrequester if (!(fontreq=AllocAslRequestTags(ASL_FontRequest, ASLFO_Window,parent, ASLFO_TitleText,title, ASLFO_InitialName,buffer, ASLFO_InitialSize,*size, ASLFO_Flags,flags|FOF_PRIVATEIDCMP, ASLFO_InitialLeftEdge,coords.Left, ASLFO_InitialTopEdge,coords.Top, ASLFO_InitialWidth,coords.Width, ASLFO_InitialHeight,coords.Height, ASLFO_MaxFrontPen,font_pen_count, ASLFO_MaxBackPen,font_pen_count, ASLFO_FrontPens,font_pen_table, ASLFO_BackPens,font_pen_table, ASLFO_InitialFrontPen,(fpen)?*fpen:0, ASLFO_InitialBackPen,(bpen)?*bpen:0, TAG_END))) { return 0; } // Display requester ret=AslRequest(fontreq,0); // Success? if (ret) { // Store new font strcpy(buffer,fontreq->fo_Attr.ta_Name); *size=fontreq->fo_Attr.ta_YSize; // Store colours if (fpen) *fpen=map_font_colour(fontreq->fo_FrontPen); if (bpen) *bpen=map_font_colour(fontreq->fo_BackPen); } // Save coordinates GetSemaphore(&GUI->req_lock,SEMF_EXCLUSIVE,0); GUI->req_coords=*((struct IBox *)&fontreq->fo_LeftEdge); FreeSemaphore(&GUI->req_lock); // Free font requester FreeAslRequest(fontreq); return ret; }
// Solicit a file request_file( struct Window *parent, char *title, char *buffer, char *def, ULONG flags, char *pattern) { struct IBox coords; struct FileRequester *filereq; char *path,*file=0; int ret; // Allocate path if (!(path=AllocVec(300,MEMF_CLEAR))) return 0; // Get current path if (buffer[0]) strcpy(path,buffer); else if (def) strcpy(path,def); if (path[0]) { file=FilePart(path); if (file && file>path) { strcpy(path+256,file); *file=0; file=path+256; } } // Get current requester coordinates GetSemaphore(&GUI->req_lock,SEMF_SHARED,0); coords=GUI->req_coords; FreeSemaphore(&GUI->req_lock); // Allocate filerequester if (!(filereq=AllocAslRequestTags(ASL_FileRequest, (flags&(1<<30))?ASLFR_Screen:ASLFR_Window,parent, ASLFR_TitleText,title, (file)?ASLFR_InitialFile:TAG_IGNORE,file, (*path)?ASLFR_InitialDrawer:TAG_IGNORE,path, ASLFR_Flags1,(flags|FRF_PRIVATEIDCMP)&~((1<<31)|(1<<30)|(1<<29)), ASLFR_Flags2,(flags&(1<<31))?0:FRF_REJECTICONS, ASLFR_InitialLeftEdge,coords.Left, ASLFR_InitialTopEdge,coords.Top, ASLFR_InitialWidth,coords.Width, ASLFR_InitialHeight,coords.Height, (flags&(1<<29))?ASLFR_InitialPattern:TAG_IGNORE,pattern, TAG_END))) { FreeVec(path); return 0; } // Display requester ret=AslRequest(filereq,0); // Build path strcpy(buffer,filereq->fr_Drawer); AddPart(buffer,filereq->fr_File,256); if (!*buffer || !*filereq->fr_File) ret=0; // Save coordinates GetSemaphore(&GUI->req_lock,SEMF_EXCLUSIVE,0); GUI->req_coords=*((struct IBox *)&filereq->fr_LeftEdge); FreeSemaphore(&GUI->req_lock); // Free file requester FreeAslRequest(filereq); FreeVec(path); return ret; }
ULONG __asm __saveds intAHIsub_AllocAudio( register __a1 struct TagItem *tagList, register __a2 struct AHIAudioCtrlDrv *AudioCtrl ) { char *ext = ""; if(AslBase == NULL) { return AHISF_ERROR; } if(AudioCtrl->ahiac_DriverData = AllocVec(sizeof(struct filesave),MEMF_CLEAR)) { dd->fs_AHIsubBase = AHIsubBase; dd->fs_DisableSignal = -1; dd->fs_EnableSignal = -1; dd->fs_SlaveSignal = -1; dd->fs_MasterSignal = AllocSignal(-1); dd->fs_MasterTask = (struct Process *) FindTask(NULL); dd->fs_RecSlaveSignal = -1; dd->fs_RecMasterSignal = AllocSignal(-1); } else { return AHISF_ERROR; } if((dd->fs_MasterSignal == -1) || (dd->fs_RecMasterSignal == -1)) { return AHISF_ERROR; } dd->fs_Format = GetTagData(AHIDB_FileSaveFormat, FORMAT_8SVX, tagList); switch(dd->fs_Format) { case FORMAT_8SVX: ext = ".8SVX"; break; case FORMAT_AIFF: ext = ".AIFF"; break; case FORMAT_AIFC: ext = ".AIFC"; break; case FORMAT_S16: break; default: break; } if(!(dd->fs_FileReq = AllocAslRequestTags(ASL_FileRequest, ASLFR_InitialFile, ext, ASLFR_DoSaveMode, TRUE, ASLFR_RejectIcons, TRUE, ASLFR_TitleText, _LibID, TAG_DONE))) { return AHISF_ERROR; } if(!(dd->fs_RecFileReq = AllocAslRequestTags(ASL_FileRequest, ASLFR_RejectIcons, TRUE, ASLFR_TitleText, "Select a sound sample", TAG_DONE))) { return AHISF_ERROR; } return AHISF_KNOWHIFI|AHISF_KNOWSTEREO|AHISF_CANRECORD|AHISF_MIXING|AHISF_TIMING; }