Änderungs-Sammelsurium Teil 2

Verfasst am: Montag, 21. Apr. 2014 um 13:13

Nachdem ich bereits in der letzten Version angefangen hatte viele kleine Änderungen umzusetzen, so habe ich dies in den letzten Wochen fortgeführt. Heute Nacht ist die letzte Änderung fertig geworden, die ich unbedingt für das Verschlagworten meiner Fotos benötige. Oft habe ich nämlich das Problem, das ich mehrere Fotos aufgenommen habe, die die gleichen Motive zeigen und daher mit der gleichen Schlagwortkombination versehen werden müssen. Das immerwieder gleiche raussuchen und anklicken der Schlagworte ist ermüdend und fehleranfällig. Daher habe ich nun die Möglichkeit geschaffen, die Schlagworte eines Fotos zu kopieren, um sie bei einem anderen Foto wieder einfügen zu können. Aber auch andere Themen standen an der Tagesordnung.

Anfänge zur Integration einer lokalen Datenbank

In vorherigen Blogeinträgen hatte ich bereits geschrieben, das es mich stört, das immer mehr Funktionen des BVASystems nur verfügbar sind, wenn ein Datenbanksystem installiert wurde. Da dieses recht aufwendig ist, wird aus meiner Sicht ein Test des Programmes erschwert. Meine Lösung sieht vor, das ich eine lokale Datenbankdatei erstelle, in der die vom Nutzer eingegebenen Daten gespeichert werden.  Bilder möchte ich nicht direkt in der Datenbank ablegen. Es sollen nur Verknüpfungen zu Fotos auf der Festplatte erstellt werden. 

Mit der Integration der lokalen Datenbank habe ich nun begonnen. In einem speziell erstellten Worker-Task wird überprüft, ob die Datenbank-Datei vorhanden ist. Ist sie nicht vorhanden, wird sie angelegt. Standardmäßig wird die Datei im gleichen Ordner gespeichert wie die Einstellungsdateien des Programmes.

Filterelement zur automatischen Bildbewertung

Das BVASystem speichert ab, wie oft ein Bild angeschaut wurde. Dadurch erhalten die Fotos, die am meisten angesehen werden, eine hohe Bildbewertung. Weniger oft angesehenende Bilder erhalten dementsprechend eine weniger gute Bewertung. Analog zum Filterelement „Manuelle Bildbewertung“ habe ich nun ein Filterelement geschaffen, das nach der automatischen Bildbewertung filtert. Die Bedienung des Elementes ist genau die gleiche, wie bei der manuellen Bildbewertung.

Filterkriterium automatische Bildbewertung

Filterkriterium automatische Bildbewertung

Kopieren und Einfügen von Schlagwortkombinationen

Das Kopieren und Einfügen von Schlagwortkombinationen wurde in das Bildinformationspanel Schlagworte integriert. Auf der linken Seite des Panels befinden sich 2 neue Knöpfe. Mit dem obereren wird die aktuell aktive Schlagwortkombination in die Zwischenablage kopiert. Das Kopieren kann beliebig oft wiederholt werden. Die vorher kopierten Schlagworte gehen dabei nicht verloren. Durch den unteren Knopf wird dann die Einfügen Funktion aktiviert. Dort öffnet sich ein Popup-Dialog, in dem eine der kopierten Schlagwortkombinationen ausgewählt werden kann. Nach der Auswahl werden die Schlagworte bei dem aktuell aktiven Foto dann natürlich über den Worker gesetzt.

Funktion zum Einfügen einer Schlagwortkombination

Funktion zum Einfügen einer Schlagwortkombination

Viele neue Baustellen

Verfasst am: Donnerstag, 03. Apr. 2014 um 22:22

Nachdem ich eine stabile Softwareversion veröffentlicht habe, fühle ich mich immer sehr befreit und überlege mir, welche Punkte in den nächsten Monaten unbedingt umgesetzt werden müssen. Da ich immer möglichst schnell alle technischen Probleme erkennen bzw. lösen möchte, fange ich dann meist auch mit allen Punkten gleichzeitig an. So ist es auch diesmal wieder gewesen. Eventuell hatte ich mir dabei aber ein bisschen zu viel vorgenommen. Außerdem lag ich die letzte Woche auch noch krank im Bett. Nun nach fast einem Monat bin ich aber fertig und kann euch endlich zeigen, welche Änderungen es in den nächsten Monaten noch geben wird.

