示例#1
0
	APTR GetVisualInfo (

/*  SYNOPSIS */
	struct Screen * screen,
	Tag		tag1,
	...		)

/*  FUNCTION
        Varargs version of gadtools.library/GetVisualInfoA().

    INPUTS

    RESULT

    NOTES

    EXAMPLE

    BUGS

    SEE ALSO
	gadtools.library/GetVisualInfoA()

    INTERNALS

    HISTORY

*****************************************************************************/
{
    AROS_SLOWSTACKTAGS_PRE(tag1)
    retval = GetVisualInfoA (screen, AROS_SLOWSTACKTAGS_ARG(tag1));
    AROS_SLOWSTACKTAGS_POST
} /* GetVisualInfo */
示例#2
0
int lib_gadtools_f_GetVisualInfoA_2(emumsg_syscall_t *msg)
{
	/* Make real syscall */
	msg->arg[0]._aptr = GetVisualInfoA((struct Screen *)msg->arg[0]._aptr,(struct TagItem *)msg->arg[1]._aptr);

	return HOOK_DONE;
}
示例#3
0
void attach_menu(struct Window *window)
{
	struct VisualInfo *vi;
	open_menu();

	if ((menu)&&(window))
	{
#if 1
		make_appwindow(window);
#endif

		if (vi = GetVisualInfoA(window -> WScreen,NULL))
		{
			LayoutMenus( menu, vi, GTMN_NewLookMenus, TRUE, TAG_END );
		}

		SetMenuStrip(window, menu);
		Menu_Window = window;
	}
}
示例#4
0
// Get a menu
void display_get_menu(struct Window *window)
{
	struct Menu *menu;
	APTR visual_info;

	// Get visual info
	if ((visual_info=GetVisualInfoA(window->WScreen,0)))
	{
		// Build new menu strip
		if ((menu=BuildMenuStrip(dopus_menus,&locale)))
		{
			// Layout menus
			LayoutMenus(menu,visual_info,
				GTMN_NewLookMenus,TRUE,
				TAG_END);

			// Set menu strip
			SetMenuStrip(window,menu);
		}

		// Free visual info
		FreeVisualInfo(visual_info);
	}
}
示例#5
0
BOOL BuildGUI(char *screenname) {

	Object **ar = Window_Objs;
  struct Screen *screen;
  BOOL OptionFrame = FALSE;
  LONG indicatorwidth = 100;
  Object *l1, *l2, *l3, *l4, *l5, *l6, *l7;

  UpdateStrings();

  if (ButtonBase == NULL) { /* force it open */
    Printf((char *) msgTextNoOpen, "button.gadget", __classactversion);
    Printf("\n");
    return FALSE;
  }

  /* Dynamic */
  unitlist      = ChooserLabelsA( (STRPTR *) Units);
  modelist      = BrowserNodesA( (STRPTR *) Modes);
  infolist      = BrowserNodes2(infotexts, infoargs);

  /* Static */
  pagelist      = ClickTabs( (char *) msgPageMode, (char *) msgPageAdvanced, NULL);
  debuglist     = ChooserLabels( (char *) msgDebugNone,
                                 (char *) msgDebugLow,
                                 (char *) msgDebugHigh,
                                 (char *) msgDebugFull,
                                 NULL);
  echolist      = ChooserLabels( (char *) msgEchoEnabled,
                                 (char *) msgEchoFast,
                                 (char *) msgEchoDisabled,
                                 NULL);
  surroundlist  = ChooserLabels( (char *) msgSurroundEnabled,
                                 (char *) msgSurroundDisabled,
                                 NULL);
  clipMVlist    = ChooserLabels( (char *) msgMVNoClip,
                                 (char *) msgMVClip,
                                 NULL);


  screen = LockPubScreen(screenname);

  vi = GetVisualInfoA(screen, NULL);

  Menu = CreateMenusA(NewMenus, NULL);

  if(vi == NULL || Menu == NULL) {
    Printf((char *) msgTextNoWindow);
    Printf("\n");
    return FALSE;
  }

  if(!LayoutMenus(Menu, vi, GTMN_NewLookMenus, TRUE, TAG_DONE)) {
    Printf((char *) msgTextNoWindow);
    Printf("\n");
    return FALSE;
  }

  indicatorwidth = max(indicatorwidth, 16 * screen->RastPort.Font->tf_XSize);
  if(screen->Height > 240) {
    OptionFrame = TRUE;
  }

  ar[ACTID_PAGE] = PageObject,
    PAGE_Current,         0,

/* PAGE 1 */
    PAGE_Add, HLayoutObject,
      LAYOUT_VertAlignment, LALIGN_CENTER,

      LAYOUT_AddChild, VLayoutObject,

        LAYOUT_AddChild, ar[ACTID_UNIT] = PopUpObject,
          CHOOSER_Labels,         unitlist,
          CHOOSER_Active,         state.UnitSelected,
        ChooserEnd,
        CHILD_WeightedHeight, 0,

        LAYOUT_AddChild, ar[ACTID_MODE] = ListBrowserObject,
          LISTBROWSER_Labels,     modelist,
          LISTBROWSER_MakeVisible,state.ModeSelected,
          LISTBROWSER_Selected,   state.ModeSelected,
          LISTBROWSER_ShowSelected,TRUE,
        ListBrowserEnd,

        LAYOUT_AddChild, ar[SHOWID_MODE] = ListBrowserObject,
          LISTBROWSER_Labels,     infolist,
          LISTBROWSER_ColumnInfo, (ULONG)&ci,
          LISTBROWSER_AutoFit,    TRUE,
          LISTBROWSER_VertSeparators, FALSE,
          GA_ReadOnly,            TRUE,
        ListBrowserEnd,
        CHILD_MaxHeight, screen->RastPort.Font->tf_YSize * 6 + 6, // UHH!!
      LayoutEnd,

      LAYOUT_AddChild, HLayoutObject,
        (OptionFrame ? LAYOUT_SpaceOuter   : TAG_IGNORE), TRUE,
        (OptionFrame ? LAYOUT_RightSpacing : TAG_IGNORE), 0,
        (OptionFrame ? LAYOUT_BevelStyle   : TAG_IGNORE), BVS_GROUP,
        (OptionFrame ? LAYOUT_Label        : TAG_IGNORE), (char *) msgOptions,

        LAYOUT_AddChild, VLayoutObject,

          LAYOUT_AddChild, l1 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_FREQ] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.Frequencies,
              SLIDER_Level,         state.FreqSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptFrequency,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_FREQ] = ButtonObject,
              GA_Text,                getFreq(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l2 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_CHANNELS] = SliderObject,
              SLIDER_Min,           1,
              SLIDER_Max,           state.Channels,
              SLIDER_Level,         state.ChannelsSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptChannels,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_CHANNELS] = ButtonObject,
              GA_Text,                getChannels(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l3 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_OUTVOL] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.OutVols,
              SLIDER_Level,         state.OutVolSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptVolume,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_OUTVOL] = ButtonObject,
              GA_Text,                getOutVol(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l4 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_MONVOL] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.MonVols,
              SLIDER_Level,         state.MonVolSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptMonitor,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_MONVOL] = ButtonObject,
              GA_Text,                getMonVol(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l5 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_GAIN] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.Gains,
              SLIDER_Level,         state.GainSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptGain,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_GAIN] = ButtonObject,
              GA_Text,                getGain(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l6 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_INPUT] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.Inputs,
              SLIDER_Level,         state.InputSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptInput,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_INPUT] = ButtonObject,
              GA_Text,                getInput(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

          LAYOUT_AddChild, l7 = HLayoutObject,
            LAYOUT_AddChild, ar[ACTID_OUTPUT] = SliderObject,
              SLIDER_Min,           0,
              SLIDER_Max,           state.Outputs,
              SLIDER_Level,         state.OutputSelected,
              SLIDER_Orientation,   SORIENT_HORIZ,
              GA_UserData,            &GadgetHook,
            SliderEnd,
            CHILD_Label, LabelObject,
              LABEL_Text,             (char *) msgOptOutput,
            LabelEnd,
            LAYOUT_AddChild, ar[SHOWID_OUTPUT] = ButtonObject,
              GA_Text,                getOutput(),
              GA_ReadOnly,            TRUE,
              BUTTON_BevelStyle,      BVS_NONE,
              BUTTON_Transparent,     TRUE,
              BUTTON_Justification,   BCJ_LEFT,
            ButtonEnd,
            CHILD_MinWidth,         indicatorwidth,
            CHILD_MaxWidth,         indicatorwidth,
          LayoutEnd,

        LayoutEnd,

      LayoutEnd,
      CHILD_WeightedHeight, 0,

    LayoutEnd,

/* PAGE 2 */
    PAGE_Add, HLayoutObject,
      LAYOUT_VertAlignment, LALIGN_CENTER,
      LAYOUT_HorizAlignment,  LALIGN_CENTER,

      LAYOUT_AddChild, VLayoutObject,
        LAYOUT_SpaceOuter,      TRUE,
        LAYOUT_BevelStyle,      BVS_GROUP,
        LAYOUT_Label,           (char *) msgGlobalOptions,
        LAYOUT_VertAlignment, LALIGN_BOTTOM,

        LAYOUT_AddChild, ar[ACTID_DEBUG] = PopUpObject,
          CHOOSER_Labels,       debuglist,
          CHOOSER_Active,       globalprefs.ahigp_DebugLevel,
        ChooserEnd,
        CHILD_Label, LabelObject,
          LABEL_Text,             (char *) msgGlobOptDebugLevel,
        LabelEnd,

        LAYOUT_AddChild, ar[ACTID_ECHO] = PopUpObject,
          CHOOSER_Labels,       echolist,
          CHOOSER_Active,       (globalprefs.ahigp_DisableEcho ? 2 : 0) |
                                (globalprefs.ahigp_FastEcho    ? 1 : 0),
        ChooserEnd,
        CHILD_Label, LabelObject,
          LABEL_Text,             (char *) msgGlobOptEcho,
        LabelEnd,

        LAYOUT_AddChild, ar[ACTID_SURROUND] = PopUpObject,
          CHOOSER_Labels,       surroundlist,
          CHOOSER_Active,       globalprefs.ahigp_DisableSurround,
        ChooserEnd,
        CHILD_Label, LabelObject,
          LABEL_Text,             (char *) msgGlobOptSurround,
        LabelEnd,

        LAYOUT_AddChild, ar[ACTID_CLIPMV] = PopUpObject,
          CHOOSER_Labels,       clipMVlist,
          CHOOSER_Active,       globalprefs.ahigp_ClipMasterVolume,
        ChooserEnd,
        CHILD_Label, LabelObject,
          LABEL_Text,             (char *) msgGlobOptMasterVol,
        LabelEnd,

        LAYOUT_AddChild, ar[ACTID_CPULIMIT] = IntegerObject,
          INTEGER_MaxChars,       3,
          INTEGER_MinVisible,     3,
          INTEGER_Minimum,        0,
          INTEGER_Maximum,        100,
          INTEGER_Number,         (globalprefs.ahigp_MaxCPU * 100 + 32768) >> 16,
          INTEGER_Arrows,         TRUE,
        IntegerEnd,
        CHILD_Label, LabelObject,
          LABEL_Text,             (char *) msgGlobOptCPULimit,
         LabelEnd,

      LayoutEnd,
      CHILD_WeightedHeight, 0,
      CHILD_WeightedWidth, 0,
    LayoutEnd,

  PageEnd;

  if(ar[ACTID_PAGE] != NULL) {
    SetAttrs( l1, LAYOUT_AlignLabels, l2, TAG_DONE);
    SetAttrs( l2, LAYOUT_AlignLabels, l3, TAG_DONE);
    SetAttrs( l3, LAYOUT_AlignLabels, l4, TAG_DONE);
    SetAttrs( l4, LAYOUT_AlignLabels, l5, TAG_DONE);
    SetAttrs( l5, LAYOUT_AlignLabels, l6, TAG_DONE);
    SetAttrs( l6, LAYOUT_AlignLabels, l7, TAG_DONE);
    SetAttrs( l7, LAYOUT_AlignLabels, l1, TAG_DONE);
  }

  WO_Window = WindowObject,
    WA_PubScreen,           screen,
    WA_Title,               (char *) msgTextProgramName,
    WA_CloseGadget,         TRUE,
    WA_DepthGadget,         TRUE,
    WA_DragBar,             TRUE,
    WA_Activate,            TRUE,
    WA_SizeGadget,          TRUE,
    WA_SizeBBottom,         TRUE,
    WA_NewLookMenus,        TRUE,
    WA_InnerWidth,          800,
    WA_InnerHeight,         400,

    WINDOW_MenuStrip,       Menu,
    WINDOW_Position,        WPOS_CENTERSCREEN,
    WINDOW_GadgetUserData,  WGUD_HOOK,
    WINDOW_IDCMPHook,      &IDCMPhook,
    WINDOW_IDCMPHookBits,   IDCMP_RAWKEY,

    WINDOW_Layout, VLayoutObject,
      LAYOUT_SpaceOuter,    TRUE,
      LAYOUT_DeferLayout,   TRUE,
      

/* TABS */
      LAYOUT_AddChild, ar[LAYOUT_PAGE] = VLayoutObject,
        LAYOUT_AddChild, ar[ACTID_TABS] = ClickTabObject,
          CLICKTAB_Labels,      pagelist,
          CLICKTAB_Current,     0L,
          ICA_TARGET,           ar[ACTID_PAGE],
          ICA_MAP,              MapTab2Page,
        ClickTabEnd,

        LAYOUT_AddChild, ar[ACTID_PAGE],
      LayoutEnd,

/* BUTTONS */
      LAYOUT_AddChild, HLayoutObject,
        LAYOUT_EvenSize, TRUE,

        LAYOUT_AddChild, ar[ACTID_SAVE] = ButtonObject,
          GA_Text,              (char *) msgButtonSave,
        ButtonEnd,
        CHILD_WeightedHeight, 0,

        LAYOUT_AddChild, ar[ACTID_USE] = ButtonObject,
          GA_Text,              (char *) msgButtonUse,
        ButtonEnd,
        CHILD_WeightedHeight, 0,

        LAYOUT_AddChild, ar[ACTID_QUIT] = ButtonObject,
          GA_Text,              (char *) msgButtonCancel,
        ButtonEnd,
        CHILD_WeightedHeight, 0,

      LayoutEnd,
      CHILD_WeightedHeight, 0,

    LayoutEnd,
  WindowEnd;

  if(WO_Window) {
    int i;
    for(i = 0; i < ACTID_COUNT; i++) {
      if(Window_Objs[i] != NULL) {
        SetAttrs(Window_Objs[i], GA_ID,        i,
                                 GA_RelVerify, TRUE, 
                                 TAG_END);
      }
    }
    Window = (struct Window *) CA_OpenWindow(WO_Window);
  }

  if(screen) {
    UnlockPubScreen(NULL, screen);
  }

  if(Window == NULL) {
    Printf((char *) msgTextNoWindow);
    Printf("\n");
    return FALSE;
  }

  openreq = GetFileObject,
    GETFILE_RejectIcons,   TRUE,
    GETFILE_Drawer,        "SYS:Prefs/Presets",
  EndObject;

  savereq = GetFileObject,
    GETFILE_RejectIcons,   TRUE,
    GETFILE_Drawer,        "SYS:Prefs/Presets",
    GETFILE_DoSaveMode,    TRUE,
  EndObject;

  if((openreq == NULL) || (savereq == NULL)) {
    Printf((char *) msgTextNoFileRequester);
    Printf("\n");
    return FALSE;
  }

  // Update the checkmark for "Create Icons?"
  {
    struct Menu     *menu;
    struct MenuItem *item;

    menu = Menu;

    ClearMenuStrip(Window);

    item = FindMenuItem(ACTID_ICONS);

    if(item) {
      if(SaveIcons)
        item->Flags |= CHECKED;
      else
        item->Flags &= ~CHECKED;
    }
    ResetMenuStrip(Window, menu);
  }

  GUINewUnit();
  return TRUE;
}
示例#6
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 );
}