Neues Control nmpThumbView für Linux Lazarus

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

Neues Control nmpThumbView für Linux Lazarus

Beitrag von Nora Madeleine »

Hallo Ihr lieben,
Habe mich mal daran gemacht eine ThumbView für Linux Lazarus zu schreiben und stelle die Thumb hier zum Download rein.
Ich hoffe das euch das Control gefallen wird.

Die ThumbView ist:
primär für Video‑Thumbnails optimiert,
mit einer klaren Scan‑Logik,
und einer Architektur, die auf Video‑Workflows ausgelegt ist.

Bis dann Nora Madeleine
Zuletzt geändert von Nora Madeleine am Sa 10. Jan 2026, 12:07, insgesamt 4-mal geändert.

Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

nmpThumbView_Quick-Reference

Beitrag von Nora Madeleine »

ich poste auf gleich noch die nmpThumbView_Quick-Reference zur Thumb.

L.G. Nora Madeleine
Zuletzt geändert von Nora Madeleine am Sa 10. Jan 2026, 12:08, insgesamt 1-mal geändert.

Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von Nora Madeleine »

was noch wichtig...„Die nmpThumbView ist vollständig desktop‑unabhängig und funktioniert unter allen gängigen Linux‑Desktops (Cinnamon, XFCE, KDE, GNOME usw.) ohne Anpassungen oder Theme‑Probleme.“

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1730
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von corpsman »

Hallo Nora,
wie es der Zufall will, wollte ich eh grad ne Anwendung schreiben die mir eine übersicht über ca 1000 .png Dateien in einem Ordner erstellen kann, da dachte kommt dein "thread" hier genau recht ;).

1. Deinen Code und die Quick reference geladen
\-> Deine Lizenz ist echt strange und der Verweis auf die "nmpThumbViewLinuxOnly.pas" noch viel mehr, da es die Datei in deinem Source gar nicht gibt..., aber so what jeder darf seine Lizenz machen wie er will und ich Nutze Linux Mint Mate, darf also ;)

2. Keine Demo App enthalten, also hab ich mir mal ein Leeres Projekt gebaut und folgenden Code eingefügt:

Code: Alles auswählen

{ TForm1 }

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  nmpThumbView := TnmpThumbView.Create(self);
  nmpThumbView.Name := 'nmpThumbView1';
  nmpThumbView.Parent := self;
  nmpThumbView.top := 8;
  nmpThumbView.Left := 8;
  nmpThumbView.Width := ClientWidth - 16;
  nmpThumbView.Height := ClientHeight - 16;
  ShowOnce := true;
End;

Procedure TForm1.FormShow(Sender: TObject);
Begin
  If ShowOnce Then Begin
    ShowOnce := false;
    nmpThumbView.Directory := '/sda5/sda5/Tools/Silk_Icons';
    nmpThumbView.LoadDirectory;
    nmpThumbView.Refresh;
  End;
End;              
Programm gestartet und ich sehe ein Schwarzes Rechteck, irgendwie hatte ich da mehr erwartet :roll:

Also mal versucht ein bisschen in den Code rein zu "Browsen"

Code: Alles auswählen

procedure TnmpThumbView.LoadDirectory;   
begin
  ..
 SubDirs := TStringList.Create;
  try
    SubDirs.Sorted := True;
    SubDirs.CaseSensitive := False;

    if FindFirst(RootPath + '*', faDirectory, SR) = 0 then
    begin
      repeat
        if ((SR.Attr and faDirectory) <> 0) and (SR.Name <> '.') and (SR.Name <> '..') then
          SubDirs.Add(SR.Name);
      until FindNext(SR) <> 0;
      FindClose(SR);
    end;          
    // -- Aha du erwartest also ein Verzeichnis mit unterverzeichnissen, wenn die Dateien im Root liegen gehts wohl net ...
Also hab ich alles Bilder mal in ein Unterverzeichnis verschoben, das klappt aber auch nicht

Code: Alles auswählen

for SubDir in SubDirs do
    begin
      ImgFile := '';
      VidFile := '';

      if FindFirst(RootPath + SubDir + '/*', faAnyFile, SR) = 0 then
      begin
        repeat
          if (SR.Attr and faDirectory) = 0 then
          begin
            if (ImgFile = '') and HasExt(SR.Name, IMAGE_EXTS) then
              ImgFile := RootPath + SubDir + '/' + SR.Name
            else if (VidFile = '') and HasExt(SR.Name, FVideoFilter) then
              VidFile := RootPath + SubDir + '/' + SR.Name;
          end;
        until FindNext(SR) <> 0;
        FindClose(SR);
      end;

      if ImgFile = '' then
        ImgFile := FNoImageFoundPicture;

      if (ImgFile <> '') and (VidFile <> '') then    