Bildfilterung

Die Bildfilterung ist für mich mittlerweile ein unverzichtbares Werkzeug geworden. Allerdings fehlt mir nach wie vor die eine oder andere Möglichkeit zur Filterung. Daher werde ich das System nach und nach um weitere Kriterien erweitern. Mit der heutigen Version ist die Möglichkeit nach der manuellen Bildbewertung zu filtern hinzugekommen. Möchte man nun Beispielsweise von seinem Urlaub berichten, so kann man gezielt nur die guten Bilder vorzeigen. 

Filterkriterium manuelle Bildbewertung

Filterkriterium manuelle Bildbewertung

Fehlende Schlagwort-Funktionen

Bei der Verschlagwortung von Fotos fehlten bisher einige sehr wichtige Funktionen. Zum Beispiel konnten Schlagworte, die einmal erzeugt wurden, nicht mehr aus der Datenbank entfernt werden. Auch eine Änderung, z.B. weil man sich bei der Eingabe verschrieben hatte, war nicht machbar. Mit der jetzigen Version ist dies beides nun möglich. Beide Funktionen sind über einen Popup-Dialog erreichbar, welcher über den einzelnen Schlagworten des Bildinformationsfensters Schlagworte geöffnet werden kann. Aber auch hier gibt es in den nächsten Wochen noch etwas zu tun. Denn mir fehlt eine Funktion mit der man 2 Schlagworte zusammenführen kann. Stellt man fest, das man aus versehen die Schlagworte „Elefant“ und „Elefanten“ verwendet hat, so soll es möglich sein, eines der beiden Schlagworte zu ersetzen.

Dialog zur Umbenennung eines Schlagwortes

Dialog zur Umbenennung eines Schlagwortes

Neue Scrollbar-Komponente

Häufig ärgere ich mich darüber, das das aktive Element des Baumes oder das der Bildliste nicht im sichtbaren Bereich liegen und ich es erst mit Hilfe der Scrollbar suchen muss. Oft scrolle ich dabei natürlich zuerst in die falsche Richtung. Ich habe bereits probiert, die Steuerelemente so anzupassen, das das aktive Element immer im sichtbaren Bereich liegt. Allerdings war dieses unpraktisch, da die Steuerelemente viel zu häufig allein den sichtbaren Bereich veränderten. Meine neue Idee ist es daher, eine Markierung auf der Scrollbar anzubringen, damit man immer sofort weiß, wo sich das aktive Element befindet. Leider ist dies mit der jetzigen Scrollbar-Komponente nicht möglich. Daher habe ich damit begonnen, eine komplett eigene Scrollbar zu entwickeln. Die Optik (bis auf die der Markierung) habe ich bereits fertig. Ihr könnt euch die Scrollbar in einem neu geschaffenen Testdialog („Reagenzglas“-Knopf im Hauptmenü) ansehen. 

Aussehen der zukünftigen Scrollbars

Aussehen der zukünftigen Scrollbars

BVASystem Version 2.2.0

Verfasst am: Dienstag, 11. Mrz. 2014 um 22:42

Da nun bereits wieder der Frühling vor der Tür steht, ist es wieder an der Zeit, eine stabile Version des BVASystems zu veröffentlichen. Wenn ich ehrlich bin, ist in den letzten Monaten dieses mal nicht eine einzige Funktion entstanden, die ich als das Non-Plus-Ultra bezeichnen würde. Vielmehr habe ich dieses mal eine Reihe von kleineren Verbesserungen vorgenommen, die sich beim täglichen Umgang mit dem Programm definitiv bemerkbar machen.

Am wichtigsten, gerade in Hinblick auf die Bildfilterung, war mir dabei die Neugestaltung der Sortierung. Die Ergebnisse der Bildfilterung können nun, auch schon bereits während die Filterung berechnet wird, nach Filterungsübereinstimmung sortiert werden. Damit erscheinen die Fotos, die man sicherlich sehen möchte am Anfang der Bildliste. Als weitere Veränderung an der Bildfilterung fällt sicherlich auf, das man nun einzelne Filter auch wieder löschen kann. Für bequeme Anwender besteht ebenfalls die Möglichkeit, alle Filter auf einmal zu löschen bzw. alle Filter zu deaktivieren. Als neues Filterkriterium können nun die zu den Fotos zugeordneten Schlagworte genutzt werden.

