Also ich angefangen mal zum Spass so nenn ganz banalen Bild Browser zu schreiben, der möglichst schnell startet (nicht so'n Rotz wie das überladene xnview) und alle Cores nutzt (geht zig mal schneller als ohne Threads)
Geht auch ziehmlich gut ab das Teil, aber ich hab keine andere Lösung gefunden als erst ButtonImageGadgets mit 1x1px Dummy Inhalt in einer Procdure zu erstellen, und von dort aus die Threads zu starten, die dann die Images per SetGadgetAttribute(#xy,#PB_Button_Image,ImageID(#xy)) auf die Buttons klatschen.
Ich habs sogar grade noch irgendwie hinkriegt das ein großes Bild angezeigt wird, wenn mann eines der 140x140 Preview Buttons anklickt (die in einer Scrollbar sind), Cursor Up,Down,Left,Right, Pos1,Ende, Bild auf, Bild Ab, alles passt soweit, Scrollbar macht was sie soll.
Was mich aber um den Verstand bringt ist diese ***#%*' GadgetList Fehlermeldungen usw
Ich hab da jetzt locker 4 Stunden rumprobiert, mit allen möglichen Tricksereien, und an allen möglichen Stellen.
Aber es will einfach nicht !
Entweder
a) Ich hab ein großes ImageGadget das kein ButtonImageGadget ist, und dafür werden alle 140x140 nicht mehr
in der GadgetList vom ScrollGadget gezeichnett, und überdecken anderes
b) Ich hab ein großes ButtonImageGadget mit dem ich nichts weiter anfangen kann, kein Vollbild, kein Drag hin & her in dem ScrollGadget (es gibt 2, 1 für die 140x140 Buttons ist #XS, und ein's für das große XSBig) weil ich ja ums verrecken nicht CloseGadgetList() ausführen darf, da danach OpenGadgetList(#XS) zwar keine Fehlermeldung ausgibt aber verdammt noch mal nicht will, oder sonst irgenwelche Probleme auftretten.
Ich hab nicht versucht aus Threads Gadgets zu erstellen, ich weiß das das nicht geht.
Aber irgendeine Lösung muss es geben !
Weil ein uraltes Programm wie VallenJPegger (von 2004 rum) das in irgendeiner
uralt Sprache geschrieben ist, 0 Probleme damit hat, echte ImageButtons hinzuklatschen und das im Thread (es ist halt nur einer) während mann schon navigieren kann, und ein ImageGadget Bild vor sich hat.
Es geht dort sogar etwas das sehr wenige Tools (und das zum Teil viel später) drauf haben.
Anlicken, Taste gedrückt halten, und stufenlos hin & herschieben in der Scroll Area oder im Vollbildmodus, daß war der Grund vor zig Jahren warum ich es xnview, ifanview, ACDSee usw vorgezogen hab.
Aber es startet nun mal sau lahm, und das Bild Decodier Modul ist nicht grade das schnellste.
Wie gesagt ich hab stunden rum probiert, ich komm nicht mehr weiter. Und wenn das so weitergeht, mit diesen Verdammten "Es gibt keine aktuelle GadgetListe" Fehlermeldungen, obwohl eine geöffnet ist, oder das sie nicht geöffnett wird, oder die alte verloren geht usw usw
Hau ich den PC noch zu brei
Ich kann nicht mal ein anderes Window öffnen lassen (dachte mir vl krieg ich so ein Vollbild hin) ohne daß dann die ScrollGadgetListe vom ersten Fenster auf einmal weck ist
Viel Glück, vl schaft es ja einer von euch. Mir langts für heute
Code: Alles auswählen
UseJPEG2000ImageDecoder() : UseJPEGImageDecoder() : UsePNGImageDecoder() : UseTIFFImageDecoder() : UseGIFImageDecoder()
UseTGAImageDecoder()
;/ WIN
Enumeration
#MainWin
EndEnumeration
;/ GADGET
Enumeration 6001
#List
#List2
#ActivePath
#XS
#XSBig
EndEnumeration
Structure Ext
JustStrings.s
EndStructure
Structure img
Pic.s
EndStructure
#FIcon = 6001
#Dummy = 6002
#Big = 6003
#XBig = 6004
#XX = 6005
#WKon = 722
Global Global_BigBSize = 344 ; 600 (Netbook Height) - TaskHeight (26) - 230 ListIconGadget
Global Dim Ext.Ext(20)
Global Global_Total_Ext
Global Dim img.img(5000)
Global Global_Cell = 140
Global Global_Pic_Count
Global Global_Abort
Global Global_ThreadsRunning
Global Global_Big_Image
Global Global_TH1 , Global_TH2 , Global_TH3 , Global_TH4
Procedure AddExtToExtStruc()
Ext.s = "jpg;jpeg;png;bmp;tif;tiff;gif;tga;tpic;jp2;j2k;jpf;jpg2;jpx;jpm"
tmp_max = CountString(Ext.s,";")
Redim Ext.Ext(tmp_max)
If tmp_max
For tmp_p = 1 To tmp_max +1
tmp_str1$ = StringField(Ext.s,tmp_p,";")
Ext(tmp_p-1)\JustStrings = tmp_str1$
Next
For tmp_p = 0 To tmp_max
Debug Ext(tmp_p)\JustStrings
Next
Global_Total_Ext = tmp_max
EndIf
EndProcedure
Procedure.S CalcImageSize(ProtTmpPic.i,MaximumW,MaximumH)
IMG_W = ImageWidth(ProtTmpPic) : IMG_H = ImageHeight(ProtTmpPic)
;Debug "INPUT W="+Str(IMG_W)+" | INPUT H="+Str(IMG_H)
If IMG_W > IMG_H
;Debug "BILD -> BREITER ALS HÖHER"
ASPECT.f=IMG_W/IMG_H
; Debug "ASPECT RATIO" : Debug ASPECT
;
New_H=MaximumW/ASPECT
;
; Debug "MAXIMUM WIDTH"
; Debug MaximumW
;
; Debug "NEW HEIGHT"
; Debug New_H
;
If New_H > MaximumH
Differenz=New_H-MaximumH
New_H=New_H-Differenz
New_W=MaximumW-Differenz
; Debug "NEUE HÖHE IST HÖHER ALS DER RAHMEN"
; Debug "DIFFERENZ="+Str(Differenz)
;
; Debug "NEUE MASSE NACH DER DIFFERENZ BERECHNUNG"
; Debug "W"+Str(New_W)+"xH"+Str(New_H)
Else
New_W=MaximumW
EndIf
ProcedureReturn Str(New_W)+":"+Str(New_H)
ElseIf IMG_W < IMG_H
;Debug "BILD -> HÖHER ALS BREITER"
;Debug "MAXIMUM HEIGHT"
;Debug MaximumH
;
ASPECT.f=IMG_H/IMG_W
;Debug "ASPECT RATIO" : Debug ASPECT
New_W=MaximumH/ASPECT
;Debug "MAXIMUM HEIGHT"
;Debug MaximumH
;
;Debug "NEW WIDTH"
;Debug New_W
If New_W > MaximumW
Differenz=New_W-MaximumW
New_W=New_W-Differenz
New_H=MaximumH-Differenz
;Debug "NEUE BREITE IST BREITER ALS DER RAHMEN"
;Debug "DIFFERENZ="+Str(Differenz)
;
;Debug "NEUE MASSE NACH DER DIFFERENZ BERECHNUNG"
;Debug "W"+Str(New_W)+"xH"+Str(New_H)
Else
New_H=MaximumH
;Debug "JOA="+New_H
EndIf
ProcedureReturn Str(New_W)+":"+Str(New_H)
Else
;Debug "BILD -> HAT SELBE HÖEHE UND BREITE"
If MaximumW > MaximumH
;Debug "RAHMEN BREITER ALS HOCH"
ProcedureReturn Str(MaximumW)+":"+Str(MaximumW)
ElseIf MaximumW < MaximumH
;Debug "RAHMEN HÖHER ALS BREIT"
ProcedureReturn Str(MaximumH)+":"+Str(MaximumH)
Else
; Debug "RAHMEN BREITE = HÖHE"
ProcedureReturn Str(MaximumW)+":"+Str(MaximumH)
EndIf
EndIf
EndProcedure
Procedure AddPic(egal)
Debug "ADD PIC"
PMAX = Global_Pic_Count
For PTMP = 0 To PMAX
Debug "xxx="+PTMP
Debug img(PTMP)\Pic
If Global_Abort
Break
EndIf
If LoadImage(PTMP,img(PTMP)\Pic.S)
If PTMP = 0
CopyImage(0,#Big)
Global_Big_Image = #True
EndIf
tmp_size$ = CalcImageSize(PTMP,Global_Cell,Global_Cell)
ResizeImage(PTMP,Val(StringField(tmp_size$,1,":")),Val(StringField(tmp_size$,2,":")),#PB_Image_Raw)
SetGadgetAttribute(PTMP,#PB_Button_Image,ImageID(PTMP))
Else
Debug "FAIL="+img(PTMP)\Pic
EndIf
Next
EndProcedure
Procedure AddPic2(Start)
Debug "ADD PIC"
PMAX = Global_Pic_Count
For PTMP = Start To PMAX Step 2
Debug "x2x="+PTMP
;Debug img(PTMP)\Pic
If Global_Abort
Break
EndIf
If LoadImage(PTMP,img(PTMP)\Pic.S)
If PTMP = 0
CopyImage(0,#Big)
Global_Big_Image = #True
EndIf
tmp_size$ = CalcImageSize(PTMP,Global_Cell,Global_Cell)
ResizeImage(PTMP,Val(StringField(tmp_size$,1,":")),Val(StringField(tmp_size$,2,":")),#PB_Image_Raw)
SetGadgetAttribute(PTMP,#PB_Button_Image,ImageID(PTMP))
Else
Debug "FAIL="+img(PTMP)\Pic
EndIf
Next
EndProcedure
Procedure AddPic3(Start)
Debug "ADD PIC"
PMAX = Global_Pic_Count
For PTMP = Start To PMAX Step 3
Debug "x3x="+PTMP
;Debug img(PTMP)\Pic
If Global_Abort
Break
EndIf
If LoadImage(PTMP,img(PTMP)\Pic.S)
If PTMP = 0
CopyImage(0,#Big)
Global_Big_Image = #True
EndIf
tmp_size$ = CalcImageSize(PTMP,Global_Cell,Global_Cell)
ResizeImage(PTMP,Val(StringField(tmp_size$,1,":")),Val(StringField(tmp_size$,2,":")),#PB_Image_Raw)
SetGadgetAttribute(PTMP,#PB_Button_Image,ImageID(PTMP))
Else
Debug "FAIL="+img(PTMP)\Pic
EndIf
Next
EndProcedure
Procedure AddPic4(Start)
Debug "ADD PIC"
PMAX = Global_Pic_Count
For PTMP = Start To PMAX Step 4
;Debug "x4x="+PTMP
;Debug img(PTMP)\Pic
If Global_Abort
Break
EndIf
If LoadImage(PTMP,img(PTMP)\Pic.S)
If PTMP = 0
CopyImage(0,#Big)
Global_Big_Image = #True
EndIf
tmp_size$ = CalcImageSize(PTMP,Global_Cell,Global_Cell)
ResizeImage(PTMP,Val(StringField(tmp_size$,1,":")),Val(StringField(tmp_size$,2,":")),#PB_Image_Raw)
SetGadgetAttribute(PTMP,#PB_Button_Image,ImageID(PTMP))
Else
Debug "FAIL="+img(PTMP)\Pic
EndIf
Next
EndProcedure
Procedure Refill(Dir$)
Debug "IN="+Dir$
If Right(Dir$,1) <> "\"
ProcedureReturn
EndIf
Global_Abort = 1
Repeat
Debug "Wait"
If IsThread(Global_TH1) = 0
Global_ThreadsRunning -1
EndIf
If IsThread(Global_TH2) = 0
Global_ThreadsRunning -1
EndIf
If IsThread(Global_TH3) = 0
Global_ThreadsRunning -1
EndIf
If IsThread(Global_TH4) = 0
Global_ThreadsRunning -1
EndIf
Delay(100)
Until Global_ThreadsRunning <= 0
Global_Abort = 0
Debug "WEITER"
ClearGadgetItems(#List)
ClearGadgetItems(#List2)
Dim img.img(1)
Redim img.img(5000)
For tmp_p = 0 To Global_Pic_Count
If IsImage(tmp_p)
FreeGadget(tmp_p)
FreeImage(tmp_p)
EndIf
Next
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,0)
Global_Pic_Count = 0
If ExamineDirectory(0,Dir$,"*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
AddGadgetItem(#List,-1,DirectoryEntryName(0)+"\",ImageID(#FIcon))
EndIf
Wend
FinishDirectory(0)
If ExamineDirectory(0,Dir$,"*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
tmp_ext$=LCase(GetExtensionPart(DirectoryEntryName(0)))
For tmp_p = 0 To Global_Total_Ext
If tmp_ext$ = Ext(tmp_p)\JustStrings
AddGadgetItem(#List2,-1,DirectoryEntryName(0))
img(Global_Pic_Count)\Pic = Dir$+DirectoryEntryName(0)
Result = ButtonImageGadget(Global_Pic_Count,x_pos,y_pos,Global_Cell,Global_Cell,ImageID(#Dummy),#PB_Button_Toggle)
Debug "RESULT="+Result
tmp_x + 1 : x_pos + Global_Cell
If tmp_x = 2
x_pos = 0 : tmp_x = 0 : y_pos + Global_Cell
EndIf
Global_Pic_Count + 1
Break
EndIf
Next
EndIf
Wend
FinishDirectory(0)
EndIf
If Global_Pic_Count
If Global_Pic_Count = 1
CreateThread(@AddPic(),#Null)
EndIf
Global_Pic_Count -1
If Global_Pic_Count = 0
TH = 1
EndIf
If Global_Pic_Count > 0 ; DUAL
TH = 2
EndIf
If Global_Pic_Count > 1 ; Tripple
TH = 3
EndIf
If Global_Pic_Count > 2 ; QUAD
TH = 4
EndIf
Global_ThreadsRunning = TH
Debug "-----------"
Debug "PICS="+Global_Pic_Count
Debug "THREADS="+TH
Debug "---------"
If TH = 2
Global_TH1 = CreateThread(@AddPic2(),0)
Global_TH2 = CreateThread(@AddPic2(),1)
EndIf
If TH = 3
Global_TH1 = CreateThread(@AddPic3(),0)
Global_TH2 = CreateThread(@AddPic3(),1)
Global_TH3 = CreateThread(@AddPic3(),2)
EndIf
If TH = 4
Global_TH1 = CreateThread(@AddPic4(),0)
Global_TH2 = CreateThread(@AddPic4(),1)
Global_TH3 = CreateThread(@AddPic4(),2)
Global_TH4 = CreateThread(@AddPic4(),3)
EndIf
SetGadgetAttribute(#XS,#PB_ScrollArea_InnerHeight,y_pos+Global_Cell)
EndIf
SetGadgetText(#ActivePath,Dir$)
EndIf
EndProcedure
Procedure.w MouseWheelDelta()
Protected x.w
x.w = ((EventwParam()>>16)&$FFFF)
ProcedureReturn -(x / 120)
EndProcedure
Procedure DirBack(IN.S)
If IN.S
tmp_max = CountString(IN.S,"\")
If tmp_max > 1
For tmp_p = 1 To tmp_max -1
tmp_str1$ = ""
tmp_str1$ + StringField(IN.S,tmp_p,"\")
If tmp_str1$
tmp_str2$+tmp_str1$+"\"
EndIf
Next
If FileSize(tmp_str2$) <> -2
tmp_str2$ = Left(IN.S,3) ; GO BACK TO DRIVE ROOT
If FileSize(tmp_str2$) <> -2 ; GO BACK TO C:\
tmp_str2$ = "C:\"
EndIf
EndIf
Refill(tmp_str2$)
ElseIf tmp_max = 1
tmp_str2$ = InputRequester("Change","to Drive",UCase(Left(IN.S,1)))
If tmp_str2$
tmp_str2$ = Left(tmp_str2$,1)
If FileSize(tmp_str2$+":\") = -2
Refill(tmp_str2$+":\")
EndIf
EndIf
EndIf
EndIf
EndProcedure
AddExtToExtStruc()
SystemParametersInfo_(#SPI_GETWORKAREA,0,@DesktopWorkArea.RECT,0)
task_h = GetSystemMetrics_(#SM_CYSCREEN)-DesktopWorkArea\Bottom
Debug "TASKH="+task_h
ExamineDesktops()
Debug "DEKH="+DesktopHeight(0)
win_h = DesktopHeight(0)-task_h
ScrollH = win_h - 230
Global_BigBSize = ScrollH + 20 ;( Scroll Area Balken unten)
Debug "BIGB="+Global_BigBSize
Debug "---"
PageJump = ScrollH / Global_Cell
Debug "---"
Debug "SCROLLH="+ScrollH
CreateImage(#Dummy,1,1)
OpenWindow(#MainWin,100,-3,1024,win_h-30,"New Prog",#PB_Window_SystemMenu|#PB_Window_SizeGadget)
AddWindowTimer(#MainWin,10,250)
ListIconGadget(#List,0,0,420,200,"",380,#PB_ListIcon_AlwaysShowSelection)
ListIconGadget(#List2,420,0,604,200,"File",480,#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect)
SetGadgetAttribute(#List,#PB_ListIcon_DisplayMode,#PB_ListIcon_List)
;SetGadgetAttribute(#List2,#PB_ListIcon_DisplayMode,#PB_ListIcon_Report)
SetGadgetAttribute(#List2,#PB_ListIcon_DisplayMode,#PB_ListIcon_List)
SetActiveGadget(#List)
If LoadImage(#FIcon,"D:\Cleopatra-00-Folder-icon.png") = 0
Debug "NO FOLDER ICON FOUND"
CreateImage(#FIcon,10,10)
EndIf
TextGadget(#ActivePath,10,400,0,0,"")
ScrollAreaGadget(#XSBig,300,200,Global_BigBSize+40,ScrollH,Global_BigBSize+200,Global_BigBSize*2,Global_Cell)
ButtonImageGadget(#Big,0,0,#WKon,Global_BigBSize,ImageID(#Dummy))
CloseGadgetList()
ScrollAreaGadget(#XS,0,200,300,ScrollH,280,3000,Global_Cell)
Refill("c:\")
SetGadgetItemState(#List,0,1)
SetGadgetItemState(#List2,0,1)
Debug "SCROLL="+GetGadgetAttribute(#XS,#PB_ScrollArea_Y)
MainSC = 0
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Timer And EventTimer() = 10
If Global_Big_Image = #True
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
Global_Big_Image = #False
EndIf
ElseIf Event =#WM_MOUSEWHEEL
Main_ActiveG = GetActiveGadget()
If Main_ActiveG <> #List And Main_ActiveG <> #List2
If MouseWheelDelta()=1
;Debug "MOUSE DOWN"
MainSC + 1
Else
;Debug "MOUSE UP"
MainSC - 1
;AddMore(0)
EndIf
EndIf
ElseIf Event = #WM_KEYDOWN
Main_KeyCode = EventwParam()
If Main_KeyCode = #VK_ESCAPE
HideGadget(#XS,0)
EndIf
If Main_KeyCode = #VK_BACK
DirBack(GetGadgetText(#ActivePath))
EndIf
If Main_KeyCode = #VK_Add
Debug "JOA"
EndIf
If Main_KeyCode = #VK_Subtract
Debug "JOA"
EndIf
If Main_KeyCode = #VK_RETURN And GetActiveGadget() = #List
If GetGadgetState(#List) >= 0
Dir$ = GetGadgetText(#ActivePath) : Entry$ = GetGadgetItemText(#List,GetGadgetState(#List))
Refill(Dir$+Entry$)
SetGadgetItemState(#List,2,1)
EndIf
EndIf
If Main_KeyCode = #VK_LEFT
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(ActiveG-1)
Debug "Prev Pic"
If LoadImage(#Big,img(ActiveG-1)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = ActiveG-1
SetActiveGadget(ActiveG-1)
SetGadgetItemState(#List2,ActiveG-1,1)
If GadgetX(ActiveG-1) = Global_Cell
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,GetGadgetAttribute(#XS,#PB_ScrollArea_Y)-Global_Cell)
EndIf
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Right
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(ActiveG+1)
Debug "Next Pic"
If LoadImage(#Big,img(ActiveG+1)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = ActiveG+1
SetActiveGadget(ActiveG+1)
SetGadgetItemState(#List2,ActiveG+1,1)
If GadgetX(ActiveG+1) = 0
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,GetGadgetAttribute(#XS,#PB_ScrollArea_Y)+Global_Cell)
EndIf
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Up
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(ActiveG-2)
Debug "Pic Up"
If LoadImage(#Big,img(ActiveG-2)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = ActiveG-2
SetActiveGadget(ActiveG-2)
SetGadgetItemState(#List2,ActiveG-2,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,GetGadgetAttribute(#XS,#PB_ScrollArea_Y)-Global_Cell)
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Down
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(ActiveG+2)
Debug "Pic Down"
If LoadImage(#Big,img(ActiveG+2)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = ActiveG+2
SetActiveGadget(ActiveG+2)
SetGadgetItemState(#List2,ActiveG+2,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,GetGadgetAttribute(#XS,#PB_ScrollArea_Y)+Global_Cell)
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Home
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(0)
Debug "FIRST PIC"
If LoadImage(#Big,img(0)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = 0
SetActiveGadget(0)
SetGadgetItemState(#List2,0,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,0)
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_End
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001 And IsGadget(Global_Pic_Count)
Debug "LAST PIC"
If LoadImage(#Big,img(Global_Pic_Count)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = Global_Pic_Count
SetActiveGadget(Global_Pic_Count)
SetGadgetItemState(#List2,Global_Pic_Count,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,Global_Cell * LastClicked / 2)
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Prior
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001
Main_PG = ActiveG - (PageJump * 2)
Debug Main_PG
If IsGadget(Main_PG) = 0
Main_PG = 0
EndIf
If IsGadget(Main_PG)
Debug "Page UP"
If LoadImage(#Big,img(Main_PG)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = Main_PG
SetActiveGadget(Main_PG)
SetGadgetItemState(#List2,Main_PG,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,Global_Cell * LastClicked / 2)
EndIf
EndIf
EndIf
EndIf
If Main_KeyCode = #VK_Next
ActiveG = GetActiveGadget()
If ActiveG > -1 And ActiveG < 6001
Main_PG = ActiveG + (PageJump * 2)
Debug Main_PG
If IsGadget(Main_PG) = 0
Main_PG = Global_Pic_Count
EndIf
If IsGadget(Main_PG)
Debug "Page DOWN"
If LoadImage(#Big,img(Main_PG)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = Main_PG
SetActiveGadget(Main_PG)
SetGadgetItemState(#List2,Main_PG,1)
SetGadgetAttribute(#XS,#PB_ScrollArea_Y,Global_Cell * LastClicked / 2)
EndIf
EndIf
EndIf
EndIf
ElseIf Event = #PB_Event_Gadget
EventGadget = EventGadget()
If EventGadget = #List And EventType() = #PB_EventType_LeftDoubleClick
Dir$ = GetGadgetText(#ActivePath) : Entry$ = GetGadgetItemText(#List,GetGadgetState(#List))
Refill(Dir$+Entry$)
If IsGadget(0)
SetActiveGadget(0)
EndIf
EndIf
If EventGadget > -1 And EventGadget < 6001
Debug EventGadget
If IsImage(EventGadget) And EventGadget <> LastClicked
If LoadImage(#Big,img(EventGadget)\Pic.S)
tmp_sizeX$ = CalcImageSize(#Big,#WKon,Global_BigBSize)
ResizeImage(#Big,Val(StringField(tmp_sizeX$,1,":")),Val(StringField(tmp_sizeX$,2,":")))
SetGadgetAttribute(#Big,#PB_Button_Image,ImageID(#Big))
LastClicked = EventGadget
EndIf
EndIf
EndIf
If EventGadget = #Big
HideGadget(#XS,1)
LoadImage(#XBig,img(LastClicked)\Pic)
SetGadgetAttribute(#XX,#PB_Button_Image,ImageID(#XBig))
HideGadget(#XX,0)
EndIf
EndIf
If Event = #PB_Event_CloseWindow
Break
EndIf
ForEver