home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 6
/
AACD06.ISO
/
AACD
/
System
/
WBStartup+
/
Source
/
WBStartup+Prefs
/
GetPriorityWindow.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-10-26
|
4KB
|
128 lines
#include <exec/types.h>
#include <string.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/gadtools.h>
#include <proto/intuition.h>
#include <proto/icon.h>
#include <proto/graphics.h>
#include <proto/wb.h>
#include <proto/commodities.h>
#include <proto/diskfont.h>
#include <proto/graphics.h>
#include <proto/utility.h>
#include <intuition/gadgetclass.h> /* PGA_Freedom */
#include "WBStartupPlusPrefs_Cat.h"
int GetPriority(int pri, UWORD x, UWORD y)
{
ULONG signals;
ULONG winsigflag;
BOOL LOOP;
struct IntuiMessage *winmsg;
struct Window *win;
struct Screen *scr;
struct VisualInfo *vi;
struct Gadget *gad;
struct Gadget *glist=NULL;
struct NewGadget ng;
ULONG winheight,winwidth;
if (scr=LockPubScreen(NULL))
{
if (vi=GetVisualInfo(scr,TAG_END))
{
winheight = scr->WBorTop + (2 * scr->Font->ta_YSize) + 1 + scr->WBorBottom + 8;
winwidth = (2 * TextLength(&scr->RastPort,GetString(STRPriority),strlen(GetString(STRPriority)))) + 40; /* 40 is for the close and depth gadgets */
if (win = OpenWindowTags(NULL,
WA_Left, x - (winwidth/2),
WA_Top, y - (winheight/2),
WA_Width, winwidth,
WA_Height, winheight,
WA_AutoAdjust, TRUE,
WA_Gadgets, glist,
WA_IDCMP, IDCMP_REFRESHWINDOW | IDCMP_CLOSEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_GADGETUP | SLIDERIDCMP,
WA_Flags, WFLG_CLOSEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_SMART_REFRESH | WFLG_ACTIVATE,
WA_Title, GetString(STRPriority),
WA_PubScreen, scr,
TAG_END))
{
gad = CreateContext(&glist);
ng.ng_LeftEdge = win->BorderLeft+2;
ng.ng_TopEdge = win->BorderTop+2;
ng.ng_Width = win->Width-win->BorderRight-win->BorderLeft-ng.ng_LeftEdge-2-(TextLength(&scr->RastPort," -000",5));
ng.ng_Height = scr->Font->ta_YSize + 4;
ng.ng_GadgetText = NULL;
ng.ng_TextAttr = NULL;//win->WScreen->Font;
ng.ng_VisualInfo = vi;
ng.ng_GadgetID = 0;
ng.ng_Flags = 0;
gad = CreateGadget(SLIDER_KIND,gad,&ng,
GTSL_Min, -128,
GTSL_Max, 127,
GTSL_Level, pri,
PGA_Freedom, LORIENT_HORIZ,
GTSL_LevelFormat, "%ld",
GTSL_LevelPlace, PLACETEXT_RIGHT,
GTSL_MaxLevelLen, 4,
TAG_DONE);
if (gad)
{
winsigflag = 1L<<win->UserPort->mp_SigBit;
AddGList(win, glist, (UWORD)~0, -1, NULL);
RefreshGList(glist,win,NULL,-1);
GT_RefreshWindow(win,NULL);
LOOP=TRUE;
while (LOOP)
{
signals=Wait(SIGBREAKF_CTRL_C | winsigflag);
if (signals & SIGBREAKF_CTRL_C)
LOOP=FALSE;
if (signals & winsigflag)
{
while (winmsg = (struct IntuiMessage *)GT_GetIMsg((struct MsgPort *)win->UserPort))
{
switch(winmsg->Class)
{
// case IDCMP_GADGETUP:
// LOOP=FALSE;
// break;
case IDCMP_REFRESHWINDOW:
BeginRefresh(win);
EndRefresh(win, TRUE);
break;
case IDCMP_CLOSEWINDOW:
LOOP=FALSE;
break;
}
GT_ReplyIMsg(winmsg);
}
} /* End of process window events */
} /* End of while (LOOP) */
GT_GetGadgetAttrs(gad,win,NULL,GTSL_Level,&pri);
if (pri > 127)
pri=127;
if (pri < -128)
pri=-128;
RemoveGList(win,glist,-1);
}
FreeGadgets(glist);
CloseWindow(win);
} /* End of if (OpenWindowTags()) */
FreeVisualInfo(vi);
}
UnlockPubScreen(NULL,scr);
}
return(pri);
}