BVASystem 2.2.0 - Miniaturbilder mit aktivierter Bildfilterung

BVASystem 2.2.0 – Miniaturbilder mit aktivierter Bildfilterung

Ganz neu ist der Dialog, der zur Konfiguration der Schlagworte dienen soll. Mit diesem können bequem Schlagworte zu den einzelnen Schlagwortkategorien zugeordnet werden. Neu ist ebenfalls die Möglichkeit, Fotos aus der Datenbank zu exportieren. In der letzten Woche habe ich noch eine Funktion umgesetzt, die bereits seit rund 1300 Tagen auf meiner Todo-Liste stand. Es können nun mehrere Fotos auf einmal selektiert werden, wenn man beim Selektieren die Shift-Taste gedrückt hält.

Ausblick

Für die nächste Zeit habe ich mir wieder größere Änderungen vorgenommen. Die größte ist dabei sicherlich, das ich das System um eine lokale Datenbank erweitern möchte. Ich bin eigentlich total glücklich darüber, wie ich meine eigenen Fotos mit dem BVASystem verwalten kann. Allerdings stört mich, das immer mehr Funktionen ausschließlich datenbankseitig verfügbar sind. Daher habe ich mir überlegt, eine lokale Datenbankdatei zu nutzen, um nach und nach die angesprochenen Funktionen auch lokal nutzbar zu machen. Dabei sollen keine Bilder in der Datenbankdatei abgelegt werden. Die lokale Datenbank soll ausschließlich dazu dienen, die Textdaten der Fotos schnell auffindbar zu speichern.

Damit es auch wieder sichtbare Änderungen gibt, habe ich mir vorgenommen, die Filterung um weitere Kriterien zu erweitern. Gerade jetzt, wo die Sortierung der Filterungsergebnisse möglich ist, nutze ich die Funktion recht häufig. Allerdings fehlt mir definitiv noch das eine oder andere Kriterium, damit ich dort wunschlos glücklich werde. Fast noch wichtiger ist es, bei den Schlagworten noch einige Funktionen nachzureichen. Es ist zum Beispiel aktuell nicht möglich, ein Schlagwort komplett zu löschen. Auch die Umbenennung eines Schlagwortes ist aktuell noch nicht möglich. Außerdem habe ich mir vorgenommen, in den Miniaturbildkomponenten eine Markierung zu schaffen, die das Auffinden des aktiven Elementes vereinfachen soll. Gerade bei größeren Bildlisten kann man doch recht schnell den Überblick verlieren.

Verbesserte Objekt-Stringlisten

Verfasst am: Donnerstag, 06. Mrz. 2014 um 21:48

Ich bin mittlerweile dazu übergegangen, Stringlisten mit Objekten zur Verwaltung meiner internen Datenstrukturen zu verwenden. Für mich haben sie den Vorteil, das man sie durch eine einfache Einstellung von Anfang an sortiert aufbauen kann. Gerade die Suche nach einem Element der Liste wird dadurch viel effizienter, da dafür eine binäre Suche angewendet wird. Allerdings habe ich recht häufig vergessen, das ein einfaches freigeben der Liste nicht reicht, um sämtlichen Speicherplatz wieder freizugeben. Die Objekte blieben dadurch häufig stehen. Um diese Fehlerquelle für immer auszuschließen, habe ich mich entschlossenen, die Stringlisten-Klasse zu erweitern. Dazu musste ich 2 Funktionen der Stringlistenklasse überschreiben und eine neue hinzufügen.

  • Der Destruktor „Destroy()“ leert nun die Stringliste, bevor das Listenobjekt freigegeben wird.
  • Die Funktion „Clear()“, die zum leeren der Liste dient, gibt nun eventuell vorhandene Objekte frei.
  • Die neue Funktion „DeleteObject()“ löscht ein Element aus der Stringliste und gibt das dazugehörige Objekt frei.