hmm ImgFile findet immer meine .png Dateien aber Vidfile ist leer, ..

OK damit bin ich dann erst mal raus, bzw warte mal auf deine Antworten
- Kann man deine Komponente überhaupt zum Anzeigen von Bildchen nutzen ?
- Hast du vor noch eine Demo oder mehr zu liefern ?
--
Just try it

Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von Nora Madeleine »

hallo,
das ist wichtig: nmpThumbView1.StartScanFolder := true;

Hier ein Aufruf wie ich es mache....
procedure ScanFolderFilme(ThumbView: TnmpThumbView;BaseFolder,DatasIniFile: string;
ScanOnStart: boolean);
begin
if ( not DirectoryExists( BaseFolder )) or
( not FileExists( DatasIniFile )) or
( ThumbView = nil ) then Exit;
if ScanOnStart then
begin
ThumbView.Directory := BaseFolder;
ThumbView.LoadDirectory;
ThumbView.LoadMetaDataFromIni( DatasIniFile );
end;
end;


BaseFolder hat SubOrdner die durchlaufen werden, in jedem SubOrdner muß ein .png und mindestens ein Video vorhanden sein...
Alle Bilder werden dann gescant und in den Thumbnail-Ordner /home/username/.nmpThumbView/ThumbNails kopiert....
Die Thumb ist also zum anzeigen von Videos ausgelegt, wenn Du eine allein nur für Bilder suchst, muß Du noch warten, den die ist in Arbeit...

Und was die "nmpThumbViewLinuxOnly.pas" angeht, ich hatte eine HardKill-Version geschrieben, die jegliches Portieren zu Delphi verhindert... habe mich aber entschloßen die nicht zu posten.... Ergo habe ich vergessen es aus der Refernce zuentfernen...

L.G. Nora

Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von Nora Madeleine »

das wäre ein Aufruf wie er für Dich richtig wäre....

nmpThumbView := TnmpThumbView.Create(Self);
nmpThumbView.Parent := Self;
nmpThumbView.Align := alClient;

nmpThumbView.StartScanFolder := True;
nmpThumbView.Directory := '/mnt/sda5/Tools/Silk_Icons';


Hier mal was die ThumbView ist....

Dei ThumbView ist:
primär für Video‑Thumbnails optimiert,
mit einer klaren Scan‑Logik,
und einer Architektur, die auf Video‑Workflows ausgelegt ist.

Sie kann Bilder anzeigen, klar — aber:
der Scan‑Mechanismus ist nicht auf reine Bildordner spezialisiert
die Thumbnail‑Erzeugung ist auf Video‑Frames ausgelegt
die Dateifilterung ist anders
und die Performance‑Strategie ist auf größere Dateien abgestimmt

Ergo wenn Du nur Blider einlesen willst, ist nmpThumbView nicht das richtige Control für Dich
aber das sagt die nmpThumbView_Quick-Reference auch aus !
Zuletzt geändert von Nora Madeleine am Di 6. Jan 2026, 19:07, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 11121
Registriert: Mo 11. Sep 2006, 19:01

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von theo »

corpsman hat geschrieben: Di 6. Jan 2026, 09:14 OK damit bin ich dann erst mal raus, bzw warte mal auf deine Antworten
- Kann man deine Komponente überhaupt zum Anzeigen von Bildchen nutzen ?
- Hast du vor noch eine Demo oder mehr zu liefern ?
Soweit ich weiss, funzt mein uralter Thumbviewer noch:
viewtopic.php?t=3929
https://github.com/theo222/lazarus-thumbviewer

Ist das nichts für dich?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1730
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von corpsman »

@theo

Code: Alles auswählen

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  TThumbControl1 := TThumbControl.Create(self);
  TThumbControl1.name := 'TThumbControl1';
  TThumbControl1.Parent := self;
  TThumbControl1.Align := alClient;
  TThumbControl1.Directory := '/sda5/sda5/Tools/Silk_Icons';
End;  
Und ich sehe direkt Icons, so stellt man sich das vor ;), danke für den Hinweis, nu muss ich mal schauen ob die Komponente meine anderen Anforderungen auch hin bekommt ;)

Im Speziellen will ich die Thumbnails filtern, das heist ich muss auf die einzelnen Elemente Zugreifen können, und deren Visible attribute steuern können, im idealfall sortiert sich die Liste dann entsprechend neu..

Auf den ersten Blick habe ich das in deinem Source erst mal nicht gefunden, mal sehen wie sich das erweitern läst ..

[Edit]

Quasi wenn dass hier ginge, dann bin ich schon "fertig";)

Code: Alles auswählen

Procedure TForm1.Edit1Change(Sender: TObject);
Var
  i: Integer;
