Example #1
0
/*** 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;
}
Example #2
0
/*** 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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
// 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);
}
Example #8
0
// 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;
}
Example #9
0
// 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;
}
Example #10
0
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;
}