Weiterhin behinderte mich die Tatsache, das man die Zeichenkette eines Elementes nicht verändern konnte, wenn die Liste sortiert ist. Da ich nun bereits eine eigene Klasse hatte, kümmerte ich mich auch gleich um dieses Problem. Hier reichte es aus, eine einzelne Funktion zu überschreiben.

  • In der Funktion „Put()“ wird nun das alte  Element aus der Liste gelöscht und ein neues mit der geänderten Zeichenkette erstellt. Der Zeiger auf das Objekt wird dabei übernommen.

Hier der Quelltext der kompletten Klasse:

unit claNVStringList;

interface

uses classes;

type
TNVStringList = class(TStringList)
private
protected
public
{*** Destruktor der Klasse ***}
destructor Destroy; override;
{*** Löscht alle Items der Liste ***}
procedure Clear; override;
{*** Löscht ein Item und das dazugehörige Object aus der Liste ***}
procedure DeleteObject(AIndex:Integer);
{*** Austausch eines Strings in der Sortierten Liste ***}
procedure Put(AIndex: Integer; const AValue: string); override;
end;

implementation

{*** Destruktor der Klasse ***}
destructor TNVStringList.Destroy;
begin
Clear;

inherited Destroy;
end;

{*** Löscht alle Items der Liste ***}
procedure TNVStringList.Clear;
var I:Integer;
begin
for I := 0 to Count-1 do begin
if Objects[I] <> nil then begin
Objects[I].Free;
end;
end;

inherited Clear;
end;

{*** Löscht ein Item und das dazugehörige Object aus der Liste ***}
procedure TNVStringList.DeleteObject(AIndex:Integer);
begin
if Objects[AIndex] <> nil then begin
Objects[AIndex].Free;
end;
Delete(AIndex);
end;

{*** Austausch eines Strings in der Sortierten Liste ***}
procedure TNVStringList.Put(AIndex: Integer; const AValue: string);
var Obj:TObject;
begin
if Sorted then begin
Obj := Objects[AIndex];
Delete(AIndex);
if Obj = nil then begin
Add(AValue);
end else begin
AddObject(AValue,Obj);
end;
end else begin
inherited Put(AIndex,AValue);
end;
end;

end.

Sortierung der Bildlisten

Verfasst am: Montag, 03. Mrz. 2014 um 22:57

Für die Sortierung von Bildlisten nach der Übereinstimmung der ausgewählten Filterkriterien musste ich den bisherigen Ablauf des Sortiervorgangs komplett verwerfen und neu implementieren. Die bisher eingesetzte einfache Lösung musste durch eine viel kompliziertere ersetzt werden. Diese hat nun allerdings einige Vorteile, die ich nicht mehr missen möchte.

Der größte Vorteil dabei ist, das die Sortierung robust gegenüber Änderungen ist. Wird zum Beispiel der Bildtitel verändert, so verändert sich automatisch die Position des Bildes in der Bildliste. Gerade für die Filterkriterien-Übereinstimmung ist dies total praktisch, da sich die Übereinstimmungen wahrscheinlich mit jeder Änderung an den Filterkriterien ändern werden. Ein weiterer Vorteil der neuen Sortierung ist, das der Zugriff auf die einzelnen Elemente beschleunigt werden konnte. Bisher musste nach der Ausführung einer Worker-Aufgabe die komplette Bildliste durchlaufen werden, um das entsprechende Foto wiederzufinden. Die Position des Bildes in der Bildliste lies sich leider nicht nutzen, da sich diese während der Ausführung der Aufgabe hätte ändern können. Da die interne Sortierung der Bildliste nun fest ist, kann jetzt durch eine binäre Suche jedes beliebige Element der Liste schnell gefunden werden.

Sortierte gefilterte Bildliste

Sortierte gefilterte Bildliste

Dadurch, das die Bildliste eines der zentralen Elemente des BVASystems ist, musste ich in den letzten beiden Wochen so ziemlich jede Funktion des Programmes verändern. Zuerst hoffte ich, das ich diese Änderungen nach und nach durchführen  könnte. Dies stellte sich allerdings als nicht praktikabel heraus. Es musste also alles auf einmal sein. Vor 2 Wochen sah das Programm daher total erbärmlich aus. Überall Zugriffsverletzungen, Fehler und sonstige komische Verhaltensweisen. Daher bin ich nun um so glücklicher, das die neue Sortierung einsatzbereit ist und das Programm wieder so funktioniert, wie es funktionieren soll.

