Version 8.2

This commit is contained in:
2025-09-14 16:26:07 +02:00
parent 1558b452f4
commit 61f3e184c2

View File

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