Version 8.2
This commit is contained in:
@@ -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
|
Reference in New Issue
Block a user