Ausblick

Trotzdem habe ich mir für die nächsten 2 Wochen vorgenommen, nochmals alles gut zu testen und auftretende Fehler zu korrigieren. Außerdem werde ich ein weiteres ewiges offenes Problem, die Auswahl mehrerer Bilder, lösen. Ähnlich wie im Windows Explorer möchte ich,  wenn bei der Auswahl die Shift-Taste gedrückt wird, das alle Bilder, die sich zwischen den beiden angeklickten Fotos befinden, markiert werden.

Export von Fotos

Verfasst am: Samstag, 15. Feb. 2014 um 23:24

Lange überfällig war beim BVASystem eine Funktion, mit der Bilder aus der Datenbank wieder auf Festplatte geschrieben werden können. Da ich die Funktion nun bereits relativ häufig vermisste, habe ich sie nun endlich umgesetzt. In der Version 2.1.6.78-dev, die ab jetzt hier heruntergeladen werden kann, ist die Export-Funktion enthalten. Die Bildfilterung wurde um 2 zentrale Funktionen erweitert, mit denen alle aktiven Filter deaktiviert bzw. gelöscht werden können. Eine weitere auffällige Änderung ist es, das die Sortierung der Bildliste nun über die Hauptmenüleiste festgelegt werden kann. Zu guter letzt habe ich wieder an der Testanwendung gearbeitet, so das ich nun in der Lage bin, das Löschen eines Bildes aus der Datenbank automatisiert zu testen.

Der Bildexport

Die Export-Funktion wurde in die Popupmenüs integriert, die über den Bildern oder Miniaturbildern geöffnet werden können. Genauso wie beim Bildimport, ist der Export für einzelne Bilder oder eine Bildauswahl möglich. Die für den Export notwendigen Parameter können in einem Dialog eingestellt werden. Der eigentliche Export wird natürlich über den Worker ausgeführt, damit die Anwendung weiterhin bedienbar bleibt.

Einstellungsdialog zum Bildexport

Einstellungsdialog zum Bildexport

Da meine Mutter häufig Probleme hat, ihre Fotos in der richtigen Größe per E-Mail zu versenden, habe ich mir überlegt, das in der Export-Funktion gleich eine Skalierung mit integriert sein könnte. Auch für mich ist diese Funktion nützlich, da ich meine Fotos auf 1500 Pixel Breite skaliere, bevor ich sie auf meiner Foto-Homepage verwende. Um möglichst viele Anwendungsfälle zu erfüllen, gibt es im BVASystem nun 4 Möglichkeiten, wie Fotos exportiert werden können. Natürlich kann das Foto wieder so exportiert werden, wie es in der Datenbank eingestellt wurde. Außerdem stehen 3 verschiedene Exportvarianten mit Skalierung der Bilder bereit. Es kann die Länge der langen Bildseite oder die Länge der kurzen Bildseite festgelegt werden.  Als drittes können die Fotos mit einem festen Skalierungsfaktor vergrößert bzw. verkleinert werden. Bei allen Skalierungsvarianten bleibt das ursprüngliche Seitenverhältnis des Bildes erhalten.

Ausblick

Als kleinen Ausblick habe ich bereits damit begonnen, die Sortierungsfunktionen des Programmes zu verändern. Im vorigen Blog schrieb ich bereits in was für einem Dilemma ich dort stecke. Da ich die Sortierung, gerade für die Bildfilterung, unabdingbar halte, werde ich mich in den nächsten Wochen damit auseinander setzen. Ich hoffe, das ich die großen Änderungen möglichst schnell umsetzen kann, damit ich mich hier bald mit einer neuen Version melden kann. 

Das Dilemma mit der Sortierung

Verfasst am: Dienstag, 11. Feb. 2014 um 22:57

Ich habe mit fast jedem Blogeintrag hier eine neue Version vom BVASystem veröffentlicht. Heute möchte ich den Blog allerdings nutzen, um aufzuzeigen was für ein immenser Aufwand an einer Kleinigkeit hängen kann. Diese Kleinigkeit ist die Sortierung der Bildliste.

