Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Copyright © 2011, The AROS Development Team. All rights reserved.
- $Id$
- */
- #define DEBUG 1
- #include <aros/debug.h>
- #define ZCC_QUIET
- #if defined(__AROS__)
- #define MUIMASTER_YES_INLINE_STDARG
- #endif
- #include <proto/intuition.h>
- #include <proto/muimaster.h>
- #include <proto/utility.h>
- #include <exec/types.h>
- #include <libraries/mui.h>
- #include "iconwindow_panelgroup.h"
- #define PANGVERS 0
- #define PANGREV 6
- /// OM_NEW
- Object *PanelGroup__OM_NEW(Class *CLASS, Object *self, struct opSet *message)
- {
- Object *_PanelGroup__RootGroupObj = NULL, *_PanelGroup__RootGroupSpacer = NULL;
- IPTR HorizWeight, VertWeight, PanelSize;
- BOOL HorizontalGroup, FloatSpacer;
- D(bug("[IconWindow:PanelGroup]: %s()\n", __PRETTY_FUNCTION__));
- HorizontalGroup = (BOOL)GetTagData(MUIA_Group_Horiz, FALSE, message->ops_AttrList);
- FloatSpacer = (BOOL)GetTagData(MUIA_PanelGroup_FloatSpacer, FALSE, message->ops_AttrList);
- if (HorizontalGroup)
- {
- D(bug("[IconWindow:PanelGroup] %s: Horizontal PanelGroup\n", __PRETTY_FUNCTION__));
- // if (!(FloatSpacer))
- // {
- // _PanelGroup__RootGroupSpacer = (Object *)HSpace(0);
- // }
- HorizWeight = 100;
- VertWeight = 0;
- }
- else
- {
- D(bug("[IconWindow:PanelGroup] %s: Vertical PanelGroup\n", __PRETTY_FUNCTION__));
- // if (!(FloatSpacer))
- // {
- // _PanelGroup__RootGroupSpacer = (Object *)VSpace(0);
- // }
- HorizWeight = 0;
- VertWeight = 100;
- }
- // if (_PanelGroup__RootGroupSpacer == NULL)
- // {
- // D(bug("[IconWindow:PanelGroup] %s: Floating Spacer\n", __PRETTY_FUNCTION__));
- _PanelGroup__RootGroupSpacer = (Object *)RectangleObject,
- MUIA_HorizWeight, 100,
- MUIA_VertWeight, 100,
- End;
- // }
- HorizWeight = (IPTR)GetTagData(MUIA_HorizWeight, HorizWeight, message->ops_AttrList);
- VertWeight = (IPTR)GetTagData(MUIA_VertWeight, VertWeight, message->ops_AttrList);
- PanelSize = (IPTR)GetTagData(MUIA_PanelGroup_PanelSize, 0, message->ops_AttrList);
- D(bug("[IconWindow:PanelGroup] %s: HorizWeight %d, VertWeight %d\n", __PRETTY_FUNCTION__, HorizWeight, VertWeight));
- self = (Object *)DoSuperNewTags
- (
- CLASS, self, NULL,
- //MUIA_ShowMe, FALSE,
- InnerSpacing(0,0),
- MUIA_Group_Horiz, (HorizontalGroup) ? FALSE : TRUE,
- MUIA_HorizWeight, HorizWeight,
- MUIA_VertWeight, VertWeight,
- MUIA_Frame, MUIV_Frame_None,
- MUIA_Group_Spacing, 3,
- Child, (IPTR)(_PanelGroup__RootGroupObj = (Object *)MUI_NewObject(MUIC_Group,
- MUIA_Group_Horiz, (HorizontalGroup) ? TRUE : FALSE,
- MUIA_InnerLeft, (0),
- MUIA_InnerRight, (0),
- MUIA_InnerTop, (0),
- MUIA_InnerBottom, (0),
- MUIA_Frame, MUIV_Frame_None,
- MUIA_Group_Spacing, 0,
- (!(HorizontalGroup)) ? ((PanelSize) ? MUIA_Width : TAG_IGNORE) : TAG_IGNORE, PanelSize,
- (HorizontalGroup) ? ((PanelSize) ? MUIA_Height : TAG_IGNORE) : TAG_IGNORE, PanelSize,
- Child, (IPTR)(_PanelGroup__RootGroupSpacer),
- TAG_DONE)),
- TAG_DONE
- );
- D(bug("[IconWindow:PanelGroup] %s: SELF @ 0x%p\n", __PRETTY_FUNCTION__, self));
- if (self != NULL)
- {
- SETUP_PANELGROUP_INST_DATA;
- data->pg_Flags = 0;
- data->pg_RootGroupObj = _PanelGroup__RootGroupObj;
- data->pg_RootGroupSpacer = _PanelGroup__RootGroupSpacer;
- data->pg_HorizWeight = (ULONG)HorizWeight;
- data->pg_VertWeight = (ULONG)VertWeight;
- if (HorizontalGroup)
- data->pg_Flags |= pgFlag_Horizontal;
- data->pg_Flags |= pgFlag_Setup;
- D(bug("[IconWindow:PanelGroup] %s: RootGroupObj @ 0x%p, RootGroupSpacer @ 0x%p\n", __PRETTY_FUNCTION__, data->pg_RootGroupObj, data->pg_RootGroupSpacer));
- }
- return self;
- }
- ///
- /// OM_DISPOSE
- IPTR PanelGroup__OM_DISPOSE(Class *CLASS, Object *self, Msg message)
- {
- D(bug("[IconWindow:PanelGroup] %s()\n", __PRETTY_FUNCTION__));
- return DoSuperMethodA(CLASS, self, message);
- }
- ///
- /// OM_ADDMEMBER
- IPTR PanelGroup__MUIM_PanelGroup_AddPanel(Class *CLASS, Object *self, Msg message)
- {
- SETUP_PANELGROUP_INST_DATA;
- IPTR rv;
- D(bug("[IconWindow:PanelGroup]: %s()\n", __PRETTY_FUNCTION__));
- if (data->pg_Flags & pgFlag_Setup)
- {
- D(bug("[IconWindow:PanelGroup] %s: Adding to RootGroupObj\n", __PRETTY_FUNCTION__));
- rv = DoMethodA(data->pg_RootGroupObj, message);
- if (data->pg_RootGroupSpacer)
- {
- D(bug("[IconWindow:PanelGroup] %s: Removing spacer..\n", __PRETTY_FUNCTION__));
- DoMethod(data->pg_RootGroupObj, OM_REMMEMBER, (IPTR)data->pg_RootGroupSpacer);
- data->pg_RootGroupSpacer = NULL;
- }
- SET(self, MUIA_HorizWeight, data->pg_HorizWeight);
- SET(self, MUIA_VertWeight, data->pg_VertWeight);
- data->pg_Count++;
- }
- return rv;
- }
- ///
- /// MUIM_Group_InitChange
- IPTR PanelGroup__MUIM_PanelGroup_InitChange(Class *CLASS, Object *self, Msg message)
- {
- SETUP_PANELGROUP_INST_DATA;
- D(bug("[IconWindow:PanelGroup]: %s()\n", __PRETTY_FUNCTION__));
- return DoMethod(data->pg_RootGroupObj, MUIM_Group_InitChange);
- }
- ///
- /// MUIM_Group_ExitChange
- IPTR PanelGroup__MUIM_PanelGroup_ExitChange(Class *CLASS, Object *self, Msg message)
- {
- SETUP_PANELGROUP_INST_DATA;
- D(bug("[IconWindow:PanelGroup]: %s()\n", __PRETTY_FUNCTION__));
- return DoMethod(data->pg_RootGroupObj, MUIM_Group_ExitChange);
- }
- ///
- /// OM_GET
- IPTR PanelGroup__OM_GET(Class *CLASS, Object *self, struct opGet *message)
- {
- SETUP_PANELGROUP_INST_DATA;
- IPTR *store = message->opg_Storage;
- IPTR rv = TRUE;
- switch (message->opg_AttrID)
- {
- case MUIA_PanelGroup_Panels:
- GET(data->pg_RootGroupObj, MUIA_Group_ChildList, store);
- break;
- case MUIA_Version:
- *store = (IPTR)PANGVERS;
- break;
- case MUIA_Revision:
- *store = (IPTR)PANGREV;
- break;
- default:
- rv = FALSE;
- }
- if (!rv)
- rv = DoSuperMethodA(CLASS, self, (Msg) message);
- return rv;
- }
- ///
- /*** Setup ******************************************************************/
- PANELGROUP_CUSTOMCLASS
- (
- PanelGroup, NULL, MUIC_Group, NULL,
- OM_NEW, struct opSet *,
- OM_DISPOSE, Msg,
- MUIM_PanelGroup_AddPanel, Msg,
- OM_GET, struct opGet *,
- MUIM_PanelGroup_InitChange, Msg,
- MUIM_PanelGroup_ExitChange, Msg
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement