PB TreeGadget ++
Posted: Sat Mar 04, 2023 10:01 pm
It maybe cross platform (Tested only with PB 6.xx x86 Windows 11 x64)
Edit mode :
- Return to accept
- Escape to cancel
Edit mode :
- Return to accept
- Escape to cancel
Code: Select all
If OpenWindow(0, 0, 0, 400, 510, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 380, 420,#PB_Tree_AlwaysShowSelection)
For a = 0 To 10
AddGadgetItem (0, -1, "Normal Item "+Str(a), 0, 0)
AddGadgetItem (0, -1, "Node "+Str(a), 0, 0)
AddGadgetItem(0, -1, "Sub-Item 1", 0, 1)
AddGadgetItem(0, -1, "Sub-Item 2", 0, 1)
AddGadgetItem(0, -1, "Sub-Item 3", 0, 2)
AddGadgetItem(0, -1, "Sub-Item 4", 0, 2)
AddGadgetItem (0, -1, "File "+Str(a), 0, 0)
Next
gy = GadgetY(0)
x = GadgetX(0)+10
ftrim = 3
LoadFont(0,"Georgia",18)
SetGadgetFont(0,FontID(0))
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
rowheight = TextHeight("Qj")+ftrim
StopDrawing()
StringGadget(1,0,0,0,0,"")
SetGadgetFont(1,FontID(0))
SetGadgetColor(1,#PB_Gadget_FrontColor,$0000FF)
ButtonGadget(2,10,470,100,24,"Font Browser")
ButtonGadget(3,110,470,100,24,"EDIT On/Off")
ButtonGadget(4,210,470,60,24,"FIX")
AddKeyboardShortcut(0,#PB_Shortcut_Return,10)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,20)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
Select EventMenu()
Case 10
If GetActiveGadget() = 1
SetGadgetText(0,GetGadgetText(1))
EndIf
Case 20
SetGadgetText(1,"")
ResizeGadget(1,0,0,0,0)
edit = 0
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftClick
my = WindowMouseY(0)
iy = Int((my - gy)/rowheight)
yy = iy*rowheight + gy
sub = GetGadgetItemAttribute(0, GetGadgetState(0), #PB_Tree_SubLevel)+1
If sub = 1
subp = 14
Else
subp = 17
EndIf
xx = x+(sub*subp)
If edit = 1 And GetGadgetState(0) <> oldgadgetstate
HideWindow(0,0)
text$ = GetGadgetItemText(0,GetGadgetState(0))
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
w = TextWidth(text$)
StopDrawing()
ResizeGadget(1,xx,yy,w+16,rowheight)
SetGadgetText(1,GetGadgetText(0))
SetActiveGadget(1)
xx = 0: yy = 0
oldgadgetstate = GetGadgetState(0)
EndIf
EndSelect
Case 2
Result = FontRequester("Tahoma", 12, #PB_FontRequester_Effects )
If Result
fName$ = SelectedFontName()
fSize = SelectedFontSize()
fColor = SelectedFontColor()
fStyle = SelectedFontStyle()
EndIf
LoadFont(0,fName$,fSize,fStyle)
SetGadgetFont(0,FontID(0))
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
rowheight = TextHeight("Qj")+ftrim
StopDrawing()
SetGadgetFont(1,FontID(0))
ResizeGadget(1,0,0,0,0)
SetGadgetColor(0,#PB_Gadget_FrontColor,fColor)
HideWindow(0,0)
Case 3
edit ! 1
If edit = 0
SetGadgetText(1,"")
ResizeGadget(1,0,0,0,0)
EndIf
Case 4
If ftrim = 2
ftrim = 3
ElseIf ftrim = 3
ftrim = 2
EndIf
StartDrawing(WindowOutput(0))
DrawingFont(FontID(0))
rowheight = TextHeight("Qj")+ftrim
StopDrawing()
ResizeGadget(1,0,0,0,0)
HideWindow(0,0)
EndSelect
EndSelect
Until Quit = 1
EndIf