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
21 ***************************************************************************/
24 #include <proto/iffparse.h>
25 #include <prefs/prefhdr.h>
26 #include <libraries/asl.h>
30 /***********************************************************************/
32 enum MItems
{ MI_GLOBALS
, MI_LASTSAVED
, MI_RESTORE
, MI_DEFAULTS
};
40 /***********************************************************************/
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
;
50 static const char infotext1
[] = "\033bTheBar.mcp " LIB_REV_STRING
"\033n (" LIB_DATE
")\n"
51 "Copyright (C) 2003-2005 Alfonso Ranieri\n"
53 static const char infotext2
[] = "\n"
54 "Distributed under the terms of the LGPL2.\n"
56 "For recent versions and updates visit:\n"
57 "http://www.sourceforge.net/projects/thebar/\n"
60 if((t
= tr(Msg_Info_Translator
)) && *t
)
62 trans
= (Object
*)VGroup
,
68 MUIA_Text_PreParse
, (IPTR
)"\033c",
69 MUIA_Text_Contents
, (IPTR
)t
,
71 Child
, ofhspace((IPTR
)"a"),
77 if((prefs
= (Object
*)VGroup
,
79 Child
, RegisterGroup(regs
), // Register
81 MUIA_CycleChain
, TRUE
,
84 // MUIA_Group_Columns, 2,
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
) ?
94 Child
, (IPTR
)oflabel(Msg_Frame
),
95 Child
, (IPTR
)(data
->frame
= opopframe(Msg_Frame
,Msg_Frame_Title
,Msg_Frame_Help
)),
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
)),
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
),
116 Child
, (IPTR
)VSpace(0),
118 Child
, (IPTR
)(data
->useGroupBack
= ocheck(Msg_UseGroupBackground
, Msg_UseGroupBackground_Help
)),
120 Child
, (IPTR
)VSpace(0),
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
)),
127 Child
, (IPTR
)VSpace(0),
129 Child
, (IPTR
)(data
->useButtonBack
= ocheck(Msg_UseButtonBackground
,Msg_UseButtonBackground_Help
)),
131 Child
, (IPTR
)VSpace(0),
135 Child
, ColGroup(2), // >DragBar
136 GroupFrameT(tr(Msg_Title_DragBar
)),
137 Child
, (IPTR
)oflabel(Msg_DragBarShine
),
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
)),
143 Child
, (IPTR
)oflabel(Msg_DragBarFill
),
145 Child
, (IPTR
)(data
->dragBarFillPen
= opoppen(Msg_DragBarFill
,Msg_DragBarFill_Title
,Msg_DragBarFill_Help
)),
146 Child
, (IPTR
)oflabel(Msg_UseDragBarFill
),
148 Child
, (IPTR
)VSpace(0),
149 Child
, (IPTR
)(data
->useDragBarFillPen
= ocheck(Msg_UseDragBarFill
, Msg_UseDragBarFill_Help
)),
150 Child
, (IPTR
)VSpace(0),
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
)),
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
)),
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
),
177 Child
, (IPTR
)(data
->frameShinePen
= opoppen(Msg_FrameShinePen
,Msg_FrameShinePen_Title
,Msg_FrameShinePen_Help
)),
179 Child
, (IPTR
)oflabel(Msg_FrameShadowPen
),
180 Child
, (IPTR
)(data
->frameShadowPen
= opoppen(Msg_FrameShadowPen
,Msg_FrameShadowPen_Title
,Msg_FrameShadowPen_Help
)),
182 Child
, (IPTR
)olabel2(Msg_FrameStyle
),
183 Child
, (IPTR
)(data
->frameStyle
= ocycle(frames
,Msg_FrameStyle
,Msg_FrameStyle_Help
)),
184 End
), // <Buttons frame
188 Child
, VGroup
, // >Appearance
190 Child
, ColGroup(2), // >Fonts, scale
191 Child
, (IPTR
)olabel2(Msg_TextFont
),
193 MUIA_ShortHelp
, (IPTR
)tr(Msg_TextFont_Help
),
194 MUIA_Popasl_Type
, ASL_FontRequest
,
195 MUIA_Popstring_String
, (IPTR
)(data
->textFont
= (Object
*)StringObject
,
197 MUIA_CycleChain
, TRUE
,
198 MUIA_ControlChar
, getKeyChar(tr(Msg_TextFont
)),
200 MUIA_Popstring_Button
, (IPTR
)opop(MUII_PopFont
,Msg_TextFont_Help
),
202 Child
, (IPTR
)olabel2(Msg_TextGfxFont
),
204 MUIA_ShortHelp
, (IPTR
)tr(Msg_TextGfxFont_Help
),
205 MUIA_Popasl_Type
, ASL_FontRequest
,
206 MUIA_Popstring_String
, (IPTR
)(data
->textGfxFont
= (Object
*)StringObject
,
208 MUIA_CycleChain
, TRUE
,
209 MUIA_ControlChar
, getKeyChar(tr(Msg_TextGfxFont
)),
211 MUIA_Popstring_Button
, (IPTR
)opop(MUII_PopFont
,Msg_TextGfxFont_Help
),
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
,
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),
253 Child
, (IPTR
)HVSpace
,
258 Child
, VGroup
, // >Spacing
259 Child
, VGroup
, // >Group spacing
260 GroupFrameT(tr(Msg_Title_GroupSpacing
)),
263 Child
, (IPTR
)olabel2(Msg_HorizGroupSpacing
),
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)),
269 Child
, (IPTR
)olabel2(Msg_BarSpacerSpacing
),
270 Child
, (IPTR
)(data
->barSpacerSpacing
= oslider(Msg_BarSpacerSpacing
,Msg_BarSpacerSpacing_Help
,0,16)),
273 End
, // <Group spacing
276 (lib_flags
& BASEFLG_MUI4
) ? TAG_IGNORE
: Child
,
277 (lib_flags
& BASEFLG_MUI4
) ? 0 : (VGroup
,
278 GroupFrameT(tr(Msg_Title_InnerSpacing
)),
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
),
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)),
291 End
), // <Inner spacing
294 (lib_flags
& BASEFLG_MUI20
) ? TAG_IGNORE
: Child
,
295 (lib_flags
& BASEFLG_MUI20
) ? 0 : (VGroup
,
296 GroupFrameT(tr(Msg_Title_BarFrameSpacing
)),
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)),
309 End
), // <BarFrame spacing
311 Child
, VGroup
, // >Text/Gfx spacing
312 GroupFrameT(tr(Msg_Title_TextGfxSpacing
)),
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)),
321 End
, // <Text/Gfx spacing
322 Child
, (IPTR
)VSpace(0),
325 Child
, VGroup
, // >Settings
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
)),
336 MUIA_Frame
, MUIV_Frame_Virtual
,
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),
362 Child
, (IPTR
)HVSpace
,
368 Child
, CrawlingObject
, // >Crawling
369 MUIA_FixHeightTxt
, (IPTR
)infotext1
,
371 MUIA_Background
, (IPTR
)"m1",
374 MUIA_Text_Copy
, FALSE
,
375 MUIA_Text_PreParse
, (IPTR
)"\033c",
376 MUIA_Text_Contents
, (IPTR
)infotext1
,
381 MUIA_Text_Copy
, FALSE
,
382 MUIA_Text_PreParse
, (IPTR
)"\033c",
383 MUIA_Text_Contents
, (IPTR
)infotext2
,
386 Child
, ofhspace((IPTR
)"a"),
388 trans
? Child
: TAG_IGNORE
, trans
,
391 MUIA_Text_Copy
, FALSE
,
392 MUIA_Text_PreParse
, (IPTR
)"\033c",
393 MUIA_Text_Contents
, (IPTR
)infotext1
,
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
)
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
));
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
);
476 CoerceMethod(cl
->cl_Super
,obj
,OM_DISPOSE
);
484 /***********************************************************************/
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 /***********************************************************************/
500 mDispose(struct IClass
*cl
,Object
*obj
,Msg msg
)
502 struct InstData
*data
= INST_DATA(cl
,obj
);
505 MUI_DisposeObject(data
->menu
);
507 return DoSuperMethodA(cl
,obj
,msg
);
510 /***********************************************************************/
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
))
523 get(_app(obj
),MUIA_Application_Base
,&storage
);
524 data
->base
= (STRPTR
)storage
;
525 if(stricmp(data
->base
, "MUI") == 0)
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
;
544 /***********************************************************************/
546 static struct MUIS_TheBar_Appearance staticAp
= {MUIDEF_TheBar_Appearance_ViewMode
,
547 MUIDEF_TheBar_Appearance_Flags
,
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
;
557 struct MUIS_TheBar_Appearance
*ap
;
561 /* These are MUI version dependent */
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
);
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
);
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
);
589 nnset(data
->frame
,MUIA_Framedisplay_Spec
,ptr
);
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
);
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
);
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
);
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
)))
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
);
782 /***********************************************************************/
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
;
793 /* These are MUI version dependent */
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
981 /***********************************************************************/
984 loadPrefs(Object
*obj
, const char *fileName
)
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
)))
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
);
1024 Close((BPTR
)iffh
->iff_Stream
);
1030 MUI_DisposeObject(cfg
);
1036 /**************************************************************************/
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
))
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
);
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
);
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
);
1109 loadPrefs(obj
,"ENVARC:MUI/«Global».prefs");
1113 if (data
->flags
& FLG_Global
) loadPrefs(obj
,"ENVARC:MUI/«Global».prefs");
1118 strcpy(buf
,"ENVARC:MUI");
1119 AddPart(buf
,data
->base
,sizeof(buf
)-6);
1120 strcat(buf
,".prefs");
1126 if (data
->flags
& FLG_Global
) loadPrefs(obj
,"ENV:MUI/«Global».prefs");
1131 strcpy(buf
,"ENV:MUI");
1132 AddPart(buf
,data
->base
,sizeof(buf
)-6);
1133 strcat(buf
,".prefs");
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 /***********************************************************************/