Ist-Zustand

Aktuell können 4 unterschiedliche Sortierungsreihenfolgen ausgewählt werden: Bildtitel aufsteigend und absteigend und Aufnahmedatum aufsteigend und absteigend. Bei Bildlisten aus der Datenbank funktionieren diese auch so wie gewünscht. Wird dagegen die Bildliste durch die Auswahl eines Verzeichnisses erstellt, so funktioniert die Sortierung nach dem Aufnahmedatum nicht. Der Grund dafür liegt in den nebenläufigen Prozessen des BVASystems.

Die Bildlisten werden generell losgelöst von der Programmoberfläche eingelesen, damit die Oberfläche  während des Einlesevorgangs weiterhin bedienbar bleibt. Bei der Auswahl eines Verzeichnisses dauert dieser Einlesevorgang recht lange, da jedes Bild geöffnet werden muss, um das Thumbnail und die Metadaten auszulesen. Daher habe ich den Einleseprozess in mehrere Stufen geteilt. Im ersten Schritt wird nur bestimmt, welche Dateien sich im gewählten Verzeichnis befinden. Im zweiten Schritt werden die Metainformationen ausgelesen und im dritten Schritt wird das notwendige Thumbnail erstellt. Nun ist es so, das die Sortierung bereits nach dem ersten Schritt durchgeführt wird, da die Bildliste nach diesem Schritt bereits in der Oberfläche angezeigt wird. Allerdings ist hier das Aufnahmedatum der Fotos noch nicht bekannt. Diese wird erst zusammen mit den Metadaten im zweiten Schritt ausgelesen.

Ausweg

Prinzipiell bieten sich 2 Lösungswege an. Der einfachere Weg ist es sicher, die Bildliste erst anzuzeigen nachdem die Metadaten aller Fotos ausgelesen wurden. Dies würde allerdings dazu führen, das das Programm deutlich langsamer wird. Also werde ich den komplizierteren Weg wählen müssen und einen Mechanismus schaffen, der die Sortierung sofort aktualisiert, sofern sich ein Aufnahmedatum geändert hat.

Was muss dafür alles angepasst werden?

Der wichtigste Punkt ist sicherlich, das die Bildliste nun unabhängig von der gewählten Sortierung gespeichert wird. Zusätzlich muss eine Indexliste erstellen werden, die die gewählte Sortierung repräsentiert. Alle Funktionen, über die Zugriff auf ein Listenelement erfolgt, müssen folglich angepasst werden. Wenn beispielsweise das dritte Element der Liste benötigt wird, muss in der Indexliste nachgeschaut werden, an welcher Position in der unsortierten Bildliste sich die gewünschten Daten befinden.

Damit die Indexliste bei einer Änderung des Aufnahmedatums oder Bildtitels angepasst werden kann, muss das Listenelement die Bildliste über Änderungen informieren. Sofern sich dadurch Positionen innerhalb der Bildliste verschieben, muss diese wiederum die Komponenten zur Anzeige informieren. Diese müssen nämlich ebenfalls aktualisiert werden. Zu guter letzt muss ebenfalls der Cache angepasst werden, der die Thumbnails verwaltet.

Insgesamt müssen für die geänderte Sortierung fast alle Kern-Komponenten des BVASystems modifiziert werden. Das folgende Bild soll die Zusammenhänge verdeutlichen.

Schaubild zur Listensortierung

Schaubild zur Listensortierung

Ausblick

Ich habe für die Änderungen die jetzt bevorstehen, keine weiteren Zwischenversionen der Bildverwaltung geplant. Eine halbfertige Umsetzung, wo Teile der Bildlistenanzeige nicht funktionieren, würde euch nichts bringen. Aktuell bin ich gerade dabei, die Lösung des Sortierungsdilemmas vorzubereiten. Wenn diese Vorbereitung abgeschlossen ist, werde ich nochmals eine  Programmversion veröffentlichen. Anschließend werde ich einige Zeit brauchen um alle Änderungen umzusetzen. Damit die ganze Frickelei nicht ohne neue Funktion bleibt, werde ich im Zuge dessen als drittes Sortierungskriterium die Filterungsübereinstimmung einführen. Dazu später allerdings mehr …

