Exemple #1
1
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 ();
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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);
}
Exemple #5
0
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;
}
Exemple #6
0
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);
}
Exemple #7
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;
}
Exemple #8
0
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);
}
Exemple #10
0
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;
}
Exemple #11
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);
}
Exemple #12
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;
}
Exemple #13
0
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 );
}