Advertisement
Foghost

Untitled

Apr 10th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. local PANEL = { }
  2.  
  3. function PANEL:Init( )
  4. self:SetSkin( Pointshop2.Config.DermaSkin )
  5. self:SetContentAlignment( 4 )
  6.  
  7.  
  8. derma.SkinHook( "Layout", "PointshopMenuButton", self )
  9. end
  10.  
  11. function PANEL:PerformLayout( )
  12. if self:GetSkin( ) then
  13. self:SetFont( self:GetSkin( ).ButtonFont or "DermaDefault" )
  14. end
  15.  
  16. self:SetWide( self:GetParent( ):GetWide( ) )
  17.  
  18. if not self.Image then return end
  19.  
  20. if self:IsActive( ) or self.Hovered then
  21. self.Image:SetImageColor( self:GetSkin( ).Highlight )
  22. self:SetColor( self:GetSkin( ).Highlight )
  23. else
  24. self.Image:SetImageColor( self:GetSkin( ).NormalBtn )
  25. self:SetColor( self:GetSkin( ).NormalBtn )
  26. end
  27.  
  28. self.Image:SetSize( 32, 32 )
  29. self.Image:SetPos( 10, self:GetTall( ) / 2 - self.Image:GetTall( ) / 2 )
  30. end
  31.  
  32. function PANEL:ApplySchemeSettings( )
  33. self:SetContentAlignment( 4 )
  34.  
  35. local ExtraInset = 20
  36.  
  37. if ( self.Image ) then
  38. ExtraInset = ExtraInset + self.Image:GetWide()
  39. end
  40.  
  41. self:SetTextInset( ExtraInset, 0 )
  42.  
  43. local w, h = self:GetContentSize()
  44. self:SetTall( h + 30 )
  45.  
  46. DLabel.ApplySchemeSettings( self )
  47. end
  48.  
  49. Derma_Hook( PANEL, "Paint", "Paint", "PointshopMenuButton" )
  50.  
  51. derma.DefineControl( "DPointshopMenuButton", "", PANEL, "DTab" )
  52.  
  53. local PANEL = { }
  54.  
  55. function PANEL:Init( )
  56. self:SetSkin( Pointshop2.Config.DermaSkin )
  57.  
  58. self.tabScroller:Remove( ) --dont need it
  59. self.tabScroller = nil
  60.  
  61. self.leftBar = vgui.Create( "DScrollPanel", self )
  62. self.leftBar:Dock( LEFT )
  63. self.leftBar:SetWide( 245 )
  64. self.leftBar:SetPadding( 10 )
  65. Derma_Hook( self.leftBar, "Paint", "Paint", "InnerPanel" )
  66.  
  67. local container = vgui.Create( "DSizeToContents", self.leftBar )
  68. container:Dock( TOP )
  69. function container:PerformLayout()
  70. self:SizeToChildren( false, true )
  71. self:SetTall( self:GetTall( ) + 10 )
  72. end
  73.  
  74. self.buttons = vgui.Create( "DIconLayout", container )
  75. self.buttons:DockMargin( 10, 10, 10, 10 )
  76. self.buttons:SetSpaceY( 10 )
  77. self.buttons:Dock( TOP )
  78. end
  79.  
  80. function PANEL:OnTabChanged( )
  81. --for override
  82. end
  83.  
  84. function PANEL:SetActiveTab( tab )
  85. DPropertySheet.SetActiveTab( self, tab )
  86. self:OnTabChanged( tab )
  87. for k, v in pairs( self.Items ) do
  88. if v.Tab == tab then
  89. if v.Panel.OnActivate then
  90. v.Panel:OnActivate( )
  91. end
  92. end
  93. end
  94. end
  95.  
  96. function PANEL:Clear( )
  97. self:SetActiveTab( nil )
  98. self.animFade = Derma_Anim( "Fade", self, self.CrossFade )
  99. for k, v in pairs( self.Items ) do
  100. v.Tab:Remove( )
  101. self.Items[k] = nil
  102. end
  103. for k, v in pairs( self.buttons:GetChildren( ) ) do
  104. v:GetPanel( ):Remove( )
  105. v:Remove( )
  106. end
  107. self:InvalidateLayout( true )
  108. end
  109.  
  110. function PANEL:PerformLayout( )
  111. local ActiveTab = self:GetActiveTab()
  112. local Padding = self:GetPadding()
  113. if not ActiveTab then
  114. return
  115. end
  116.  
  117. self.buttons:PerformLayout( )
  118.  
  119. ActiveTab:InvalidateLayout( true )
  120. local ActivePanel = ActiveTab:GetPanel()
  121.  
  122. for k, v in pairs( self.Items ) do
  123. if v.Tab:GetPanel( ) == ActivePanel then
  124. v.Tab:GetPanel( ):SetVisible( true )
  125. --v.Tab:SetZPos( 100 )
  126. else
  127. v.Tab:GetPanel( ):SetVisible( false )
  128. --v.Tab:SetZPos( 1 )
  129. end
  130.  
  131. v.Tab:ApplySchemeSettings( )
  132. end
  133.  
  134. ActivePanel:InvalidateLayout( )
  135. ActivePanel:SetTall( self:GetTall( ) )
  136.  
  137. -- Give the animation a chance
  138. self.animFade:Run( )
  139. end
  140.  
  141. function PANEL:AddSheet( )
  142. error( "pls dont" )
  143. end
  144.  
  145. function PANEL:addMenuEntry( label, material, panel )
  146. if not IsValid( panel ) then
  147. error( "Invalid argument #3 given to addMenuEntry, expected Panel, got nil", 1 )
  148. return
  149. end
  150.  
  151. local Sheet = {}
  152.  
  153. Sheet.Name = label;
  154.  
  155. Sheet.Tab = self.buttons:Add( "DPointshopMenuButton" )
  156. Sheet.Tab:Setup( label, self, panel, material )
  157. Sheet.Tab:SetWide( self.buttons:GetWide( ) )
  158.  
  159. Sheet.Panel = panel
  160. Sheet.Panel.NoStretchX = NoStretchX
  161. Sheet.Panel.NoStretchY = NoStretchY
  162. Sheet.Panel:SetVisible( false )
  163.  
  164. panel:SetParent( self )
  165. panel:Dock( FILL )
  166.  
  167. table.insert( self.Items, Sheet )
  168.  
  169. if ( !self:GetActiveTab() ) then
  170. self:SetActiveTab( Sheet.Tab )
  171. Sheet.Panel:SetVisible( true )
  172. end
  173.  
  174. return Sheet;
  175. end
  176.  
  177. function PANEL:CloseTab( )
  178. end
  179.  
  180. function PANEL:SetupCloseButton( )
  181. end
  182.  
  183. function PANEL:Paint( w, h )
  184. end
  185.  
  186. derma.DefineControl( "DPointshopMenuedTab", "", PANEL, "DPropertySheet" )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement