Good morning, folks.
I wish I knew how to encode that effect:
to integrate it into my IDE
a sample code, would be welcome, thank you in advance
I've been looking for a long time, but I couldn't find an example.
Thanks
Move Tab in Panel (no Swap)
Re: Move Tab in Panel (no Swap)
@dobro,
Might I suggest that you look at the TabBarGadget which was written by STARGÅTE and is used in the IDE. See:
http://www.purebasic.fr/english/viewtop ... 99#p361799
Might I suggest that you look at the TabBarGadget which was written by STARGÅTE and is used in the IDE. See:
http://www.purebasic.fr/english/viewtop ... 99#p361799
DE AA EB
Re: Move Tab in Panel (no Swap)
Okay, thanks for that answer, I'll check it out.
Re: Move Tab in Panel (no Swap)
Here is a small code demonstrating this. Somewhere on the forum found a long time.
Code: Select all
EnableExplicit
#Win = 0
#Bar = 0
#TabsDistance = 2
#ColTab = 8421504
#ColSwp = 255
#ColBar = 16777215
Structure TAB
Wi .i
OffsetItem .i
OffsetMove .i
OffsetMoveMin.i
OffsetMoveMax.i
Text .s
EndStructure
Global NewList Tabs.TAB()
Global *TabSwap .TAB
Define *Tab .TAB
Define Event .i
Define BarWi .i
Define MouseX .i
Define MouseY .i
Define MouseDownX .i
Define MouseDownY .i
Define TabsWi .i
;Add tabs to list
AddElement (Tabs()) : Tabs()\Wi = 40 : Tabs()\Text = "" + ListIndex (Tabs()) + " - " + Tabs()\Wi
AddElement (Tabs()) : Tabs()\Wi = 140 : Tabs()\Text = "" + ListIndex (Tabs()) + " - " + Tabs()\Wi
AddElement (Tabs()) : Tabs()\Wi = 70 : Tabs()\Text = "" + ListIndex (Tabs()) + " - " + Tabs()\Wi
AddElement (Tabs()) : Tabs()\Wi = 130 : Tabs()\Text = "" + ListIndex (Tabs()) + " - " + Tabs()\Wi
;Calc bar width
ForEach Tabs()
BarWi + Tabs()\Wi + #TabsDistance
Next
BarWi - #TabsDistance
;Create window and bar
OpenWindow (#Win, 0, 0, BarWi + 20, 40, "Swap Tabs", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget (#Bar, 10, 10, BarWi , 20)
Procedure DrawBar ()
Define OffsetItem.i
Define *Tab .TAB
;Calc OffsetItem
If *TabSwap = 0
ForEach Tabs() : *Tab = @Tabs()
*Tab\OffsetItem = OffsetItem
OffsetItem + *Tab\Wi + #TabsDistance
Next
EndIf
StartDrawing (CanvasOutput (#Bar))
;Draw background
DrawingMode (#PB_2DDrawing_Default)
Box (0, 0, GadgetWidth (#Bar), GadgetHeight (#Bar), #ColBar)
;Draw tabs
ForEach Tabs() : *Tab = @Tabs()
If *Tab <> *TabSwap
DrawingMode (#PB_2DDrawing_Default)
Box (*Tab\OffsetItem + *Tab\OffsetMove, 0, *Tab\Wi, 20, #ColTab)
DrawingMode (#PB_2DDrawing_Transparent)
DrawText (*Tab\OffsetItem + *Tab\OffsetMove + 2, 2, *Tab\Text)
EndIf
Next
;Draw swapping tab
If *TabSwap
DrawingMode (#PB_2DDrawing_AlphaBlend)
Box (*TabSwap\OffsetItem + *TabSwap\OffsetMove, 0, *TabSwap\Wi, 20, $70000000 | #ColSwp)
DrawingMode (#PB_2DDrawing_Transparent)
DrawText (*TabSwap\OffsetItem + *TabSwap\OffsetMove + 2, 2, *TabSwap\Text)
EndIf
StopDrawing ()
EndProcedure
;Draw bar
DrawBar ()
;Eventloop
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget And EventGadget() = #Bar
MouseX = GetGadgetAttribute(0, #PB_Canvas_MouseX)
MouseY = GetGadgetAttribute(0, #PB_Canvas_MouseY)
;_________
;Left down
;¯¯¯¯¯¯¯¯¯
If EventType() = #PB_EventType_LeftButtonDown
;Store MouseDown
MouseDownX = MouseX
MouseDownY = MouseY
;Find TabSwap
ForEach Tabs() : *Tab = @Tabs()
If MouseX >= *Tab\OffsetItem And MouseX < *Tab\OffsetItem + *Tab\Wi
*TabSwap = *Tab
EndIf
Next
If *TabSwap
;Align all tabs to right (without TabSwap)
ForEach Tabs() : *Tab = @Tabs()
If *Tab = *TabSwap : Break : EndIf
*Tab\OffsetItem + *TabSwap\Wi + #TabsDistance
Next
;Calc OffsetMoveMin/Max
ForEach Tabs() : *Tab = @Tabs()
If *Tab <> *TabSwap
*Tab\OffsetMoveMin = TabsWi - *Tab\OffsetItem
*Tab\OffsetMoveMax = TabsWi - *Tab\OffsetItem + *TabSwap\Wi + #TabsDistance
TabsWi + *Tab\Wi + #TabsDistance
EndIf
Next
;Calc OffsetMoveMin/Max for TabSwap
*TabSwap\OffsetMoveMin = - *TabSwap\OffsetItem
*TabSwap\OffsetMoveMax = - *TabSwap\OffsetItem + TabsWi
EndIf
EndIf
;_______
;Left up
;¯¯¯¯¯¯¯
If EventType() = #PB_EventType_LeftButtonUp
;Sum-up Offsets and sort list
ForEach Tabs()
Tabs()\OffsetItem + Tabs()\OffsetMove
Tabs()\OffsetMove = 0
Next
SortStructuredList (Tabs(), #PB_Sort_Ascending, OffsetOf (Tab\OffsetItem), TypeOf (Tab\OffsetItem))
;Resets variables
TabsWi = 0
*TabSwap = 0
MouseDownX = 0
MouseDownY = 0
;Draw bar
DrawBar ()
EndIf
;__________
;Mouse move
;¯¯¯¯¯¯¯¯¯¯
If EventType() = #PB_EventType_MouseMove
If *TabSwap
ForEach Tabs() : *Tab = @Tabs()
;Calc OffsetMove
If *Tab = *TabSwap
*Tab\OffsetMove = MouseX - MouseDownX
Else
*Tab\OffsetMove = *Tab\OffsetItem - *TabSwap\OffsetItem - *TabSwap\OffsetMove
*Tab\OffsetMove - (*TabSwap\Wi + #TabsDistance)
*Tab\OffsetMove * (*TabSwap\Wi + #TabsDistance) / (*Tab\Wi + #TabsDistance)
EndIf
;Limit OffsetMove to minimum
If *Tab\OffsetMove < *Tab\OffsetMoveMin
*Tab\OffsetMove = *Tab\OffsetMoveMin
EndIf
;Limit OffsetMove to maximum
If *Tab\OffsetMove > *Tab\OffsetMoveMax
*Tab\OffsetMove = *Tab\OffsetMoveMax
EndIf
Next
EndIf
;Draw bar
DrawBar ()
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
; IDE Options = PureBasic 5.31 (Windows - x64)
; CursorPosition = 43
; FirstLine = 33
; Folding = -----
; EnableUnicode
; EnableXP
; EnableOnError
- Kwai chang caine
- Always Here
- Posts: 5353
- Joined: Sun Nov 05, 2006 11:42 pm
- Location: Lyon - France
Re: Move Tab in Panel (no Swap)
Thanks Mestnyi for give this nice code of splendid effect
In fact, i already see it, there is a long time, but forgetten
Obviously thanks to the author JOSH
http://www.purebasic.fr/english/viewtop ... 31#p462631
In fact, i already see it, there is a long time, but forgetten
Obviously thanks to the author JOSH
http://www.purebasic.fr/english/viewtop ... 31#p462631
The happiness is a road...
Not a destination
Not a destination
Re: Move Tab in Panel (no Swap)
It's very pretty!
but these are not tabs of Table (PanelGadget)
it's just the move of "button" recreated in a Canvas Gadget.
It's pretty, but it's not what I'm looking for....
I thought it was possible to move the tabs of a panel
I now know that only swap is possible with panels
the "movement of tabs," does not seem possible
Thanls
but these are not tabs of Table (PanelGadget)
it's just the move of "button" recreated in a Canvas Gadget.
It's pretty, but it's not what I'm looking for....
I thought it was possible to move the tabs of a panel
I now know that only swap is possible with panels
the "movement of tabs," does not seem possible
Thanls