A very early alpha version, no idea if it works nicely on Linux but seems to be OK on windows and OSX.
OSX, will look ok but needs a bit of work need to play with fonts and sizes
v1.0.1.7a
demo resize with splitter gadget
returns menu gadget id
v1.0.1.6a
Fixed major Flicker on resize, thanks Caronte3D
v1.0.1.3a
Added auto slide, hover activated by on mouse enter/ leave
V1.0.1.2b
Fixed a few bugs event are working now
changed it so you can set menu IDs and also fires click events for gadget in side bar
Added in the zorder so it can over lap windows only
Bugs:
[done]If we scale the window while the menu is hidden, the menu slide, but a glitch on the hide icon shows (slides) it again.
[done] Horrible Flickers on resize win11
osx tweaked
Code: Select all
;SideBarGadget v1.0.1.7a PB 5.73 -PB 6.02
;Sliding SideBar Menu
;Author Idle, slide in and out adapted from falsam (what me worry)
;licence MIT
;Windows DPI aware
DeclareModule SideBarGadget
Enumeration
#Sidebar_Small
#Sidebar_medium
#Sidebar_large
EndEnumeration
Prototype pCBSlide()
Declare SideBarGadget(GadgetNumber,window,w,h,FrontColor,BackColor,ActiveColor,bhover.i=#True,font.s="Tahoma",small=11,medium=20,large=36,statusbar=0)
Declare AddMenuItem(Gadget,lable.s,lable1.s,menuid.l=0,tooltip.s="",fontsize=#Sidebar_Small,ActiveColor=0,FrontColor=0,BackColor=0)
Declare SetMessage(Gadget,msg.s,color=0)
Declare.s StrChr(v.i)
Declare ForceGadgetZOrder(gadget, zorder = 0)
Declare SidebarGetMinWidth(gadget)
Declare SetSlideCallback(gadget,*pfn.pCBSlide)
EndDeclareModule
Module SideBarGadget
EnableExplicit
#SideBar_Menuclose = -1
#sideBar_menuOpened = 0
#SideBar_MenuOpen = 1
Structure sidebar_fonts
font.i[3]
color.i
EndStructure
Structure SideBar_ID
GadgetID.i
ParentID.i
Type.i
menuid.i
EndStructure
Structure SideBar_Menuitems Extends SideBar_ID
Lable.s
Tooltip.s
Font.i
FrontColor.i
BackColor.i
ActiveColor.i
EndStructure
Structure SideBar_Gadget Extends SideBar_ID
width.i
maxwidth.i
height.i
minHeight.i
minWidth.i
left.i
MinLeft.i
BackColor.i
FrontColor.i
ActiveColor.i
MenuState.i
ShowArrow.s
HideArrow.s
PinArrow.s
showhidegad.i
bHover.i
hovertime.i
dwell.i
titlesize.i
bclick.i
moving.i
WindowStatusBar .i ;window status bar number if any
SideMessageColor.i
SideMessage.s
*cbSlide.pCBSlide
Fonts.sidebar_fonts
List MenuItems.SideBar_Menuitems()
EndStructure
Declare Sidebar_StartSlide()
Declare SideBar_EventMenu()
Declare SideBar_Event()
Global NewList SideBarGadgets()
Procedure.s StrChr(v.i)
Protected high, low
If v < $10000
ProcedureReturn Chr(v)
Else
v - $10000
high = (v >> 10) + $D800
low = (v & 1023) + $DC00
ProcedureReturn Chr(high) + Chr(low)
EndIf
EndProcedure
Global sfx.d,sfy.d
sfx = DesktopResolutionX()
sfy = DesktopResolutionY()
Macro _GadgetWidth(gad)
(GadgetWidth(gad)*sfx)
EndMacro
Macro _GadgetHeight(gad)
(GadgetHeight(gad)*sfy)
EndMacro
CompilerIf #PB_Compiler_OS <> #PB_OS_Windows
Macro LockWindowUpdate_(ew) : EndMacro()
Macro UpdateWindow_(ew) : EndMacro()
CompilerEndIf
Procedure SideBar_Draw()
Protected timg,w,h,x,y,cy,ph =10
Protected gadget,*sidebar.SideBar_Gadget=0
Protected menuid,bfirst=1
Protected wid = WindowID(EventWindow())
LockWindowUpdate_(wid)
gadget = EventGadget()
If IsGadget(gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar <> 0
ForEach *sidebar\MenuItems()
If (IsGadget(*sidebar\MenuItems()\ParentID) And GadgetWidth(*sidebar\MenuItems()\ParentID) = 0)
timg = CreateImage(#PB_Any,1,1)
StartDrawing(ImageOutput(timg))
DrawingFont(FontID(*sidebar\MenuItems()\font))
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
w = DesktopUnscaledX(TextWidth(*sidebar\MenuItems()\lable)) *1.5
h = DesktopUnscaledY(TextHeight(*sidebar\MenuItems()\lable)) * 1.5
CompilerElse
w = DesktopUnscaledX(TextWidth(*sidebar\MenuItems()\lable))
h = DesktopUnscaledY(TextHeight(*sidebar\MenuItems()\lable))
CompilerEndIf
StopDrawing()
FreeImage(timg)
ResizeGadget(*sidebar\MenuItems()\ParentID,10,ph,w,h)
If *sidebar\MenuItems()\tooltip <> ""
GadgetToolTip(*sidebar\MenuItems()\ParentID, *sidebar\MenuItems()\tooltip)
EndIf
ph+h*1.5
If w >= *sidebar\maxwidth
*sidebar\maxwidth = w
EndIf
SetGadgetColor(*sidebar\MenuItems()\ParentID,#PB_Gadget_FrontColor,*sidebar\MenuItems()\frontcolor)
SetGadgetColor(*sidebar\MenuItems()\ParentID,#PB_Gadget_BackColor,*sidebar\MenuItems()\BackColor)
SetGadgetFont(*sidebar\MenuItems()\ParentID,FontID(*sidebar\MenuItems()\font))
SetGadgetData(*sidebar\MenuItems()\ParentID,*sidebar\MenuItems())
BindEvent(#PB_Event_Gadget,@SideBar_EventMenu(),*sidebar\ParentId,*sidebar\MenuItems()\ParentID)
Else
w = GadgetWidth(*sidebar\MenuItems()\ParentID) * 1.5
If w >= *sidebar\maxwidth
*sidebar\maxwidth = w
EndIf
SetGadgetText(*sidebar\MenuItems()\ParentID,*sidebar\MenuItems()\lable)
EndIf
Next
If Not IsGadget(*sidebar\ShowHideGad)
timg = CreateImage(#PB_Any,1,1)
StartDrawing(ImageOutput(timg))
DrawingFont(FontID(*sidebar\fonts\font[1]))
If *sidebar\ShowArrow = ""
*sidebar\ShowArrow = strchr($25B6)
EndIf
If *sidebar\HideArrow = ""
*sidebar\HideArrow = strchr($25C0)
EndIf
If *sidebar\PinArrow = ""
*sidebar\pinArrow = strchr($23F8)
EndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
w = TextWidth(*sidebar\ShowArrow) * 1.5
h = TextHeight(*sidebar\ShowArrow) * 1.5
CompilerElse
w = TextWidth(*sidebar\ShowArrow)
h = TextHeight(*sidebar\ShowArrow)
CompilerEndIf
StopDrawing()
FreeImage(timg)
If bfirst
*sidebar\titlesize = h
bfirst = 0
EndIf
OpenGadgetList(*sidebar\gadgetID)
*sidebar\ShowHideGad = HyperLinkGadget(-1,*sidebar\maxwidth-w-5,0,w,h,*sidebar\showArrow,*sidebar\ActiveColor)
CloseGadgetList()
SetGadgetColor(*sidebar\ShowHideGad,#PB_Gadget_FrontColor,*sidebar\FrontColor)
SetGadgetColor(*sidebar\ShowHideGad,#PB_Gadget_BackColor,*sidebar\BackColor)
SetGadgetFont(*sidebar\ShowHideGad,FontID(*sidebar\fonts\font[1]))
SetGadgetData(*sidebar\ShowHideGad,*sidebar)
GadgetToolTip(*sidebar\ShowHideGad, "Close Sidebar")
BindGadgetEvent(*sidebar\ShowHideGad,@Sidebar_StartSlide(),#PB_EventType_LeftClick)
Else
*sidebar\minWidth = _GadgetWidth(gadget)+(*sidebar\left*sfx)+5
*sidebar\minLeft = -(*sidebar\maxwidth-GadgetWidth(*sidebar\ShowHideGad)-10)
ResizeGadget(*sidebar\ShowHideGad,*sidebar\maxwidth-GadgetWidth(*sidebar\ShowHideGad)-5,0,GadgetWidth(*sidebar\ShowHideGad),GadgetHeight(*sidebar\ShowHideGad))
EndIf
Protected sh
sh = *sidebar\WindowStatusBar
ResizeGadget(*sidebar\gadgetID,*sidebar\left,0,*sidebar\maxwidth,WindowHeight(*sidebar\ParentId)-sh)
If *sidebar\SideMessage <> ""
If StartDrawing(CanvasOutput(*sidebar\gadgetID))
DrawingFont(FontID(*sidebar\fonts\font[0]))
w = TextWidth(*sidebar\SideMessage)
h = TextHeight(*sidebar\SideMessage)
cy = ((WindowHeight(*sidebar\ParentId)-sh) - DesktopUnscaledX(w)) * 0.5
If IsGadget(*sidebar\ShowHideGad)
y = GadgetY(*sidebar\ShowHideGad) + GadgetHeight(*sidebar\ShowHideGad)
EndIf
DrawingFont(FontID(*sidebar\fonts\font[0]))
x = DesktopScaledX(*sidebar\maxwidth-h)
y = DesktopScaledY(y)
h = DesktopScaledY(h)
w = DesktopScaledX(GadgetHeight(*sidebar\gadgetID))-y
Box(x-5,y,h+5,w,*sidebar\BackColor)
x = DesktopScaledX(*sidebar\maxwidth)
y = DesktopScaledY(cy)
DrawRotatedText(x,y,*sidebar\SideMessage,-90,*sidebar\SideMessageColor)
StopDrawing()
EndIf
EndIf
EndIf
EndIf
LockWindowUpdate_(0)
UpdateWindow_(wid)
EndProcedure
Procedure SideBar_EventMenu()
Protected gadget,*menu.SideBar_Menuitems
gadget = EventGadget()
If IsGadget(gadget)
*menu = GetGadgetData(gadget)
PostEvent(#PB_Event_Menu,EventWindow(),*menu\MenuID,#PB_All,*menu\ParentID)
PostEvent(#PB_Event_LeftClick,EventWindow(),*menu\ParentID)
EndIf
EndProcedure
Procedure SideBar_Event()
Protected window,Gadget,*sidebar.SideBar_Gadget
Protected mx,my,sx.f
If EventType() = #PB_EventType_MouseEnter Or EventType() = #PB_EventType_MouseLeave Or EventType() = #PB_EventType_LeftClick
gadget = EventGadget()
If IsGadget(gadget)
*sidebar = GetGadgetData(Gadget)
If *sidebar
If *sidebar\gadgetID = gadget
If *sidebar\bHover
mx = WindowMouseX(*sidebar\ParentId)
my = WindowMouseY(*sidebar\ParentId)
If EventType() = #PB_EventType_MouseEnter
If (mx > ((*sidebar\left*sfx)+_GadgetWidth(gadget)-30*sfx) And my > (*sidebar\titleSize*sfy))
If ElapsedMilliseconds() > *sidebar\hovertime
*sidebar\MenuState = 1
If IsGadget(*sidebar\ShowHideGad)
SetGadgetText(*sidebar\ShowHideGad,*sidebar\HideArrow)
GadgetToolTip(*sidebar\ShowHideGad, "Close Sidebar")
EndIf
Else
*sidebar\hovertime = ElapsedMilliseconds() + *sidebar\dwell
EndIf
EndIf
ElseIf EventType() = #PB_EventType_MouseLeave
If (mx > ((*sidebar\left*sfx)+(_GadgetWidth(gadget)-(30*sfx))) And my > (*sidebar\titleSize*sfy))
If ElapsedMilliseconds() > *sidebar\hovertime
*sidebar\MenuState = -1
If IsGadget(*sidebar\ShowHideGad)
SetGadgetText(*sidebar\ShowHideGad,*sidebar\ShowArrow)
GadgetToolTip(*sidebar\ShowHideGad, "Open Sidebar")
EndIf
Else
*sidebar\hovertime = ElapsedMilliseconds() + *sidebar\dwell
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
ForEach SideBarGadgets()
*sidebar.SideBar_Gadget = SideBarGadgets()
gadget = *sidebar\gadgetID
window = EventWindow()
If (IsGadget(gadget) And IsWindow(window))
If WindowWidth(window) < GadgetWidth(gadget)-60
Debug "Post Gadget"
PostEvent(#PB_Event_Gadget,EventWindow(),gadget,#PB_EventType_Resize)
EndIf
If WindowHeight(window)-*sidebar\WindowStatusBar < GadgetHeight(gadget) Or WindowHeight(window)-*sidebar\WindowStatusBar > GadgetHeight(gadget)
Debug "post Wind"
PostEvent(#PB_Event_Gadget,EventWindow(),gadget,#PB_EventType_Resize)
EndIf
EndIf
Next
EndIf
EndProcedure
Procedure SideBar_OpenClose()
Protected Gadget,*sidebar.SideBar_Gadget
Static x
If Not x
x = 1
EndIf
gadget = EventTimer()
If IsGadget(gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar\MenuState
If (*sidebar\left >= *sidebar\minLeft And *sidebar\MenuState = #SideBar_Menuclose)
If *sidebar\left < (*sidebar\minLeft+10)
*sidebar\left - 1
Else
*sidebar\left - 10
EndIf
;ResizeGadget(gadget, *sidebar\left , #PB_Ignore, #PB_Ignore, #PB_Ignore)
ResizeWindow(*sidebar\ParentId,#PB_Ignore, #PB_Ignore, #PB_Ignore,WindowHeight(*sidebar\ParentId)+x)
EndIf
If (*sidebar\left <= 0 And *sidebar\MenuState = #SideBar_MenuOpen)
If *sidebar\left > -10
*sidebar\left + 1
Else
*sidebar\left + 10
EndIf
;ResizeGadget(gadget,*sidebar\left, #PB_Ignore, #PB_Ignore, #PB_Ignore)
ResizeWindow(*sidebar\ParentId, #PB_Ignore, #PB_Ignore, #PB_Ignore,WindowHeight(*sidebar\ParentId)+x)
EndIf
x*-1
EndIf
EndIf
EndProcedure
Procedure Sidebar_StartSlide()
Protected gadget, *sidebar.SideBar_Gadget
gadget = EventGadget()
If IsGadget(gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar
*sidebar\MenuState * -1
If *sidebar\MenuState = 0
*sidebar\MenuState = -1
EndIf
If *sidebar\MenuState = -1
SetGadgetText(*sidebar\ShowHideGad,*sidebar\ShowArrow)
GadgetToolTip(*sidebar\ShowHideGad, "Open Sidebar")
Else
SetGadgetText(*sidebar\ShowHideGad,*sidebar\HideArrow)
GadgetToolTip(*sidebar\ShowHideGad, "Close Sidebar")
EndIf
SetActiveGadget(*sidebar\ShowHideGad)
EndIf
EndIf
EndProcedure
Procedure SetMessage(gadget,msg.s,color=0)
Protected *sidebar.SideBar_Gadget
If IsGadget(Gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar
*sidebar\SideMessage = msg
If color = 0
*sidebar\SideMessageColor = *sidebar\FrontColor
Else
*sidebar\SideMessageColor = color
EndIf
EndIf
EndIf
EndProcedure
Procedure AddMenuItem(Gadget,lable.s,lable1.s,menuid.l=0,tooltip.s="",fontsize=#Sidebar_Small,ActiveColor=0,FrontColor=0,BackColor=0)
Protected *sidebar.SideBar_Gadget
Static ct
If IsGadget(Gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar
AddElement(*sidebar\MenuItems())
*sidebar\MenuItems()\Lable = lable
If lable1 <> ""
*sidebar\MenuItems()\Lable + " " + lable1
EndIf
If fontsize < 3
*sidebar\MenuItems()\Font = *sidebar\Fonts\font[fontsize]
EndIf
If menuid
*sidebar\MenuItems()\menuid = menuid
Else
*sidebar\MenuItems()\menuid = ct
ct+1
EndIf
If FrontColor
*sidebar\MenuItems()\frontcolor = FrontColor
Else
*sidebar\MenuItems()\frontcolor = *sidebar\FrontColor
EndIf
If BackColor
*sidebar\MenuItems()\backcolor = BackColor
Else
*sidebar\MenuItems()\backcolor = *sidebar\BackColor
EndIf
If ActiveColor
*sidebar\MenuItems()\activecolor = activecolor
Else
*sidebar\MenuItems()\activecolor = *sidebar\activecolor
EndIf
*sidebar\MenuItems()\tooltip = tooltip
OpenGadgetList(*sidebar\gadgetID)
*sidebar\MenuItems()\ParentID = HyperLinkGadget(#PB_Any,0,0,0,0,*sidebar\MenuItems()\lable,*sidebar\MenuItems()\activecolor)
CloseGadgetList()
ProcedureReturn *sidebar\MenuItems()\ParentID
EndIf
EndIf
EndProcedure
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Procedure ForceGadgetZOrder(gadget, zorder = 0)
If IsGadget(gadget)
SetWindowLong_(GadgetID(gadget), #GWL_STYLE, GetWindowLong_(GadgetID(gadget), #GWL_STYLE) | #WS_CLIPSIBLINGS)
If zorder = 1
SetWindowPos_ (GadgetID (gadget), #HWND_BOTTOM, 0,0,0,0, #SWP_NOSIZE | #SWP_NOMOVE)
Else
SetWindowPos_ (GadgetID(gadget), #HWND_TOP, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
EndIf
EndIf
EndProcedure
CompilerElse
Procedure ForceGadgetZOrder(gadget, zorder = 0)
ProcedureReturn 1
EndProcedure
CompilerEndIf
Procedure SidebarGetMinWidth(gadget)
Protected *sidebar.SideBar_Gadget
If IsGadget(gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar
ProcedureReturn *sidebar\minWidth
EndIf
EndIf
EndProcedure
Procedure SetSlideCallback(gadget,*pfn.pCBSlide)
Protected *sidebar.SideBar_Gadget
If IsGadget(gadget)
*sidebar = GetGadgetData(gadget)
If *sidebar
*sidebar\cbSlide = *pfn
EndIf
EndIf
EndProcedure
Procedure SideBarGadget(GadgetNumber,window,w,h,FrontColor,BackColor,ActiveColor,bhover.i=#True,font.s="Tahoma",small=11,medium=20,large=36,statusbar=0)
Protected *sidebar.SideBar_Gadget = AllocateStructure(SideBar_Gadget)
Protected res
AddElement(SideBarGadgets())
SideBarGadgets() = *sidebar
If statusbar
*sidebar\WindowStatusBar = StatusBarHeight(statusbar)
EndIf
res = CanvasGadget(GadgetNumber,0,0,w,h-*sidebar\WindowStatusBar,#PB_Canvas_Container)
CloseGadgetList()
If GadgetNumber = #PB_Any
*sidebar\gadgetID = res
Else
*sidebar\gadgetID = GadgetNumber
EndIf
*sidebar\bHover = bhover
*sidebar\MenuState = #SideBar_Menuclose
*sidebar\BackColor = BackColor
*sidebar\FrontColor = FrontColor
*sidebar\ActiveColor = ActiveColor
*sidebar\ParentId = window
*sidebar\dwell = 0 ;hover time to use
*sidebar\fonts\font[0] = LoadFont(#PB_Any,font,small)
*sidebar\fonts\font[1] = LoadFont(#PB_Any,font,medium)
*sidebar\fonts\font[2] = LoadFont(#PB_Any,font,large)
SetGadgetData(*sidebar\gadgetID,*sidebar)
SetGadgetColor(*sidebar\gadgetID, #PB_Gadget_BackColor,BackColor)
SetGadgetColor(*sidebar\gadgetID, #PB_Gadget_FrontColor,FrontColor)
AddWindowTimer(window,*sidebar\gadgetID,2)
BindEvent(#PB_Event_Timer,@SideBar_OpenClose())
BindGadgetEvent(*sidebar\gadgetID,@SideBar_Draw(),#PB_EventType_Resize)
BindGadgetEvent(*sidebar\gadgetID,@SideBar_Event())
BindEvent(#PB_Event_SizeWindow,@SideBar_Event())
PostEvent(#PB_Event_Gadget,window,*sidebar\gadgetID,#PB_EventType_Resize)
ProcedureReturn *sidebar\gadgetID
EndProcedure
DisableExplicit
EndModule
CompilerIf #PB_Compiler_IsMainFile
UseModule SideBarGadget
#BlockListGadget = 301
#AllowListGadget = 302
#DataGadget =303
#MainStatusBar = 304
#SplitHoritontal = 305
#SplitVertical = 306
Global gwin,sb
Procedure Resize()
Protected cw,bh,hh,pad
pad = 5
gwx = WindowX(gwin)
gwy = WindowY(gwin)
gww = WindowWidth(gwin)
gwh = WindowHeight(gwin)
cw=gww/2 - pad
bh=gwh/2
hh = StatusBarHeight(#MainStatusBar) + (pad*2)
gwx = SidebarGetMinWidth(sb)
If gwx = 0
gwx=30*DesktopResolutionX()
EndIf
ResizeGadget(#SplitHoritontal,gwx,5,gwW-(gwx+5),gwh-hh)
SetGadgetItemAttribute(#DataGadget,0,#PB_Explorer_ColumnWidth,gww/4-2,0)
SetGadgetItemAttribute(#DataGadget,1,#PB_Explorer_ColumnWidth,gww/4-2,1)
SetGadgetItemAttribute(#DataGadget,2,#PB_Explorer_ColumnWidth,gww/4-2,2)
SetGadgetItemAttribute(#DataGadget,3,#PB_Explorer_ColumnWidth,gww/4-2,3)
SetGadgetItemAttribute(#DataGadget,4,#PB_Explorer_ColumnWidth,gww/4-6,4)
EndProcedure
Global sb,event
Global msg.s = "SideBarGadget v1.0.1.7a "
gwin = OpenWindow(-1,0,0,640,480,msg, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
SetWindowColor(gwin,$FCFCFC)
CreateStatusBar(#MainStatusBar, WindowID(gwin))
AddStatusBarField(#PB_Ignore)
AddStatusBarField(#PB_Ignore)
AddStatusBarField(#PB_Ignore)
AddStatusBarField(#PB_Ignore)
w = WindowWidth(gwin) - 50
h = WindowHeight(gwin)
ListViewGadget(#BlockListGadget,5,5,w/2-5,h/2-10)
ListViewGadget(#AllowListGadget,w/2+5,5,w/2-10,h/2-10)
SetGadgetColor(#AllowListGadget, #PB_Gadget_FrontColor ,RGB(0,192,0))
SetGadgetColor(#BlockListGadget,#PB_Gadget_FrontColor ,RGB(192,0,0))
EnableGadgetDrop(#AllowListGadget,#PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#BlockListGadget,#PB_Drop_Text, #PB_Drag_Copy)
ListIconGadget(#DataGadget,5,h/2,w,h/2,"URL",w/2-8,#PB_ListIcon_FullRowSelect | #PB_ListIcon_CheckBoxes)
AddGadgetColumn(#DataGadget,1,"IP address",w/4)
AddGadgetColumn(#DataGadget,2,"Time",w/4)
AddGadgetColumn(#DataGadget,3,"Renew",w/4)
ForceGadgetZOrder(#BlockListGadget,1)
ForceGadgetZOrder(#AllowListGadget,1)
ForceGadgetZOrder(#DataGadget,1)
StatusBarText(#MainStatusBar,0, "DNS 127.0.0.1 / 1.1.1.1")
StatusBarText(#MainStatusBar,1, "Blocked 19710 Total 33246")
StatusBarText(#MainStatusBar,2, "Allowed items 3127")
StatusBarText(#MainStatusBar,3, "Denied items 641")
SplitterGadget(#SplitVertical,0,0,w-50,h/2,#BlockListGadget,#AllowListGadget,#PB_Splitter_Vertical)
SplitterGadget(#SplitHoritontal,0,0,w-50,h-60,#SplitVertical,#DataGadget)
ForceGadgetZOrder(#SplitVertical,1)
ForceGadgetZOrder(#SplitHoritontal,1)
AddGadgetItem(#AllowListGadget,-1,"fr.purebasic.www")
AddGadgetItem(#AllowListGadget,-1,"com.bing.www")
AddGadgetItem(#BlockListGadget,-1,"com.windowsupdate.ctldl")
AddGadgetItem(#BlockListGadget,-1,"com.live.login")
AddGadgetItem(#BlockListGadget,-1,"com.microsoft.edge")
AddGadgetItem(#BlockListGadget,-1,"com.skype.edge.config")
sb = SideBarGadget(#PB_Any,gwin,200,600,$FCFCFC,$5C1200,$DA00,#True,"Segoe UI",11,24,36,#MainStatusBar)
AddMenuItem(sb," " + strchr($1F30E),"",1100,"Main Menu",#Sidebar_large)
AddMenuItem(sb,strChr($1F525),"Hot",1101,"hot stuff",#Sidebar_small)
AddMenuItem(sb,strchr($267E),"Info",1102)
AddMenuItem(sb,strchr($26CF),"Tools",1103)
AddMenuItem(sb,strChr($2699),"Settings",1104)
AddMenuItem(sb,strchr($2712),"Contact",1105)
AddMenuItem(sb,strchr($1F30e),"Network",1106)
SetMessage(sb,msg,RGB(0,255,0))
ForceGadgetZOrder(sb)
Resize()
BindEvent(#PB_Event_SizeWindow, @Resize(),gwin)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Debug "menu"
Debug EventMenu()
If EventData()
Debug GetGadgetText(EventData())
EndIf
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_DragStart
Text$ = GetGadgetItemText(EventGadget(), GetGadgetState(EventGadget()))
DragText(Text$)
RemoveGadgetItem(EventGadget(),GetGadgetState(EventGadget()))
Case #PB_EventType_LeftClick
Debug "click"
Debug GetGadgetText(EventGadget())
EndSelect
Case #PB_Event_GadgetDrop
AddGadgetItem(EventGadget(), -1, EventDropText())
EndSelect
Until Event = #PB_Event_CloseWindow
CompilerEndIf