Code: Select all
;/ 2006 sverson
;/ see also http://purebasic.hmt-forum.com/viewtopic.php?t=692
Global FilePath$, FileName$, IconSize.l=128
#MouseKlick = -32767
Enumeration
#MainWindow
#ImageWindow
#ListIconGadget1
#Image
EndEnumeration
Enumeration
#MenuNewBMPs
#MenuMoreBMPs
#MenuQuit
#MenuBigIcons
#MenuSmallIcons
#MenuListModus
#MenuReportModus
#MenuBM64
#MenuBM128
EndEnumeration
Procedure AddItem(gadget.l, Row.l, Column.l, Text$, ImageIndex.l)
Name$ = GetFilePart(Text$)
var.LVITEM
var\mask = #LVIF_IMAGE | #LVIF_TEXT
var\iItem = Row
var\iSubItem = Column
var\pszText = @Name$
var\iImage = ImageIndex
SendMessage_(GadgetID(gadget), #LVM_INSERTITEM, 0, @var)
SetGadgetItemText(gadget,Row,Text$,1)
SetGadgetItemText(gadget,Row,"hidden info 1/"+Str(Row),2)
SetGadgetItemText(gadget,Row,"hidden info 2/"+Str(Row),3)
EndProcedure
Procedure LoadFiles(FileToLoad$)
Protected MemImgNo.l, MemImgID.l, MemImgW.l, MemImgH.l, MemImgW1.l, MemImgH1.l, MemImgX.l, MemImgY.l, MemImgMul.f, TmpImgNo.l, TmpImgID.l, Extern.b
Static Hwnd_ListSmall.l, Hwnd_ListNormal.l
If FileToLoad$=""
FileToLoad$ = OpenFileRequester("Bitmaps laden [MultiSelection]", FilePath$+"*.bmp","Bitmaps (bmp)|*.BMP" , 0,#PB_Requester_MultiSelection)
Extern=#False
Else
Extern=#True
EndIf
If FileToLoad$
FilePath$=GetPathPart(FileToLoad$)
Repeat
If LCase(GetExtensionPart(FileToLoad$))="bmp"
MemImgNo = LoadImage(#PB_Any,FileToLoad$)
If MemImgNo And IsImage(MemImgNo)
MemImgID = ImageID(MemImgNo)
MemImgW = ImageWidth(MemImgNo)
MemImgH = ImageHeight(MemImgNo)
If MemImgH>MemImgW
MemImgMul = IconSize/MemImgH
MemImgW = Int(MemImgW*MemImgMul)
MemImgH = Int(MemImgH*MemImgMul)
MemImgX = Int((IconSize-MemImgW)/2)
MemImgY = 0
Else
MemImgMul = IconSize/MemImgW
MemImgW = Int(MemImgW*MemImgMul)
MemImgH = Int(MemImgH*MemImgMul)
MemImgX = 0
MemImgY = Int((IconSize-MemImgH)/2)
EndIf
TmpImgNo = CreateImage(#PB_Any, IconSize, IconSize)
TmpImgID = ImageID(TmpImgNo)
StartDrawing(ImageOutput(TmpImgNo))
Box(0,0,IconSize,IconSize,RGB($FF,$FF,$FF))
DrawImage(MemImgID,MemImgX,MemImgY,MemImgW,MemImgH)
StopDrawing()
If CountGadgetItems(#ListIconGadget1)=0
Hwnd_ListNormal = ImageList_Create_(IconSize,IconSize,#ILC_MASK | #ILC_COLOR32, 0, 30)
SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_NORMAL, Hwnd_ListNormal)
EndIf
IndexImage=ImageList_Add_(Hwnd_ListNormal,TmpImgID,0)
ResizeImage(TmpImgNo,32,32)
TmpImgID = ImageID(TmpImgNo)
If CountGadgetItems(#ListIconGadget1)=0
Hwnd_ListSmall = ImageList_Create_(32,32,#ILC_MASK | #ILC_COLOR32, 0, 30)
SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd_ListSmall)
EndIf
IndexImage=ImageList_Add_(Hwnd_ListSmall,TmpImgID,0)
AddItem(#ListIconGadget1,CountGadgetItems(#ListIconGadget1),0,FileToLoad$,IndexImage)
FreeImage(MemImgNo)
FreeImage(TmpImgNo)
EndIf
EndIf
If Extern
FileToLoad$ = ProgramParameter()
Else
FileToLoad$ = NextSelectedFileName()
EndIf
Until FileToLoad$ = ""
EndIf
EndProcedure
Procedure ShowImage(ImgPath.s)
Protected TmpImgNo.l, TmpImgID.l
TmpImgNo = LoadImage(#PB_Any,ImgPath)
If TmpImgNo
TmpImgID = ImageID(TmpImgNo)
If OpenWindow(#ImageWindow, 0, 0, ImageWidth(TmpImgNo), ImageHeight(TmpImgNo), "Bitmap FileView (*.bmp)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu,WindowID(#MainWindow))
If CreateGadgetList(WindowID(#ImageWindow))
ImageGadget(#PB_Any,0,0,ImageWidth(TmpImgNo),ImageHeight(TmpImgNo),TmpImgID)
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
CloseWindow(#ImageWindow)
EndIf
FreeImage(TmpImgNo)
EndIf
EndProcedure
Procedure WindowCallBack(Window, message, wParam, lParam);- Window Callback
;/ ...to get more information see:
;/ Tricks 'n' Tips: 12.10.2004 08:06
;/ listicon Header : captured Or released
;/ http://jconserv.net/purebasic/viewtopic.php?t=12751&highlight=Header+listicon
;/ by eddy
;/ modified: 04.02.1005 sverson
Protected wWidth.l, wHeight.l, Gadget_ID.l, AktColumn.l, LastColumn.l
ReturnValue = #PB_ProcessPureBasicEvents
Select message
Case #WM_NOTIFY
*nmHEADER.HD_NOTIFY = lParam
Gadget_ID = *nmHEADER\hdr\hwndFrom
Select *nmHEADER\hdr\code
Case #HDN_ITEMCHANGING ; is header item changing?
Select GetParent_(Gadget_ID)
Case GadgetID(#ListIconGadget1)
If *nmHEADER\iItem = 2 ; col fixed "Hidden 1"
Beep_(1000,50)
ReturnValue = #True
EndIf
If *nmHEADER\iItem = 3 ; col fixed "Hidden 2"
Beep_(1200,50)
ReturnValue = #True
EndIf
EndSelect
EndSelect
EndSelect
ProcedureReturn ReturnValue
EndProcedure
FileName$ = ProgramParameter()
If OpenWindow(#MainWindow, 0, 0, 670, 520, "Bitmap Filelister (*.bmp)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#MainWindow))
ListIconGadget(#ListIconGadget1, 10, 10, 650, 480, "BMP-Datei",150,#PB_ListIcon_FullRowSelect);|#LVS_NOCOLUMNHEADER);|#PB_ListIcon_GridLines
ChangeListIconGadgetDisplay(#ListIconGadget1, #PB_ListIcon_Report)
AddGadgetColumn(#ListIconGadget1, 1, "Pfad", 480)
AddGadgetColumn(#ListIconGadget1, 2, "Hidden 1", 0)
AddGadgetColumn(#ListIconGadget1, 3, "Hidden 2", 0)
;/ un petit menu
If CreateMenu(0,WindowID(#MainWindow))
MenuTitle("&Datei")
MenuItem(#MenuNewBMPs,"BMPs neu &laden...")
MenuItem(#MenuMoreBMPs,"BMPs &nachladen...")
MenuBar()
MenuItem(#MenuQuit,"&Ende")
MenuTitle("&Anzeige")
MenuItem(#MenuBigIcons,"&Kacheln") : DisableMenuItem(0,#MenuBigIcons,#True)
MenuItem(#MenuSmallIcons,"&Symbole")
MenuItem(#MenuListModus,"&Liste")
MenuItem(#MenuReportModus,"&Details")
; MenuTitle("&Größe")
; MenuItem(#MenuBM64,"&64x64") : SetMenuItemState(0,#MenuBM64,1)
; MenuItem(#MenuBM128,"&128x128")
EndIf
SetWindowCallback(@WindowCallBack())
Repeat
If FileName$<>""
LoadFiles(FileName$)
FileName$=""
EndIf
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit=1
Case #PB_Event_Menu
Select EventMenu()
;/Partie
Case #MenuQuit : Quit=1
Case #MenuNewBMPs
ClearGadgetItemList(#ListIconGadget1)
LoadFiles("")
Case #MenuMoreBMPs
LoadFiles("")
Case #MenuBigIcons
ChangeListIconGadgetDisplay(#ListIconGadget1, 0)
DisableMenuItem(0,#MenuBigIcons,#True)
DisableMenuItem(0,#MenuSmallIcons,#False)
DisableMenuItem(0,#MenuListModus,#False)
DisableMenuItem(0,#MenuReportModus,#False)
Case #MenuSmallIcons
ChangeListIconGadgetDisplay(#ListIconGadget1, 1)
DisableMenuItem(0,#MenuBigIcons,#False)
DisableMenuItem(0,#MenuSmallIcons,#True)
DisableMenuItem(0,#MenuListModus,#False)
DisableMenuItem(0,#MenuReportModus,#False)
Case #MenuListModus
ChangeListIconGadgetDisplay(#ListIconGadget1, 2)
DisableMenuItem(0,#MenuBigIcons,#False)
DisableMenuItem(0,#MenuSmallIcons,#False)
DisableMenuItem(0,#MenuListModus,#True)
DisableMenuItem(0,#MenuReportModus,#False)
Case #MenuReportModus
ChangeListIconGadgetDisplay(#ListIconGadget1, 3)
DisableMenuItem(0,#MenuBigIcons,#False)
DisableMenuItem(0,#MenuSmallIcons,#False)
DisableMenuItem(0,#MenuListModus,#False)
DisableMenuItem(0,#MenuReportModus,#True)
EndSelect
Default
If GetAsyncKeyState_(#VK_LBUTTON) = #MouseKlick
ShowImage(GetGadgetItemText(#ListIconGadget1,GetGadgetState(#ListIconGadget1),1))
EndIf
If GetAsyncKeyState_(#VK_RBUTTON) = #MouseKlick
aktPos = GetGadgetState(#ListIconGadget1)
OldPath$ = GetPathPart(GetGadgetItemText(#ListIconGadget1,aktPos,1))
Oldfile$ = GetGadgetItemText(#ListIconGadget1,aktPos,0)
Newfile$ = InputRequester("Rename File",OldPath$,Oldfile$)
If RenameFile(OldPath$+Oldfile$,OldPath$+Newfile$)
SetGadgetItemText(#ListIconGadget1,aktPos,Newfile$,0)
SetGadgetItemText(#ListIconGadget1,aktPos,OldPath$+Newfile$,1)
Else
Beep_(100,100)
EndIf
EndIf
EndSelect
Until Quit
EndIf
EndIf
ImageList_Destroy_(Hwnd_ListNormal)
ImageList_Destroy_(Hwnd_ListSmall)
End