Merged in v 26.12.
[AROS-Contrib.git] / mui / classes / thebar / mcp / class.c
blob5757a363f6a6334764e88e53eae5c1ed3a75c6e6
1 /***************************************************************************
3 TheBar.mcc - Next Generation Toolbar MUI Custom Class
4 Copyright (C) 2003-2005 Alfonso Ranieri
5 Copyright (C) 2005-2013 by TheBar.mcc Open Source Team
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
17 TheBar class Support Site: http://www.sf.net/projects/thebar
19 $Id$
21 ***************************************************************************/
23 #include "class.h"
24 #include <proto/iffparse.h>
25 #include <prefs/prefhdr.h>
26 #include <libraries/asl.h>
27 #include "version.h"
28 #include "private.h"
30 /***********************************************************************/
32 enum MItems { MI_GLOBALS, MI_LASTSAVED, MI_RESTORE, MI_DEFAULTS };
34 enum
36 FLG_MenuCheck = 1<<0,
37 FLG_Global = 1<<1,
40 /***********************************************************************/
42 static IPTR
43 mNew(struct IClass *cl,Object *obj,struct opSet *msg)
45 if((obj = (Object *)DoSuperMethodA(cl,obj,(APTR)msg)))
47 struct InstData *data = INST_DATA(cl,obj);
48 Object *prefs, *trans;
49 const char *t;
50 static const char infotext1[] = "\033bTheBar.mcp " LIB_REV_STRING "\033n (" LIB_DATE ")\n"
51 "Copyright (C) 2003-2005 Alfonso Ranieri\n"
52 LIB_COPYRIGHT;
53 static const char infotext2[] = "\n"
54 "Distributed under the terms of the LGPL2.\n"
55 "\n"
56 "For recent versions and updates visit:\n"
57 "http://www.sourceforge.net/projects/thebar/\n"
58 "\n";
60 if((t = tr(Msg_Info_Translator)) && *t)
62 trans = (Object *)VGroup,
63 MUIA_InnerLeft,0,
64 MUIA_InnerBottom,0,
65 MUIA_InnerTop,0,
66 MUIA_InnerRight,0,
67 Child, TextObject,
68 MUIA_Text_PreParse, (IPTR)"\033c",
69 MUIA_Text_Contents, (IPTR)t,
70 End,
71 Child, ofhspace((IPTR)"a"),
72 End;
74 else
75 trans = NULL;
77 if((prefs = (Object *)VGroup,
79 Child, RegisterGroup(regs), // Register
81 MUIA_CycleChain, TRUE,
83 Child, VGroup,
84 // MUIA_Group_Columns, 2,
86 // >BarFrame
87 (lib_flags & BASEFLG_MUI4) ? TAG_IGNORE : Child,
88 (lib_flags & BASEFLG_MUI4) ? 0 : (VGroup,
89 GroupFrameT(tr(Msg_Title_BarFrame)),
90 Child, (lib_flags & BASEFLG_MUI20) ?
91 (VGroup,
92 Child, owspace(20),
93 Child, HGroup,
94 Child, (IPTR)oflabel(Msg_Frame),
95 Child, (IPTR)(data->frame = opopframe(Msg_Frame,Msg_Frame_Title,Msg_Frame_Help)),
96 End,
97 Child, owspace(20),
98 End) :
99 (ColGroup(2),
100 Child, (IPTR)oflabel(Msg_BarFrameShine),
101 Child, (IPTR)(data->barFrameShinePen = opoppen(Msg_BarFrameShine,Msg_BarFrameShine_Title,Msg_BarFrameShine_Help)),
102 Child, (IPTR)oflabel(Msg_BarFrameShadow),
103 Child, (IPTR)(data->barFrameShadowPen = opoppen(Msg_BarFrameShadow,Msg_BarFrameShadow_Title,Msg_BarFrameShadow_Help)),
104 End),
105 End), // <BarFrame
107 Child, ColGroup(3), // >Backrounds
108 GroupFrameT(tr(Msg_Title_Backgrounds)),
110 Child, (IPTR)oflabel(Msg_GroupBackground),
111 Child, data->groupBack = (lib_flags & BASEFLG_MUI4) ? opopfri(Msg_GroupBackground,Msg_GroupBackground_Title,Msg_GroupBackground_Help) :
112 opopback(TRUE,Msg_GroupBackground,Msg_GroupBackground_Title,Msg_GroupBackground_Help),
114 Child,
115 (VGroup,
116 Child, (IPTR)VSpace(0),
117 Child, HGroup,
118 Child, (IPTR)(data->useGroupBack = ocheck(Msg_UseGroupBackground, Msg_UseGroupBackground_Help)),
119 End,
120 Child, (IPTR)VSpace(0),
121 End),
122 Child, (IPTR)oflabel(Msg_ButtonBackground),
123 Child, (IPTR)(data->buttonBack = (lib_flags & BASEFLG_MUI4) ? opopfri(Msg_ButtonBackground,Msg_ButtonBackground_Title,Msg_ButtonBackground_Help) :
124 opopback(FALSE,Msg_ButtonBackground,Msg_ButtonBackground_Title,Msg_ButtonBackground_Help)),
125 Child,
126 (VGroup,
127 Child, (IPTR)VSpace(0),
128 Child, HGroup,
129 Child, (IPTR)(data->useButtonBack = ocheck(Msg_UseButtonBackground ,Msg_UseButtonBackground_Help)),
130 End,
131 Child, (IPTR)VSpace(0),
132 End),
133 End, // <Backgrounds
135 Child, ColGroup(2), // >DragBar
136 GroupFrameT(tr(Msg_Title_DragBar)),
137 Child, (IPTR)oflabel(Msg_DragBarShine),
138 Child, HGroup,
139 Child, (IPTR)(data->dragBarShinePen = opoppen(Msg_DragBarShine,Msg_DragBarShine_Title,Msg_DragBarShine_Help)),
140 Child, (IPTR)oflabel(Msg_DragBarShadow),
141 Child, (IPTR)(data->dragBarShadowPen = opoppen(Msg_DragBarShadow,Msg_DragBarShadow_Title,Msg_DragBarShadow_Help)),
142 End,
143 Child, (IPTR)oflabel(Msg_DragBarFill),
144 Child, HGroup,
145 Child, (IPTR)(data->dragBarFillPen = opoppen(Msg_DragBarFill,Msg_DragBarFill_Title,Msg_DragBarFill_Help)),
146 Child, (IPTR)oflabel(Msg_UseDragBarFill),
147 Child, VGroup,
148 Child, (IPTR)VSpace(0),
149 Child, (IPTR)(data->useDragBarFillPen = ocheck(Msg_UseDragBarFill, Msg_UseDragBarFill_Help)),
150 Child, (IPTR)VSpace(0),
151 End,
152 End,
153 End, // <DragBar
155 Child, ColGroup(2), // >Grey
156 GroupFrameT(tr(Msg_Title_Disabled)),
157 Child, (IPTR)oflabel(Msg_DisabledBody),
158 Child, (IPTR)(data->disBodyPen = opoppen(Msg_DisabledBody,Msg_DisabledBody_Title,Msg_DisabledBody_Help)),
159 Child, (IPTR)(oflabel(Msg_DisabledShadow)),
160 Child, (IPTR)(data->disShadowPen = opoppen(Msg_DisabledShadow,Msg_DisabledShadow_Title,Msg_DisabledShadow_Help)),
161 End, // <Grey
163 Child, ColGroup(2), // >Bar spacer
164 GroupFrameT(tr(Msg_Title_BarSpacer)),
165 Child, (IPTR)oflabel(Msg_BarSpacerShinePen),
166 Child, (IPTR)(data->barSpacerShinePen = opoppen(Msg_BarSpacerShinePen,Msg_BarSpacerShinePen_Title,Msg_BarSpacerShinePen_Help)),
167 Child, (IPTR)oflabel(Msg_BarSpacerShadowPen),
168 Child, (IPTR)(data->barSpacerShadowPen = opoppen(Msg_BarSpacerShadowPen,Msg_BarSpacerShadowPen_Title,Msg_BarSpacerShadowPen_Help)),
169 End, // <Bar spacer
171 // >Buttons frame
172 (lib_flags & BASEFLG_MUI4) ? TAG_IGNORE : Child,
173 (lib_flags & BASEFLG_MUI4) ? 0 : (ColGroup(2),
174 GroupFrameT(tr(Msg_Title_Frame)),
175 Child, (IPTR)oflabel(Msg_FrameShinePen),
176 Child, HGroup,
177 Child, (IPTR)(data->frameShinePen = opoppen(Msg_FrameShinePen,Msg_FrameShinePen_Title,Msg_FrameShinePen_Help)),
178 Child, owspace(20),
179 Child, (IPTR)oflabel(Msg_FrameShadowPen),
180 Child, (IPTR)(data->frameShadowPen = opoppen(Msg_FrameShadowPen,Msg_FrameShadowPen_Title,Msg_FrameShadowPen_Help)),
181 End,
182 Child, (IPTR)olabel2(Msg_FrameStyle),
183 Child, (IPTR)(data->frameStyle = ocycle(frames,Msg_FrameStyle,Msg_FrameStyle_Help)),
184 End), // <Buttons frame
186 End, // <Colors
188 Child, VGroup, // >Appearance
190 Child, ColGroup(2), // >Fonts, scale
191 Child, (IPTR)olabel2(Msg_TextFont),
192 Child, PopaslObject,
193 MUIA_ShortHelp, (IPTR)tr(Msg_TextFont_Help),
194 MUIA_Popasl_Type, ASL_FontRequest,
195 MUIA_Popstring_String, (IPTR)(data->textFont = (Object *)StringObject,
196 StringFrame,
197 MUIA_CycleChain, TRUE,
198 MUIA_ControlChar, getKeyChar(tr(Msg_TextFont)),
199 End),
200 MUIA_Popstring_Button, (IPTR)opop(MUII_PopFont,Msg_TextFont_Help),
201 End,
202 Child, (IPTR)olabel2(Msg_TextGfxFont),
203 Child, PopaslObject,
204 MUIA_ShortHelp, (IPTR)tr(Msg_TextGfxFont_Help),
205 MUIA_Popasl_Type, ASL_FontRequest,
206 MUIA_Popstring_String, (IPTR)(data->textGfxFont = (Object *)StringObject,
207 StringFrame,
208 MUIA_CycleChain, TRUE,
209 MUIA_ControlChar, getKeyChar(tr(Msg_TextGfxFont)),
210 End),
211 MUIA_Popstring_Button, (IPTR)opop(MUII_PopFont,Msg_TextGfxFont_Help),
212 End,
213 Child, (IPTR)olabel2(Msg_Scale),
214 Child, (IPTR)(data->scale = oslider(Msg_Scale,Msg_Scale_Help,25,400)),
215 End, // <Fonts, scale
217 Child, RectangleObject, MUIA_Rectangle_HBar, TRUE, MUIA_Weight, 0, End,
219 Child, ColGroup(2), // >View modes, label pos
220 Child, (IPTR)olabel2(Msg_ViewMode),
221 Child, (IPTR)(data->viewMode = ocycle(viewModes,Msg_ViewMode,Msg_ViewMode_Help)),
222 Child, (IPTR)olabel2(Msg_LabelPos),
223 Child, (IPTR)(data->labelPos = ocycle(labelPoss,Msg_LabelPos,Msg_LabelPos_Help)),
224 End, // <View modes, label pos
226 Child, VGroup, // >Options
227 MUIA_Frame, MUIV_Frame_Virtual,
228 Child, ColGroup(3),
229 Child, (IPTR)(data->borderless = ocheck(Msg_Borderless,Msg_Borderless_Help)),
230 Child, (IPTR)ollabel1(Msg_Borderless),
231 Child, (IPTR)HSpace(0),
233 Child, (IPTR)(data->raised = ocheck(Msg_Raised,Msg_Raised_Help)),
234 Child, (IPTR)ollabel1(Msg_Raised),
235 Child, (IPTR)HSpace(0),
237 Child, (IPTR)(data->sunny = ocheck(Msg_Sunny,Msg_Sunny_Help)),
238 Child, (IPTR)ollabel1(Msg_Sunny),
239 Child, (IPTR)HSpace(0),
241 Child, (IPTR)(data->scaled = ocheck(Msg_Scaled,Msg_Scaled_Help)),
242 Child, (IPTR)ollabel1(Msg_Scaled),
243 Child, (IPTR)HSpace(0),
245 Child, (IPTR)(data->barSpacer = ocheck(Msg_BarSpacer,Msg_BarSpacer_Help)),
246 Child, (IPTR)ollabel1(Msg_BarSpacer),
247 Child, (IPTR)HSpace(0),
249 Child, (IPTR)(data->enableKeys = ocheck(Msg_EnableKeys,Msg_EnableKeys_Help)),
250 Child, (IPTR)ollabel1(Msg_EnableKeys),
251 Child, (IPTR)HSpace(0),
252 End,
253 Child, (IPTR)HVSpace,
254 End, // <Options
256 End, // <Appearance
258 Child, VGroup, // >Spacing
259 Child, VGroup, // >Group spacing
260 GroupFrameT(tr(Msg_Title_GroupSpacing)),
261 //Child, owspace(1),
262 Child, ColGroup(2),
263 Child, (IPTR)olabel2(Msg_HorizGroupSpacing),
264 Child, HGroup,
265 Child, (IPTR)(data->horizSpacing = oslider(Msg_HorizGroupSpacing,Msg_HorizGroupSpacing_Help,0,16)),
266 Child, (IPTR)olabel2(Msg_VertGroupSpacing),
267 Child, (IPTR)(data->vertSpacing = oslider(Msg_VertGroupSpacing,Msg_VertGroupSpacing_Help,0,16)),
268 End,
269 Child, (IPTR)olabel2(Msg_BarSpacerSpacing),
270 Child, (IPTR)(data->barSpacerSpacing = oslider(Msg_BarSpacerSpacing,Msg_BarSpacerSpacing_Help,0,16)),
271 End,
272 //Child, owspace(1),
273 End, // <Group spacing
275 // >Inner spacing
276 (lib_flags & BASEFLG_MUI4) ? TAG_IGNORE : Child,
277 (lib_flags & BASEFLG_MUI4) ? 0 : (VGroup,
278 GroupFrameT(tr(Msg_Title_InnerSpacing)),
279 //Child, owspace(1),
280 Child, ColGroup(2),
281 Child, (IPTR)olabel2(Msg_HorizInnerSpacing),
282 Child, (IPTR)(data->horizInnerSpacing = oslider(Msg_HorizInnerSpacing,Msg_HorizInnerSpacing_Help,1,16)),
283 Child, (IPTR)olabel2(Msg_TopInnerSpacing),
284 Child, HGroup,
285 Child, (IPTR)(data->topInnerSpacing = oslider(Msg_TopInnerSpacing,Msg_TopInnerSpacing_Help,0,16)),
286 Child, (IPTR)olabel2(Msg_BottomInnerSpacing),
287 Child, (IPTR)(data->bottomInnerSpacing = oslider(Msg_BottomInnerSpacing,Msg_BottomInnerSpacing_Help,0,16)),
288 End,
289 End,
290 //Child, owspace(1),
291 End), // <Inner spacing
293 // >BarFrame spacing
294 (lib_flags & BASEFLG_MUI20) ? TAG_IGNORE : Child,
295 (lib_flags & BASEFLG_MUI20) ? 0 : (VGroup,
296 GroupFrameT(tr(Msg_Title_BarFrameSpacing)),
297 //Child, owspace(1),
298 Child, ColGroup(4),
299 Child, (IPTR)olabel2(Msg_LeftBarFrameSpacing),
300 Child, (IPTR)(data->leftBarFrameSpacing = oslider(Msg_LeftBarFrameSpacing,Msg_LeftBarFrameSpacing_Help,1,16)),
301 Child, (IPTR)olabel2(Msg_RightBarFrameSpacing),
302 Child, (IPTR)(data->rightBarFrameSpacing = oslider(Msg_RightBarFrameSpacing,Msg_RightBarFrameSpacing_Help,1,16)),
303 Child, (IPTR)olabel2(Msg_TopBarFrameSpacing),
304 Child, (IPTR)(data->topBarFrameSpacing = oslider(Msg_TopBarFrameSpacing,Msg_TopBarFrameSpacing_Help,1,16)),
305 Child, (IPTR)olabel2(Msg_BottomBarFrameSpacing),
306 Child, (IPTR)(data->bottomBarFrameSpacing = oslider(Msg_BottomBarFrameSpacing,Msg_BottomBarFrameSpacing_Help,1,16)),
307 End,
308 //Child, owspace(1),
309 End), // <BarFrame spacing
311 Child, VGroup, // >Text/Gfx spacing
312 GroupFrameT(tr(Msg_Title_TextGfxSpacing)),
313 //Child, owspace(1),
314 Child, ColGroup(2),
315 Child, (IPTR)olabel2(Msg_HorizTextGfxSpacing),
316 Child, (IPTR)(data->horizTexGfxSpacing = oslider(Msg_HorizTextGfxSpacing,Msg_HorizTextGfxSpacing_Help,1,16)),
317 Child, (IPTR)olabel2(Msg_VertTextGfxSpacing),
318 Child, (IPTR)(data->vertTexGfxSpacing = oslider(Msg_VertTextGfxSpacing,Msg_VertTextGfxSpacing_Help,1,16)),
319 End,
320 //Child, owspace(1),
321 End, // <Text/Gfx spacing
322 Child, (IPTR)VSpace(0),
323 End, // <Spacing
325 Child, VGroup, // >Settings
326 Child, ColGroup(2),
327 Child, (IPTR)olabel2(Msg_Precision),
328 Child, (IPTR)(data->precision = ocycle(precisions,Msg_Precision,Msg_Precision_Help)),
329 Child, (IPTR)olabel2(Msg_DisMode),
330 Child, (IPTR)(data->disMode = ocycle(dismodes,Msg_DisMode,Msg_DisMode_Help)),
331 Child, (IPTR)olabel2(Msg_SpacersSize),
332 Child, (IPTR)(data->spacersSize = ocycle(spacersSizes,Msg_SpacersSize,Msg_SpacersSize_Help)),
333 End,
335 Child, VGroup,
336 MUIA_Frame, MUIV_Frame_Virtual,
337 Child, ColGroup(3),
338 Child, (IPTR)(data->specialSelect = ocheck(Msg_SpecialSelect,Msg_SpecialSelect_Help)),
339 Child, (IPTR)ollabel1(Msg_SpecialSelect),
340 Child, (IPTR)HSpace(0),
342 Child, (IPTR)(data->textOverUseShine = ocheck(Msg_TextOverUseShine,Msg_TextOverUseShine_Help)),
343 Child, (IPTR)ollabel1(Msg_TextOverUseShine),
344 Child, (IPTR)HSpace(0),
346 Child, (IPTR)(data->dontMove = ocheck(Msg_DontMove,Msg_DontMove_Help)),
347 Child, (IPTR)ollabel1(Msg_DontMove),
348 Child, (IPTR)HSpace(0),
350 Child, (IPTR)(data->ignoreSel = ocheck(Msg_IgnoreSelImages,Msg_IgnoreSelImages_Help)),
351 Child, (IPTR)ollabel1(Msg_IgnoreSelImages),
352 Child, (IPTR)HSpace(0),
354 Child, (IPTR)(data->ignoreDis = ocheck(Msg_IgnoreDisImages,Msg_IgnoreDisImages_Help)),
355 Child, (IPTR)ollabel1(Msg_IgnoreDisImages),
356 Child, (IPTR)HSpace(0),
358 Child, (IPTR)(data->ntRaiseActive = ocheck(Msg_NtRaiseActive,Msg_NtRaiseActive_Help)),
359 Child, (IPTR)ollabel1(Msg_NtRaiseActive),
360 Child, (IPTR)HSpace(0),
361 End,
362 Child, (IPTR)HVSpace,
363 End,
364 End, // <Settings
366 End, // <Register
368 Child, CrawlingObject, // >Crawling
369 MUIA_FixHeightTxt, (IPTR)infotext1,
370 TextFrame,
371 MUIA_Background, (IPTR)"m1",
373 Child, TextObject,
374 MUIA_Text_Copy, FALSE,
375 MUIA_Text_PreParse, (IPTR)"\033c",
376 MUIA_Text_Contents, (IPTR)infotext1,
378 End,
380 Child, TextObject,
381 MUIA_Text_Copy, FALSE,
382 MUIA_Text_PreParse, (IPTR)"\033c",
383 MUIA_Text_Contents, (IPTR)infotext2,
384 End,
386 Child, ofhspace((IPTR)"a"),
388 trans ? Child : TAG_IGNORE, trans,
390 Child, TextObject,
391 MUIA_Text_Copy, FALSE,
392 MUIA_Text_PreParse, (IPTR)"\033c",
393 MUIA_Text_Contents, (IPTR)infotext1,
394 End,
396 End, // <Crawling
398 End))
400 set(data->scale,MUIA_Numeric_Format,"\33c%ld %%");
402 DoSuperMethod(cl,obj,OM_ADDMEMBER,(IPTR)prefs);
404 // check for MUI 3.9+
405 if(lib_flags & BASEFLG_MUI20)
407 const char *at;
409 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->groupBack,MUICFG_TheBar_GroupBack,2,(IPTR)tr(Msg_GroupBackground),MUIA_Imagedisplay_Spec);
410 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->groupBack,MUICFG_TheBar_GroupBack,2,(IPTR)tr(Msg_GroupBackground),MUIA_Framedisplay_Spec);
411 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->buttonBack,MUICFG_TheBar_ButtonBack,2,(IPTR)tr(Msg_ButtonBackground),MUIA_Imagedisplay_Spec);
412 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->buttonBack,MUICFG_TheBar_ButtonBack,2,(IPTR)tr(Msg_ButtonBackground),MUIA_Framedisplay_Spec);
413 if (!((lib_flags & BASEFLG_MUI4)))
415 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->frameShinePen,MUICFG_TheBar_FrameShinePen,1,(IPTR)tr(Msg_FrameShinePen));
416 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->frameShadowPen,MUICFG_TheBar_FrameShadowPen,1,(IPTR)tr(Msg_FrameShadowPen));
417 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->frameStyle,MUICFG_TheBar_FrameStyle,1,(IPTR)tr(Msg_FrameStyle));
419 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->horizInnerSpacing,MUICFG_TheBar_HorizInnerSpacing,1,(IPTR)tr(Msg_HorizInnerSpacing));
420 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->topInnerSpacing,MUICFG_TheBar_TopInnerSpacing,1,(IPTR)tr(Msg_TopInnerSpacing));
421 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->bottomInnerSpacing,MUICFG_TheBar_BottomInnerSpacing,1,(IPTR)tr(Msg_BottomInnerSpacing));
423 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->disBodyPen,MUICFG_TheBar_DisBodyPen,1,(IPTR)tr(Msg_DisabledBody));
424 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->disShadowPen,MUICFG_TheBar_DisShadowPen,1,(IPTR)tr(Msg_DisabledShadow));
425 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->barSpacerShinePen,MUICFG_TheBar_BarSpacerShinePen,1,(IPTR)tr(Msg_BarSpacerShinePen));
426 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->barSpacerShadowPen,MUICFG_TheBar_BarSpacerShadowPen,1,(IPTR)tr(Msg_BarSpacerShadowPen));
427 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->dragBarShinePen,MUICFG_TheBar_DragBarShinePen,1,(IPTR)tr(Msg_DragBarShine));
428 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->dragBarShadowPen,MUICFG_TheBar_DragBarShadowPen,1,(IPTR)tr(Msg_DragBarShadow));
429 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->dragBarFillPen,MUICFG_TheBar_DragBarFillPen,1,(IPTR)tr(Msg_DragBarFill));
430 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->useDragBarFillPen,MUICFG_TheBar_UseDragBarFillPen,1,(IPTR)tr(Msg_UseDragBarFill));
431 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->textFont,MUICFG_TheBar_TextFont,1,(IPTR)tr(Msg_TextFont));
432 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->textGfxFont,MUICFG_TheBar_TextGfxFont,1,(IPTR)tr(Msg_TextGfxFont));
433 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->textOverUseShine,MUICFG_TheBar_TextOverUseShine,1,(IPTR)tr(Msg_TextOverUseShine));
434 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->viewMode,MUICFG_TheBar_Appearance,1,(IPTR)(at = tr(Msg_Reg_Appearance)));
435 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->labelPos,MUICFG_TheBar_Appearance,1,(IPTR)at);
436 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->borderless,MUICFG_TheBar_Appearance,1,(IPTR)at);
437 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->raised,MUICFG_TheBar_Appearance,1,(IPTR)at);
438 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->sunny,MUICFG_TheBar_Appearance,1,(IPTR)at);
439 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->scaled,MUICFG_TheBar_Appearance,1,(IPTR)at);
440 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->barSpacer,MUICFG_TheBar_Appearance,1,(IPTR)at);
441 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->enableKeys,MUICFG_TheBar_Appearance,1,(IPTR)at);
442 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->horizSpacing,MUICFG_TheBar_HorizSpacing,1,(IPTR)tr(Msg_HorizGroupSpacing));
443 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->vertSpacing,MUICFG_TheBar_VertSpacing,1,(IPTR)tr(Msg_VertGroupSpacing));
444 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->barSpacerSpacing,MUICFG_TheBar_BarSpacerSpacing,1,(IPTR)tr(Msg_BarSpacerSpacing));
445 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->horizTexGfxSpacing,MUICFG_TheBar_HorizTextGfxSpacing,1,(IPTR)tr(Msg_HorizTextGfxSpacing));
446 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->vertTexGfxSpacing,MUICFG_TheBar_VertTextGfxSpacing,1,(IPTR)tr(Msg_VertTextGfxSpacing));
447 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->precision,MUICFG_TheBar_Precision,1,(IPTR)tr(Msg_Precision));
448 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->scale,MUICFG_TheBar_Scale,1,(IPTR)tr(Msg_Scale));
449 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->specialSelect,MUICFG_TheBar_SpecialSelect,1,(IPTR)tr(Msg_SpecialSelect));
450 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->ignoreSel,MUICFG_TheBar_IgnoreSelImages,1,(IPTR)tr(Msg_IgnoreSelImages));
451 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->ignoreDis,MUICFG_TheBar_IgnoreDisImages,1,(IPTR)tr(Msg_IgnoreDisImages));
452 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->dontMove,MUICFG_TheBar_DontMove,1,(IPTR)tr(Msg_DontMove));
453 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->ntRaiseActive,MUICFG_TheBar_NtRaiseActive,1,(IPTR)tr(Msg_NtRaiseActive));
454 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->disMode,MUICFG_TheBar_DisMode,1,(IPTR)tr(Msg_DisMode));
455 DoSuperMethod(cl,obj,MUIM_Mccprefs_RegisterGadget,(IPTR)data->spacersSize,MUICFG_TheBar_SpacersSize,1,(IPTR)tr(Msg_SpacersSize));
457 else
459 struct NewMenu menu[] =
461 { NM_TITLE, (STRPTR)"TheBar", 0, 0, 0, NULL },
462 { NM_ITEM, (STRPTR)tr(Msg_Item_Globals), 0, 0, 0, (APTR)MI_GLOBALS },
463 { NM_ITEM, (STRPTR)tr(Msg_Item_LastSaved), 0, 0, 0, (APTR)MI_LASTSAVED },
464 { NM_ITEM, (STRPTR)tr(Msg_Item_Restore), 0, 0, 0, (APTR)MI_RESTORE },
465 { NM_ITEM, NM_BARLABEL, 0, 0, 0, NULL },
466 { NM_ITEM, (STRPTR)tr(Msg_Item_Defaults), 0, 0, 0, (APTR)MI_DEFAULTS },
467 { NM_END, NULL, 0, 0, 0, NULL }
470 if((data->menu = MUI_MakeObject(MUIO_MenustripNM, (IPTR)menu, 0)))
471 superset(cl,obj,MUIA_ContextMenu,data->menu);
474 else
476 CoerceMethod(cl->cl_Super,obj,OM_DISPOSE);
477 obj = 0;
481 return (IPTR)obj;
484 /***********************************************************************/
486 static IPTR
487 mGet(struct IClass *cl,Object *obj,struct opGet *msg)
489 switch (msg->opg_AttrID)
491 case MUIA_Version: *msg->opg_Storage = LIB_VERSION; return TRUE;
492 case MUIA_Revision: *msg->opg_Storage = LIB_REVISION; return TRUE;
493 default: return DoSuperMethodA(cl,obj,(Msg)msg);
497 /***********************************************************************/
499 static IPTR
500 mDispose(struct IClass *cl,Object *obj,Msg msg)
502 struct InstData *data = INST_DATA(cl,obj);
504 if(data->menu)
505 MUI_DisposeObject(data->menu);
507 return DoSuperMethodA(cl,obj,msg);
510 /***********************************************************************/
512 static IPTR
513 mSetup(struct IClass *cl,Object *obj,Msg msg)
515 struct InstData *data = INST_DATA(cl,obj);
517 if (!DoSuperMethodA(cl,obj,msg)) return FALSE;
519 if (data->menu && !(data->flags & FLG_MenuCheck))
521 IPTR storage;
523 get(_app(obj),MUIA_Application_Base,&storage);
524 data->base = (STRPTR)storage;
525 if(stricmp(data->base, "MUI") == 0)
527 Object *o;
529 if((o = (Object *)DoMethod(data->menu, MUIM_FindUData, Msg_Item_Globals)))
531 DoMethod(data->menu,MUIM_Family_Remove,(IPTR)o);
532 MUI_DisposeObject(o);
535 data->flags |= FLG_Global;
538 data->flags |= FLG_MenuCheck;
541 return TRUE;
544 /***********************************************************************/
546 static struct MUIS_TheBar_Appearance staticAp = {MUIDEF_TheBar_Appearance_ViewMode,
547 MUIDEF_TheBar_Appearance_Flags,
549 {0,0}};
551 static IPTR
552 mConfigToGadgets(struct IClass *cl,Object *obj,struct MUIP_Settingsgroup_ConfigToGadgets *msg)
554 struct InstData *data = INST_DATA(cl, obj );
555 Object *cfg = msg->configdata;
556 APTR ptr;
557 struct MUIS_TheBar_Appearance *ap;
558 ULONG v;
559 ULONG *val;
561 /* These are MUI version dependent */
563 /* Group back */
564 if(!(lib_flags & BASEFLG_MUI4) && !(lib_flags & BASEFLG_MUI20) && (ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_Gradient)))
566 nnset(data->groupBack,MUIA_Popbackground_Grad,ptr);
568 else
570 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_GroupBack)))
571 ptr = MUIDEF_TheBar_GroupBack;
573 nnset(data->groupBack,MUIA_Imagedisplay_Spec,ptr);
576 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_UseGroupBack)) ?
577 *val : MUIDEF_TheBar_UseGroupBack;
578 nnset(data->useGroupBack,MUIA_Selected,v);
580 /* Group frame */
581 if (lib_flags & BASEFLG_MUI20)
583 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_Frame)))
584 ptr = MUIDEF_TheBar_Frame;
586 if (lib_flags & BASEFLG_MUI4)
587 nnset(data->groupBack,MUIA_Framedisplay_Spec,ptr);
588 else
589 nnset(data->frame,MUIA_Framedisplay_Spec,ptr);
591 else
593 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BarFrameShinePen)))
594 ptr = MUIDEF_TheBar_BarFrameShinePen;
595 nnset(data->barFrameShinePen,MUIA_Pendisplay_Spec,ptr);
597 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BarFrameShadowPen)))
598 ptr = MUIDEF_TheBar_BarFrameShadowPen;
599 nnset(data->barFrameShadowPen,MUIA_Pendisplay_Spec,ptr);
601 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_LeftBarFrameSpacing)) ?
602 *val : MUIDEF_TheBar_LeftBarFrameSpacing;
603 nnset(data->leftBarFrameSpacing,MUIA_Numeric_Value,v);
605 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_RightBarFrameSpacing)) ?
606 *val : MUIDEF_TheBar_RightBarFrameSpacing;
607 nnset(data->rightBarFrameSpacing,MUIA_Numeric_Value,v);
609 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_TopBarFrameSpacing)) ?
610 *val : MUIDEF_TheBar_TopBarFrameSpacing;
611 nnset(data->topBarFrameSpacing,MUIA_Numeric_Value,v);
613 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BottomBarFrameSpacing)) ?
614 *val : MUIDEF_TheBar_BottomBarFrameSpacing;
615 nnset(data->bottomBarFrameSpacing,MUIA_Numeric_Value,v);
618 /* Button back */
619 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_ButtonBack)))
620 ptr = MUIDEF_TheBar_ButtonBack;
621 nnset(data->buttonBack,MUIA_Imagedisplay_Spec,ptr);
623 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_UseButtonBack)) ?
624 *val : MUIDEF_TheBar_UseButtonBack;
625 nnset(data->useButtonBack,MUIA_Selected,v);
627 /* Button frame */
628 if (lib_flags & BASEFLG_MUI4)
630 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_ButtonFrame)))
631 ptr = MUIDEF_TheBar_ButtonFrame;
632 nnset(data->buttonBack,MUIA_Framedisplay_Spec,ptr);
634 else
636 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_FrameShinePen)))
637 ptr = MUIDEF_TheBar_FrameShinePen;
638 nnset(data->frameShinePen,MUIA_Pendisplay_Spec,ptr);
640 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_FrameShadowPen)))
641 ptr = MUIDEF_TheBar_FrameShadowPen;
642 nnset(data->frameShadowPen,MUIA_Pendisplay_Spec,ptr);
644 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_FrameStyle)) ?
645 *val : MUIDEF_TheBar_FrameStyle;
646 nnset(data->frameStyle,MUIA_Cycle_Active,v);
649 /* Buttons inner spacing */
650 if (!(lib_flags & BASEFLG_MUI4))
652 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_HorizInnerSpacing)) ?
653 *val : MUIDEF_TheBar_HorizInnerSpacing;
654 nnset(data->horizInnerSpacing,MUIA_Numeric_Value,v);
656 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_TopInnerSpacing)) ?
657 *val : MUIDEF_TheBar_TopInnerSpacing;
658 nnset(data->topInnerSpacing,MUIA_Numeric_Value,v);
660 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BottomInnerSpacing)) ?
661 *val : MUIDEF_TheBar_BottomInnerSpacing;
662 nnset(data->bottomInnerSpacing,MUIA_Numeric_Value,v);
665 /* Rest is MUI version indipendent */
667 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DisBodyPen)))
668 ptr = MUIDEF_TheBar_DisBodyPen;
669 nnset(data->disBodyPen,MUIA_Pendisplay_Spec,ptr);
671 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DisShadowPen)))
672 ptr = MUIDEF_TheBar_DisShadowPen;
673 nnset(data->disShadowPen,MUIA_Pendisplay_Spec,ptr);
675 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BarSpacerShinePen)))
676 ptr = MUIDEF_TheBar_BarSpacerShinePen;
677 nnset(data->barSpacerShinePen,MUIA_Pendisplay_Spec,ptr);
679 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BarSpacerShadowPen)))
680 ptr = MUIDEF_TheBar_BarSpacerShadowPen;
681 nnset(data->barSpacerShadowPen,MUIA_Pendisplay_Spec,ptr);
683 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DragBarShinePen)))
684 ptr = MUIDEF_TheBar_DragBarShinePen;
685 nnset(data->dragBarShinePen,MUIA_Pendisplay_Spec,ptr);
687 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DragBarShadowPen)))
688 ptr = MUIDEF_TheBar_DragBarShadowPen;
689 nnset(data->dragBarShadowPen,MUIA_Pendisplay_Spec,ptr);
691 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DragBarFillPen)))
692 ptr = MUIDEF_TheBar_DragBarFillPen;
693 nnset(data->dragBarFillPen,MUIA_Pendisplay_Spec,ptr);
695 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_UseDragBarFillPen)) ?
696 *val : MUIDEF_TheBar_UseDragBarFillPen;
697 nnset(data->useDragBarFillPen,MUIA_Selected,v);
699 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_TextFont)))
700 ptr = MUIDEF_TheBar_TextFont;
701 nnset(data->textFont,MUIA_String_Contents,ptr);
703 if (!(ptr = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_TextGfxFont)))
704 ptr = MUIDEF_TheBar_TextGfxFont;
705 nnset(data->textGfxFont,MUIA_String_Contents,ptr);
707 if (!(ap = (APTR)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_Appearance)))
708 ap = &staticAp;
710 nnset(data->viewMode,MUIA_Cycle_Active,ap->viewMode);
711 nnset(data->labelPos,MUIA_Cycle_Active,ap->labelPos);
712 nnset(data->borderless,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_Borderless);
713 nnset(data->raised,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_Raised);
714 nnset(data->sunny,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_Sunny);
715 nnset(data->scaled,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_Scaled);
716 nnset(data->barSpacer,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_BarSpacer);
717 nnset(data->enableKeys,MUIA_Selected,ap->flags & MUIV_TheBar_Appearance_EnableKeys);
719 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_HorizSpacing)) ?
720 *val : MUIDEF_TheBar_HorizSpacing;
721 nnset(data->horizSpacing,MUIA_Numeric_Value,v);
723 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_VertSpacing)) ?
724 *val : MUIDEF_TheBar_VertSpacing;
725 nnset(data->vertSpacing,MUIA_Numeric_Value,v);
727 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_BarSpacerSpacing)) ?
728 *val : MUIDEF_TheBar_BarSpacerSpacing;
729 nnset(data->barSpacerSpacing,MUIA_Numeric_Value,v);
731 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_HorizTextGfxSpacing)) ?
732 *val : MUIDEF_TheBar_HorizTextGfxSpacing;
733 nnset(data->horizTexGfxSpacing,MUIA_Numeric_Value,v);
735 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_VertTextGfxSpacing)) ?
736 *val : MUIDEF_TheBar_VertTextGfxSpacing;
737 nnset(data->vertTexGfxSpacing,MUIA_Numeric_Value,v);
739 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_Precision)) ?
740 *val : MUIDEF_TheBar_Precision;
741 nnset(data->precision,MUIA_Cycle_Active,v);
743 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DisMode)) ?
744 *val : MUIDEF_TheBar_DisMode;
745 nnset(data->disMode,MUIA_Cycle_Active,v);
747 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_Scale)) ?
748 *val : MUIDEF_TheBar_Scale;
749 nnset(data->scale,MUIA_Numeric_Value,v);
751 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_SpecialSelect)) ?
752 *val : MUIDEF_TheBar_SpecialSelect;
753 nnset(data->specialSelect,MUIA_Selected,v);
755 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_TextOverUseShine)) ?
756 *val : MUIDEF_TheBar_TextOverUseShine;
757 nnset(data->textOverUseShine,MUIA_Selected,v);
759 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_IgnoreSelImages)) ?
760 *val : MUIDEF_TheBar_IgnoreSelImages;
761 nnset(data->ignoreSel,MUIA_Selected,v);
763 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_IgnoreDisImages)) ?
764 *val : MUIDEF_TheBar_IgnoreDisImages;
765 nnset(data->ignoreDis,MUIA_Selected,v);
767 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_DontMove)) ?
768 *val : MUIDEF_TheBar_DontMove;
769 nnset(data->dontMove,MUIA_Selected,v);
771 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_NtRaiseActive)) ?
772 *val : MUIDEF_TheBar_NtRaiseActive;
773 nnset(data->ntRaiseActive,MUIA_Selected,v);
775 v = (val = (ULONG *)DoMethod(cfg,MUIM_Dataspace_Find,MUICFG_TheBar_SpacersSize)) ?
776 *val : MUIDEF_TheBar_SpacersSize;
777 nnset(data->spacersSize,MUIA_Cycle_Active,v);
779 return 0;
782 /***********************************************************************/
784 static IPTR
785 mGadgetsToConfig(struct IClass *cl,Object *obj,struct MUIP_Settingsgroup_GadgetsToConfig *msg)
787 struct InstData *data = INST_DATA(cl,obj);
788 Object *cfg = msg->configdata;
789 struct MUIS_TheBar_Appearance ap;
790 STRPTR ptr;
791 ULONG val;
793 /* These are MUI version dependent */
795 /* Group back */
796 if (lib_flags & BASEFLG_MUI20)
798 get(data->groupBack,MUIA_Imagedisplay_Spec,&ptr);
799 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_GroupBack);
801 else
803 if ((ptr = (STRPTR)xget(data->groupBack,MUIA_Popbackground_Grad)))
805 DoMethod(cfg,MUIM_Dataspace_Remove,MUICFG_TheBar_GroupBack);
806 addconfigitem(cfg,ptr,sizeof(struct MUIS_TheBar_Gradient),MUICFG_TheBar_Gradient);
808 else
810 DoMethod(cfg,MUIM_Dataspace_Remove,MUICFG_TheBar_Gradient);
811 ptr = (STRPTR)xget(data->groupBack,MUIA_Imagedisplay_Spec);
812 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_GroupBack);
816 val = xget(data->useGroupBack, MUIA_Selected);
817 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_UseGroupBack);
819 /* Group frame */
820 if (lib_flags & BASEFLG_MUI20)
822 if (lib_flags & BASEFLG_MUI4) ptr = (STRPTR)xget(data->groupBack,MUIA_Framedisplay_Spec);
823 else ptr = (STRPTR)xget(data->frame,MUIA_Framedisplay_Spec);
824 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_Frame);
826 else
828 ptr = (STRPTR)xget(data->barFrameShinePen, MUIA_Pendisplay_Spec);
829 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_BarFrameShinePen);
831 ptr = (STRPTR)xget(data->barFrameShadowPen, MUIA_Pendisplay_Spec);
832 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_BarFrameShadowPen);
834 val = xget(data->frameStyle, MUIA_Cycle_Active);
835 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_FrameStyle);
837 val = xget(data->leftBarFrameSpacing, MUIA_Numeric_Value);
838 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_LeftBarFrameSpacing);
840 val = xget(data->rightBarFrameSpacing, MUIA_Numeric_Value);
841 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_RightBarFrameSpacing);
843 val = xget(data->topBarFrameSpacing, MUIA_Numeric_Value);
844 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_TopBarFrameSpacing);
846 val = xget(data->bottomBarFrameSpacing, MUIA_Numeric_Value);
847 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_BottomBarFrameSpacing);
850 /* Button back */
851 get(data->buttonBack,MUIA_Imagedisplay_Spec,&ptr);
852 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_ButtonBack);
854 val = xget(data->useButtonBack,MUIA_Selected);
855 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_UseButtonBack);
857 /* Button frame */
858 if (lib_flags & BASEFLG_MUI4)
860 get(data->buttonBack,MUIA_Framedisplay_Spec,&ptr);
861 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_ButtonFrame);
863 else
865 ptr = (STRPTR)xget(data->frameShinePen, MUIA_Pendisplay_Spec);
866 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_FrameShinePen);
868 ptr = (STRPTR)xget(data->frameShadowPen, MUIA_Pendisplay_Spec);
869 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_FrameShadowPen);
871 val = xget(data->frameStyle, MUIA_Cycle_Active);
872 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_FrameStyle);
875 /* Buttons inner spacing */
876 if (!(lib_flags & BASEFLG_MUI4))
878 val = xget(data->horizInnerSpacing, MUIA_Numeric_Value);
879 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_HorizInnerSpacing);
881 val = xget(data->topInnerSpacing, MUIA_Numeric_Value);
882 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_TopInnerSpacing);
884 val = xget(data->bottomInnerSpacing, MUIA_Numeric_Value);
885 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_BottomInnerSpacing);
888 /* Rest is MUI version indipendent */
890 ptr = (STRPTR)xget(data->disBodyPen, MUIA_Pendisplay_Spec);
891 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_DisBodyPen);
893 ptr = (STRPTR)xget(data->disShadowPen, MUIA_Pendisplay_Spec);
894 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_DisShadowPen);
896 ptr = (STRPTR)xget(data->barSpacerShinePen, MUIA_Pendisplay_Spec);
897 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_BarSpacerShinePen);
899 ptr = (STRPTR)xget(data->barSpacerShadowPen, MUIA_Pendisplay_Spec);
900 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_BarSpacerShadowPen);
902 ptr = (STRPTR)xget(data->dragBarShinePen, MUIA_Pendisplay_Spec);
903 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_DragBarShinePen);
905 ptr = (STRPTR)xget(data->dragBarShadowPen, MUIA_Pendisplay_Spec);
906 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_DragBarShadowPen);
908 ptr = (STRPTR)xget(data->dragBarFillPen, MUIA_Pendisplay_Spec);
909 addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_DragBarFillPen);
911 val = xget(data->useDragBarFillPen, MUIA_Selected);
912 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_UseDragBarFillPen);
914 ptr = (STRPTR)xget(data->textFont, MUIA_String_Contents);
915 if(*((STRPTR)ptr)) addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_TextFont);
916 else DoMethod(cfg,MUIM_Dataspace_Remove,MUICFG_TheBar_TextFont);
918 ptr = (STRPTR)xget(data->textGfxFont, MUIA_String_Contents);
919 if(*((STRPTR)ptr)) addconfigitem(cfg,ptr,strlen((STRPTR)ptr)+1,MUICFG_TheBar_TextGfxFont);
920 else DoMethod(cfg,MUIM_Dataspace_Remove,MUICFG_TheBar_TextGfxFont);
922 ap.viewMode = xget(data->viewMode, MUIA_Cycle_Active);
923 ap.labelPos = xget(data->labelPos, MUIA_Cycle_Active);
924 ap.flags = 0;
925 if(xget(data->borderless,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_Borderless;
926 if(xget(data->raised,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_Raised;
927 if(xget(data->sunny,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_Sunny;
928 if(xget(data->scaled,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_Scaled;
929 if(xget(data->barSpacer,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_BarSpacer;
930 if(xget(data->enableKeys,MUIA_Selected)) ap.flags |= MUIV_TheBar_Appearance_EnableKeys;
931 addconfigitem(cfg,&ap,sizeof(ap),MUICFG_TheBar_Appearance);
933 val = xget(data->horizSpacing, MUIA_Numeric_Value);
934 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_HorizSpacing);
936 val = xget(data->vertSpacing, MUIA_Numeric_Value);
937 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_VertSpacing);
939 val = xget(data->barSpacerSpacing, MUIA_Numeric_Value);
940 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_BarSpacerSpacing);
942 val = xget(data->horizTexGfxSpacing, MUIA_Numeric_Value);
943 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_HorizTextGfxSpacing);
945 val = xget(data->vertTexGfxSpacing, MUIA_Numeric_Value);
946 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_VertTextGfxSpacing);
948 val = xget(data->precision, MUIA_Cycle_Active);
949 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_Precision);
951 val = xget(data->disMode, MUIA_Cycle_Active);
952 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_DisMode);
954 val = xget(data->scale, MUIA_Numeric_Value);
955 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_Scale);
957 val = xget(data->specialSelect, MUIA_Selected);
958 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_SpecialSelect);
960 val = xget(data->textOverUseShine, MUIA_Selected);
961 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_TextOverUseShine);
963 val = xget(data->ignoreSel, MUIA_Selected);
964 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_IgnoreSelImages);
966 val = xget(data->ignoreDis, MUIA_Selected);
967 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_IgnoreDisImages);
969 val = xget(data->dontMove, MUIA_Selected);
970 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_DontMove);
972 val = xget(data->ntRaiseActive, MUIA_Selected);
973 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_NtRaiseActive);
975 val = xget(data->spacersSize, MUIA_Cycle_Active);
976 addconfigitem(cfg,&val,sizeof(val),MUICFG_TheBar_SpacersSize);
978 return 0;
981 /***********************************************************************/
983 static ULONG
984 loadPrefs(Object *obj, const char *fileName)
986 Object *cfg;
987 ULONG res = FALSE;
989 if((cfg = MUI_NewObjectA((STRPTR)MUIC_Dataspace,NULL)))
991 struct IFFHandle *iffh;
993 if((iffh = AllocIFF()))
995 if((iffh->iff_Stream = (IPTR)Open(fileName,MODE_OLDFILE)))
997 InitIFFasDOS(iffh);
999 if (!OpenIFF(iffh,IFFF_READ))
1001 if (!StopChunk(iffh,ID_PREF,ID_PRHD) &&
1002 !StopChunk(iffh,ID_PREF,MAKE_ID('M','U','I','C')) &&
1003 !ParseIFF(iffh,IFFPARSE_SCAN))
1005 struct ContextNode *cn;
1007 if ((cn = CurrentChunk(iffh)) && (cn->cn_Type==ID_PREF) && (cn->cn_ID==ID_PRHD) && (cn->cn_Size==sizeof(struct PrefHeader)))
1009 struct PrefHeader prhd;
1011 if (ReadChunkBytes(iffh,&prhd,cn->cn_Size)==cn->cn_Size &&
1012 !ParseIFF(iffh,IFFPARSE_SCAN) &&
1013 !DoMethod(cfg,MUIM_Dataspace_ReadIFF,(IPTR)iffh))
1015 DoMethod(obj,MUIM_Settingsgroup_ConfigToGadgets,(IPTR)cfg);
1016 res = TRUE;
1021 CloseIFF(iffh);
1024 Close((BPTR)iffh->iff_Stream);
1027 FreeIFF(iffh);
1030 MUI_DisposeObject(cfg);
1033 return res;
1036 /**************************************************************************/
1038 static IPTR
1039 mContextMenuChoice(struct IClass *cl,Object *obj,struct MUIP_ContextMenuChoice *msg)
1041 struct InstData *data = INST_DATA(cl,obj);
1043 if (!data->menu) return 0;
1045 switch (muiUserData(msg->item))
1047 case MI_DEFAULTS:
1048 set(data->groupBack,MUIA_Imagedisplay_Spec,MUIDEF_TheBar_GroupBack);
1049 set(data->useGroupBack,MUIA_Selected,MUIDEF_TheBar_UseGroupBack);
1050 set(data->buttonBack,MUIA_Imagedisplay_Spec,MUIDEF_TheBar_ButtonBack);
1051 set(data->useButtonBack,MUIA_Selected,MUIDEF_TheBar_UseButtonBack);
1052 set(data->frameShinePen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_FrameShinePen);
1053 set(data->frameShadowPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_FrameShadowPen);
1054 set(data->frameStyle,MUIA_Cycle_Active,MUIDEF_TheBar_FrameStyle);
1055 set(data->disBodyPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_DisBodyPen);
1056 set(data->disShadowPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_DisShadowPen);
1057 set(data->barSpacerShinePen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_BarSpacerShinePen);
1058 set(data->barSpacerShadowPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_BarSpacerShadowPen);
1059 #if !defined(__MORPHOS__) && !defined(__amigaos4__) && !defined(__AROS__)
1060 set(data->barFrameShinePen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_BarFrameShinePen);
1061 set(data->barFrameShadowPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_BarFrameShadowPen);
1062 #endif
1063 set(data->dragBarShinePen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_DragBarShinePen);
1064 set(data->dragBarShadowPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_DragBarShadowPen);
1065 set(data->dragBarFillPen,MUIA_Pendisplay_Spec,MUIDEF_TheBar_DragBarFillPen);
1066 set(data->useDragBarFillPen,MUIA_Imagedisplay_Spec,MUIDEF_TheBar_UseDragBarFillPen);
1068 set(data->textFont,MUIA_String_Contents,MUIDEF_TheBar_TextFont);
1069 set(data->textGfxFont,MUIA_String_Contents,MUIDEF_TheBar_TextGfxFont);
1070 set(data->viewMode,MUIA_Cycle_Active,MUIDEF_TheBar_Appearance_ViewMode);
1071 set(data->labelPos,MUIA_Cycle_Active,MUIDEF_TheBar_Appearance_LabelPos);
1072 set(data->scale,MUIA_Numeric_Value,MUIDEF_TheBar_Scale);
1073 set(data->borderless,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_Borderless);
1074 set(data->raised,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_Raised);
1075 set(data->sunny,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_Sunny);
1076 set(data->scaled,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_Scaled);
1077 set(data->barSpacer,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_BarSpacer);
1078 set(data->enableKeys,MUIA_Selected,MUIDEF_TheBar_Appearance_Flags & MUIV_TheBar_Appearance_EnableKeys);
1080 set(data->horizSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_HorizSpacing);
1081 set(data->vertSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_VertSpacing);
1082 set(data->barSpacerSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_BarSpacerSpacing);
1083 set(data->horizInnerSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_HorizInnerSpacing);
1084 set(data->topInnerSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_TopInnerSpacing);
1085 set(data->bottomInnerSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_BottomInnerSpacing);
1086 #if !defined(__MORPHOS__) && !defined(__amigaos4__) && !defined(__AROS__)
1087 set(data->leftBarFrameSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_LeftBarFrameSpacing);
1088 set(data->rightBarFrameSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_RightBarFrameSpacing);
1089 set(data->topBarFrameSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_TopBarFrameSpacing);
1090 set(data->bottomBarFrameSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_BottomBarFrameSpacing);
1091 #endif
1092 set(data->horizTexGfxSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_HorizTextGfxSpacing);
1093 set(data->vertTexGfxSpacing,MUIA_Numeric_Value,MUIDEF_TheBar_VertTextGfxSpacing);
1095 set(data->precision,MUIA_Cycle_Active,MUIDEF_TheBar_Precision);
1096 set(data->disMode,MUIA_Cycle_Active,MUIDEF_TheBar_DisMode);
1097 set(data->specialSelect,MUIA_Selected,MUIDEF_TheBar_SpecialSelect);
1098 set(data->textOverUseShine,MUIA_Selected,MUIDEF_TheBar_TextOverUseShine);
1100 set(data->ignoreSel,MUIA_Selected,MUIDEF_TheBar_IgnoreSelImages);
1101 set(data->ignoreDis,MUIA_Selected,MUIDEF_TheBar_IgnoreDisImages);
1102 set(data->dontMove,MUIA_Selected,MUIDEF_TheBar_DontMove);
1103 set(data->ntRaiseActive,MUIA_Selected,MUIDEF_TheBar_NtRaiseActive);
1105 set(data->spacersSize,MUIA_Cycle_Active,MUIDEF_TheBar_SpacersSize);
1106 break;
1108 case MI_GLOBALS:
1109 loadPrefs(obj,"ENVARC:MUI/«Global».prefs");
1110 break;
1112 case MI_LASTSAVED:
1113 if (data->flags & FLG_Global) loadPrefs(obj,"ENVARC:MUI/«Global».prefs");
1114 else
1116 char buf[256];
1118 strcpy(buf,"ENVARC:MUI");
1119 AddPart(buf,data->base,sizeof(buf)-6);
1120 strcat(buf,".prefs");
1121 loadPrefs(obj,buf);
1123 break;
1125 case MI_RESTORE:
1126 if (data->flags & FLG_Global) loadPrefs(obj,"ENV:MUI/«Global».prefs");
1127 else
1129 char buf[256];
1131 strcpy(buf,"ENV:MUI");
1132 AddPart(buf,data->base,sizeof(buf)-6);
1133 strcat(buf,".prefs");
1134 loadPrefs(obj,buf);
1136 break;
1139 return 0;
1142 /***********************************************************************/
1144 DISPATCHER(_DispatcherP)
1146 switch (msg->MethodID)
1148 case OM_NEW: return mNew(cl,obj,(APTR)msg);
1149 case OM_GET: return mGet(cl,obj,(APTR)msg);
1150 case OM_DISPOSE: return mDispose(cl,obj,(APTR)msg);
1151 case MUIM_Setup: return mSetup(cl,obj,(APTR)msg);
1152 case MUIM_Settingsgroup_ConfigToGadgets: return mConfigToGadgets(cl,obj,(APTR)msg);
1153 case MUIM_Settingsgroup_GadgetsToConfig: return mGadgetsToConfig(cl,obj,(APTR)msg);
1154 case MUIM_ContextMenuChoice: return mContextMenuChoice(cl,obj,(APTR)msg);
1156 default: return DoSuperMethodA(cl,obj,msg);
1160 /***********************************************************************/