Arbeiten am Schlagwort-Konfigurationsdialog

Verfasst am: Donnerstag, 23. Jan. 2014 um 01:12

Mit dem Schlagwort-Konfigurationsdialog war ich bisher in zweierlei Hinsicht unzufrieden. Immer wenn ich ein Schlagwort einer Schlagwortkategorie zuordnen wollte, ärgerte ich mich, das dieses nur recht umständlich über die Funktion „Schlagwortkategorie editieren“ möglich war. Gerade bei der Zuordnung von mehreren Schlagworten verlor ich schnell die Lust und dachte sofort an den Schlagwort-Konfigurationsdialog, der eigentlich genau für diese Zuordnungsarbeit erschaffen wurde. Allerdings schaffte ich es bisher nicht, den Dialog soweit fertigzustellen. Des weiteren war es natürlich unschön, einen Dialog in der Anwendung zu haben, der nicht sinnvoll genutzt werden konnte. 

Schlagwortkonfigurationsdialog

Schlagwortkonfigurationsdialog

Damit ist nun endlich Schluss, denn mit dem Schlagwort-Konfigurationsdialog können jetzt Schlagworte zu Schlagwortkategorien zugeordnet werden. Dazu wählt ihr als erstes auf der linken Seite eine Schlagwortkategorie aus. Auf der rechten Seite befindet sich eine Schlagwortcloud, die alle Schlagworte enthält, die dem System bekannt sind. Schlagworte, die mit der gewählten Kategorie verknüpft sind, werden farbig dargestellt. Die nicht verknüpften Schlagworte sind grau. Durch einfaches Anklicken eines Schlagwortes kann dieses mit der Kategorie verknüpft werden. Auf gleicher Art und Weise können Verknüpfungen gelöscht werden. Nachdem alle gewünschten Schlagworte ausgewählt wurden, können die Änderungen über den Knopf links oben in der Werkzeugleiste gespeichert werden. 

Außerdem habe ich in den letzten Tagen ein weiteres Filterkriterium angelegt. Es kann nun nach der Kamera, die bei der Aufnahme verwendet wurde, gefiltert werden. Das Kriterium, ist dabei so angelegt, das in einer Auswahlliste alle Kameramodelle angezeigt werden, die dem System bekannt sind. An dem Schlagwort-Filterkriterium habe ich noch einige kleinere Verbesserungen vorgenommen. Die einzelnen gewählten Schlagworte werden nun durch 2 senkrechte Markierungen verbunden, damit man leichter erfassen kann, welche Elemente zum gleichen Filter gehören.

Für die nächste Version habe ich mir vorgenommen, kein weiteres Filterkriterium zu schaffen. Ich möchte lieber eine Funktion, die ich mir schon recht lange vorgenommen habe, implementieren. Das BVASystem soll in der Lage sein, ein oder mehrere Bilder wieder aus der Datenbank zu exportieren. Dabei soll eine Zielgröße auswählbar sein, so das die Fotos nicht mehr manuell verkleinert werden müssen, wenn man sie beispielsweise per E-Mail verschicken möchte. Außerdem wünsche ich mir eine Funktion, mit der alle Filter auf einmal gelöscht werden können. Nach dem gleichen Prinzip soll es auch möglich sein, alle Filter auf einmal zu deaktivieren.

Filterung nach Schlagworten

Verfasst am: Mittwoch, 08. Jan. 2014 um 23:06

Nachdem ich meine Erkrankung, die mich Weihnachten flach gelegt hat, überstanden hatte, beschäftigte ich mich über den Jahreswechsel hinweg mit der Bildfilterung. Es ist mir wichtig, das die noch neue Funktion nach und nach mit vielen weiteren Kriterien erweitert wird. Als erstes neues Filterkriterium wählte ich die Schlagworte, da ich finde, das die Schlagworte ein zentraler Bestandteil der Bildverwaltung sind.

