Version 8.2
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
; ********************************************************************
|
; ********************************************************************
|
||||||
; Program: Thumbnails
|
; Program: Thumbnails
|
||||||
; Description: add a Thumbnails to select image
|
; Description: add a Thumbnails to select image
|
||||||
; Version: 8.1
|
; Version: 8.2
|
||||||
; Author: Thyphoon
|
; Author: Thyphoon
|
||||||
; Date: August, 2021
|
; Date: August, 2021
|
||||||
; License: Free, unrestricted, credit
|
; License: Free, unrestricted, credit
|
||||||
@@ -356,6 +356,7 @@ Module Thumbs
|
|||||||
CursorDeltaY.l
|
CursorDeltaY.l
|
||||||
ThumbsDeltaY.l
|
ThumbsDeltaY.l
|
||||||
ZoneClick.l ;1 ScrollBar 2;Thumbs
|
ZoneClick.l ;1 ScrollBar 2;Thumbs
|
||||||
|
LastIndexSelected.i ; Last Index Selected
|
||||||
|
|
||||||
;DPI Aware Value
|
;DPI Aware Value
|
||||||
_GadgetWidth.l
|
_GadgetWidth.l
|
||||||
@@ -495,9 +496,10 @@ Module Thumbs
|
|||||||
Debug "No Set CallBackLoadFromIndex"
|
Debug "No Set CallBackLoadFromIndex"
|
||||||
EndIf
|
EndIf
|
||||||
Cache::AutoLoadStart()
|
Cache::AutoLoadStart()
|
||||||
|
Else
|
||||||
|
Delay(50)
|
||||||
EndIf
|
EndIf
|
||||||
Delay(5)
|
Until *Gdt\Quit=#True
|
||||||
ForEver
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure LimitIndex(GadgetId.i,IndexMax.i=-1)
|
Procedure LimitIndex(GadgetId.i,IndexMax.i=-1)
|
||||||
@@ -544,14 +546,14 @@ Module Thumbs
|
|||||||
DeltaIndex=Int(*Gdt\ThumbsDeltaY/*Gdt\_Size)* *Gdt\NbH
|
DeltaIndex=Int(*Gdt\ThumbsDeltaY/*Gdt\_Size)* *Gdt\NbH
|
||||||
*Gdt\Index=*Gdt\Index-DeltaIndex
|
*Gdt\Index=*Gdt\Index-DeltaIndex
|
||||||
*Gdt\ThumbsDeltaY=*Gdt\ThumbsDeltaY%*Gdt\_Size
|
*Gdt\ThumbsDeltaY=*Gdt\ThumbsDeltaY%*Gdt\_Size
|
||||||
CreateThread(@UpdateIndexs(),GadgetId)
|
UpdateIndexs(GadgetId)
|
||||||
EndIf
|
EndIf
|
||||||
|
|
||||||
If *Gdt\ThumbsDeltaY<=-*Gdt\_Size
|
If *Gdt\ThumbsDeltaY<=-*Gdt\_Size
|
||||||
DeltaIndex=Abs(Int(*Gdt\ThumbsDeltaY/*Gdt\_Size)* *Gdt\NbH)
|
DeltaIndex=Abs(Int(*Gdt\ThumbsDeltaY/*Gdt\_Size)* *Gdt\NbH)
|
||||||
*Gdt\Index=*Gdt\Index+DeltaIndex
|
*Gdt\Index=*Gdt\Index+DeltaIndex
|
||||||
*Gdt\ThumbsDeltaY=*Gdt\ThumbsDeltaY%*Gdt\_Size
|
*Gdt\ThumbsDeltaY=*Gdt\ThumbsDeltaY%*Gdt\_Size
|
||||||
CreateThread(@UpdateIndexs(),GadgetId)
|
UpdateIndexs(GadgetId)
|
||||||
EndIf
|
EndIf
|
||||||
|
|
||||||
;Limit Scroll
|
;Limit Scroll
|
||||||
@@ -706,20 +708,20 @@ Module Thumbs
|
|||||||
If *Gdt\Index<*Gdt\IndexMax
|
If *Gdt\Index<*Gdt\IndexMax
|
||||||
*Gdt\ThumbsDeltaY=0
|
*Gdt\ThumbsDeltaY=0
|
||||||
*Gdt\Index=*Gdt\Index+*Gdt\NbH
|
*Gdt\Index=*Gdt\Index+*Gdt\NbH
|
||||||
CreateThread(@UpdateIndexs(),*Gdt\GadgetId)
|
UpdateIndexs(*Gdt\GadgetId)
|
||||||
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
||||||
EndIf
|
EndIf
|
||||||
Case #PB_Shortcut_PageUp
|
Case #PB_Shortcut_PageUp
|
||||||
If *Gdt\Index>0
|
If *Gdt\Index>0
|
||||||
*Gdt\ThumbsDeltaY=0
|
*Gdt\ThumbsDeltaY=0
|
||||||
*Gdt\Index=*Gdt\Index-*Gdt\NbH
|
*Gdt\Index=*Gdt\Index-*Gdt\NbH
|
||||||
CreateThread(@UpdateIndexs(),*Gdt\GadgetId)
|
UpdateIndexs(*Gdt\GadgetId)
|
||||||
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
||||||
EndIf
|
EndIf
|
||||||
EndSelect
|
EndSelect
|
||||||
Case #PB_EventType_Resize
|
Case #PB_EventType_Resize
|
||||||
InitGadgetValue(*Gdt\GadgetId)
|
InitGadgetValue(*Gdt\GadgetId)
|
||||||
CreateThread(@UpdateIndexs(),*Gdt\GadgetId)
|
UpdateIndexs(*Gdt\GadgetId)
|
||||||
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
||||||
Case #PB_EventType_LostFocus
|
Case #PB_EventType_LostFocus
|
||||||
*Gdt\StartScroll=#False
|
*Gdt\StartScroll=#False
|
||||||
@@ -773,15 +775,26 @@ Module Thumbs
|
|||||||
Protected ny.l=(my-*Gdt\_MarginV-*Gdt\ThumbsDeltaY)/(*Gdt\_Size+*Gdt\_MarginV)
|
Protected ny.l=(my-*Gdt\_MarginV-*Gdt\ThumbsDeltaY)/(*Gdt\_Size+*Gdt\_MarginV)
|
||||||
Protected index.l=nx+ny**Gdt\NbH
|
Protected index.l=nx+ny**Gdt\NbH
|
||||||
index=*Gdt\Index+index
|
index=*Gdt\Index+index
|
||||||
|
|
||||||
|
;If GetGadgetAttribute(*Gdt\GadgetId,#PB_Canvas_Modifiers)=#PB_Canvas_Shift
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LockMutex(*Gdt\ThumbPointerlistMutex)
|
LockMutex(*Gdt\ThumbPointerlistMutex)
|
||||||
Debug FindMapElement(*Gdt\ThumbPointerList(),Str(index))
|
Protected i.i
|
||||||
If FindMapElement(*Gdt\ThumbPointerList(),Str(index))
|
Debug "Select "+Str(*Gdt\LastIndexSelected)+" to "+Str(index)
|
||||||
|
For i=*Gdt\LastIndexSelected To index
|
||||||
|
Debug FindMapElement(*Gdt\ThumbPointerList(),Str(i))
|
||||||
|
If FindMapElement(*Gdt\ThumbPointerList(),Str(i))
|
||||||
*Ptr=*Gdt\ThumbPointerList()
|
*Ptr=*Gdt\ThumbPointerList()
|
||||||
If *Ptr>0
|
If *Ptr>0
|
||||||
*Ptr\Selected=1-*Ptr\Selected
|
*Ptr\Selected=1-*Ptr\Selected
|
||||||
Debug "["+Str(index)+"] Selected="+Str(*Ptr\Selected)
|
Debug "["+Str(i)+"] Selected="+Str(*Ptr\Selected)
|
||||||
EndIf
|
EndIf
|
||||||
EndIf
|
EndIf
|
||||||
|
Next
|
||||||
|
;EndIf
|
||||||
|
*Gdt\LastIndexSelected=index
|
||||||
UnlockMutex(*Gdt\ThumbPointerlistMutex)
|
UnlockMutex(*Gdt\ThumbPointerlistMutex)
|
||||||
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
SignalSemaphore(*Gdt\DrawSemaphore) ; Redraw Image
|
||||||
EndIf
|
EndIf
|
||||||
@@ -822,9 +835,9 @@ Module Thumbs
|
|||||||
InitGadgetValue(GadgetId)
|
InitGadgetValue(GadgetId)
|
||||||
If CallBack
|
If CallBack
|
||||||
SetCallBackLoadFromIndex(GadgetId,CallBack)
|
SetCallBackLoadFromIndex(GadgetId,CallBack)
|
||||||
CreateThread(@UpdateIndexs(),GadgetId)
|
UpdateIndexs(GadgetId)
|
||||||
EndIf
|
EndIf
|
||||||
CreateThread(@UpdateImage2Index(),GadgetId)
|
*Gdt\CallBackUpdateThread=CreateThread(@UpdateImage2Index(),GadgetId)
|
||||||
*Gdt\ThreadDrawCanvasImage=CreateThread(@DrawCanvasImage(),GadgetId)
|
*Gdt\ThreadDrawCanvasImage=CreateThread(@DrawCanvasImage(),GadgetId)
|
||||||
BindGadgetEvent(GadgetId,@ThumbsEvent(),#PB_All)
|
BindGadgetEvent(GadgetId,@ThumbsEvent(),#PB_All)
|
||||||
Else
|
Else
|
||||||
@@ -839,6 +852,7 @@ Module Thumbs
|
|||||||
*Gdt\Quit=#True
|
*Gdt\Quit=#True
|
||||||
WaitThread(*Gdt\ThreadDrawCanvasImage)
|
WaitThread(*Gdt\ThreadDrawCanvasImage)
|
||||||
FreeMutex(*Gdt\ThumbPointerListMutex)
|
FreeMutex(*Gdt\ThumbPointerListMutex)
|
||||||
|
WaitThread(*Gdt\CallBackUpdateThread)
|
||||||
FreeMutex(*Gdt\CallBackMutex)
|
FreeMutex(*Gdt\CallBackMutex)
|
||||||
FreeSemaphore(*Gdt\DrawSemaphore)
|
FreeSemaphore(*Gdt\DrawSemaphore)
|
||||||
FreeMap(*Gdt\ThumbPointerList())
|
FreeMap(*Gdt\ThumbPointerList())
|
||||||
@@ -880,7 +894,7 @@ Module Thumbs
|
|||||||
|
|
||||||
Next
|
Next
|
||||||
UnlockMutex(*Gdt\ThumbPointerlistMutex)
|
UnlockMutex(*Gdt\ThumbPointerlistMutex)
|
||||||
CreateThread(@UpdateIndexs(),GadgetId)
|
UpdateIndexs(GadgetId)
|
||||||
EndProcedure
|
EndProcedure
|
||||||
EndModule
|
EndModule
|
||||||
|
|
||||||
@@ -986,7 +1000,8 @@ CompilerIf #PB_Compiler_IsMainFile
|
|||||||
EndIf
|
EndIf
|
||||||
CompilerEndIf
|
CompilerEndIf
|
||||||
; IDE Options = PureBasic 6.21 (Windows - x64)
|
; IDE Options = PureBasic 6.21 (Windows - x64)
|
||||||
; CursorPosition = 3
|
; CursorPosition = 1000
|
||||||
|
; FirstLine = 953
|
||||||
; Folding = ------
|
; Folding = ------
|
||||||
; EnableXP
|
; EnableXP
|
||||||
; DPIAware
|
; DPIAware
|
Reference in New Issue
Block a user