Seite 1 von 3

Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 03.04.2018 06:41
von Ghosty1967
Hallo zusammen...
ich stricke mir gerade ein kleines Programm um diverse Metadaten zu Bildern abzuspeichern. Da habe ich von
der "ThumbListGadget" Lib hier im Forum gelesen. Allerdings sind sämtliche links die ich hier und im Netz finden
konnte tot. Weiß jemand, ob diese Lib noch existiert und wo man die evtl. downloaden kann.
Oder gibt es vielleicht eine andere Möglichkeit Miniaturansichten wie in Picasa, XNView o.ä anzeigen zu lassen,
die einer von euch schon einmal zusammengebastelt hat und mir evtl. zur Verfügung stellen würde ;)

__________________________________________________
Thread verschoben
Ankündigungen>Projekte, Ressourcen, Tools
06.04.2018
RSBasic

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 03.04.2018 08:48
von Bisonte
Wie der Zufall so will, hab ich doch letzt erst im englischen Forum drüber gelesen....

http://www.purebasic.fr/english/viewtop ... 12&t=70295

Wenn es sowas ist.... Aber da ging es definitiv um Thumbnails.

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 03.04.2018 20:36
von Ghosty1967
Hmm, geht in die richtige Richtung.Allerdings nicht so gaaaannnz das, was ich mir vorstelle. Ich habe mal eben schnell was
zusammengestrickt, was wohl am besten zeigt, was ich mir so vorstelle. Ich lese in dem Beispiel alleBilddateien des ausgewählten
Verzeichnis in eine Datenliste ein und generiere zu jeder Datei ein "Icon" zur Darstellung im ListIconGadget.
Ich komme aber irgendwie nicht so richtig mit dem Handling der ImageListe klar. Warum muss ich erst ein 0tes-Elementn hinzufügen,
damit alle Bilddateien angezeigt werden und wie kann ich die Liste zurücksetzen, wenn ich ein neues Verzeichnis auswähle.
Schaut euch doch den Beispielcode einfach mal an, aber bitte... der ist echt heiß gestrickt, haut mich nicht zu sehr :mrgreen:

Code: Alles auswählen

UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTIFFImageDecoder()
UseGIFImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()

Enumeration 0
  #WIN_INTERFACE
  #LST_PREVIEW
  #TRE_FILELIST
  #CON_LISTINFO: #TXT_LISTINFO
EndEnumeration  

Enumeration 1000
  #TEMPIMAGE
  #FNT_ARIAL
EndEnumeration    
    
;Struktur für die eingelesenen Daten erstellen (erstmal nur Dateiname, später mehr)
Structure ContentStruct
  FILE.s
EndStructure

;Datenliste und globale Variablen erstellen
Global NewList CONTENT.ContentStruct()
Global imgList.l

;Ein "Dummy-Image" für die Imagelist (Element 0) erstellen (Keine Ahnung warum das nötig ist)
If  CreateImage(0, 156, 156, 32)
  If StartDrawing(ImageOutput(0))
    StopDrawing()
  EndIf  
EndIf