Begin
  If Edit1.Text = '' Then Begin
    For i := 0 To ThumbControl1.items.count - 1 Do Begin
      ThumbControl1.items[i].Visible := true;
    End;
  End
  Else Begin
    For i := 0 To ThumbControl1.items.count - 1 Do Begin
      ThumbControl1.items[i].Visible := pos(lowercase(edit1.text), lowercase(extractfilename(ThumbControl1.items[i].Url))) <> 0;
    End;
  End;
  ThumbControl1.invalidate;
End;  
[Edit2]
So ich hab mal ein klein wenig in deinem Code "geändert" folgender Code geht ;)

Code: Alles auswählen

Procedure TForm1.Edit1Change(Sender: TObject);
Var
  i: Integer;
Begin
  If Edit1.Text = '' Then Begin
    For i := 0 To ThumbControl1.itemcount - 1 Do Begin
      ThumbControl1.items[i].Visible := true;
    End;
  End
  Else Begin
    For i := 0 To ThumbControl1.itemcount - 1 Do Begin
      ThumbControl1.items[i].Visible := pos(lowercase(edit1.text), lowercase(extractfilename(ThumbControl1.items[i].Url))) <> 0;
    End;
  End;
  ThumbControl1.invalidate;
End; 
Ich mach dir nen Pullrequest auf github ;)
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1730
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von corpsman »

@theo,
wenn man die Änderungen im Pullrequest raus rechnet, konnte ich mit deiner Komponente dieses kleine Programm, welches genau meine Wünsche Abdeckt in unter 100 Zeilen Code schreiben ;)

Features:
- Anzeigen von Bilddateien in einen Verzeichnis als Thumbnails
- Zoom via Scrollrad
- Filter (auf Dateinamen) durch Eingabe von Suchbegriffen
- Anzeige eines Dateinamens durch "click" auf das Thumbnail
- Copy des Quellbildes in ein gewähltes Zielverzeichnis durch popup menu
preview.png
preview.png (83.01 KiB) 373 mal betrachtet
--
Just try it

Benutzeravatar
theo
Beiträge: 11121
Registriert: Mo 11. Sep 2006, 19:01

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von theo »

Schön, wenn der alte Code hilft.
Bist du dir mit den Änderungen sicher? Wenn ja, werde ich den pull request mergen, ohne Test.
Andererseits hast du ja unlängst geforkt, so könntest du ja erst mal da weitermachen und ich lasse meine alte Version noch in Ruhe?

wp_xyz
Beiträge: 5343
Registriert: Fr 8. Apr 2011, 09:01

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von wp_xyz »

corpsman hat geschrieben: Mi 7. Jan 2026, 09:05 preview.png
Da du hier in dem Beispiel-Screenshot Icons anzeigst, frage ich, ob es dir um die Anzeige von Icons oder von "normalen" Bildern (Fotos etc) geht? Im Fall von Icons (wo kein Umskalieren der Bilder nötig ist) sollte ich vielleicht darauf hinweisen, dass Lazarus seit Version 4 einen Icon-Viewer verfügbar hat, als Zusatzpackage "iconfinder" (unter "Package" > "Installierte Packages einrichten" zu installieren). Der Icon-Finder ist in die ImageList- und Picture-Editoren integriert. Das besondere dabei ist, dass in jedem Icon-Verzeichnis eine Datei "metadata.xml" mit Suchwörtern zu jedem Bild angelegt ist, so dass man Icons ganz schnell findet und in die eigene ImageListe oder das eigene Image integrieren kann. Leider gibt es noch ein paar Kleinigkeiten, um deren Behebung ich mich drücke (z.B. gibt es die Suchbegriffe nur auf Englisch), so dass ich noch keine große Bekanntmachung dazu gemacht habe.
Dateianhänge
iconfinder.png
iconfinder.png (33.43 KiB) 334 mal betrachtet

Linkat
Lazarusforum e. V.
Beiträge: 573
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von Linkat »

Beachtet bitte, dass dies der Thread von Nora ist!!!

Ihr seid schon ordentlich abgebogen.
Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS

Nora Madeleine
Beiträge: 7
Registriert: Mo 5. Jan 2026, 16:44
OS, Lazarus, FPC: Linux Lazarus (L 4.4.0 FPC 3.2.2)
CPU-Target: AMD

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von Nora Madeleine »

Habe mich auch schon gefragt, warum das hier abgehen muß.....

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1730
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von corpsman »

Zum Icon thema bitte hier abbiegen..
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Neues Control nmpThumbView für Linux Lazarus

Beitrag von af0815 »

Nora Madeleine hat geschrieben: Mi 7. Jan 2026, 14:27 Habe mich auch schon gefragt, warum das hier abgehen muß.....
Vielleicht erbarmt sich ein Moderator und trennt das ab in einen eigenen Thread. :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten