void amiga_init (char *dir) { if ((DefaultPubScreen = LockPubScreen (0)) == 0) exit (1); screen_ratio (DefaultPubScreen); char prog_name[256]; static char font_name[MAXFONTPATH]; char *font_desc, *name_ptr; static WORD pens[] = {-1}; static struct TextAttr font = {NULL, 0, FS_NORMAL, 0}; int window = 0; if (Icon == NULL) { if (GetProgramName (prog_name, 256)) Icon = GetDiskObject (prog_name); } if (Icon) { if (FindToolType (Icon->do_ToolTypes, "WINDOW")) window = 1; if (font_desc = FindToolType (Icon->do_ToolTypes, "FONT")) { strcpy (font_name, font_desc); if (name_ptr = strrchr (font_name, '/')) { font.ta_Name = font_name; font.ta_YSize = atoi (name_ptr + 1); strcpy (name_ptr, ".font"); } } if (font.ta_Name) Font = OpenDiskFont (&font); } if (Font == NULL) { font.ta_Name = "topaz.font"; font.ta_YSize = 8; Font = OpenFont (&font); } if (window == 0) { if ((Screen = OpenScreenTags (0, SA_Pens, pens, SA_DisplayID, GetVPModeID (&DefaultPubScreen->ViewPort), SA_Overscan, OSCAN_TEXT, SA_Depth, 2, SA_Type, CUSTOMSCREEN | AUTOSCROLL, SA_Font, &font, SA_Title, TitleBar, TAG_DONE)) == 0) exit (1); } if ((Window = OpenWindowTags (0, WA_Left, 0, WA_Top, Screen ? 2 : DefaultPubScreen->BarHeight + 1, WA_Width, Screen ? Screen->Width : ScreenWidth, WA_Height, Screen ? Screen->Height - 2 : ScreenHeight - DefaultPubScreen->BarHeight - 1, WA_SmartRefresh, 1, WA_NewLookMenus, 1, WA_AutoAdjust, 1, WA_Borderless, Screen ? 1 : 0, WA_Backdrop, Screen ? 1 : 0, WA_Activate, 1, WA_CloseGadget, Screen ? 0 : 1, WA_DragBar, Screen ? 0 : 1, WA_DepthGadget, Screen ? 0 : 1, WA_SizeGadget, Screen ? 0 : 1, WA_SizeBBottom, Screen ? 0 : 1, WA_Title, TitleBar, WA_ScreenTitle, TitleBar, WA_IDCMP, IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_MENUPICK | IDCMP_CLOSEWINDOW | IDCMP_CHANGEWINDOW, Screen ? WA_CustomScreen : WA_PubScreen, Screen ? Screen : DefaultPubScreen, TAG_DONE)) == 0) exit (1); ThisProcess = (struct Process *)FindTask(0); OldWindowPtr = ThisProcess->pr_WindowPtr; ThisProcess->pr_WindowPtr = Window; if ((Visual = GetVisualInfo (Window->WScreen, TAG_DONE)) == 0) exit (1); if ((Menus = CreateMenus (NewMenus, GTMN_NewLookMenus, TRUE, TAG_DONE)) == 0) exit (1); LayoutMenus (Menus, Visual, GTMN_NewLookMenus, TRUE, TAG_DONE); SetMenuStrip (Window, Menus); if ((GameReq = alloc_freq (dir)) == 0) exit (1); if ((SaveReq = alloc_freq (dir)) == 0) exit (1); if ((ScriptReq = alloc_freq (dir)) == 0) exit (1); RastPort = Window->RPort; SetDrMd (RastPort, JAM2); SetAPen (RastPort, 1); SetBPen (RastPort, 0); SetFont (RastPort, Font); DisplayHeight = ((Window->Height - Window->BorderTop - Window->BorderBottom) / RastPort->TxHeight) - 1; PreviousHeight = DisplayHeight; reset_cursor (); }
BOOL WriteIcon(char *name) { struct DiskObject *dobj; char *olddeftool; char **oldtooltypes; BOOL success = FALSE; /* Use the already present icon */ dobj=GetDiskObject(name); if( dobj != NULL ) { oldtooltypes = dobj->do_ToolTypes; olddeftool = dobj->do_DefaultTool; dobj->do_ToolTypes = toolTypes; dobj->do_DefaultTool = deftoolname; success = PutDiskObject(name,dobj); /* we must restore the original pointers before freeing */ dobj->do_ToolTypes = oldtooltypes; dobj->do_DefaultTool = olddeftool; FreeDiskObject(dobj); } /* Try the user's default prefs icon */ if((! success) && (dobj=GetDiskObject("ENV:Sys/def_Pref"))) { oldtooltypes = dobj->do_ToolTypes; olddeftool = dobj->do_DefaultTool; dobj->do_ToolTypes = toolTypes; dobj->do_DefaultTool = deftoolname; success = PutDiskObject(name,dobj); /* we must restore the original pointers before freeing */ dobj->do_ToolTypes = oldtooltypes; dobj->do_DefaultTool = olddeftool; FreeDiskObject(dobj); } /* Else, put our default icon */ if(! success) { success = PutDiskObject(name,&projIcon); } return success; }
void load_do(const char *filename, struct IconPixmaps *ip) { struct DiskObject *dobj; #ifdef AMIGAOS char fn[256]; strncpy(fn, prefs.icondir, sizeof(fn)-1); fn[sizeof(fn)-1]='\0'; AddPart(fn,filename,sizeof(fn)); #else int rl=strlen(filename)+strlen(prefs.icondir)+2; #ifdef HAVE_ALLOCA char *fn=alloca(rl); #else char fn[1024]; #endif sprintf(fn, "%s/%s", prefs.icondir, filename); #endif fn[strlen(fn)-5]=0; if((dobj=GetDiskObject(fn))) { ip->pm=image_to_pixmap_scr(scr, (struct Image *)dobj->do_Gadget.GadgetRender, dobj->do_Gadget.Width, dobj->do_Gadget.Height, &ip->cs); ip->pm2=image_to_pixmap_scr(scr, (struct Image *)dobj->do_Gadget.SelectRender, dobj->do_Gadget.Width, dobj->do_Gadget.Height, &ip->cs2); FreeDiskObject(dobj); } else ip->pm=ip->pm2=None; }
STRPTR GetDefInterfaceName(int argc, char **argv) { struct DiskObject *dobj; struct WBStartup *wbs; struct WBArg *wbarg; STRPTR icname; STRPTR iname; if (argc == 0) { wbs = (struct WBStartup *)argv; wbarg = wbs->sm_ArgList; icname = wbarg[0].wa_Name; CurrentDir(wbarg[0].wa_Lock); } else icname = argv[0]; if( !(dobj = GetDiskObject(icname)) ) { CurrentDir(NULL); return(NULL); } iname = FindToolType(dobj->do_ToolTypes, "INTERFACE"); FreeDiskObject(dobj); CurrentDir(NULL); return(iname); }
ULONG NATDECLFUNC_5(GUI_Open, d0, ULONG, cpu, a0, UBYTE *, ProgramName, a1, struct WBArg *, IconName, a2, CONST_STRPTR, vstring, a6, struct DnetcLibrary *, LibBase) { DECLARG_5(d0, ULONG, cpu, a0, UBYTE *, ProgramName, a1, struct WBArg *, IconName, a2, CONST_STRPTR, vstring, a6, struct DnetcLibrary *, LibBase) ULONG sigmask; (void)ProgramName; (void)cpu; if (!LibBase->dobj) { if (IconName) { BPTR olddir; olddir = CurrentDir(IconName->wa_Lock); LibBase->dobj = GetDiskObject(IconName->wa_Name); CurrentDir(olddir); } } sigmask = 0; ObtainSemaphore(&LibBase->SemaphoreGUI); if (!LibBase->App) { Object *app; strcpy(LibBase->Version, vstring); app = NewObjectA(LibBase->AppMCC->mcc_Class, NULL, NULL); if (app) { LibBase->App = app; LibBase->OwnerTask = FindTask(NULL); DoMethod(app, MUIM_MyApplication_OpenMainWindow); sigmask = 0xffff0000; } } ReleaseSemaphore(&LibBase->SemaphoreGUI); return sigmask; }
wbmain (struct WBStartup *wbmsg) { char startdir[256]; char *dir; strcpy (startdir, ""); if (Icon = GetDiskObject (wbmsg->sm_ArgList[0].wa_Name)) { if (dir = FindToolType (Icon->do_ToolTypes, "DIR")) strcpy (startdir, dir); } amiga_init (startdir); newgame (0); exit (0); }
struct DiskObject *GetDiskObjectNew(char *name) { struct DiskObject *d; struct stat st; if((d=GetDiskObject(name))) return d; if(stat(name, &st)<0) return NULL; if(S_ISREG(st.st_mode)) if(st.st_mode&0555) return GetDefDiskObject(WBTOOL); else return GetDefDiskObject(WBPROJECT); else if(S_ISDIR(st.st_mode)) return GetDefDiskObject(WBDRAWER); else if(S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode)) return GetDefDiskObject(WBDEVICE); else return NULL; }
int main(int argc, char **argv) { LONG rc = RETURN_FAIL; STRPTR filename, commandLine = NULL, ixWindow = DEFWINDOW; LONG ixWait = 0, ixStack = DEFSTACK; BOOL ixUShell = DEFUSHELL; BPTR oldlock = (BPTR)-1, dirlock = (BPTR)-1, window = NULL; struct DiskObject *dobj = NULL; D(bug("IconX argc %d\n", argc)); if (argc != 0) { displayMsg(ERROR_REQUIRED_ARG_MISSING); goto exit; } struct WBStartup *startup = (struct WBStartup *) argv; if (startup->sm_NumArgs < 2) { displayMsg(ERROR_REQUIRED_ARG_MISSING); goto exit; } D(bug("[IconX] startup->sm_NumArgs: %d\n", startup->sm_NumArgs)); dirlock = startup->sm_ArgList[1].wa_Lock; filename = startup->sm_ArgList[1].wa_Name; oldlock = CurrentDir(dirlock); /* query diskobject for tooltypes */ dobj = GetDiskObject(filename); if (dobj == NULL) { struct EasyStruct es = {sizeof(struct EasyStruct), 0, "Error", "IconX\nGetDiskObject failed for:\n%s", "OK"}; EasyRequest(0, &es, 0, filename); goto exit; } if (dobj->do_Type == WBPROJECT) { const STRPTR *toolarray = (const STRPTR *)dobj->do_ToolTypes; STRPTR s; if ((s = FindToolType(toolarray, "WINDOW"))) { ixWindow = s; } if ((s = FindToolType(toolarray, "STACK"))) { ixStack = atol(s); } if ((s = FindToolType(toolarray, "USERSHELL"))) { if (MatchToolValue(s, "NO")) { ixUShell = FALSE; } } if ((s = FindToolType(toolarray, "WAIT"))) { ixWait += atol(s) * 50; } if ((s = FindToolType(toolarray, "DELAY"))) { ixWait += atol(s); } } else { displayMsg(ERROR_OBJECT_WRONG_TYPE); goto exit; } if (ixWait <= 0) ixWait = DEFWAIT; if (ixStack <= 4096) ixStack = DEFSTACK; D(bug("wait %d stack %d usershell %d window %s\n", ixWait, ixStack, ixUShell, ixWindow)); D(bug("Building command line\n")); commandLine = BuildCommandLine(startup); if (commandLine == NULL) { displayMsg(IoErr()); goto exit; } D(bug("[IconX] commandLine: '%s'\n", commandLine)); window = Open(ixWindow, MODE_OLDFILE); if (window == NULL) { /* try to open default window */ window = Open(DEFWINDOW, MODE_OLDFILE); } if (window) { D(bug("[IconX] window ok\n")); struct TagItem tags[] = { { SYS_Asynch, FALSE }, { SYS_Background, TRUE }, { SYS_Input, (IPTR)window }, { SYS_Output, (IPTR)NULL }, { SYS_Error, (IPTR)NULL }, { SYS_UserShell, ixUShell }, { NP_StackSize, ixStack }, { TAG_DONE, 0 } }; rc = SystemTagList(commandLine, tags); if (rc == -1) { displayMsg(IoErr()); rc = RETURN_FAIL; } } else { displayMsg(IoErr()); goto exit; } Delay(ixWait); rc = RETURN_OK; exit: Close(window); FreeDiskObject(dobj); if (oldlock != (BPTR)-1) CurrentDir(oldlock); return rc; }
void file_open_with(struct Window *window,char *name,ULONG flags) { char *buffer; short len,wb=0,ok=0; struct DiskObject *icon; // Allocate buffer if (!(buffer=AllocVec(1400,MEMF_CLEAR))) return; // App already selected? if (flags&(1<<30)) { short num; struct Node *node; // Get application number in list num=flags&~(1<<30); // Lock the list lock_listlock(&GUI->open_with_list,0); // Find the node for (node=GUI->open_with_list.list.lh_Head; node->ln_Succ; node=node->ln_Succ) { // Matched? if (num--==0) break; } // Valid node? if (node->ln_Succ) { // Get the application name strcpy(buffer+1,node->ln_Name); ok=1; } // Unlock the list unlock_listlock(&GUI->open_with_list); } // Need to ask? if (!ok) { // Build title lsprintf(buffer+1024,GetString(&locale,MSG_SELECT_APP),FilePart(name)); // Ask for file if (!(request_file( window, buffer+1024, buffer+1, 0, 0,0)) || !*(buffer+1)) { FreeVec(buffer); return; } // Add App to OpenWith list add_open_with(buffer+1); } // See if app has an icon if (icon=GetDiskObject(buffer+1)) { // Is it a tool? if (icon->do_Type==WBTOOL) { // Launch as Workbench App wb=1; } // Free icon FreeDiskObject(icon); } // Fill in quotes buffer[0]='\"'; buffer[(len=strlen(buffer))]='\"'; // Add filename in quotes buffer[len+1]=' '; buffer[len+2]='\"'; strcpy(buffer+len+3,name); buffer[(len=strlen(buffer))]='\"'; buffer[len+1]=0; // Launch the function file_launch(buffer,wb,"ram:"); // Free buffer FreeVec(buffer); }
int main(int argc, char **argv) { struct RDArgs *rdargs = NULL; int i; char pubscreen[32]; if(argc) { rdargs=ReadArgs( TEMPLATE , (LONG *) &args, NULL); SaveIcons = FALSE; } else { struct WBStartup *WBenchMsg = (struct WBStartup *)argv; struct WBArg *wbarg; BPTR olddir; struct DiskObject *dobj; STRPTR* toolarray; UBYTE *s; SaveIcons = TRUE; for(i=0, wbarg=WBenchMsg->sm_ArgList; i < WBenchMsg->sm_NumArgs; i++, wbarg++) { olddir = (BPTR) -1; if((wbarg->wa_Lock)&&(*wbarg->wa_Name)) olddir = CurrentDir(wbarg->wa_Lock); if((*wbarg->wa_Name) && (dobj=GetDiskObject(wbarg->wa_Name))) { toolarray = dobj->do_ToolTypes; s = FindToolType(toolarray,"CREATEICONS"); if( s != NULL ) { if( MatchToolValue(s,"NO") || MatchToolValue(s,"FALSE")) { SaveIcons = FALSE; } } s = (char *) FindToolType(toolarray,"PUBSCREEN"); if( s != NULL ) { strncpy(pubscreen, s, sizeof pubscreen); args.pubscreen = pubscreen; } s = (char *) FindToolType(toolarray,"ACTION"); if( s != NULL ) { if(MatchToolValue(s,"EDIT")) { args.edit = TRUE; } else if(MatchToolValue(s,"USE")) { args.use = TRUE; } else if(MatchToolValue(s,"SAVE")) { args.save = TRUE; } } FreeDiskObject(dobj); } if((i>0)&&(*wbarg->wa_Name)) { args.from = wbarg->wa_Name; } if(olddir != (BPTR) -1) { CurrentDir(olddir); /* CD back where we were */ } } } if(args.from == NULL) { args.from = ENVFILE; } if(args.edit) { args.use = FALSE; args.save = FALSE; } if((SetSignal(0L,SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C) == 0) { if(Initialize()) { NewSettings(args.from); if((!args.use && !args.save) || args.edit) { if(BuildGUI(args.pubscreen)) { EventLoop(); } CloseGUI(); } if(args.use || args.save) { SaveSettings(ENVFILE, UnitList); } if(args.save) { SaveSettings(ENVARCFILE, UnitList); } } } if(rdargs) { FreeArgs(rdargs); } FreeVec(Units); FreeVec(Modes); FreeVec(Outputs); FreeVec(Inputs); FreeList(ModeList); FreeList(UnitList); CleanUp(); return 0; }
/*>ProcessToolTypes(void) ---------------------- Alters defaults based on icon tool types. Handles the following tooltypes: Size=<x> <y> Output dimensions Offset=<x> <y> Output offset HPGLMargin=<x> <y> HPGL paper margins Title=<Font> <Size> Title font and size XTitle=<Font> <Size> X-axis title font and size YTitle=<Font> <Size> Y-axis title font and size XLabel=<Font> <Size> X-axis label font and size YLabel=<Font> <Size> Y-axis label font and size Key=<Font> <Size> Key font and size Extralabel=<Font> <Size> Extra label font and size Hatching=ON|OFF Use hatching or shading HatchControl=<thick> <space> Thickness and spacing of hatching Pen0=<R> <G> <B> Pen colours Pen1=<R> <G> <B> Pen2=<R> <G> <B> Pen3=<R> <G> <B> DIR=<directory> Default directory NOSHANGHAI Stops editor SHANGHAI under V2.0 AXISBOUNDS EPSF bounding box set to size given by paper 01.07.92 Original 02.07.92 Added pen colours. Also rebuilds windows if colours have been set. 06.07.92 Added default directory. 04.08.92 Added NOSHANGHAI 15.09.92 Added AXISBOUNDS */ ProcessToolTypes(void) { struct DiskObject *DiskObj = NULL; char *valptr, string[80]; double value, value2; int ival1, ival2, ival3, redowindows = FALSE; if((DiskObj = (struct DiskObject *) GetDiskObject(WBenchMsg->sm_ArgList->wa_Name)) != NULL) { /* Tooltype: Size=<x> <y> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Size")) != NULL) if(sscanf(valptr,"%lf %lf",&value,&value2) == 2) { output.xsize = value; output.ysize = value2; } /* Tooltype: Offset=<x> <y> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Offset")) != NULL) if(sscanf(valptr,"%lf %lf",&value,&value2) == 2) { output.xoffset = value; output.yoffset = value2; } /* Tooltype: HPGLMargin=<x> <y> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"HPGLMargin")) != NULL) if(sscanf(valptr,"%lf %lf",&value,&value2) == 2) { output.xmargin = value; output.ymargin = value2; } /* Tooltype: Title=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Title")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(GTitle.PSFont,string); GTitle.PSSize = value; } /* Tooltype: XAxTitle=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"XTitle")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(XTitle.PSFont,string); XTitle.PSSize = value; } /* Tooltype: YAxTitle=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"YTitle")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(YTitle.PSFont,string); YTitle.PSSize = value; } /* Tooltype: XLabel=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"XLabel")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(XLabel.PSFont,string); XLabel.PSSize = value; } /* Tooltype: YLabel=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"YLabel")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(YLabel.PSFont,string); YLabel.PSSize = value; } /* Tooltype: Key=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Key")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(Defaults.KeyPSFont,string); Defaults.KeyPSSize = value; } /* Tooltype: ExtraLabel=<font> <size> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"ExtraLabel")) != NULL) if(sscanf(valptr,"%s %lf",string,&value) == 2) { strcpy(Defaults.LabelPSFont,string); Defaults.LabelPSSize = value; } /* Tooltype: Hatching=ON|OFF */ if(MatchToolValue(FindToolType(DiskObj->do_ToolTypes,"Hatching"),"ON")) output.hatching = TRUE; if(MatchToolValue(FindToolType(DiskObj->do_ToolTypes,"Hatching"),"OFF")) output.hatching = FALSE; /* Tooltype: HatchControl=<thickness> <spacing> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"HatchControl")) != NULL) if(sscanf(valptr,"%lf %lf",&value,&value2) == 2) { output.hatchthick = value; output.hatchspace = value2; } /* Tooltype: Pen0=<R> <G> <B> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Pen0")) != NULL) if(sscanf(valptr,"%d %d %d",&ival1,&ival2,&ival3) == 3) { ival1 = RANGECHECK(ival1,0,15); ival2 = RANGECHECK(ival2,0,15); ival3 = RANGECHECK(ival3,0,15); SetRGB4(&MyScreen->ViewPort,0,(UBYTE)ival1,(UBYTE)ival2,(UBYTE)ival3); redowindows = TRUE; } /* Tooltype: Pen1=<R> <G> <B> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Pen1")) != NULL) if(sscanf(valptr,"%d %d %d",&ival1,&ival2,&ival3) == 3) { ival1 = RANGECHECK(ival1,0,15); ival2 = RANGECHECK(ival2,0,15); ival3 = RANGECHECK(ival3,0,15); SetRGB4(&MyScreen->ViewPort,1,(UBYTE)ival1,(UBYTE)ival2,(UBYTE)ival3); redowindows = TRUE; } /* Tooltype: Pen2=<R> <G> <B> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Pen2")) != NULL) if(sscanf(valptr,"%d %d %d",&ival1,&ival2,&ival3) == 3) { ival1 = RANGECHECK(ival1,0,15); ival2 = RANGECHECK(ival2,0,15); ival3 = RANGECHECK(ival3,0,15); SetRGB4(&MyScreen->ViewPort,2,(UBYTE)ival1,(UBYTE)ival2,(UBYTE)ival3); redowindows = TRUE; } /* Tooltype: Pen3=<R> <G> <B> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"Pen3")) != NULL) if(sscanf(valptr,"%d %d %d",&ival1,&ival2,&ival3) == 3) { ival1 = RANGECHECK(ival1,0,15); ival2 = RANGECHECK(ival2,0,15); ival3 = RANGECHECK(ival3,0,15); SetRGB4(&MyScreen->ViewPort,3,(UBYTE)ival1,(UBYTE)ival2,(UBYTE)ival3); redowindows = TRUE; } /* Tooltype: DIR=<directory> */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"DIR")) != NULL) strcpy(Defaults.directory,valptr); /* Tooltype: NOSHANGHAI */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"NOSHANGHAI")) != NULL) display.shanghai = FALSE; /* Tooltype: AXISBOUNDS */ if((valptr = FindToolType(DiskObj->do_ToolTypes,"AXISBOUNDS")) != NULL) output.fixbounds = FALSE; FreeDiskObject(DiskObj); /* // if(redowindows) // { // FreeAllGadgets(); // BuildAllWindows(); // } */ } return(0); }
/* ** Here we go */ static IPTR mNew(struct IClass *cl, Object *obj, struct opSet *msg) { Object *strip, *win; if((obj = (Object *)DoSuperNew(cl,obj, MUIA_Application_Title, "OpenURL-Prefs", MUIA_Application_Version, "$VER: OpenURL-Prefs " LIB_REV_STRING " [" SYSTEMSHORT "/" CPU "] (" LIB_DATE ") " LIB_COPYRIGHT, MUIA_Application_Author, APPAUTHOR, MUIA_Application_Copyright, getString(MSG_App_Copyright), MUIA_Application_Description, getString(MSG_App_Description), MUIA_Application_HelpFile, APPHELP, MUIA_Application_Base, APPBASENAME, MUIA_Application_Menustrip, strip = MUI_MakeObject(MUIO_MenustripNM,(IPTR)menu,MUIO_MenustripNM_CommandKeyCheck), MUIA_Application_UsedClasses, usedClasses, MUIA_Application_Window, win = winObject, End, TAG_MORE,msg->ops_AttrList)) != NULL) { struct data *data = INST_DATA(cl,obj); /* ** Setup data */ data->win = win; if((data->icon = GetDiskObject((STRPTR)"PROGDIR:OpenURL")) != NULL) superset(cl,obj,MUIA_Application_DiskObject,data->icon); /* Menus */ DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_About),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,1,MUIM_App_About); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_AboutMUI),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)MUIV_Notify_Application,2,MUIM_Application_AboutMUI,(IPTR)win); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Hide),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,3,MUIM_Set,MUIA_Application_Iconified,TRUE); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Quit),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Save),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)win,2,MUIM_Win_StorePrefs,MUIV_Win_StorePrefs_Save); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Use),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)win,2,MUIM_Win_StorePrefs,MUIV_Win_StorePrefs_Use); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_LastSaved),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,2,MUIM_App_GetPrefs,MUIV_App_GetPrefs_LastSaveds); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Restore),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,2,MUIM_App_GetPrefs,MUIV_App_GetPrefs_Restore); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_Defaults),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,2,MUIM_App_GetPrefs,MUIV_App_GetPrefs_Defaults); DoMethod((Object *)DoMethod(strip,MUIM_FindUData,MSG_Menu_MUI),MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,(IPTR)obj,2,MUIM_Application_OpenConfigWindow,0); /* Menus help */ DoSuperMethod(cl,obj,MUIM_Notify,MUIA_Application_MenuHelp,MUIV_EveryTime,MUIV_Notify_Self, 5,MUIM_Application_ShowHelp,(IPTR)win,(IPTR)APPHELP,(IPTR)"MENUS",0); /* ** Load list formats */ DoSuperMethod(cl,obj,MUIM_Application_Load,(IPTR)MUIV_Application_Load_ENV); /* ** Try to get OpenURL prefs and open window */ if (!DoMethod(win,MUIM_Win_GetPrefs,MUIV_Win_GetPrefs_Restore) || !openWindow(obj,win)) { CoerceMethod(cl,obj,OM_DISPOSE); return 0; } } return (IPTR)obj; }
VOID __stdargs __main( char *argstring ) { static struct Args args; LONG rev; /* Get arguments if started from CLI */ if( !_WBenchMsg ) { if( !( RDArgs = ReadArgs( TEMPLATE, ( IPTR * ) &args, NULL ) ) ) { PrintFault( IoErr(), GetString( MSG_ERROR_ARGS ) ); __exit( 0 ); } } IntuiHook.h_Entry = ( HOOKFUNC ) IntuiMsgFunc; // DefaultPrefs.Flags = 0; DefaultPrefs.ReqDefaults[ RTPREF_OTHERREQ ].ReqPos = REQPOS_POINTER; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].Size = 75; DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].Size = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].Size = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].Size = 65; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].ReqPos = DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].ReqPos = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].ReqPos = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].ReqPos = DefaultPrefs.ReqDefaults[ RTPREF_PALETTEREQ ].ReqPos = REQPOS_TOPLEFTSCR; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].LeftOffset = DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].LeftOffset = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].LeftOffset = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].LeftOffset = DefaultPrefs.ReqDefaults[ RTPREF_PALETTEREQ ].LeftOffset = DefaultPrefs.ReqDefaults[ RTPREF_OTHERREQ ].LeftOffset = 25; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].TopOffset = DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].TopOffset = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].TopOffset = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].TopOffset = DefaultPrefs.ReqDefaults[ RTPREF_PALETTEREQ ].TopOffset = DefaultPrefs.ReqDefaults[ RTPREF_OTHERREQ ].TopOffset = 18; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].MinEntries = 10; DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].MinEntries = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].MinEntries = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].MinEntries = 6; DefaultPrefs.ReqDefaults[ RTPREF_FILEREQ ].MaxEntries = 50; DefaultPrefs.ReqDefaults[ RTPREF_FONTREQ ].MaxEntries = DefaultPrefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].MaxEntries = DefaultPrefs.ReqDefaults[ RTPREF_VOLUMEREQ ].MaxEntries = 10; if( !( IntuitionBase = ( struct IntuitionBase * ) OpenLibrary( "intuition.library", 37 ) ) ) { BPTR con; if( ( con = Open( "CON:40/20/320/40/ReqTools 2.8", MODE_NEWFILE ) ) ) { Write( con, "\nNeed OS 2.04 or better!\n", 25 ); Delay( 120L ); Close( con ); } FreeExit( 0 ); } InitLocale(); GfxBase = OpenLib( "graphics.library", 37 ); UtilityBase = OpenLib( "utility.library", 36 ); IconBase = OpenLib( "icon.library", 0 ); GadToolsBase = OpenLib( "gadtools.library", 37 ); ReqToolsBase = OpenLib( "reqtools.library", 38 ); rev = ReqToolsBase->LibNode.lib_Revision; if( ( rev >= 693 && rev <= 811 ) || ( rev >= 347 && rev <= 363 ) ) { LocEZReq( MSG_WRONG_REQTOOLS_VERSION, MSG_ABORT ); FreeExit( RETURN_FAIL ); } if( rtLockPrefs()->PrefsSize != PREFSLEN ) { LocEZReq( MSG_ALL_PREFS_NOT_SUPPORTED, MSG_OK ); } rtUnlockPrefs(); if( _WBenchMsg ) { struct WBArg *wbarg; BPTR oldcd; CreateIcons = TRUE; wbarg = &_WBenchMsg->sm_ArgList[ 0 ]; oldcd = CurrentDir( wbarg->wa_Lock ); if( ( DiskObject = GetDiskObject( wbarg->wa_Name ) ) ) { STRPTR str; if( ( str = FindToolType( (UBYTE **)DiskObject->do_ToolTypes, "CREATEICONS" ) ) ) { CreateIcons = Stricmp( str, "NO" ); } if( ( str = FindToolType( (UBYTE **)DiskObject->do_ToolTypes, "SCREENFONT" ) ) ) { UseScreenFont = Stricmp( str, "NO" ); } if( ( str = FindToolType( (UBYTE **)DiskObject->do_ToolTypes, "PUBSCREEN" ) ) ) { args.PubScreen = str; } } CurrentDir( oldcd ); } else { if( args.ScreenFont ) { UseScreenFont = Stricmp( args.ScreenFont, "NO" ); } } if( !( FileReq = rtAllocRequestA( RT_FILEREQ, NULL ) ) ) { FreeExit( RETURN_FAIL ); } { struct TagItem tags[] = { {RTFI_Dir , (IPTR)"Presets" }, {TAG_DONE } }; rtChangeReqAttrA( FileReq, tags ); } /* Get current prefs from ReqTools */ CopyMem( rtLockPrefs(), &RTPrefs, sizeof( struct ReqToolsPrefs ) ); rtUnlockPrefs(); /* If FROM was used load prefs from disk */ if( args.From ) { if( !LoadConfig( args.From ) ) { FreeExit( RETURN_ERROR ); } } WheelType = GetWheelType( RTPrefs.Flags ); if( !( Screen = LockPubScreen( args.PubScreen ) ) ) { LocEZReq( MSG_COULDNT_LOCK_PUBSCREEN, MSG_ABORT ); FreeExit( RETURN_ERROR ); } if( !( DrawInfo = GetScreenDrawInfo( Screen ) ) ) { LocEZReq( MSG_ERROR_GETSCREENDRAWINFO, MSG_ABORT ); FreeExit( RETURN_ERROR ); } if( !( VisualInfo = GetVisualInfoA( Screen, NULL ) ) ) { LocEZReq( MSG_ERROR_GETVISUALINFO, MSG_ABORT ); FreeExit( RETURN_FAIL ); } if( IntuitionBase->LibNode.lib_Version >= 39 ) { Zoom[ 0 ] = Zoom[ 1 ] = 65535; } else { Zoom[ 1 ] = Screen->BarHeight + 1; } Zoom[ 2 ] = 250; Zoom[ 3 ] = Screen->WBorTop + Screen->Font->ta_YSize + 1; LocalizeMenus( NewMenu ); if( !( Menus = CreateMenusA( NewMenu, NULL ) ) ) { LocEZReq( MSG_ERROR_MENUS, MSG_ABORT ); FreeExit( RETURN_FAIL ); } LayoutMenus( Menus, VisualInfo, GTMN_NewLookMenus, TRUE, TAG_END ); if( !OpenGUI() ) { LocEZReq( MSG_COULDNT_OPEN_WINDOW, MSG_ABORT ); FreeExit( RETURN_FAIL ); } { struct MenuItem *iconItem; iconItem = ItemAddress( Menus, FULLMENUNUM( OPTIONS_MENU, SAVEICONS_ITEM, NOSUB ) ); if( !CreateIcons ) { iconItem->Flags &= ~CHECKED; } } CurrentReq = RTPREF_FILEREQ; ReqDefs = &RTPrefs.ReqDefaults[ CurrentReq ]; LoopGUI(); FreeExit( 0 ); }