Während der Umsetzung fiel mir dann auf, das ich mir etwas kompliziertes ausgesucht hatte. Ich hatte bisher nicht vorgesehen, das bei der Filterdefinition einzelne Filter ihre Höhe verändern können. Außerdem wollte ich natürlich auch wieder das Popup-Fenster, welches Schlagwortvorschläge anzeigt, wiederverwenden. Dafür musste ich die Bindung der Komponeten an die Datenschicht überarbeiten, da  dort bisher keine Verbindung zur Datenbank möglich war. 

Filterung nach Schlagworten

Filterung nach Schlagworten

Die Filterung nach Schlagworten funktioniert prinzipiell genauso wie die bereits bekannten Filterkriterien. Es können allerdings mehrere Schlagworte in einem Filter zusammen ausgewählt werden.  Die Definition mehrerer Schlagworte zur Filterung erfolgt nach einander. Nach der Auswahl eines Schlagwortes, wird das Filterelement um einen Eintrag erweitert und das Eingabefeld geleert. Dort können anschließend weitere Schlagworte eingegeben werden. Schlagworte, welche sich nicht im Vorschlag-Popup befinden, können mit der „Enter“-Taste bestätigt werden.  Um den Filter dann zu erfüllen muss das jeweilige Foto alle gewählten Schlagworte haben.

Neu ist ebenfalls die Möglichkeit, das nicht mehr benötigte Filter gelöscht werden können. Dafür habe ich hinter jeden Filter einen kleinen Knopf integriert, der ein Mülltonnen-Symbol zeigt. Für einen einfachen Klick kann die jeweilige Filterdefinition gelöscht werden. Versucht man das letzte Filterelement eines Kriteriums zu löschen, so bleibt das Element bestehen und wird neu initialisiert. Für eine erneute Definition eines Filters soll das erste Element immer sofort bereitstehen.

Jahresfazit 2013

Verfasst am: Dienstag, 31. Dez. 2013 um 17:07

Das Jahr 2013 ist aus Sicht des BVASystems perfekt verlaufen. Fast alle Funktionen, die ich mir im letzten Jahresfazit gewünscht habe, konnten umgesetzt werden. Besonders stolz bin ich auf die einfache und schnelle Verschlagwortung von Fotos und die noch relativ junge Bildfilterung.

Zusätzlich konnte ich den Werkzeugkasten mit 3 Werkzeugen (Lupe, Navigation und Histogramm) implementieren. Außerdem ist es jetzt möglich, die hierarchielosen Schlagworte nachträglich durch die Schlagwortkategorien mit einer Hierarchie zu versehen. Dadurch entsteht eine weitere Ansicht auf die Datenbank und soll das Auffinden von Bildern vereinfachen.  Die Vollbildansicht wurde optisch überarbeitet und auch an der Bildinformationsansicht wurde weiterentwickelt. Bereits Anfang des Jahres wurde die Routine zum Laden der Miniaturbilder überarbeitet. Es werden nur noch die Miniaturbilder im Speicher vorgehalten, die auch zur Anzeige benötigt werden. 

BVASystem zum Jahresabschluss 2013

BVASystem zum Jahresabschluss 2013

Mein persönliches Fazit für das Jahr lautet: Das BVASystem wird langsam erwachsen. Die wichtigsten Verwaltungsfunktionen sind fertig implementiert. Es sind zwar noch reichlich Ideen vorhanden, um das System zu verbessern, aber die wichtigsten Grundfunktionen sind nun definitiv alle vorhanden.

Etwas unzufrieden bin ich eigentlich nur mit dem Jahresabschluss. Ich wollte meinen Resturlaub nutzen, um etwas mehr Zeit für das BVASystem zu haben. Schlussendlich lag ich dann aber krank im Bett. An Arbeiten war nicht einmal im Traum zu denken. 

Bevor ich krank wurde, habe ich es aber noch geschafft, den Arbeitsplan für die nächsten 3 Monate aufzustellen. Es wird sich hauptsächlich um die Verbesserung der Bildfilterung drehen. Ich werde zusätzliche Kriterien zur Filterung implementieren. Außerdem sind Funktionen geplant, die das Handling der Bildfilter vereinfachen. Für den Rest des Jahres habe ich mir noch keinen wirklichen Plan zurecht gelegt. Ich denke aber, das die meiste Zeit für die Verbesserung/Erweiterung der bestehenden Funktionen reserviert sein sollte.