Procedure CreateThumbnail(usrImage.l, file.s)
  ;Bilddatei öffnen, Daten einlesen und Grafik für die Anzeige im ListIconGadget erstellen
  If LoadImage(#TEMPIMAGE, file)
    Debug "Lese Bilddaten von " + file
    imgW.l = ImageWidth (#TEMPIMAGE)
    imgH.l = ImageHeight(#TEMPIMAGE)
    imgN.s = GetFilePart(file)
    imgD.s = Str(imgW) + "x" + Str(imgH) + " - " + Str(FileSize(file)/1024) + "kB"
    imgT.s = FormatDate("%dd.%mm.%yyyy  %hh:%ii:%ss", GetFileDate(file, #PB_Date_Modified))
    ;Neue Bildgrößen berechen
    If imgW > imgH
      relWH.f = imgH / imgW: newW  = 120: newH = 120 * relWH
    ElseIf imgH > imgW
      relWH.f = imgW / imgH: newH  = 96: newW = 96 * relWH
    ElseIf imgW = imgH
      newH  = 120: newW = 120
    EndIf
    If CreateImage(usrImage, 156, 156, 32, $EAEAEA)
      If StartDrawing(ImageOutput(usrImage))
        DrawingFont(FontID(#FNT_ARIAL))
        Box(  14,   4, 128, 104, $FFFFFF)
        Box(   0, 111, 156,  54, $CAEDED)
        DrawText((156 - TextWidth(imgN)) / 2, 112, imgN, $0, $CAEDED)
        DrawText((156 - TextWidth(imgD)) / 2, 126, imgD, $0, $CAEDED)
        DrawText((156 - TextWidth(imgD)) / 2, 140, imgT, $0, $CAEDED)
        DrawingMode(#PB_2DDrawing_Outlined)
        Box(   0,   0, 156, 156, $ACACAC)
        Box(  14,   4, 128, 104, $B7B7B7)
        DrawImage(ImageID(#TEMPIMAGE),  15 + ((126 - newW) / 2),  8 + ((96 - newH) / 2), newW, newH)
        StopDrawing()
      EndIf
    EndIf  
    ImageList_Add_(imgList, ImageID(usrImage), 0)
    FreeImage(#TEMPIMAGE)
  EndIf
EndProcedure

Procedure ReadDirectoryEntries(usrPath.s)
  ;Alle Bilddateien im ausgewählten Verzeichnis auslesen und in der Datenliste speichern
  ;usrPath.s = GetGadgetText(#TRE_FILELIST)
  pattern.s = "gif|jpeg|jpg|tga|tif|tiff|bmp|png"
  Protected dir = ExamineDirectory(#PB_Any, usrPath, "*.*")
  If dir
    ClearList(CONTENT())
    While NextDirectoryEntry(dir)
      If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        filename.s = usrPath + DirectoryEntryName(dir)
        If FindString(LCase(pattern), LCase(GetExtensionPart(filename))) > 0
          AddElement(CONTENT())
          CONTENT()\FILE = filename
        EndIf
      EndIf
    Wend
  EndIf
EndProcedure

Procedure RefillListicon()
  ;ListIconGadget mit den Grafiken aus der Imageliste befüllen
  If CountGadgetItems(#LST_PREVIEW) > 0
    ;Ist das Gadget bereits gefüllt, den Inhalt löschen und die Imageliste leeren
    ImageList_Destroy_(imgList)
    ClearGadgetItems(#LST_PREVIEW)
  EndIf  
  imgList = ImageList_Create_(156, 156, #ILC_COLOR32|#ILC_MASK, 0, 20)
  ;Wenn ein 0tes Bild in die Imageliste eingefügt wird, funktioniert alles...
  ;ImageList_Add_(imgList, ImageID(0), 0)
  ;ansonsten fehlt immer das erste Element der Liste in der Anzeige
  ForEach CONTENT()
    CreateThumbnail(ListIndex(CONTENT()), CONTENT()\FILE)
  Next
  For i = 1 To ListSize(CONTENT()) - 1
    AddGadgetItem(#LST_PREVIEW , -1, "", ImageID(i))
  Next
  oldIL = SendMessage_(GadgetID(#LST_PREVIEW), #LVM_GETIMAGELIST, #LVSIL_NORMAL, 0)
  SendMessage_(GadgetID(#LST_PREVIEW), #LVM_SETIMAGELIST, #LVSIL_NORMAL, imgList)
  ImageList_Destroy_(oldIL)
  SendMessage_(GadgetID(#LST_PREVIEW), #LVM_SETICONSPACING, 0, 155 * 65536 + 155)
EndProcedure

If OpenWindow(#WIN_INTERFACE, 0, 0, 950, 700, "",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  LoadFont(#FNT_ARIAL, "Arial", 8)
  ;GUI erstellen...  
  ListIconGadget    (#LST_PREVIEW , 299,  25, 646, 474, "", 200, #PB_ListIcon_MultiSelect)
  TextGadget        (#PB_Any      ,   5,   5, 100,  14, "Verzeichnis")
  ExplorerTreeGadget(#TRE_FILELIST,   5,  25, 289, 474, "", #PB_Explorer_AlwaysShowSelection|#PB_Explorer_NoFiles|#PB_Explorer_AutoSort)
  SetGadgetAttribute(#LST_PREVIEW , #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)

  ;Events abfragen...
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #TRE_FILELIST
            ;Bei einem Verzeichniswechsel, alle Daten einlesen... funktioniert nur beim ersten mal (WARUM?)
            If EventType() = #PB_EventType_LeftClick
              ReadDirectoryEntries(GetGadgetText(#TRE_FILELIST))
              If ListSize(CONTENT()) > 0
                RefillListicon()
              EndIf
            EndIf  
        EndSelect    
    EndSelect
  Until EventID = #PB_Event_CloseWindow
EndIf

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 19:22
von Micha122
Bei mir wird jede Kleinigkeit sofort von RSBasic geändert/korrigiert (nicht immer zum besten) und dieser Thread ist seit Tagen im Unterforum "Ankündigungen".

Muss ich das verstehen?

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 20:32
von RSBasic
Micha122 hat geschrieben:Bei mir wird jede Kleinigkeit sofort von RSBasic geändert/korrigiert (nicht immer zum besten)
Ich versuche immer, die Bearbeitungszeit (<5s) gering wie möglich zu halten.
Micha122 hat geschrieben:dieser Thread ist seit Tagen im Unterforum "Ankündigungen".
Ich habe den Thread jetzt verschoben.

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 22:35
von Micha122
Thread verschoben
Ankündigungen>Offtopic
06.04.2018
RSBasic
Verschoben ist schon mal gut, aber die Wahl des Unterforums ist doch etwas fragwürdig.

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 22:37
von RSBasic
Ich war mir nicht sicher, ob Allgemein oder Offtopic. Da das keine spezielle Frage zur Programmierung mit PB ist, sondern nur über die Verfügbarkeit einer Library, habe ich deshalb in Offtopic verschoben. Dort können auch allgemeine PB-Fragen gestellt werden.
Oder hast du einen anderen Vorschlag?

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 22:55
von ts-soft
Wie wäre es mit: Projekte, Ressourcen, Tools

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 06.04.2018 22:58
von RSBasic
Ja, das klingt besser.

Re: Was ist aus der "ThumbListGadget" Lib geworden...

Verfasst: 07.04.2018 09:03
von Ghosty1967
Sorry für die Arbeit...weiss auch nicht warum die Frage da gelandet ist.
Werde in Zukunft besser aufpassen!!!