class Container extends LayoutHolder
{
protected ref array<ref LayoutHolder> m_Body;
protected ref array<LayoutHolder> m_OpenedContainers;
protected int m_ActiveIndex = 0;
protected bool m_LastIndex; //deprecated
protected bool m_Closed;
protected Container m_FocusedContainer;
protected float m_PrevAlpha;
const int ITEMS_IN_ROW = 8;
//protected int m_RowCount;
protected int m_ColumnCount;
protected int m_FocusedColumn = 0;
protected bool m_ForcedHide;
protected bool m_ForcedShow; //used to override displayability condition, but 'm_ForcedHide' takes preference
protected SlotsIcon m_SlotIcon;
protected EntityAI m_Entity;
const int SORT_ATTACHMENTS_OWN = 1; //direct attachments of the parent item
const int SORT_CARGO_OWN = 2; //cargo of the parent item
const int SORT_ATTACHMENTS_NEXT_OFFSET = 2;
const int SORT_CARGO_NEXT_OFFSET = 3;
void OnDropReceivedFromHeader( Widget w, int x, int y, Widget receiver );
void DraggingOver( Widget w, int x, int y, Widget receiver );
void DraggingOverHeader( Widget w, int x, int y, Widget receiver );
void UpdateSpacer();
Header GetHeader();
void SetHeader(Header header);
void CheckHeaderDragability();
void Container( LayoutHolder parent )
{
m_Body = new array<ref LayoutHolder>;
m_OpenedContainers = new array<LayoutHolder>;
m_PrevAlpha = m_RootWidget.GetAlpha();
m_SlotIcon = null;
m_ForcedHide = false;
m_ForcedShow = false;
m_ActiveIndex = 0;
m_IsActive = false;
}
Container GetFocusedContainer()
{
if (m_ActiveIndex < m_OpenedContainers.Count())
{
return Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
return null;
}
Container GetContainer(int index)
{
if (index < m_Body.Count())
{
return Container.Cast( m_Body[index] );
}
return null;
}
void SetFocusedContainer( Container cont )
{
m_FocusedContainer = cont;
}
SlotsIcon GetFocusedSlotsIcon()
{
Container c = GetFocusedContainer();
if (c)
{
return c.GetFocusedSlotsIcon();
}
return null;
}
int GetActiveIndex()
{
return m_ActiveIndex;
}
void SetActiveIndex( int index )
{
m_ActiveIndex = index;
}
ScrollWidget GetSlotsScrollWidget()
{
return null;
}
ScrollWidget GetScrollWidget()
{
return null;
}
void UpdateRadialIcon()
{
if ( m_SlotIcon )
{
m_SlotIcon.GetRadialIconPanel().Show( false );
}
}
void SetSlotIcon( SlotsIcon icon )
{
m_SlotIcon = icon;
}
void SetDefaultFocus(bool while_micromanagment_mode = false)
{
m_ActiveIndex = 0;
}
void SetLastFocus()
{
m_ActiveIndex = 0;
m_FocusedColumn = 0;
if ( m_OpenedContainers.Count() > 0 )
{
m_ActiveIndex = m_OpenedContainers.Count() - 1;
}
}
void Unfocus()
{
}
void MoveGridCursor(int direction)
{
if ( direction == Direction.UP )
{
SetPreviousActive();
}
else if ( direction == Direction.DOWN )
{
SetNextActive();
}
else if ( direction == Direction.RIGHT )
{
SetNextRightActive();
}
else if ( direction == Direction.LEFT )
{
SetNextLeftActive();
}
UpdateSelectionIcons();
Inventory.GetInstance().UpdateConsoleToolbar();
}
void ScrollToActiveContainer()
{
ScrollWidget sw = GetScrollWidget();
if (sw)
{
ScrollToActiveContainer(sw);
}
#ifndef PLATFORM_CONSOLE
ScrollWidget ssw = GetSlotsScrollWidget();
if (ssw)
{
ScrollToActiveContainer(ssw);
}
#endif
}
void ScrollToActiveContainer(ScrollWidget sw)
{
if (!sw)
return;
float x, y, y_s;
float f_y,f_h;
float amount;
sw.GetScreenPos(x, y);
sw.GetScreenSize(x, y_s);
f_y = GetFocusedContainerYScreenPos(true);
f_h = GetFocusedContainerHeight(true);
float next_pos = f_y + f_h;
if (next_pos > (y + y_s))
{
amount = sw.GetVScrollPos() + next_pos - (y + y_s) + 2;
sw.VScrollToPos(amount);
}
else if (f_y < y)
{
amount = sw.GetVScrollPos() + f_y - y - 2;
sw.VScrollToPos(amount);
}
//CheckScrollbarVisibility();
}
void CheckScrollbarVisibility()
{
ScrollWidget sw = GetScrollWidget();
if (sw)
{
CheckScrollbarVisibility(sw);
}
#ifndef PLATFORM_CONSOLE
ScrollWidget ssw = GetSlotsScrollWidget();
if (ssw)
{
CheckScrollbarVisibility(ssw);
}
#endif
}
void CheckScrollbarVisibility(ScrollWidget sw)
{
if (!sw)
return;
if (!sw.IsScrollbarVisible())
{
sw.VScrollToPos01(0.0);
}
else if (sw.GetVScrollPos01() > 1.0)
{
sw.VScrollToPos01(1.0);
}
}
void Open()
{
m_Closed = false;
UpdateSelectionIcons();
}
void Close()
{
m_Closed = true;
UpdateSelectionIcons();
}
bool IsOpened()
{
return !m_Closed;
}
void SetOpenForSlotIcon(bool open, SlotsIcon icon = null/*m_SlotIcon*/)
{
if (!icon)
{
icon = m_SlotIcon;
}
if (icon)
{
icon.GetRadialIcon().Show(open);
icon.GetRadialIconClosed().Show(!open);
}
/*else
{
ErrorEx("Dbg No Icon");
}*/
}
void Toggle()
{
if (IsOpened())
{
Close();
}
else
{
Open();
}
SetOpenForSlotIcon(IsOpened());
}
float GetFocusedContainerHeight( bool contents = false )
{
float x, y, result;
if( GetFocusedContainer() )
y = GetFocusedContainer().GetFocusedContainerHeight( contents );
else if( GetRootWidget() )
GetRootWidget().GetScreenSize( x, y );
result = y;
if ( m_ActiveIndex == 0 )
{
if ( GetHeader() )
{
GetHeader().GetRootWidget().GetScreenSize( x, y );
result += y;
}
}
return result;
}
float GetFocusedContainerYPos( bool contents = false )
{
float x, y;
if( GetFocusedContainer() )
y = GetFocusedContainer().GetFocusedContainerYPos( contents );
else if( GetRootWidget() )
GetRootWidget().GetPos( x, y );
return y;
}
float GetFocusedContainerYScreenPos( bool contents = false )
{
float x, y, result;
if( GetFocusedContainer() )
y = GetFocusedContainer().GetFocusedContainerYScreenPos( contents );
else if( GetRootWidget() )
GetRootWidget().GetScreenPos( x, y );
result = y;
if ( m_ActiveIndex == 0 )
{
if ( GetHeader() )
{
GetHeader().GetRootWidget().GetScreenPos( x, y );
result = y;
}
}
return result;
}
int Count()
{
return m_Body.Count();
}
bool SelectItem()
{
if( GetFocusedContainer() )
return GetFocusedContainer().SelectItem();
return false;
}
bool Select()
{
if( GetFocusedContainer() )
return GetFocusedContainer().Select();
return false;
}
bool OnSelectButton()
{
if(GetFocusedContainer())
{
return GetFocusedContainer().OnSelectButton();
}
return false;
}
bool Combine()
{
if( GetFocusedContainer() )
return GetFocusedContainer().Combine();
return true;
}
bool TransferItemToVicinity()
{
if( GetFocusedContainer() )
return GetFocusedContainer().TransferItemToVicinity();
return false;
}
bool TransferItem()
{
if( GetFocusedContainer() )
return GetFocusedContainer().TransferItem();
return false;
}
bool InspectItem()
{
if( GetFocusedContainer() )
return GetFocusedContainer().InspectItem();
return false;
}
bool SplitItem()
{
if (GetFocusedContainer())
{
return GetFocusedContainer().SplitItem();
}
else
{
if (CanSplit())
{
ItemBase.Cast(GetFocusedItem()).OnRightClick();
}
}
return false;
}
bool EquipItem()
{
if (GetFocusedContainer())
return GetFocusedContainer().EquipItem();
if (CanEquip())
{
EntityAI ent = GetFocusedItem();
bool res = false;
if (ent)
{
res = g_Game.GetPlayer().PredictiveTakeOrSwapAttachment(ent);
if(!res)
{
res = g_Game.GetPlayer().PredictiveTakeEntityToInventory(FindInventoryLocationType.ATTACHMENT, ent);
}
}
return res;
}
return false;
}
bool CanOpenCloseContainer()
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanOpenCloseContainerEx(focusedEntity);
return CanOpenCloseContainerEx(focusedEntity);
}
return false;
}
bool CanOpenCloseContainerEx(EntityAI focusedEntity)
{
return false;
}
bool CanSplit()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanSplitEx(focusedEntity);
return CanSplitEx(focusedEntity);
}
return false;
}
bool CanSplitEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanSplitEx(focusedEntity);
return focusedEntity.CanBeSplit();
}
return false;
}
bool CanDrop()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanDropEx(focusedEntity);
return CanDropEx(focusedEntity);
}
return false;
}
bool CanDropEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
if (focusedEntity)
{
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
if (player)
{
return player.CanDropEntity(focusedEntity);
}
}
return false;
}
bool CanSwapOrTakeToHands()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanSwapOrTakeToHandsEx(focusedEntity);
return CanSwapOrTakeToHandsEx(focusedEntity);
}
return false;
}
bool CanSwapOrTakeToHandsEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
if (focusedEntity)
{
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
EntityAI entityInHands = player.GetItemInHands();
if (entityInHands)
{
InventoryLocation il = new InventoryLocation();
if (!GameInventory.CanSwapEntitiesEx(focusedEntity, entityInHands))
{
return GameInventory.CanForceSwapEntitiesEx( focusedEntity, null, entityInHands, il );
}
else
{
return true;
}
}
else
{
return player.GetInventory().CanAddEntityIntoHands(focusedEntity);
}
}
return false;
}
bool CanEquip()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanEquipEx(focusedEntity);
return CanEquipEx(focusedEntity);
}
return false;
}
bool CanEquipEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
bool found = false;
if (focusedEntity)
{
InventoryLocation il = new InventoryLocation;
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
found = player.GetInventory().FindFreeLocationFor(focusedEntity,FindInventoryLocationType.ATTACHMENT, il);
if (found && il.GetParent().GetInventory().FindAttachment(il.GetSlot()))
{
found = false;
}
else if (!found)
{
for (int i = 0; i < focusedEntity.GetInventory().GetSlotIdCount(); i++)
{
int slot_id = focusedEntity.GetInventory().GetSlotId(i);
EntityAI slot_item = player.GetInventory().FindAttachment( slot_id );
if (slot_item && player.GetInventory().CanSwapEntitiesEx( focusedEntity, slot_item ))
{
found = true;
break;
}
}
}
}
return found;
}
bool CanTakeToInventory()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanTakeToInventoryEx(focusedEntity);
return CanTakeToInventoryEx(focusedEntity);
}
return false;
}
bool CanTakeToInventoryEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
if (focusedEntity)
{
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
return player.GetInventory().CanAddEntityToInventory(focusedEntity,FindInventoryLocationType.CARGO);
}
return false;
}
bool CanCombine()
{
EntityAI focusedEntity = GetFocusedItem();
if (focusedEntity)
{
if (GetFocusedContainer())
return GetFocusedContainer().CanCombineEx(focusedEntity);
return CanCombineEx(focusedEntity);
}
return false;
}
bool CanCombineEx(EntityAI focusedEntity)
{
if (ItemManager.GetInstance().IsMicromanagmentMode())
return false;
if (focusedEntity)
{
EntityAI entityInHands = PlayerBase.Cast(g_Game.GetPlayer()).GetItemInHands();
if (focusedEntity != entityInHands)
{
return (ItemManager.GetCombinationFlags(entityInHands, focusedEntity) != 0);
}
}
return false;
}
bool CanCombineAmmo()
{
if( GetFocusedContainer() )
return GetFocusedContainer().CanCombineAmmo();
return false;
}
bool CanAddToQuickbarEx(EntityAI focusedEntity)
{
if ( ItemManager.GetInstance().IsMicromanagmentMode() )
return false;
if (focusedEntity)
{
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
if (focusedEntity.GetHierarchyRootPlayer() == player)
{
return true;
}
}
return false;
}
bool AddItemToQuickbarRadial(EntityAI itemToAssign)
{
if ( CanAddToQuickbarEx(itemToAssign) )
{
PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
DayZPlayerInventory dpi;
dpi = player.GetDayZPlayerInventory();
if (itemToAssign && dpi && !dpi.IsProcessing())
{
RadialQuickbarMenu.SetItemToAssign(itemToAssign);
//open radial quickbar menu
if (!g_Game.GetUIManager().IsMenuOpen(MENU_RADIAL_QUICKBAR))
{
RadialQuickbarMenu.OpenMenu(g_Game.GetUIManager().FindMenu(MENU_INVENTORY));
}
}
return true;
}
return false;
}
bool IsEmpty()
{
return m_OpenedContainers.Count() == 0;
}
bool IsItemActive()
{
if( GetFocusedContainer() )
return GetFocusedContainer().IsItemActive();
return false;
}
bool IsItemWithQuantityActive()
{
if( GetFocusedContainer() )
return GetFocusedContainer().IsItemWithQuantityActive();
return false;
}
EntityAI GetFocusedItem()
{
EntityAI item;
if( GetFocusedContainer() )
item = GetFocusedContainer().GetFocusedItem();
return item;
}
EntityAI GetFocusedContainerEntity()
{
EntityAI item;
if( GetFocusedContainer() )
item = GetFocusedContainer().GetFocusedContainerEntity();
return item;
}
int GetColumnCount()
{
return m_ColumnCount;
}
void SetColumnCount( int count )
{
m_ColumnCount = count;
}
int GetFocusedColumn()
{
return m_FocusedColumn;
}
void SetFocusedColumn( int column )
{
m_FocusedColumn = column;
}
override void UpdateInterval()
{
for ( int i = 0; i < m_Body.Count(); i++ )
{
if ( m_Body.Get( i ) )
m_Body.Get( i ).UpdateInterval();
}
CheckHeaderDragability();
}
override void SetLastActive()
{
if (m_IsActive)
{
m_IsActive = true;
if (m_OpenedContainers.Count())
{
SetLastFocus();
if (!m_OpenedContainers[m_ActiveIndex].IsActive())
{
for (int i = 0; i < m_OpenedContainers.Count() - 1; i++)
{
if (m_OpenedContainers[i].IsActive())
{
m_OpenedContainers[i].SetActive(false);
}
}
m_OpenedContainers[m_ActiveIndex].SetLastActive();
}
else
{
m_OpenedContainers[m_ActiveIndex].SetLastActive();
}
}
}
else
{
m_IsActive = true;
if (GetHeader())
{
GetHeader().SetActive(m_IsActive);
}
SetLastFocus();
if (m_OpenedContainers.Count())
{
Container c = Container.Cast(m_OpenedContainers.Get( m_ActiveIndex ));
if (c)
{
c.SetLastActive( );
}
}
}
}
override void SetFirstActive()
{
if (!m_IsActive)
{
SetActive(true);
}
else
{
if (m_OpenedContainers.Count())
{
SetDefaultFocus();
if (!m_OpenedContainers[m_ActiveIndex].IsActive())
{
for (int i = 1; i < m_OpenedContainers.Count(); i++)
{
if (m_OpenedContainers[i].IsActive())
{
m_OpenedContainers[i].SetActive(false);
}
}
m_OpenedContainers[m_ActiveIndex].SetActive(true);
}
else
{
m_OpenedContainers[m_ActiveIndex].SetFirstActive();
}
}
}
}
override void SetActive(bool active)
{
if (!active)
{
HideOwnedTooltip();
}
if (!active && !m_IsActive)
return;
super.SetActive( active );
if ( GetHeader() )
{
GetHeader().SetActive(active);
}
if (m_MainWidget.FindAnyWidget("SelectedContainer"))
{
m_MainWidget.FindAnyWidget("SelectedContainer").Show(active);
}
Container c;
if( active )
{
SetDefaultFocus();
if( m_OpenedContainers.Count() )
{
c = Container.Cast(m_OpenedContainers.Get( m_ActiveIndex ));
if (c)
{
c.SetActive(active);
}
}
}
else
{
c = GetFocusedContainer();
if (c)
{
GetFocusedContainer().SetActive(false);
}
Unfocus();
m_ActiveIndex = 0;
m_FocusedColumn = 0;
}
}
void UnfocusAll()
{
for ( int i = 0; i < Count(); i++ )
{
for ( int j = 0; j < ITEMS_IN_ROW; j++ )
{
SlotsIcon icon;
if (Get(i) && Get(i).GetMainWidget())
Get( i ).GetMainWidget().GetUserData(icon);
if (icon)
icon.GetCursorWidget().Show( false );
}
}
}
void UnfocusGrid()
{
if( GetFocusedContainer() )
{
m_FocusedColumn = 0;
GetFocusedContainer().UnfocusAll();
}
}
bool IsLastIndex()
{
return m_ActiveIndex == ( m_OpenedContainers.Count() - 1 );
}
bool IsFirstIndex()
{
return m_ActiveIndex == 0;
}
bool IsFirstContainerFocused()
{
return m_ActiveIndex == 0;
}
bool IsLastContainerFocused()
{
return m_ActiveIndex >= ( m_OpenedContainers.Count() - 1 );
}
void ResetFocusedContainer()
{
if ( GetFocusedContainer() )
{
GetFocusedContainer().ResetFocusedContainer();
}
m_ActiveIndex == 0;
}
void SetNextActive()
{
HideOwnedTooltip();
Container active;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active && active.IsActive())
{
active.SetNextActive();
}
if (!active || !active.IsActive())
{
Container next;
if (!IsLastContainerFocused())
{
m_ActiveIndex++;
next = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
next.SetActive(true);
}
else if (Container.Cast( GetParent() ))
{
SetActive(false);
}
else
{
SetActive(false);
SetFirstActive();
}
}
}
void SetPreviousActive(bool force = false)
{
HideOwnedTooltip();
Container active;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active && active.IsActive())
{
active.SetPreviousActive();
}
if (!active || !active.IsActive())
{
Container prev;
if (!IsFirstContainerFocused())
{
m_ActiveIndex--;
prev = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
prev.SetLastActive();
}
else if (Container.Cast( GetParent() ))
{
SetActive(false);
}
else
{
SetActive(false);
SetLastActive();
}
}
}
void SetNextRightActive()
{
Container active;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active)
{
active.SetNextRightActive();
}
}
void SetNextLeftActive()
{
Container active;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active)
{
active.SetNextLeftActive();
}
}
void SetSameLevelNextActive()
{
HideOwnedTooltip();
Container active, next;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active && active.IsActive())
{
SlotsIcon icon = GetFocusedSlotsIcon();
if (icon && icon.GetParent() && SlotsContainer.Cast(icon.GetParent()))
{
SlotsContainer sc = SlotsContainer.Cast(icon.GetParent());
AttachmentsGroupContainer agc = AttachmentsGroupContainer.Cast(sc.GetParent());
if (agc)
{
agc.SetActive(false);
}
}
active.SetSameLevelNextActive();
}
if (!active || !active.IsActive())
{
if (!IsLastContainerFocused())
{
m_ActiveIndex++;
next = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
next.SetActive(true);
}
else if (Container.Cast(GetParent()))
{
SetActive(false);
}
else
{
SetActive(false);
SetFirstActive();
}
}
}
void SetSameLevelPreviousActive()
{
HideOwnedTooltip();
Container active;
if (m_OpenedContainers.Count())
{
active = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
}
if (active && active.IsActive())
{
SlotsIcon icon = GetFocusedSlotsIcon();
if (icon && icon.GetParent() && SlotsContainer.Cast(icon.GetParent()))
{
SlotsContainer sc = SlotsContainer.Cast(icon.GetParent());
AttachmentsGroupContainer agc = AttachmentsGroupContainer.Cast(sc.GetParent());
if (agc)
{
agc.SetActive(false);
}
}
active.SetSameLevelPreviousActive();
}
if (!active || !active.IsActive())
{
Container prev;
if (!IsFirstContainerFocused())
{
m_ActiveIndex--;
prev = Container.Cast(m_OpenedContainers[m_ActiveIndex]);
prev.SetLastActive();
}
else if (Container.Cast( GetParent() ))
{
SetActive(false);
}
else
{
SetActive(false);
SetLastActive();
}
}
}
void RecomputeOpenedContainers()
{
m_OpenedContainers.Clear();
int i;
bool need_reset_focus = false;
Container c;
for (i = 0; i < m_Body.Count(); i++)
{
c = Container.Cast(m_Body.Get( i ));
if ( c )
{
c.RecomputeOpenedContainers();
if (c.IsDisplayable() && c.IsVisible())
{
m_OpenedContainers.Insert(c);
}
else if (c.IsActive())
{
c.SetActive(false);
need_reset_focus = true;
}
}
}
//In case of removing focused container or change order of containers
if (IsActive())
{
if (!need_reset_focus && ( m_ActiveIndex >= m_OpenedContainers.Count() || !m_OpenedContainers[m_ActiveIndex].IsActive() ))
{
need_reset_focus = true;
for (i = 0; i < m_OpenedContainers.Count(); i++)
{
if (m_OpenedContainers[i].IsActive())
{
need_reset_focus = false;
m_ActiveIndex = i;
}
}
}
if (need_reset_focus)
{
SetFirstActive();
}
}
}
override void SetLayoutName()
{
m_LayoutName = WidgetLayoutName.Container;
}
void Insert( LayoutHolder container, int pos = -1, bool immedUpdate = true )
{
if ( pos > -1 && pos < m_Body.Count() )
{
if ( pos <= m_ActiveIndex )
m_ActiveIndex++;
m_Body.InsertAt( container, pos );
}
else
m_Body.Insert( container );
if ( immedUpdate )
Refresh();
}
void Remove( LayoutHolder container )
{
if( m_Body )
{
int index = m_Body.Find( container );
if( index > -1 )
{
index = m_OpenedContainers.Find( container );
if (index > -1)
{
if (index <= m_ActiveIndex)
{
if (GetFocusedContainer() == container)
{
SetPreviousActive( true );
}
else
{
m_ActiveIndex--;
}
}
m_OpenedContainers.RemoveItem( container );
}
m_Body.RemoveItem( container );
}
}
Refresh();
}
LayoutHolder Get( int x )
{
return m_Body.Get( x );
}
override void Refresh()
{
for ( int i = 0; i < m_Body.Count(); i++ )
{
if( m_Body.Get( i ) )
m_Body.Get( i ).Refresh();
}
}
void UpdateBodySpacers()
{
for ( int i = 0; i < m_Body.Count(); i++ )
{
Container c = Container.Cast( m_Body.Get( i ) );
if( c && c.IsInherited( Container ) )
{
c.UpdateSpacer();
}
}
UpdateSpacer();
}
void HideContent( bool force_hide = false )
{
if( !m_ForcedHide )
{
m_ForcedHide = force_hide;
}
for(int i = 0; i < m_Body.Count(); i++)
{
if( m_Body.Get( i ) )
m_Body.Get( i ).OnHide();
}
}
void ShowContent( bool force_show = false )
{
if( force_show )
m_ForcedHide = false;
if( !m_ForcedHide )
{
for(int i = 0; i < m_Body.Count(); i++)
{
if( m_Body.Get( i ) )
m_Body.Get( i ).OnShow();
}
}
}
void SetForceShow(bool value)
{
m_ForcedShow = value;
}
override void UpdateSelectionIcons()
{
m_Parent.UpdateSelectionIcons();
}
void ExpandCollapseContainer(){}
}