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; }
void open_menu(void) { if (loop_on()==TRUE) amiga_menu[ play_start_id + ID_loop ].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; else amiga_menu[ play_start_id + ID_loop ].nm_Flags = MENUTOGGLE|CHECKIT; /* if (vi) { if (isStarted == FALSE) { isStarted = TRUE; } else { int i = 0; if (is_ontop==1) nm[13].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; else nm[13].nm_Flags = MENUTOGGLE|CHECKIT; for (i=24;i<35;i++) nm[i].nm_Flags = MENUTOGGLE|CHECKIT; switch(AspectRatio) { case AR_ORIGINAL: nm[24].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_16_10: nm[25].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_16_9: nm[26].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_185_1: nm[27].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_221_1: nm[28].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_235_1: nm[29].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_239_1: nm[30].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_5_3: nm[31].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_4_3: nm[32].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_5_4: nm[33].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; case AR_1_1: nm[34].nm_Flags = MENUTOGGLE|CHECKIT|CHECKED; break; } } */ menu = CreateMenusA(amiga_menu,NULL); }
STATIC BOOL FOGadInit(struct LayoutData *ld, struct AslBase_intern *AslBase) { struct FOUserData *udata = ld->ld_UserData; struct IntFontReq *iforeq = (struct IntFontReq *)ld->ld_IntReq; STRPTR str[6]; #if USE_SHARED_COOLIMAGES struct ButtonInfo bi[NUMBUTS] = { { ID_BUTOK , GetIR(iforeq)->ir_PositiveText , MSG_FONTREQ_POSITIVE_GAD, COOL_USEIMAGE_ID , &udata->OKBut }, { ID_BUTCANCEL , GetIR(iforeq)->ir_NegativeText , MSG_FONTREQ_NEGATIVE_GAD, COOL_CANCELIMAGE_ID , &udata->CancelBut } }; #else struct ButtonInfo bi[NUMBUTS] = { { ID_BUTOK , GetIR(iforeq)->ir_PositiveText , MSG_FONTREQ_POSITIVE_GAD, &cool_useimage , &udata->OKBut }, { ID_BUTCANCEL , GetIR(iforeq)->ir_NegativeText , MSG_FONTREQ_NEGATIVE_GAD, &cool_cancelimage , &udata->CancelBut } }; #endif Object *gad; LONG error; WORD gadrows, x, y, w, h, i, y2; WORD sizelvwidth, labelwidth = 0, maxgadcolwidth = 0; NEWLIST(&udata->NameListviewList); udata->SizeListviewRenderHook.h_Entry = (APTR)AROS_ASMSYMNAME(SizeListviewRenderFunc); udata->SizeListviewRenderHook.h_SubEntry = NULL; udata->SizeListviewRenderHook.h_Data = AslBase; udata->StringEditHook.h_Entry = (APTR)AROS_ASMSYMNAME(StringEditFunc); udata->StringEditHook.h_SubEntry = NULL; udata->StringEditHook.h_Data = AslBase; FOGetFonts(ld, AslBase); error = ERROR_NO_FREE_STORE; /* calc. min. size */ w = 0; for(i = 0; i < NUMBUTS; i++) { if(!bi[i].text) bi[i].text = GetString(bi[i].deftextid, GetIR(iforeq)->ir_Catalog, AslBase); x = TextLength(&ld->ld_DummyRP, bi[i].text, strlen(bi[i].text)); #if FOREQ_COOL_BUTTONS #if USE_SHARED_COOLIMAGES if (CoolImagesBase) { bi[i].coolimage = (const struct CoolImage *)COOL_ObtainImageA(bi[i].coolid, NULL); } if (CoolImagesBase) #endif if (ld->ld_TrueColor) { x += IMAGEBUTTONEXTRAWIDTH + bi[i].coolimage->width; } #endif if (x > w) w = x; } udata->ButWidth = w + BUTTONEXTRAWIDTH; ld->ld_ButWidth = udata->ButWidth; ld->ld_NumButtons = 4; #if FOREQ_COOL_BUTTONS #if USE_SHARED_COOLIMAGES if (CoolImagesBase) { #endif y = BUTTONEXTRAHEIGHT + ld->ld_Font->tf_YSize; if (ld->ld_TrueColor) { y2 = IMAGEBUTTONEXTRAHEIGHT + DEF_COOLIMAGEHEIGHT; } else { y2 = 0; } udata->ButHeight = (y > y2) ? y : y2; #if USE_SHARED_COOLIMAGES } else { udata->ButHeight = BUTTONEXTRAHEIGHT + ld->ld_Font->tf_YSize; } #endif #else udata->ButHeight = BUTTONEXTRAHEIGHT + ld->ld_Font->tf_YSize; #endif gadrows = 2; /* button row + string gadgets under listviews */ if (iforeq->ifo_Flags & FOF_DODRAWMODE) gadrows++; if (iforeq->ifo_Flags & FOF_DOSTYLE) gadrows++; if (iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) gadrows++; ld->ld_MinWidth = OUTERSPACINGX * 2 + GADGETSPACINGX * 1 + udata->ButWidth * NUMBUTS; ld->ld_MinHeight = OUTERSPACINGY * 2 + (GADGETSPACINGY + udata->ButHeight) * gadrows + BORDERLVSPACINGY * 2 + (ld->ld_Font->tf_YSize + BORDERLVITEMSPACINGY * 2) * FOREQ_MIN_VISIBLELINES + FONTPREVIEWHEIGHT + GADGETSPACINGY - GADGETSPACINGY; /* because the string gadgets are attached to listview gadgets */ /* make listview gadgets */ sizelvwidth = PROPSIZE + FOREQ_VISIBILE_SIZE_CHARS * ld->ld_Font->tf_XSize + BORDERLVSPACINGX * 2 + BORDERLVITEMSPACINGX * 2; x = ld->ld_WBorLeft + OUTERSPACINGX; y = ld->ld_WBorTop + OUTERSPACINGY; w = -ld->ld_WBorRight - ld->ld_WBorLeft - OUTERSPACINGX * 2 - PROPSIZE - GADGETSPACINGX - sizelvwidth; h = -ld->ld_WBorBottom - ld->ld_WBorTop - OUTERSPACINGY * 2 - udata->ButHeight * gadrows - GADGETSPACINGY * gadrows - (FONTPREVIEWHEIGHT + GADGETSPACINGY) + GADGETSPACINGY; /* because the string gadgets are attached to listview gadgets */ { struct TagItem lv_tags[] = { {GA_Left , x }, {GA_Top , y }, {GA_RelWidth , w }, {GA_RelHeight , h }, {GA_UserData , (IPTR)ld }, {GA_ID , ID_NAMELISTVIEW }, {GA_RelVerify , TRUE }, {ASLLV_Labels , (IPTR)&udata->NameListviewList }, {TAG_IGNORE , 0 }, {TAG_IGNORE , (IPTR)&udata->SizeListviewRenderHook }, {ASLLV_Font , (IPTR)ld->ld_Font }, {TAG_DONE } }; udata->NameListview = gad = NewObjectA(AslBase->asllistviewclass, NULL, lv_tags); if (!gad) goto failure; lv_tags[0].ti_Tag = GA_RelRight; lv_tags[0].ti_Data = -ld->ld_WBorRight - OUTERSPACINGX - sizelvwidth + 1; lv_tags[2].ti_Tag = GA_Width; lv_tags[2].ti_Data = sizelvwidth - PROPSIZE; lv_tags[5].ti_Data = ID_SIZELISTVIEW; lv_tags[7].ti_Data = 0; lv_tags[8].ti_Tag = GA_Previous; lv_tags[8].ti_Data = (IPTR)gad; lv_tags[9].ti_Tag = ASLLV_CallBack; udata->SizeListview = gad = NewObjectA(AslBase->asllistviewclass, NULL, lv_tags); if (!gad) goto failure; } /* make scroller gadgets for listviews */ x = -ld->ld_WBorRight - OUTERSPACINGX - PROPSIZE - sizelvwidth - GADGETSPACINGX + 1; y = ld->ld_WBorTop + OUTERSPACINGY; w = PROPSIZE; h = -ld->ld_WBorBottom - ld->ld_WBorTop - OUTERSPACINGY * 2 - udata->ButHeight * gadrows - GADGETSPACINGY * gadrows - (FONTPREVIEWHEIGHT + GADGETSPACINGY) + GADGETSPACINGY; { struct TagItem scroller_tags[] = { {GA_RelRight , x }, {GA_Top , y }, {GA_Width , w }, {GA_RelHeight , h }, {GA_ID , ID_NAMELISTVIEW }, {PGA_NewLook , TRUE }, {PGA_Borderless , TRUE }, {PGA_Freedom , FREEVERT }, {PGA_Top , 0 }, {PGA_Total , 20 }, {PGA_Visible , 1 }, {GA_Previous , (IPTR)gad }, {TAG_DONE } }; if (!makescrollergadget(&udata->NameScrollGad, ld, scroller_tags, AslBase)) goto failure; gad = udata->NameScrollGad.arrow2; scroller_tags[0].ti_Data = x + sizelvwidth + GADGETSPACINGX; scroller_tags[1].ti_Data = y; scroller_tags[2].ti_Data = w; scroller_tags[3].ti_Data = h; scroller_tags[4].ti_Data = ID_SIZELISTVIEW; scroller_tags[11].ti_Data = (IPTR)gad; if (!makescrollergadget(&udata->SizeScrollGad, ld, scroller_tags, AslBase)) goto failure; gad = udata->SizeScrollGad.arrow2; } connectscrollerandlistview(&udata->NameScrollGad, udata->NameListview, AslBase); connectscrollerandlistview(&udata->SizeScrollGad, udata->SizeListview, AslBase); /* make preview gadget */ x = ld->ld_WBorLeft + OUTERSPACINGX; y = -ld->ld_WBorBottom - OUTERSPACINGY - udata->ButHeight - GADGETSPACINGY - FONTPREVIEWHEIGHT; w = -ld->ld_WBorRight - ld->ld_WBorLeft - OUTERSPACINGX * 2; { struct TagItem preview_tags[] = { {GA_Left , x }, {GA_RelBottom , y }, {GA_RelWidth , w }, {GA_Height , FONTPREVIEWHEIGHT }, {GA_Previous , (IPTR)gad }, {GA_ID , ID_PREVIEW }, {ASLFP_SampleText , (IPTR)iforeq->ifo_SampleText }, {ASLFP_APen , iforeq->ifo_FrontPen }, {ASLFP_BPen , iforeq->ifo_BackPen }, {TAG_DONE } }; udata->Preview = gad = NewObjectA(AslBase->aslfontpreviewclass, NULL, preview_tags); if (!gad) goto failure; } /* make string gadgets */ x = ld->ld_WBorLeft + OUTERSPACINGX; y = -ld->ld_WBorBottom - OUTERSPACINGY - udata->ButHeight - (udata->ButHeight + GADGETSPACINGY) * (gadrows - 1) - (FONTPREVIEWHEIGHT + GADGETSPACINGY) + 1; w = -ld->ld_WBorRight - ld->ld_WBorLeft - OUTERSPACINGX * 2 - GADGETSPACINGX - sizelvwidth; { struct TagItem string_tags[] = { {GA_Left , x }, {GA_RelBottom , y }, {GA_RelWidth , w }, {GA_Height , udata->ButHeight }, {GA_Previous , (IPTR)gad }, {STRINGA_TextVal , (IPTR)"" }, {STRINGA_MaxChars , MAXFONTNAME }, {STRINGA_EditHook , (IPTR)&udata->StringEditHook }, {GA_ID , ID_NAMESTRING }, {GA_RelVerify , TRUE }, {GA_UserData , (IPTR)ld }, {GA_TabCycle , TRUE }, {STRINGA_Font , (IPTR)ld->ld_Font }, {TAG_DONE } }; udata->NameString = gad = NewObjectA(AslBase->aslstringclass, NULL, string_tags); if (!gad) goto failure; string_tags[0].ti_Tag = GA_RelRight; string_tags[0].ti_Data = -ld->ld_WBorRight - OUTERSPACINGX - sizelvwidth + 1; string_tags[2].ti_Tag = GA_Width; string_tags[2].ti_Data = sizelvwidth; string_tags[4].ti_Data = (IPTR)gad; string_tags[5].ti_Tag = STRINGA_LongVal; string_tags[5].ti_Data = iforeq->ifo_TextAttr.ta_YSize; string_tags[6].ti_Data = 6; string_tags[8].ti_Data = ID_SIZESTRING; udata->SizeString = gad = NewObjectA(AslBase->aslstringclass, NULL, string_tags); if (!gad) goto failure; } /* make button row */ y = -ld->ld_WBorBottom - OUTERSPACINGY - udata->ButHeight + 1; { struct TagItem button_tags[] = { {GA_Text , 0 }, {GA_Previous , 0 }, {GA_ID , 0 }, #if FOREQ_COOL_BUTTONS {ASLBT_CoolImage , 0 }, #else {TAG_IGNORE , 0 }, #endif {GA_UserData , (IPTR)ld }, {GA_Left , 0 }, {GA_RelBottom , y }, {GA_Width , udata->ButWidth }, {GA_Height , udata->ButHeight }, {GA_RelVerify , TRUE }, {GA_Image , 0 }, /* means we want a frame */ {TAG_DONE } }; for(i = 0; i < NUMBUTS; i++) { button_tags[0].ti_Data = (IPTR)bi[i].text; button_tags[1].ti_Data = (IPTR)gad; button_tags[2].ti_Data = bi[i].gadid; #if USE_SHARED_COOLIMAGES if (CoolImagesBase == NULL) button_tags[3].ti_Tag = TAG_IGNORE; #endif button_tags[3].ti_Data = (IPTR)bi[i].coolimage; *(bi[i].objvar) = gad = NewObjectA(AslBase->aslbuttonclass, NULL, button_tags); if (!gad) goto failure; } } /* make labels */ i = 0; x = ld->ld_WBorLeft + OUTERSPACINGX; y = -ld->ld_WBorBottom - OUTERSPACINGY - udata->ButHeight - (udata->ButHeight + GADGETSPACINGY) * (gadrows - 2) - (FONTPREVIEWHEIGHT + GADGETSPACINGY) + 1; if (iforeq->ifo_Flags & (FOF_DODRAWMODE | FOF_DOSTYLE | FOF_DOFRONTPEN | FOF_DOBACKPEN)) { #define FSET(x) ((iforeq->ifo_Flags & x) ? TRUE : FALSE) struct LabelInfo { BOOL doit; char *text; Object **objvar; } li [] = { {FSET(FOF_DOSTYLE) , (STRPTR)MSG_FONTREQ_STYLE_LABEL , &udata->StyleLabel }, {FALSE , (STRPTR)MSG_FONTREQ_COLOR_LABEL_FG, &udata->ColorLabel }, {FSET(FOF_DODRAWMODE) , (STRPTR)MSG_FONTREQ_MODE_LABEL , &udata->DrawModeLabel } }; #undef FSET struct TagItem label_tags[] = { {GA_Left , 0 }, {GA_RelBottom , y }, {GA_Width , 0 }, {GA_Height , udata->ButHeight }, {GA_Text , 0 }, {GA_Previous , (IPTR)gad }, {GA_UserData , (IPTR)ld }, {GA_Disabled , TRUE }, {TAG_DONE } }; WORD i2; if (iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) { li[1].doit = TRUE; switch(iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) { case FOF_DOFRONTPEN: break; case FOF_DOBACKPEN: li[1].text = (STRPTR)MSG_FONTREQ_COLOR_LABEL_BG; break; case FOF_DOFRONTPEN | FOF_DOBACKPEN: li[1].text = (STRPTR)MSG_FONTREQ_COLOR_LABEL_FGBG; break; } } /* if (iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) */ for(i = 0, i2 = 0; i < 3; i++) { if (li[i].doit) { if ((i == 2) && (iforeq->ifo_ModeList)) { li[i].text = iforeq->ifo_ModeList[0]; } else { li[i].text = GetString((LONG)li[i].text, GetIR(iforeq)->ir_Catalog, AslBase); } str[i2++] = li[i].text; } } w = labelwidth = BiggestTextLength(str, i2, &(ld->ld_DummyRP), AslBase); for(i = 0; i < 3;i++) { if (!li[i].doit) continue; label_tags[2].ti_Data = TextLength(&ld->ld_DummyRP, li[i].text, strlen(li[i].text)); label_tags[0].ti_Data = x + w - label_tags[2].ti_Data; label_tags[4].ti_Data = (IPTR)li[i].text; label_tags[5].ti_Data = (IPTR)gad; *(li[i].objvar) = gad = NewObjectA(AslBase->aslbuttonclass, NULL, label_tags); if (!gad) goto failure; y += udata->ButHeight + GADGETSPACINGY; label_tags[1].ti_Data = y; } y = -ld->ld_WBorBottom - OUTERSPACINGY - udata->ButHeight - (udata->ButHeight + GADGETSPACINGY) * (gadrows - 2) - (FONTPREVIEWHEIGHT + GADGETSPACINGY) + 1; x = ld->ld_WBorLeft + OUTERSPACINGX + w + LABELSPACINGX; /* Make Style gadget */ if (iforeq->ifo_Flags & FOF_DOSTYLE) { STRPTR stylestrings[3]; struct TagItem style_tags[] = { {GA_Previous , (IPTR)gad }, {GA_Left , x }, {GA_RelBottom , y }, {GA_Width , 0 }, {GA_Height , udata->ButHeight }, {GA_RelVerify , TRUE }, {GA_UserData , (IPTR)ld }, {GA_ID , ID_STYLE }, {ASLFS_LabelArray , (IPTR)stylestrings }, {ASLFS_Style , iforeq->ifo_TextAttr.ta_Style }, {TAG_DONE } }; stylestrings[0] = GetString(MSG_FONTREQ_STYLE_BOLD, GetIR(iforeq)->ir_Catalog, AslBase); stylestrings[1] = GetString(MSG_FONTREQ_STYLE_ITALIC, GetIR(iforeq)->ir_Catalog, AslBase); stylestrings[2] = GetString(MSG_FONTREQ_STYLE_UNDERLINED, GetIR(iforeq)->ir_Catalog, AslBase); w = BiggestTextLength(stylestrings, 3, &(ld->ld_DummyRP), AslBase); w *= 2; w *= 3; style_tags[3].ti_Data = w; if (w > maxgadcolwidth) maxgadcolwidth = w; udata->StyleGadget = gad = NewObjectA(AslBase->aslfontstyleclass, NULL, style_tags); if (!gad) goto failure; y += udata->ButHeight + GADGETSPACINGY; } w = udata->ButHeight * 12 / 10 + 19; /* CYCLEIMAGEWIDTH = 19 */ /* Make FrontPen gadget */ if (iforeq->ifo_Flags & FOF_DOFRONTPEN) { struct TagItem cp_tags[] = { {GA_Previous , (IPTR)gad }, {GA_Left , x }, {GA_RelBottom , y }, {GA_Width , w }, {GA_Height , udata->ButHeight }, {GA_RelVerify , TRUE }, {GA_UserData , (IPTR)ld }, {GA_ID , ID_FRONTPEN }, {ASLCP_Color , iforeq->ifo_FrontPen }, {ASLCP_ColorTable , (IPTR)iforeq->ifo_FrontPens }, {ASLCP_NumColors , iforeq->ifo_MaxFrontPen }, {TAG_DONE } }; udata->FGColorGadget = gad = NewObjectA(AslBase->aslcolorpickerclass, NULL, cp_tags); if (!gad) goto failure; x += w + GADGETSPACINGX; } /* Make BackPen gadget */ if (iforeq->ifo_Flags & FOF_DOBACKPEN) { struct TagItem cp_tags[] = { {GA_Previous , (IPTR)gad }, {GA_Left , x }, {GA_RelBottom , y }, {GA_Width , w }, {GA_Height , udata->ButHeight }, {GA_RelVerify , TRUE }, {GA_UserData , (IPTR)ld }, {GA_ID , ID_BACKPEN }, {ASLCP_Color , iforeq->ifo_BackPen }, {ASLCP_ColorTable , (IPTR)iforeq->ifo_BackPens }, {ASLCP_NumColors , iforeq->ifo_MaxBackPen }, {TAG_DONE } }; udata->BGColorGadget = gad = NewObjectA(AslBase->aslcolorpickerclass, NULL, cp_tags); if (!gad) goto failure; } if (iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) { if ((iforeq->ifo_Flags & (FOF_DOFRONTPEN | FOF_DOBACKPEN)) == (FOF_DOFRONTPEN | FOF_DOBACKPEN)) { w += GADGETSPACINGX + w; } if (w > maxgadcolwidth) maxgadcolwidth = w; y += udata->ButHeight + GADGETSPACINGY; } /* Make DrawMode gadget */ x = ld->ld_WBorLeft + OUTERSPACINGX + labelwidth + LABELSPACINGX; w = -ld->ld_WBorLeft - ld->ld_WBorRight - OUTERSPACINGX * 2 - labelwidth - LABELSPACINGX; if (iforeq->ifo_Flags & FOF_DODRAWMODE) { struct TagItem cycle_tags[] = { {GA_Previous , (IPTR)gad }, {GA_Left , x }, {GA_RelBottom , y }, {GA_RelWidth , w }, {GA_Height , udata->ButHeight }, {GA_RelVerify , TRUE }, {GA_UserData , (IPTR)ld }, {GA_ID , ID_DRAWMODE }, {ASLCY_Labels , 0 }, {ASLCY_Active , iforeq->ifo_DrawMode }, {ASLCY_Font , (IPTR)ld->ld_Font }, {TAG_DONE } }; static LONG labelids[] = { MSG_FONTREQ_MODE_TEXT, MSG_FONTREQ_MODE_TEXTANDFIELD, MSG_FONTREQ_MODE_COMPLEMENT, }; STRPTR *labels; if (iforeq->ifo_ModeList) { labels = &iforeq->ifo_ModeList[1]; } else { labels = (STRPTR *)&iforeq->ifo_DrawModeJAM1Text; for(i = 0; i < 3; i++) { labels[i] = GetString(labelids[i], GetIR(iforeq)->ir_Catalog, AslBase); } } cycle_tags[8].ti_Data = (IPTR)labels; i = CYCLEEXTRAWIDTH + BiggestTextLength(labels, 0x7FFF, &(ld->ld_DummyRP), AslBase); if (i > maxgadcolwidth) maxgadcolwidth = i; udata->DrawModeGadget = gad = NewObjectA(AslBase->aslcycleclass, NULL, cycle_tags); if (!gad) goto failure; y += udata->ButHeight + GADGETSPACINGY; } /* if (iforeq->ifo_Flags & FOF_DODRAWMODE) */ } /* if (iforeq->ifo_Flags & (FOF_DODRAWMODE | FOF_DOSTYLE | FOF_DOFRONTPEN | FOF_DOBACKPEN)) */ #if AVOID_FLICKER { struct TagItem eraser_tags[] = { {GA_Previous, (IPTR)gad}, {TAG_DONE} }; udata->EraserGadget = gad = NewObjectA(AslBase->asleraserclass, NULL, eraser_tags); /* Doesn't matter if this failed */ } #endif w = OUTERSPACINGX + labelwidth + LABELSPACINGX + maxgadcolwidth + OUTERSPACINGX; if (w > ld->ld_MinWidth) ld->ld_MinWidth = w; ld->ld_GList = (struct Gadget *)udata->NameListview; /* Menus */ { struct NewMenu nm[] = { {NM_TITLE, (STRPTR)MSG_FONTREQ_MEN_CONTROL }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_LASTFONT , 0, 0, 0, (APTR)FOMEN_LASTFONT }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_NEXTFONT , 0, 0, 0, (APTR)FOMEN_NEXTFONT }, {NM_ITEM, NM_BARLABEL }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_RESTORE , 0, 0, 0, (APTR)FOMEN_RESTORE }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_RESCAN , 0, 0, 0, (APTR)FOMEN_RESCAN }, {NM_ITEM, NM_BARLABEL }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_OK , 0, 0, 0, (APTR)FOMEN_OK }, {NM_ITEM, (STRPTR)MSG_FONTREQ_MEN_CONTROL_CANCEL , 0, 0, 0, (APTR)FOMEN_CANCEL }, {NM_END } }; struct TagItem menu_tags[] = { {GTMN_NewLookMenus , TRUE }, {GTMN_TextAttr , (IPTR)GetIR(iforeq)->ir_TextAttr }, {TAG_DONE } }; if (menu_tags[1].ti_Data == 0) menu_tags[1].ti_Tag = TAG_IGNORE; LocalizeMenus(nm, GetIR(iforeq)->ir_Catalog, AslBase); /* Don't fail, if menus cannot be created/layouted, because a requester without menus is still better than no requester at all */ if ((ld->ld_Menu = CreateMenusA(nm, NULL))) { if (!LayoutMenusA(ld->ld_Menu, ld->ld_VisualInfo, menu_tags)) { FreeMenus(ld->ld_Menu);ld->ld_Menu = NULL; } } } FORestore(ld, iforeq->ifo_TextAttr.ta_Name, iforeq->ifo_TextAttr.ta_YSize, AslBase); SetIoErr(0); ReturnBool ("FOGadInit", TRUE); failure: SetIoErr(error); D(bug("failure\n")); FOGadCleanup(ld, ASLB(AslBase)); ReturnBool ("FOGadInit", FALSE); }
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 ); }