Der Code wurde abgeschnitten. Deswegen hier nun die dritte Fortsetzung:
Code: Alles auswählen
Procedure AdvImgReq_SetFont( *AIR, FntName.s, FntHeight.l, FntFlags.l = 0 )
*TAIR.AdvImgReq = *AIR
If *TAIR\PreviewFont.l > 0
FreeFont(*TAIR\PreviewFont.l)
EndIf
*TAIR\PreviewFont.l = LoadFont(#PB_Any, FntName.s, FntHeight.l, FntFlags.l)
EndProcedure
Procedure AdvImgReq_SetPreviewViewMode( *AIR, I )
*TAIR.AdvImgReq = *AIR
If I = 1
If *TAIR\ViewMode = 1
AdvImgReq_SwitchView( *TAIR, 0 )
EndIf
Else
If *TAIR\ViewMode = 0
AdvImgReq_SwitchView( *TAIR, 1 )
EndIf
If I = 2
ChangeListIconGadgetDisplay( *TAIR\Win\ExplorerList, #PB_ListIcon_LargeIcon )
EndIf
If I = 3
ChangeListIconGadgetDisplay( *TAIR\Win\ExplorerList, #PB_ListIcon_SmallIcon )
EndIf
If I = 4
ChangeListIconGadgetDisplay( *TAIR\Win\ExplorerList, #PB_ListIcon_List )
EndIf
If I = 5
ChangeListIconGadgetDisplay( *TAIR\Win\ExplorerList, #PB_ListIcon_Report )
EndIf
*TAIR\LastExplorerListDisplayMode = I
EndIf
For J = 1 To 5
If J = I
SetMenuItemState( *TAIR\Win\Menu, *TAIR\Win\Menu + J, 1 )
Else
SetMenuItemState( *TAIR\Win\Menu, *TAIR\Win\Menu + J, 0 )
EndIf
Next
EndProcedure
Procedure AdvImgReq_OpenImageForFile( *AIR, *RFile )
*TAIR.AdvImgReq = *AIR
*ReqFile.AdvImgReq_File = *RFile
FileExtension.s = LCase(Mid(*ReqFile\Filename, Len(*ReqFile\Filename)-3,4))
If FileExtension.s = ".bmp" Or FileExtension.s = ".ico" Or FileExtension.s = ".jpg" Or FileExtension.s = ".jpeg" Or FileExtension.s = ".tga" Or FileExtension.s = ".pcx" Or FileExtension.s = ".gif" Or FileExtension.s = ".png"
MakePreview.b = 1
Else
MakePreview.b = 0
EndIf
If MakePreview.b = 1
FileHandle = OpenFile(#PB_Any, *ReqFile\Filename )
MakePreview.b = 0
If IsFile(FileHandle)
CloseFile(FileHandle)
MakePreview.b = 1
Else
EndIf
EndIf
If MakePreview.b = 1
*ReqFile\ImageHandle.l = LoadImage( #PB_Any, *ReqFile\Filename, #PB_Image_DisplayFormat )
If *ReqFile\ImageHandle = 0
*ReqFile\ExistsImage = 0
MakePreview.b = 0
Else
If ImageID(*ReqFile\ImageHandle.l) = 0
*ReqFile\ExistsImage = 0
MakePreview.b = 0
EndIf
EndIf
If MakePreview.b = 1
TestScales.b = 2
While TestScales.b > 0
AdvImgReq_FlagX = ImageWidth(*ReqFile\ImageHandle.l)
AdvImgReq_FlagY = ImageHeight(*ReqFile\ImageHandle.l)
MaxHeight.l = AdvImgReq_PreviewSizeY - AdvImgReq_PreviewInfoHeight - 4
AdvImgReq_Utils_GetMaxSize(AdvImgReq_PreviewSizeX - 4, AdvImgReq_PreviewSizeY - 4)
sx.l = Int(AdvImgReq_FlagX)
sy.l = Int(AdvImgReq_FlagY)
If TestScales.b = 2
ResizeImage( *ReqFile\ImageHandle.l, sx.l, sy.l, #PB_Image_Smooth )
ElseIf TestScales.b = 1
ResizeImage( *ReqFile\ImageHandle.l, sx.l, sy.l, #PB_Image_Raw )
EndIf
;*ReqFile\ImageGadget = ImageGadget( #PB_Any, (AdvImgReq_PreviewSizeX-4)/2-sx.l/2, MaxHeight.l/2-sy.l/2, sx.l, sy.l, ImageID(*ReqFile\ImageHandle), #PB_Image_Border )
If ImageID(*ReqFile\ImageHandle.l) = 0
*ReqFile\ExistsImage = 0
Else
*ReqFile\ExistsImage = 1
TestScales.b = 0
EndIf
TestScales.b = TestScales.b - 1
Wend
EndIf
EndIf
*ReqFile\OpenedImage = 1
EndProcedure
Procedure AdvImgReq_AddFile( *AIR, Filename.s )
*TAIR.AdvImgReq = *AIR
; OpenGadgetList( *TAIR\Win\PreviewArea )
;ContainerStyle.l = #PB_Container_Flat
ContainerStyle.l = 0
OnlyFilename.s = StringField( Filename.s, CountString(Filename.s, "\")+1, "\")
*NewFile.AdvImgReq_File = AllocateMemory(SizeOf(AdvImgReq_File))
*NewFile\PreviewMode = #AdvImgReq_Mode_Init
*NewFile\ExistsImage = 0
*NewFile\Selected = 0
*NewFile\OpenedImage = 0
*NewFile\Filename = Filename
;AdvImgReq_OpenImageForFile( *TAIR, *NewFile )
; *NewFile\Container = ContainerGadget(#PB_Any, 0, 0, AdvImgReq_PreviewSizeX, AdvImgReq_PreviewSizeY, ContainerStyle.l)
; *NewFile\FileText = TextGadget(#PB_Any, 0, AdvImgReq_PreviewSizeY - AdvImgReq_PreviewInfoHeight, AdvImgReq_PreviewSizeX, AdvImgReq_PreviewInfoHeight, OnlyFilename.s, #PB_Text_Center | #PB_Text_Border)
; SetGadgetColor( *NewFile\FileText, #PB_Gadget_BackColor, RGB(255, 255, 255) )
; SetGadgetColor( *NewFile\FileText, #PB_Gadget_FrontColor, RGB(0, 0, 0) )
*NewFile\NextFile = *TAIR\LastFile
*TAIR\LastFile = *NewFile
EndProcedure
Procedure AdvImgReq_GetFileFromPosition( *AIR, MX.l, MY.l )
*TAIR.AdvImgReq = *AIR
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
If MX.l > *File\ClientPosX And MX.l < *File\ClientPosX + *File\ClientSizeX
If MY.l > *File\ClientPosY And MY.l < *File\ClientPosY + *File\ClientSizeY
ProcedureReturn(*File)
EndIf
EndIf
*ManageFile = *File\NextFile
Wend
ProcedureReturn 0
EndProcedure
Procedure AdvImgReq_FileSelectReverse( *AIR )
*TAIR.AdvImgReq = *AIR
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
If *File\Selected = 0
*File\Selected = 1
*TAIR\LastSelectedFile = *File
ElseIf *File\Selected = 1
*File\Selected = 0
EndIf
*ManageFile = *File\NextFile
Wend
ItemCount.l = CountGadgetItems(*TAIR\Win\ExplorerList)
For I = 0 To ItemCount.l
ItmGlbFile.s = *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0)
ItmState.l = GetGadgetItemState(*TAIR\Win\ExplorerList, I)
ItmSelected.b = 0
If ItmState.l & #PB_Explorer_Selected
ItmSelected.b = 1
;AdvImgReq_SelectFileByName( *TAIR, *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0) )
EndIf
If ItmSelected = 0
DoState.l = #LVIS_SELECTED
ElseIf ItmSelected = 1
DoState.l = 0
EndIf
ExItem.LVITEM
ExItem\mask = #LVIF_STATE
ExItem\stateMask = #LVIS_SELECTED
ExItem\state = DoState
SendMessage_(GadgetID(*TAIR\Win\ExplorerList), #LVM_SETITEMSTATE, I, @ExItem)
SetActiveGadget(*TAIR\Win\ExplorerList)
Next
AdvImgReq_UpdateFileInput( *TAIR )
EndProcedure
Procedure AdvImgReq_SelectAllFiles( *AIR, SelMode.b )
*TAIR.AdvImgReq = *AIR
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
*File\Selected = SelMode
*ManageFile = *File\NextFile
Wend
If SelMode = 0
DoState.l = 0
ElseIf SelMode = 1
DoState.l = #LVIS_SELECTED
EndIf
ExItem.LVITEM
ExItem\mask = #LVIF_STATE
ExItem\stateMask = #LVIS_SELECTED
ExItem\state = DoState.l
SendMessage_(GadgetID(*TAIR\Win\ExplorerList), #LVM_SETITEMSTATE, -1, @ExItem)
SetActiveGadget(*TAIR\Win\ExplorerList)
AdvImgReq_UpdateFileInput( *TAIR )
EndProcedure
Procedure AdvImgReq_SelectFile( *AIR, *AIR_File, SelStd.b = 1 )
*TAIR.AdvImgReq = *AIR
*File.AdvImgReq_File = *AIR_File
If SelStd.b = 2
If *File\Selected = 1
SelStd.b = 0
Else
SelStd.b = 1
EndIf
EndIf
*File\Selected = SelStd.b
*TAIR\LastSelectedFile = *File
;Debug GetGadgetText(*TAIR\Win\ExplorerList)
If *TAIR\ViewMode = 0
ItemCount.l = CountGadgetItems(*TAIR\Win\ExplorerList)
For I = 0 To ItemCount.l
ItmGlbFile.s = *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0)
ItmState.l = GetGadgetItemState(*TAIR\Win\ExplorerList, I)
ItmSelected.b = 0
If ItmState.l & #PB_Explorer_Selected
ItmSelected.b = 1
;AdvImgReq_SelectFileByName( *TAIR, *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0) )
EndIf
If ItmSelected.b = 1
;Debug ItmGlbFile.s
EndIf
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
If *File\Filename = ItmGlbFile.s
If *File\Selected = 1
ExItem.LVITEM
ExItem\mask = #LVIF_STATE
ExItem\stateMask = #LVIS_SELECTED
ExItem\state = #LVIS_SELECTED
SendMessage_(GadgetID(*TAIR\Win\ExplorerList), #LVM_SETITEMSTATE, I, @ExItem)
SetActiveGadget(*TAIR\Win\ExplorerList)
; Debug *File\Filename + "=>" + ItmGlbFile.s+";;"+Str(ItmSelected.b)
ElseIf *File\Selected = 0
ExItem.LVITEM
ExItem\mask = #LVIF_STATE
ExItem\stateMask = #LVIS_SELECTED
ExItem\state = 0
SendMessage_(GadgetID(*TAIR\Win\ExplorerList), #LVM_SETITEMSTATE, I, @ExItem)
SetActiveGadget(*TAIR\Win\ExplorerList)
EndIf
EndIf
*ManageFile = *File\NextFile
Wend
Next
EndIf
AdvImgReq_UpdateFileInput( *TAIR )
EndProcedure
Procedure AdvImgReq_SelectFileByName( *AIR, Filen.s, SelStd.b = 1 )
*TAIR.AdvImgReq = *AIR
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
If *File\Filename = Filen.s
AdvImgReq_SelectFile( *AIR, *File, SelStd.b )
EndIf
*ManageFile = *File\NextFile
Wend
EndProcedure
;AdvImgReq_SelectFileByName( *TAIR, GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0) )
Procedure AdvImgReq_UpdateFilePositions( *AIR )
ProcedureReturn
*TAIR.AdvImgReq = *AIR
PosX.l = 0
PosY.l = 0
MaxHeight.l = 0
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
;ResizeGadget( *File\Container, PosX, PosY, #PB_Ignore, #PB_Ignore )
PosX = PosX + AdvImgReq_PreviewSizeX
If PosX + AdvImgReq_PreviewSizeX > 0;GetGadgetAttribute( *TAIR\Win\PreviewArea, #PB_ScrollArea_InnerWidth)
PosX = 0
PosY = PosY + AdvImgReq_PreviewSizeY
MaxHeight = PosY + AdvImgReq_PreviewSizeY
EndIf
*ManageFile = *File\NextFile
Wend
; SetGadgetAttribute( *TAIR\Win\PreviewArea, #PB_ScrollArea_InnerHeight, MaxHeight )
EndProcedure
Procedure AdvImgReq_FilterExplorerGadget( *AIR, gadget.l )
*TAIR.AdvImgReq = *AIR
WorkPos = 0
ItmCnt.l = CountGadgetItems(gadget.l)
For u = 0 To ItmCnt.l
DoRemove.b = 1
*Pattern.AdvImgReq_Pattern = *TAIR\PatternList[*TAIR\UsePattern]
For I = 0 To #AdvImgReq_PatternExtensionMax - 1
If Not *Pattern\Extension[I] = ""
If AdvImgReq_Utils_CheckRegexFile( GetGadgetItemText(gadget.l, WorkPos, 0), *Pattern\Extension[I]) = 1
DoRemove.b = 0
EndIf
EndIf
Next
If DoRemove.b = 1
RemoveGadgetItem(gadget.l, WorkPos)
WorkPos = WorkPos - 1
EndIf
WorkPos = WorkPos + 1
Next
EndProcedure
Procedure AdvImgReq_OpenFileProperities( *AIR )
*TAIR.AdvImgReq = *AIR
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
*DoNextFile = *File\NextFile
If *File\Selected = 1
If *TAIR\LastSelectedFile = *File
verb$ = "properties"
SEI.SHELLEXECUTEINFO
SEI\cbSize = SizeOf(SHELLEXECUTEINFO)
SEI\fMask = #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_INVOKEIDLIST | #SEE_MASK_FLAG_NO_UI
SEI\lpVerb = @verb$
SEI\lpDirectory = 0
SEI\nShow = 0
SEI\hInstApp = 0
SEI\lpIDList = 0
SEI\lpParameters = 0
UseFile$ = *File\Filename
SEI\lpFile = @UseFile$
ShellExecuteEx_(@SEI)
EndIf
EndIf
*ManageFile = *DoNextFile
Wend
EndProcedure
Procedure AdvImgReq_SetPath( *AIR, Path.s, mode.b, addtostack.l = #True )
AdvImgReq_OpenImages_Pause( *AIR )
*TAIR.AdvImgReq = *AIR
GoPath.s = Path.s
*TAIR\WorkPath = GoPath.s
If Not mode.b = 0
SetGadgetText( *TAIR\Win\Explorer, GoPath.s )
EndIf
If Not mode.b = 1
SetGadgetText( *TAIR\Win\StringPath, GoPath.s )
EndIf
;If *TAIR\ViewMode = 1
SetGadgetText( *TAIR\Win\ExplorerList, GoPath.s )
;EndIf
AdvImgReq_ClearFiles( *TAIR )
;If *TAIR\ViewMode = 0
If Not GoPath.s = ""
ExDir = ExamineDirectory( #PB_Any, GoPath.s, "*.*" )
If ExDir
While NextDirectoryEntry(ExDir)
If DirectoryEntryType(ExDir) = #PB_DirectoryEntry_File
; For I = 0 To *TAIR\PatternInList - 1
; *Pattern.AdvImgReq_Pattern = *TAIR\PatternList[I]
; Next
EntryName.s = DirectoryEntryName(ExDir)
DoAdd.b = 0
*Pattern.AdvImgReq_Pattern = *TAIR\PatternList[*TAIR\UsePattern]
For I = 0 To #AdvImgReq_PatternExtensionMax - 1
If Not *Pattern\Extension[I] = ""
If AdvImgReq_Utils_CheckRegexFile(EntryName, *Pattern\Extension[I]) = 1
DoAdd.b = 1
EndIf
EndIf
Next
;Debug *Pattern\Caption
If DoAdd.b = 1
AdvImgReq_AddFile( *TAIR, GoPath.s + EntryName.s )
EndIf
EndIf
Wend
FinishDirectory(ExDir)
AdvImgReq_FilterExplorerGadget( *TAIR, *TAIR\Win\ExplorerList )
AdvImgReq_UpdateFileInput( *TAIR )
EndIf
EndIf
;AdvImgReq_UpdateFilePositions( *TAIR )
; If AdvImgReq_UpdatePreviewImage( *AIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *AIR )
; EndIf
*TAIR\UpdatePreviewArea_DrawFull = 1
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
;EndIf
AdvImgReq_OpenImages_Continue( *AIR )
If addtostack.l = 1
DisableGadget(*TAIR\Win\ToolButton[0], #False)
*TAIR\PathStackPosition = *TAIR\PathStackPosition + 1
*TAIR\PathStack[*TAIR\PathStackPosition] = GoPath.s
If *TAIR\PathStackPosition > *TAIR\PathStacks.l
*TAIR\PathStacks.l = *TAIR\PathStackPosition
EndIf
DisableGadget(*TAIR\Win\ToolButton[1], #True)
*TAIR\PathStacks.l = *TAIR\PathStackPosition
EndIf
EndProcedure
Procedure AdvImgReq_ClearPattern( *AIR )
*TAIR.AdvImgReq = *AIR
For I = 0 To *TAIR\PatternInList - 1
If Not *TAIR\PatternList[I] = 0
FreeMemory( *TAIR\PatternList[I] )
*TAIR\PatternList[I] = 0
EndIf
Next
*TAIR\PatternInList = 0
EndProcedure
Procedure AdvImgReq_AddPattern( *AIR, PattStr.s )
*TAIR.AdvImgReq = *AIR
CountPattern.l = CountString(PattStr.s, ";") + 1
For GoPattern.l = 1 To CountPattern.l
PIL.l = *TAIR\PatternInList
*Pattern.AdvImgReq_Pattern = AllocateMemory(SizeOf(AdvImgReq_Pattern))
UnitPatStr.s = StringField( PattStr.s, GoPattern.l, ";" )
CountInformations = CountString(UnitPatStr.s, "|") + 1
For GoInf = 1 To CountInformations
If GoInf = 1
*Pattern\Caption = StringField( UnitPatStr.s, GoInf, "|" )
Else
*Pattern\Extension[GoInf-2] = StringField( UnitPatStr.s, GoInf, "|" )
EndIf
Next
;PatCaption.s = StringField( UnitPatStr.s, 1, "|" )
;PatExtension.s = StringField( UnitPatStr.s, 2, "|" )
;*Pattern\Caption = PatCaption.s
;*Pattern\Extension = PatExtension.s
*TAIR\PatternList[PIL] = *Pattern
*TAIR\PatternInList = *TAIR\PatternInList + 1
Next
EndProcedure
Procedure AdvImgReq_UpdatePatternAtGui( *AIR )
*TAIR.AdvImgReq = *AIR
ClearGadgetItemList(*TAIR\Win\Combo_FileType)
For I = 0 To *TAIR\PatternInList - 1
*Pattern.AdvImgReq_Pattern = *TAIR\PatternList[I]
AddGadgetItem(*TAIR\Win\Combo_FileType, I, *Pattern\Caption)
Next
EndProcedure
Procedure AdvImgReq_SelectPattern( *AIR, SelID.l )
*TAIR.AdvImgReq = *AIR
SetGadgetState( *TAIR\Win\Combo_FileType , SelID.l )
*TAIR\UsePattern = SelID
;GetGadgetState(*TAIR\Win\Combo_FileType)
EndProcedure
Procedure.l AdvImgReq_IsRun( *AIR )
*TAIR.AdvImgReq = *AIR
If *TAIR\mode = #AdvImgReq_Mode_Update
ProcedureReturn 1
EndIf
If *TAIR\Thread_OpenImages_Mode = #AdvImgReq_Mode_Close
ProcedureReturn 0
EndIf
ProcedureReturn 0
EndProcedure
Procedure.b AdvImgReq_UpdatePreviewImage( *AIR )
*TAIR.AdvImgReq = *AIR
;If *TAIR\DoInMainUpdate = #AdvImgReq_DoMode_UpdatePreview
; ProcedureReturn 0
;EndIf
;AdvImgReq_OpenImages_Pause( *AIR )
;*TAIR\DoInMainUpdate = #AdvImgReq_DoMode_UpdatePreview
;*TAIR\Thread_OpenImages_PauseMode = 1
If *TAIR\PreviewArea_Width < 15 Or *TAIR\PreviewArea_Height < 15
ProcedureReturn 0
EndIf
ColWhite.l = RGB(255, 255, 255)
ColBlack.l = RGB(0, 0, 0)
ColSelected.l = RGB(193, 218, 230)
StartDrawing(ImageOutput(*TAIR\PreviewImage))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(*TAIR\PreviewFont))
Box(0, 0, *TAIR\PreviewArea_Width, *TAIR\PreviewArea_Height, ColWhite)
PosX.l = 0
PosY.l = 0
Rows.l = 0
*LastFile = 0
ShowRowsFrom = GetGadgetState(*TAIR\Win\PreviewScrollbar.l)
ShowRowsLength = 3
DPAddX = 0
DPAddY = 0
While *TAIR\RowHeights[DoDowner] > 0 And DoDowner < ShowRowsFrom
DPAddY = DPAddY - *TAIR\RowHeights[DoDowner]
DoDowner = DoDowner + 1
Wend
MaxTxtHeight.l = 0
*ManageFile = *TAIR\LastFile
While Not *ManageFile = 0
*File.AdvImgReq_File = *ManageFile
DPX.l = PosX + 5
DPY.l = PosY + 5 + DPAddY
DrawThisItem.b = 1
If *TAIR\UpdatePreviewArea_DrawFull = 0
If DPY > *TAIR\PreviewArea_Height
DrawThisItem.b = 0
EndIf
If DPY < 0
DrawThisItem.b = 0
EndIf
EndIf
; If *TAIR\UpdatePreviewArea_DrawFull = 0 Or *TAIR\UpdatePreviewArea_DrawFull = 1
; DPX
Filename.s = *File\Filename
OnlyFilename.s = StringField( Filename.s, CountString(Filename.s, "\")+1, "\")
If DrawThisItem.b = 1
DrawingMode(#PB_2DDrawing_Transparent)
If *File\Selected = 1
Box(DPX - 2, DPY - 2, AdvImgReq_PreviewSizeX + 4, AdvImgReq_PreviewSizeY + 2, ColSelected)
If *TAIR\LastSelectedFile = *File
If DPX > 0 And DPY > 0 And DPX + AdvImgReq_PreviewSizeX - 1 < *TAIR\PreviewArea_Width And DPY + AdvImgReq_PreviewSizeY - 3 < *TAIR\PreviewArea_Height
AdvImgReq_Utils_DottedBox(DPX, DPY, AdvImgReq_PreviewSizeX - 1, AdvImgReq_PreviewSizeY - 3, ColBlack)
EndIf
EndIf
EndIf
If *File\ExistsImage = 1
;ResizeGadget( *File\Container, PosX, PosY, #PB_Ignore, #PB_Ignore )
DrawImageX = DPX + AdvImgReq_PreviewSizeX / 2 - ImageWidth(*File\ImageHandle) / 2
DrawImageY = DPY + AdvImgReq_PreviewSizeY / 2 - ImageHeight(*File\ImageHandle) / 2
DrawImage( ImageID(*File\ImageHandle), DrawImageX, DrawImageY )
EndIf
DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_Transparent)
Box(DPX - 2, DPY - 2, AdvImgReq_PreviewSizeX + 4, AdvImgReq_PreviewSizeY + 2, ColBlack)
DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_Transparent)
TxtHeight.l = AdvImgReq_Utils_DrawTextInRect( DPX + 2, DPY + AdvImgReq_PreviewSizeY + 2, AdvImgReq_PreviewSizeX - 4, OnlyFilename.s )
If TxtHeight.l > MaxTxtHeight.l
MaxTxtHeight.l = TxtHeight.l
EndIf
Box(DPX - 2, DPY + AdvImgReq_PreviewSizeY - 1, AdvImgReq_PreviewSizeX + 4, TxtHeight + 6 + 1, ColBlack)
If *File\Selected = 1
DrawingMode(#PB_2DDrawing_Transparent | #PB_2DDrawing_XOr)
;Box(DPX + 2, DPY + AdvImgReq_PreviewSizeY + 2, AdvImgReq_PreviewSizeX - 4, TxtHeight.l, ColSelected.l )
Box(DPX - 2, DPY + AdvImgReq_PreviewSizeY, AdvImgReq_PreviewSizeX + 4, TxtHeight + 6)
EndIf
EndIf
*File\ClientSizeX = AdvImgReq_PreviewSizeX + 4
*File\ClientSizeY = AdvImgReq_PreviewSizeY + 2 + TxtHeight + 6 + 1
*File\ClientPosX = DPX
*File\ClientPosY = DPY
*File\InRow = Rows
PosX = PosX + AdvImgReq_PreviewSizeX + 6
If PosX + AdvImgReq_PreviewSizeX + 6 > *TAIR\PreviewArea_Width - 1
PosX = 0
PosY = PosY + AdvImgReq_PreviewSizeY + MaxTxtHeight.l + 10
*TAIR\RowHeights[Rows] = AdvImgReq_PreviewSizeY + MaxTxtHeight.l + 10
*TAIR\RowHeights[Rows+1] = 0
MaxTxtHeight.l = 0
Rows = Rows + 1
EndIf
; ElseIf DrawThisItem.b = 0
; TxtHeight.l = AdvImgReq_Utils_GetTextInRectHeight( DPX + 2, DPY + AdvImgReq_PreviewSizeY + 2, AdvImgReq_PreviewSizeX - 4, OnlyFilename.s )
; If *File\ClientPosY + *File\ClientSizeY > FullHeight
; FullHeight = *File\ClientPosY + *File\ClientSizeY
; EndIf
*LastFile = *File
*ManageFile = *File\NextFile
Wend
DrawingMode(#PB_2DDrawing_Transparent)
Line(0, 0, *TAIR\PreviewArea_Width, 0, ColBlack)
Line(0, *TAIR\PreviewArea_Height-1, *TAIR\PreviewArea_Width, 0, ColBlack)
Line(0, 0, 0, *TAIR\PreviewArea_Height, ColBlack)
Line(*TAIR\PreviewArea_Width-1, 0, 0, *TAIR\PreviewArea_Height, ColBlack)
StopDrawing()
If *TAIR\UpdatePreviewArea_DrawFull = 1
SetGadgetAttribute( *TAIR\Win\PreviewScrollbar.l, #PB_ScrollBar_Minimum, 0)
If Rows > 0
RowScreenBegin = Rows
RowsScreenMaxHeight = 0
While RowScreenBegin > 0 And RowsScreenMaxHeight < *TAIR\PreviewArea_Height
RowsScreenMaxHeight = RowsScreenMaxHeight + *TAIR\RowHeights[RowScreenBegin]
RowScreenBegin = RowScreenBegin - 1
Wend
;Debug (Rows - RowScreenBegin)
;Debug RowsScreenMaxHeight
SetGadgetAttribute( *TAIR\Win\PreviewScrollbar.l, #PB_ScrollBar_Maximum, Rows - (Rows - RowScreenBegin) + 3)
SetGadgetAttribute( *TAIR\Win\PreviewScrollbar.l, #PB_ScrollBar_PageLength, 1)
Else
SetGadgetAttribute( *TAIR\Win\PreviewScrollbar.l, #PB_ScrollBar_Maximum, 0)
SetGadgetAttribute( *TAIR\Win\PreviewScrollbar.l, #PB_ScrollBar_PageLength, 0)
EndIf
EndIf
If *TAIR\UpdatePreviewArea_DrawFull = 1
*TAIR\UpdatePreviewArea_DrawFull = 0
EndIf
AdvImgReq_OpenImages_Continue( *AIR )
;*TAIR\DoInMainUpdate = #AdvImgReq_DoMode_Nothing
ProcedureReturn 1
EndProcedure
Procedure AdvImgReq_UpdatePreviewBuffer( *AIR )
*TAIR.AdvImgReq = *AIR
If *TAIR\PreviewArea_Width < 10 Or *TAIR\PreviewArea_Height < 10
ProcedureReturn
EndIf
If *TAIR\Win\PreviewBuffer > 0
FreeImage(*TAIR\Win\PreviewBuffer)
EndIf
*TAIR\Win\PreviewBuffer = CopyImage(*TAIR\PreviewImage, #PB_Any)
SetGadgetState(*TAIR\Win\PreviewGadget, ImageID(*TAIR\Win\PreviewBuffer))
EndProcedure
Procedure AdvImgReq_SwitchView( *AIR, mode.b )
*TAIR.AdvImgReq = *AIR
*TAIR\ViewMode.b = mode.b
If *TAIR\ViewMode.b = 0
HideGadget(*TAIR\Win\PreviewGadget, #False)
HideGadget(*TAIR\Win\PreviewScrollbar, #False)
HideGadget(*TAIR\Win\ExplorerList, #True)
;Path.s = GetGadgetText(*TAIR\Win\StringPath)
;AdvImgReq_SetPath( *TAIR, Path.s, 2, #False )
ElseIf *TAIR\ViewMode.b = 1
HideGadget(*TAIR\Win\PreviewGadget, #True)
HideGadget(*TAIR\Win\PreviewScrollbar, #True)
HideGadget(*TAIR\Win\ExplorerList, #False)
EndIf
EndProcedure
Procedure.b AdvImgReq_CheckForAction( *AIR )
*TAIR.AdvImgReq = *AIR
; Debug "Selected Files as String: " + AdvImgReq_GetSelectedFiles( *AIR )
; Debug "Selected Folder as String: " + AdvImgReq_GetSelectedPath( *AIR )
; Debug "Selected Files readed from AdvImgReq_ReadSelectedFiles and AdvImgReq_NextSelectedFile:"
SelFiles.s = GetGadgetText( *TAIR\Win\Input_Filename )
SelPath.s = GetGadgetText( *TAIR\Win\ExplorerList )
GlobalOkCheck.b = 1
If SelFiles.s = "" Or SelPath.s = ""
If (SelFiles.s = "" And (*TAIR\flags & #AdvImgReq_Open)) Or SelPath.s = ""
ShowMsg.s = *TAIR\Words[#AdvImgReq_Words_Info_NoFileSelected]
MessageRequester( *TAIR\Words[#AdvImgReq_Words_Title_Warning], ShowMsg.s, #PB_MessageRequester_Ok)
GlobalOkCheck.b = 0
EndIf
Else
SelectedFile.s = AdvImgReq_ReadSelectedFiles( SelFiles.s )
While Not SelectedFile.s = ""
ExistsCheck.b = 0
FileHandle = ReadFile(#PB_Any, SelPath.s + SelectedFile.s )
If IsFile(FileHandle)
CloseFile(FileHandle)
ExistsCheck.b = 1
EndIf
If *TAIR\flags & #AdvImgReq_Open
If ExistsCheck.b = 0
ShowMsg.s = ReplaceString( *TAIR\Words[#AdvImgReq_Words_Info_FileNotFound], "%%FILE%%", SelPath.s + SelectedFile.s )
MessageRequester(*TAIR\Words[#AdvImgReq_Words_Title_Warning], ShowMsg.s, #PB_MessageRequester_Ok)
GlobalOkCheck.b = 0
EndIf
ElseIf *TAIR\flags & #AdvImgReq_Save
If ExistsCheck.b = 1
ShowMsg.s = ReplaceString( *TAIR\Words[#AdvImgReq_Words_Info_FileExists], "%%FILE%%", SelPath.s + SelectedFile.s )
MsgVal.l = MessageRequester(*TAIR\Words[#AdvImgReq_Words_Title_Warning], ShowMsg.s, #PB_MessageRequester_YesNo)
If MsgVal.l = #PB_MessageRequester_Yes
GlobalOkCheck.b = 1
ElseIf MsgVal.l = #PB_MessageRequester_No
GlobalOkCheck.b = 0
EndIf
EndIf
EndIf
SelectedFile.s = AdvImgReq_NextSelectedFile()
Wend
EndIf
ProcedureReturn GlobalOkCheck.b
EndProcedure
Procedure AdvImgReq_Resize( *AIR, sx.l, sy.l )
*TAIR.AdvImgReq = *AIR
PreviewArea_Width = sx.l - 10 - *TAIR\Win\ExplorerWidth - 5 - AdvImgReq_BeginScrollbarWidth
PreviewArea_Height = sy.l - 10 - *TAIR\Win\BottomSpace - 10 - 25
If PreviewArea_Width < 10
PreviewArea_Width = 10
EndIf
If PreviewArea_Height < 10
PreviewArea_Height = 10
EndIf
*TAIR\PreviewArea_Width = PreviewArea_Width
*TAIR\PreviewArea_Height = PreviewArea_Height
StringPathWidth.l = sx.l - 10 - *TAIR\Win\ExplorerWidth - 5 - #AdvImgReq_ToolButtons * 24 - 5
ResizeGadget( *TAIR\Win\Explorer, #PB_Ignore, #PB_Ignore, *TAIR\Win\ExplorerWidth, sy.l - 10 - *TAIR\Win\BottomSpace - 10 )
ResizeGadget( *TAIR\Win\StringPath, *TAIR\Win\ExplorerWidth + 10, #PB_Ignore, StringPathWidth.l, #PB_Ignore )
For I = 0 To #AdvImgReq_ToolButtons-1
;ToolImage = AdvImgReq_Utils_GetToolImage(I)
ResizeGadget(*TAIR\Win\ToolButton[I], *TAIR\Win\ExplorerWidth + 10 + StringPathWidth.l + I * 24 + 5, #PB_Ignore, #PB_Ignore, #PB_Ignore)
Next
ResizeImage( *TAIR\PreviewImage, PreviewArea_Width, PreviewArea_Height, #PB_Image_Raw )
ResizeImage( *TAIR\Win\PreviewBuffer, PreviewArea_Width, PreviewArea_Height, #PB_Image_Raw )
ResizeGadget( *TAIR\Win\PreviewGadget, *TAIR\Win\ExplorerWidth + 10, #PB_Ignore, PreviewArea_Width, PreviewArea_Height )
ResizeGadget( *TAIR\Win\PreviewScrollbar, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width, #PB_Ignore, AdvImgReq_BeginScrollbarWidth, PreviewArea_Height )
ResizeGadget( *TAIR\Win\ExplorerList, *TAIR\Win\ExplorerWidth + 10, 30, PreviewArea_Width + AdvImgReq_BeginScrollbarWidth, PreviewArea_Height )
DoTop.l = 30 + PreviewArea_Height + 5
ResizeGadget( *TAIR\Win\InputText_Filename, 5, DoTop, *TAIR\InputTextWidth.l - 10, *TAIR\BottomFieldHeight )
ResizeGadget( *TAIR\Win\Input_Filename, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, *TAIR\BottomFieldHeight )
ResizeGadget( *TAIR\Win\ButtonOk, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth, DoTop.l, *TAIR\ButtonWidth, *TAIR\BottomFieldHeight )
DoTop.l = DoTop.l + *TAIR\BottomFieldHeight + 5
ResizeGadget( *TAIR\Win\ComboText_FileType, 5, DoTop, *TAIR\InputTextWidth.l - 10, *TAIR\BottomFieldHeight )
;ResizeGadget( *TAIR\Win\Combo_FileType, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, *TAIR\BottomFieldHeight )
ResizeGadget( *TAIR\Win\Combo_FileType, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, #PB_Ignore)
ResizeGadget( *TAIR\Win\ButtonAbort, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth, DoTop.l, *TAIR\ButtonWidth, *TAIR\BottomFieldHeight )
;If AdvImgReq_UpdatePreviewImage( *AIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *AIR )
;EndIf
*TAIR\UpdatePreviewArea_DrawFull = 1
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndProcedure
Procedure AdvImgReq_Init( *AIR )
Shared AdvImgReq_GlobalWords()
AdvImgReq_OpenedRequesters.l = AdvImgReq_OpenedRequesters.l + 1
*TAIR.AdvImgReq = *AIR
*TAIR\mode = #AdvImgReq_Mode_Init
If AdvImgReq_BeginSizeX = 0
AdvImgReq_BeginSizeX = 800
EndIf
If AdvImgReq_BeginSizeY = 0
AdvImgReq_BeginSizeY = 600
EndIf
If AdvImgReq_PreviewSizeX = 0
;AdvImgReq_PreviewSizeX = 128
;AdvImgReq_PreviewSizeX = 65
AdvImgReq_PreviewSizeX = 74
EndIf
If AdvImgReq_PreviewSizeY = 0
;AdvImgReq_PreviewSizeY = 128
;AdvImgReq_PreviewSizeY = 65
AdvImgReq_PreviewSizeY = 91
EndIf
If AdvImgReq_BeginScrollbarWidth = 0
AdvImgReq_BeginScrollbarWidth = 16
EndIf
If AdvImgReq_CharSpace_X = 0
AdvImgReq_CharSpace_X = 8
EndIf
If AdvImgReq_CharSpace_Y = 0
AdvImgReq_CharSpace_Y = 16
EndIf
WinFlags.l = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget
If AdvImgReq_BeginPosX = 0 And AdvImgReq_BeginPosY = 0
WinFlags.l = WinFlags.l | #PB_Window_ScreenCentered
EndIf
If *TAIR\Win\BottomSpace = 0
*TAIR\Win\BottomSpace = 0
EndIf
If *TAIR\Win\ExplorerWidth = 0
*TAIR\Win\ExplorerWidth = 187
EndIf
If *TAIR\ButtonWidth = 0
*TAIR\ButtonWidth = 73
EndIf
If *TAIR\BottomFieldHeight = 0
*TAIR\BottomFieldHeight = 20
EndIf
If *TAIR\InputTextWidth = 0
*TAIR\InputTextWidth = 100
EndIf
If *TAIR\InputSpaceWidth = 0
*TAIR\InputSpaceWidth = 100
EndIf
For I = 0 To #AdvImgReq_MaxWords - 1
If Not AdvImgReq_GlobalWords(I) = ""
*TAIR\Words[I] = AdvImgReq_GlobalWords(I)
EndIf
Next
If *TAIR\Words[#AdvImgReq_Words_Filename] = ""
*TAIR\Words[#AdvImgReq_Words_Filename] = #AdvImgReq_Words_Default_Filename
EndIf
If *TAIR\Words[#AdvImgReq_Words_Filetype] = ""
*TAIR\Words[#AdvImgReq_Words_Filetype] = #AdvImgReq_Words_Default_Filetype
EndIf
If *TAIR\Words[#AdvImgReq_Words_Button_Open] = ""
*TAIR\Words[#AdvImgReq_Words_Button_Open] = #AdvImgReq_Words_Default_Button_Open
EndIf
If *TAIR\Words[#AdvImgReq_Words_Button_Save] = ""
*TAIR\Words[#AdvImgReq_Words_Button_Save] = #AdvImgReq_Words_Default_Button_Save
EndIf
If *TAIR\Words[#AdvImgReq_Words_Button_Abort] = ""
*TAIR\Words[#AdvImgReq_Words_Button_Abort] = #AdvImgReq_Words_Default_Button_Abort
EndIf
If *TAIR\Words[#AdvImgReq_Words_Info_FileExists] = ""
*TAIR\Words[#AdvImgReq_Words_Info_FileExists] = #AdvImgReq_Words_Default_Info_FileExists
EndIf
If *TAIR\Words[#AdvImgReq_Words_Info_FileNotFound] = ""
*TAIR\Words[#AdvImgReq_Words_Info_FileNotFound] = #AdvImgReq_Words_Default_Info_FileNotFound
EndIf
If *TAIR\Words[#AdvImgReq_Words_Info_WrongEnteredFiles] = ""
*TAIR\Words[#AdvImgReq_Words_Info_WrongEnteredFiles] = #AdvImgReq_Words_Default_Info_WrongEnteredFiles
EndIf
If *TAIR\Words[#AdvImgReq_Words_Info_NoFileSelected] = ""
*TAIR\Words[#AdvImgReq_Words_Info_NoFileSelected] = #AdvImgReq_Words_Default_Info_NoFileSelected
EndIf
If *TAIR\Words[#AdvImgReq_Words_Title_Warning] = ""
*TAIR\Words[#AdvImgReq_Words_Title_Warning] = #AdvImgReq_Words_Default_Title_Warning
EndIf
*TAIR\Win\BottomSpace = *TAIR\Win\BottomSpace + (*TAIR\BottomFieldHeight+5) * 2 - 10
AdvImgReq_PreviewInfoHeight = 30
PreviewArea_Width = AdvImgReq_BeginSizeX - 10 - *TAIR\Win\ExplorerWidth - 5 - AdvImgReq_BeginScrollbarWidth
PreviewArea_Height = AdvImgReq_BeginSizeY - 10 - *TAIR\Win\BottomSpace - 10 - 25
*TAIR\PreviewArea_Width = PreviewArea_Width
*TAIR\PreviewArea_Height = PreviewArea_Height
StringPathWidth.l = AdvImgReq_BeginSizeX - 10 - *TAIR\Win\ExplorerWidth - 5 - #AdvImgReq_ToolButtons * 24 - 5
*TAIR\Win\Win = OpenWindow( #PB_Any, AdvImgReq_BeginPosX, AdvImgReq_BeginPosY, AdvImgReq_BeginSizeX, AdvImgReq_BeginSizeY, *TAIR\Title, WinFlags.l )
CreateGadgetList( WindowID(*TAIR\Win\Win) )
*TAIR\Win\Explorer = ExplorerTreeGadget( #PB_Any, 5, 5, *TAIR\Win\ExplorerWidth, AdvImgReq_BeginSizeY - 10 - *TAIR\Win\BottomSpace - 10, "", #PB_Explorer_AlwaysShowSelection | #PB_Explorer_AutoSort | #PB_Explorer_NoFiles )
*TAIR\Win\StringPath = StringGadget( #PB_Any, *TAIR\Win\ExplorerWidth + 10, 5, StringPathWidth, 22, "" )
For I = 0 To #AdvImgReq_ToolButtons-1
ToolImage = AdvImgReq_Utils_GetToolImage(I)
*TAIR\Win\ToolButton[I] = ButtonImageGadget(#PB_Any, *TAIR\Win\ExplorerWidth + 10 + StringPathWidth.l + I * 24 + 5, 5, 22, 22, ImageID(ToolImage) )
Next
DisableGadget(*TAIR\Win\ToolButton[0], #True)
DisableGadget(*TAIR\Win\ToolButton[1], #True)
*TAIR\PreviewImage = CreateImage( #PB_Any, PreviewArea_Width, PreviewArea_Height, #PB_Image_DisplayFormat )
*TAIR\Win\PreviewBuffer = CreateImage( #PB_Any, PreviewArea_Width, PreviewArea_Height, #PB_Image_DisplayFormat )
*TAIR\Win\PreviewGadget = ImageGadget( #PB_Any, *TAIR\Win\ExplorerWidth + 10, 30, PreviewArea_Width, PreviewArea_Height, ImageID(*TAIR\Win\PreviewBuffer))
*TAIR\Win\PreviewScrollbar = ScrollBarGadget( #PB_Any, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width, 30, AdvImgReq_BeginScrollbarWidth, PreviewArea_Height, 0, 0, 0, #PB_ScrollBar_Vertical )
doflags.l = #PB_Explorer_AlwaysShowSelection
If *TAIR\flags & #AdvImgReq_MultiSelect
doflags.l = doflags.l | #PB_Explorer_MultiSelect
EndIf
doflags.l = doflags.l | #PB_Explorer_HeaderDragDrop | #PB_Explorer_FullRowSelect | #PB_Explorer_NoFolders | #PB_Explorer_NoParentFolder | #PB_Explorer_NoDirectoryChange | #PB_Explorer_AutoSort
*TAIR\Win\ExplorerList = ExplorerListGadget(#PB_Any, *TAIR\Win\ExplorerWidth + 10, 30, PreviewArea_Width + AdvImgReq_BeginScrollbarWidth, PreviewArea_Height, "", doflags)
HideGadget(*TAIR\Win\ExplorerList, #True)
DoTop.l = 30 + PreviewArea_Height + 5
*TAIR\Win\InputText_Filename = TextGadget(#PB_Any, 5, DoTop, *TAIR\InputTextWidth.l, *TAIR\BottomFieldHeight, *TAIR\Words[#AdvImgReq_Words_Filename])
*TAIR\Win\Input_Filename = StringGadget(#PB_Any, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, *TAIR\BottomFieldHeight, "")
If *TAIR\flags & #AdvImgReq_Open
UseWord.s = *TAIR\Words[#AdvImgReq_Words_Button_Open]
ElseIf *TAIR\flags & #AdvImgReq_Save
UseWord.s = *TAIR\Words[#AdvImgReq_Words_Button_Save]
EndIf
;*TAIR\Win\ButtonOk = ButtonGadget(#PB_Any, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth, DoTop.l, *TAIR\ButtonWidth, *TAIR\BottomFieldHeight, "Öf&fnen")
*TAIR\Win\ButtonOk = ButtonGadget(#PB_Any, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth, DoTop.l, *TAIR\ButtonWidth, *TAIR\BottomFieldHeight, UseWord.s)
DoTop.l = DoTop.l + *TAIR\BottomFieldHeight + 5
*TAIR\Win\ComboText_FileType = TextGadget(#PB_Any, 5, DoTop, *TAIR\InputTextWidth.l, *TAIR\BottomFieldHeight, *TAIR\Words[#AdvImgReq_Words_Filetype])
; *TAIR\Win\Combo_FileType = ComboBoxGadget(#PB_Any, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, *TAIR\BottomFieldHeight)
*TAIR\Win\Combo_FileType = ComboBoxGadget(#PB_Any, *TAIR\InputTextWidth.l, DoTop, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth - *TAIR\InputSpaceWidth - *TAIR\InputTextWidth.l - 5, 100)
*TAIR\Win\ButtonAbort = ButtonGadget(#PB_Any, *TAIR\Win\ExplorerWidth + 10 + PreviewArea_Width + AdvImgReq_BeginScrollbarWidth - *TAIR\ButtonWidth, DoTop.l, *TAIR\ButtonWidth, *TAIR\BottomFieldHeight, *TAIR\Words[#AdvImgReq_Words_Button_Abort])
*TAIR\Win\Menu = 500
CreatePopupMenu(*TAIR\Win\Menu)
MenuTitle("Ansicht")
MenuItem(*TAIR\Win\Menu + 1, "&Gallerie")
SetMenuItemState( *TAIR\Win\Menu, *TAIR\Win\Menu + 1, 1 )
MenuItem(*TAIR\Win\Menu + 2, "G&roße Symbole")
MenuItem(*TAIR\Win\Menu + 3, "&Kleine Symbole")
MenuItem(*TAIR\Win\Menu + 4, "&Liste")
MenuItem(*TAIR\Win\Menu + 5, "&Details")
CloseSubMenu()
MenuBar()
MenuItem(*TAIR\Win\Menu + 6, "Alles &markieren")
MenuItem(*TAIR\Win\Menu + 7, "Markierung &umkehren")
MenuBar()
MenuItem(*TAIR\Win\Menu + 8, "&Eigenschaften")
AdvImgReq_SetFont( *TAIR, "Arial", 10)
AdvImgReq_ClearPattern( *TAIR )
AdvImgReq_AddPattern( *TAIR, *TAIR\Pattern.s )
AdvImgReq_UpdatePatternAtGui( *TAIR )
AdvImgReq_SelectPattern( *TAIR, 0 )
;If AdvImgReq_UpdatePreviewImage( *TAIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *TAIR )
;EndIf
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
*TAIR\mode = #AdvImgReq_Mode_Update
*TAIR\DoInMainUpdate = #AdvImgReq_DoMode_Nothing
AdvImgReq_OpenImages_Begin( *AIR )
AdvImgReq_SetPath( *TAIR, *TAIR\StdFile, 2, #False )
EndProcedure
Procedure AdvImgReq_Close( *AIR )
*TAIR.AdvImgReq = *AIR
If AdvImgReq_OpenedRequesters.l > 0
If Not *TAIR\mode = #AdvImgReq_Mode_Closed
;AdvImgReq_OpenImages_Pause( *AIR )
*TAIR\Thread_OpenImages_Mode = #AdvImgReq_Mode_Close
*TAIR\mode = #AdvImgReq_Mode_Close
*TAIR\SelectedFiles.s = GetGadgetText( *TAIR\Win\Input_Filename )
*TAIR\SelectedPath.s = GetGadgetText( *TAIR\Win\ExplorerList )
AdvImgReq_LastSelectedFiles.s = *TAIR\SelectedFiles.s
AdvImgReq_LastSelectedPath.s = *TAIR\SelectedPath.s
;While (*TAIR\mode <> #AdvImgReq_Mode_Closed And *TAIR\Thread_OpenImages_Mode <> #AdvImgReq_Mode_Closed)
While Not *TAIR\Thread_OpenImages_Mode = #AdvImgReq_Mode_Closed
Delay(1)
Wend
CloseWindow( *TAIR\Win\Win )
AdvImgReq_OpenedRequesters.l = AdvImgReq_OpenedRequesters.l - 1
EndIf
EndIf
EndProcedure
Procedure AdvImgReq_Update( *AIR, Event, WindowID, GadgetID, EventType, MenuEvent )
*TAIR.AdvImgReq = *AIR
*TAIR\Last_Event.l = Event
*TAIR\Last_WindowID.l = WindowID
*TAIR\Last_GadgetID.l = GadgetID
*TAIR\Last_EventType.l = EventType
*TAIR\Last_MenuEvent.l = MenuEvent
If ( *TAIR\Last_Event = #PB_Event_Gadget )
If ( *TAIR\Last_GadgetID = *TAIR\Win\Combo_FileType )
PatID = GetGadgetState(*TAIR\Win\Combo_FileType)
If Not *TAIR\UsePattern = PatID
AdvImgReq_SelectPattern( *TAIR, PatID )
Path.s = GetGadgetText(*TAIR\Win\StringPath)
AdvImgReq_SetPath( *TAIR, Path.s, 2, #False )
EndIf
EndIf
If *TAIR\Last_EventType = #PB_EventType_Change
If ( *TAIR\Last_GadgetID = *TAIR\Win\StringPath )
Entered.s = GetGadgetText(*TAIR\Win\StringPath)
Path.s = AdvImgReq_Utils_GetParentPath( GetGadgetText(*TAIR\Win\StringPath) )
If Not LCase(Path.s) = LCase(*TAIR\WorkPath)
AdvImgReq_SetPath( *TAIR, Path.s, 1 )
EndIf
EndIf
If ( *TAIR\Last_GadgetID = *TAIR\Win\Explorer )
Selected.s = GetGadgetText(*TAIR\Win\Explorer)
If Not LCase(Selected.s) = LCase(*TAIR\WorkPath)
AdvImgReq_SetPath( *TAIR, Selected.s, 0 )
EndIf
EndIf
If ( *TAIR\Last_GadgetID = *TAIR\Win\ExplorerList )
ItemCount.l = CountGadgetItems(*TAIR\Win\ExplorerList)
;AdvImgReq_SelectAllFiles( *TAIR, 0 )
For I = 0 To ItemCount.l
If GetGadgetItemState(*TAIR\Win\ExplorerList, I) & #PB_Explorer_Selected
AdvImgReq_SelectFileByName( *TAIR, *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0), 1 )
;Debug GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0)
Else
AdvImgReq_SelectFileByName( *TAIR, *TAIR\WorkPath + GetGadgetItemText(*TAIR\Win\ExplorerList, I, 0), 0 )
EndIf
Next
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndIf
EndIf
If ( *TAIR\Last_GadgetID = *TAIR\Win\PreviewScrollbar.l )
;If AdvImgReq_UpdatePreviewImage( *AIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *AIR )
;EndIf
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndIf
If *TAIR\Last_EventType = #PB_EventType_LeftClick
If *TAIR\Last_GadgetID = *TAIR\Win\ButtonOk
If AdvImgReq_CheckForAction( *TAIR ) = 1
*TAIR\ActionMode = #AdvImgReq_Action_Ok
AdvImgReq_LastActionMode.l = *TAIR\ActionMode
AdvImgReq_Close( *TAIR )
EndIf
EndIf
If *TAIR\Last_GadgetID = *TAIR\Win\ButtonAbort
*TAIR\ActionMode = #AdvImgReq_Action_Abort
AdvImgReq_LastActionMode.l = *TAIR\ActionMode
AdvImgReq_Close( *TAIR )
EndIf
If *TAIR\Last_GadgetID = *TAIR\Win\PreviewGadget
If AdvImgReq_Utils_MouseOverGadget( *TAIR, *TAIR\Win\PreviewGadget )
;*File\ClientPosX
*Pntr = AdvImgReq_GetFileFromPosition( *TAIR, AdvImgReq_LastMouseOverX, AdvImgReq_LastMouseOverY )
If *Pntr
If *TAIR\flags & #AdvImgReq_MultiSelect
If GetAsyncKeyState_(#VK_CONTROL) > -1
*FileFromPos.AdvImgReq_File = *Pntr
AdvImgReq_SelectAllFiles( *TAIR, 0 )
EndIf
Else
AdvImgReq_SelectAllFiles( *TAIR, 0 )
EndIf
DoMode.b = 1
If *TAIR\flags & #AdvImgReq_MultiSelect
If GetAsyncKeyState_(#VK_CONTROL) > -1
DoMode.b = 2
EndIf
EndIf
AdvImgReq_SelectFile( *TAIR, *Pntr, DoMode.b )
;If AdvImgReq_UpdatePreviewImage( *AIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *AIR )
;EndIf
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndIf
EndIf
EndIf
For I = 0 To #AdvImgReq_ToolButtons-1
If ( *TAIR\Last_GadgetID = *TAIR\Win\ToolButton[I] )
If I = 0 ; Go to previuos folder
*TAIR\PathStackPosition = *TAIR\PathStackPosition - 1
Path.s = *TAIR\PathStack[*TAIR\PathStackPosition]
If Not LCase(Path.s) = LCase(*TAIR\WorkPath)
AdvImgReq_SetPath( *TAIR, Path.s, 2, #False )
EndIf
If *TAIR\PathStackPosition = 0
DisableGadget(*TAIR\Win\ToolButton[0], #True)
EndIf
DisableGadget(*TAIR\Win\ToolButton[1], #False)
EndIf
If I = 1 ; Go to last folder
*TAIR\PathStackPosition = *TAIR\PathStackPosition + 1
Path.s = *TAIR\PathStack[*TAIR\PathStackPosition]
If Not LCase(Path.s) = LCase(*TAIR\WorkPath)
AdvImgReq_SetPath( *TAIR, Path.s, 2, #False )
EndIf
If *TAIR\PathStackPosition = *TAIR\PathStacks
DisableGadget(*TAIR\Win\ToolButton[1], #True)
Else
DisableGadget(*TAIR\Win\ToolButton[1], #False)
EndIf
DisableGadget(*TAIR\Win\ToolButton[0], #False)
EndIf
If I = 2 ; Go to parent folder
Path.s = AdvImgReq_Utils_GetOrgParentPath( GetGadgetText(*TAIR\Win\StringPath) )
If Not LCase(Path.s) = LCase(*TAIR\WorkPath)
AdvImgReq_SetPath( *TAIR, Path.s, 2 )
EndIf
EndIf
If I = 3 ; Reload folder
Path.s = GetGadgetText(*TAIR\Win\StringPath)
AdvImgReq_SetPath( *TAIR, Path.s, 2, #False )
EndIf
If I = 4 ; Switch view
If *TAIR\ViewMode = 0
;AdvImgReq_SwitchView( *TAIR, 1 )
If *TAIR\LastExplorerListDisplayMode = 0
*TAIR\LastExplorerListDisplayMode = 5
EndIf
AdvImgReq_SetPreviewViewMode( *TAIR, *TAIR\LastExplorerListDisplayMode )
Else
AdvImgReq_SetPreviewViewMode( *TAIR, 1 )
;AdvImgReq_SwitchView( *TAIR, 0 )
EndIf
EndIf
EndIf
Next
EndIf
If *TAIR\Last_EventType = #PB_EventType_RightClick
If *TAIR\Last_GadgetID = *TAIR\Win\PreviewGadget
DisplayPopupMenu(*TAIR\Win\Menu, WindowID(*TAIR\Win\Win))
EndIf
If *TAIR\Last_GadgetID = *TAIR\Win\ExplorerList
DisplayPopupMenu(*TAIR\Win\Menu, WindowID(*TAIR\Win\Win))
EndIf
EndIf
EndIf
;PreviewViewMode.l
If ( *TAIR\Last_Event = #PB_Event_Menu )
If ( *TAIR\Last_MenuEvent = *TAIR\Win\Menu )
EndIf
For I = 1 To 5
If ( *TAIR\Last_MenuEvent = *TAIR\Win\Menu + I )
AdvImgReq_SetPreviewViewMode( *TAIR, I )
EndIf
Next
If ( *TAIR\Last_MenuEvent = *TAIR\Win\Menu + 6 )
AdvImgReq_SelectAllFiles( *TAIR, 1 )
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndIf
If ( *TAIR\Last_MenuEvent = *TAIR\Win\Menu + 7 )
AdvImgReq_FileSelectReverse( *TAIR )
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
EndIf
If ( *TAIR\Last_MenuEvent = *TAIR\Win\Menu + 8 )
AdvImgReq_OpenFileProperities( *TAIR )
EndIf
EndIf
If ( *TAIR\Last_Event = #PB_Event_SizeWindow )
AdvImgReq_Resize( *TAIR, WindowWidth(*TAIR\Win\Win), WindowHeight(*TAIR\Win\Win) )
EndIf
If *TAIR\DoInMainUpdate = #AdvImgReq_DoMode_UpdatePreview
;If AdvImgReq_UpdatePreviewImage( *AIR ) = 1
; AdvImgReq_UpdatePreviewBuffer( *AIR )
;EndIf
*TAIR\UpdatePreviewArea_Mode = #AdvImgReq_Mode_Update
*TAIR\DoInMainUpdate = #AdvImgReq_DoMode_Nothing
EndIf
If ( *TAIR\Last_Event = #PB_Event_CloseWindow )
If ( *TAIR\Last_WindowID = *TAIR\Win\Win )
*TAIR\ActionMode = #AdvImgReq_Action_Abort
AdvImgReq_Close( *TAIR )
EndIf
EndIf
EndProcedure
Procedure.l AdvImgReq_GetActionMode( *AIR )
*TAIR.AdvImgReq = *AIR
ProcedureReturn *TAIR\ActionMode
EndProcedure
Procedure.s AdvImgReq_GetSelectedFiles( *AIR )
*TAIR.AdvImgReq = *AIR
ProcedureReturn *TAIR\SelectedFiles.s
EndProcedure
Procedure.s AdvImgReq_GetSelectedPath( *AIR )
*TAIR.AdvImgReq = *AIR
ProcedureReturn *TAIR\SelectedPath
EndProcedure
Procedure.l AdvImgReq_GetLastActionMode()
ProcedureReturn AdvImgReq_LastActionMode.l
EndProcedure
Procedure.s AdvImgReq_GetLastSelectedFiles()
ProcedureReturn AdvImgReq_LastSelectedFiles.s
EndProcedure
Procedure.s AdvImgReq_GetLastSelectedPath()
ProcedureReturn AdvImgReq_LastSelectedPath.s
EndProcedure
Procedure.s AdvImgReq_NextSelectedFile()
StopRead.b = 0
InSpaceMode.b = 0
IgnoreMode.b = 0
ReturnBack.s = ""
While AdvImgReq_ReadSelStr_Pos < AdvImgReq_ReadSelStr_Len + 1 And StopRead.b = 0
ReadChar.s = Mid(AdvImgReq_ReadSelString, AdvImgReq_ReadSelStr_Pos, 1)
If ReadChar.s = " "
If IgnoreMode.b = 0
InSpaceMode.b = 1
Else
ReturnBack = ReturnBack + ReadChar.s
EndIf
Else
If InSpaceMode.b = 1
InSpaceMode.b = 0
AdvImgReq_ReadSelStr_Pos = AdvImgReq_ReadSelStr_Pos - 1
StopRead.b = 1
Else
If ReadChar.s = Chr(34)
If IgnoreMode.b = 0
IgnoreMode.b = 1
Else
IgnoreMode.b = 0
EndIf
Else
ReturnBack = ReturnBack + ReadChar.s
EndIf
EndIf
EndIf
AdvImgReq_ReadSelStr_Pos = AdvImgReq_ReadSelStr_Pos + 1
Wend
ProcedureReturn ReturnBack.s
EndProcedure
Procedure.s AdvImgReq_ReadSelectedFiles( InputStr.s )
AdvImgReq_ReadSelString.s = InputStr.s
AdvImgReq_ReadSelStr_Len.l = Len(InputStr.s)
AdvImgReq_ReadSelStr_Pos.l = 1
If FindString(InputStr.s, Chr(34), 0)
ProcedureReturn AdvImgReq_NextSelectedFile()
Else
AdvImgReq_ReadSelStr_Pos.l = AdvImgReq_ReadSelStr_Len.l + 1
ProcedureReturn InputStr.s
EndIf
EndProcedure
Procedure AdvImageFileRequester_BeginPosition(x, y)
AdvImgReq_BeginPosX = x
AdvImgReq_BeginPosY = y
EndProcedure
Procedure AdvImageFileRequester_BeginSize(x, y)
AdvImgReq_BeginSizeX = x
AdvImgReq_BeginSizeY = y
EndProcedure
Procedure.l AdvImageFileRunRequester(Title.s, StdFile.s, Pattern.s, PatternPosition.l, flags.l = #AdvImgReq_Open)
*AIR.AdvImgReq = AllocateMemory(SizeOf(AdvImgReq))
*AIR\Title.s = Title.s
*AIR\StdFile.s = StdFile.s
*AIR\Pattern.s = Pattern.s
*AIR\PatternPosition.l = PatternPosition.l
*AIR\flags.l = flags.l
AdvImgReq_Init( *AIR )
While( AdvImgReq_IsRun(*AIR) = 1 )
If AdvImgReq_OpenedRequesters.l > 0
Event = WaitWindowEvent(10) ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
MenuEvent = EventMenu() ; Menu event
If AdvImgReq_IsRun(*AIR) = 1
AdvImgReq_Update( *AIR, Event, WindowID, GadgetID, EventType, MenuEvent )
AdvImgReq_UpdatePreviewArea( *AIR )
EndIf
EndIf
;Debug *AIR\Thread_OpenImages_Mode
Wend
AdvImgReq_Close( *AIR )
ProcedureReturn( *AIR )
EndProcedure
Procedure.l AdvImageFileRunRequester_Multi(Title.s, StdFile.s, Pattern.s, PatternPosition.l, flags.l = #AdvImgReq_Open)
*AIR.AdvImgReq = AllocateMemory(SizeOf(AdvImgReq))
*AIR\Title.s = Title.s
*AIR\StdFile.s = StdFile.s
*AIR\Pattern.s = Pattern.s
*AIR\PatternPosition.l = PatternPosition.l
*AIR\flags.l = flags.l
*AIRB.AdvImgReq = AllocateMemory(SizeOf(AdvImgReq))
*AIRB\Title.s = Title.s
*AIRB\StdFile.s = StdFile.s
*AIRB\Pattern.s = Pattern.s
*AIRB\PatternPosition.l = PatternPosition.l
*AIRB\flags.l = flags.l
AdvImgReq_Init( *AIR )
AdvImgReq_Init( *AIRB )
While( AdvImgReq_IsRun(*AIR) = 1 Or AdvImgReq_IsRun(*AIRB) = 1 )
Event = WaitWindowEvent(10) ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
MenuEvent = EventMenu() ; Menu event
If AdvImgReq_IsRun(*AIR) = 1
AdvImgReq_Update( *AIR, Event, WindowID, GadgetID, EventType, MenuEvent )
AdvImgReq_UpdatePreviewArea( *AIR )
EndIf
If AdvImgReq_IsRun(*AIRB) = 1
AdvImgReq_Update( *AIRB, Event, WindowID, GadgetID, EventType, MenuEvent )
AdvImgReq_UpdatePreviewArea( *AIRB )
EndIf
;Debug *AIR\Thread_OpenImages_Mode
Wend
AdvImgReq_Close( *AIR )
AdvImgReq_Close( *AIRB )
ProcedureReturn( *AIR )
EndProcedure
Procedure.s AdvImageFileRequester(Title.s, StdFile.s, Pattern.s, PatternPosition.l, flags.l = #AdvImgReq_Open)
*AIR.AdvImgReq = AdvImageFileRunRequester( Title.s, StdFile.s, Pattern.s, PatternPosition.l, flags.l )
If AdvImgReq_GetActionMode( *AIR ) = #AdvImgReq_Action_Ok
Debug "ACTION: #AdvImgReq_Action_Ok = Ok"
ProcedureReturn *AIR\SelectedFiles.s
ElseIf AdvImgReq_GetActionMode( *AIR ) = #AdvImgReq_Action_Abort
Debug "ACTION: #AdvImgReq_Action_Abort = Abort"
ProcedureReturn ""
EndIf
ProcedureReturn *AIR\SelectedFiles.s
EndProcedure