Aktualisierte Oberfläche

Verfasst am: Dienstag, 05. Mrz. 2013 um 00:21

Das heutige Versionsupdate bringt eine deutliche Änderung an der Oberfläche mit sich. Im Dezember letzten Jahres habe ich damit begonnen, eine animierte Pagecontrol-Komponente zu entwickeln. Mein Ziel war es, das die nicht immer benötigte Baumansicht bei Bedarf ausgeblendet werden kann. Dadurch sollte mehr Platz für die Bildansichten geschaffen werden. Nebenbei wollte ich noch ein Problem des bisher eingesetzten Pagecontrols beseitigen.  Dort wurde nämlich der Focus nicht sichtbar dargestellt. Beide Ziele konnte ich nun zufriedenstellend erreichen, so dass in der Version 2.1.3.59-dev das alte Pagecontrol nicht mehr vorhanden ist.

Animiertes Pagecontrol

Startet man das BVASystem das erste mal, nach der Installation der neuen Version, fällt sofort die geänderte Oberfläche ins Auge. Die beiden Seiten der Baumansicht sind nun vertikal ausgerichtet. Die Baumansicht ist festgepinnt, so das noch keine Animationen erfolgen. Zum Ausblenden der Baumansicht muss dann zuerst die Pin-Nadel gelöst werden. Verlässt man anschließend mit der Maus den Bereich der Baumansicht, so wird diese ausgeblendet. Ausnahme hierbei ist, wenn die Baumansicht den Eingabefokus besitzt. Dann nämlich bleibt die Ansicht stehen, bis sich der Eingabefokus ändert. Dies soll verhindern, das der Bereich ausgeblendet wird, wenn man eigentlich eine Tastatureingabe vornehmen möchte. Beim Beenden des Programms wird der Status (angepinnt/nicht angepinnt) der Baumansicht gespeichert und beim nächsten Programmstart genauso wieder eingestellt. 

BVASystem mit geöffneter Baumansicht

BVASystem mit geöffneter Baumansicht

Damit die Optik einheitlich erscheint, wurde das Pagecontrol für die Bildansichten ebenfalls ersetzt. Eine Animation ist bei diesem Steuerelement nicht möglich, da es wenig sinnvoll ist, den Hauptbereich der Anwendung auszublenden.

BVASystem mit minimierter Baumansicht

BVASystem mit minimierter Baumansicht

Auf den beiden Bildern sieht man deutlich, wie durch den gewonnenen Platz, eine größere Anzahl von Miniaturbildern angezeigt werden kann. Mein Ziel habe ich also erreicht.

Änderungen an der Bildinformationsansicht

Damit habe ich nun endlich die erste große Baustelle abgeschlossen und kann mich auf die nächste große Baustelle stürzen. Bereits im letzten Artikel hatte ich angekündigt, die Logik hinter den Bildinformationspanel zu aktualisieren. Gerade gestern bin ich damit fertig geworden, die neuen Algorithmen zu integrieren. Und nicht nur das: Ich habe es ebenfalls geschafft, das nun einzelne Panel aus- und auch wieder eingeblendet werden können. Prinzipiell ist es möglich, Panel in beliebiger Reihenfolge ein- und auszublenden. Allerdings ist es nur bedingt möglich, das ausgeblendete Panel in gleicher Größe und Position wieder einzublenden. Ändert sich die Struktur der Ansicht zu stark, wird das Panel dann neu initialisiert. Somit entsteht immer eine valide Ansicht, bei der die gewählten Bildbereiche in möglichst optimaler Größe platziert werden.

Ausblick

In der nächsten Version habe ich mir vorgenommen, einige kleinere Bugs/Unschönheiten in der Oberfläche zu beseitigen. Außerdem habe ich vor, mich weiterhin auf die Großbaustelle Bildinformationsansicht zu konzentieren. In  rund 3 Wochen soll es möglich sein, zwei Bildinformationspanel per Drag&Drop zu tauschen. Bis dahin steht aber noch einiges an Arbeit vor mir … 

Keep it simple, stupid

Verfasst am: Donnerstag, 14. Feb. 2013 um 22:42

„Keep it simple, stupid“ ist ein Satz, an den ich in den letzten Tagen häufiger denken musste. Er beschreibt ein Designkonzept, bei dem nach der einfachsten und am leichtesten zu verstehenden Lösung gestrebt wird. Auf den Weg dorthin verzettelt man sich aber meistens anständig, indem man Workaround für Workaround programmiert um das Problem vollständig zu lösen. Spätestens wenn man seinen eigenen Quelltext nach recht kurzer Zeit nicht mehr versteht, sollte man über einen alternativen Lösungsweg nachdenken.

Vor einigen Wochen ärgerte ich mich damit herum, das ich es nicht geschafft habe, die Nachbarschaftsbeziehungen der einzelnen Bildinformationspanels korrekt zu halten, wenn der Anwender einzelne Panel ausblendet. Immer wieder gab es einen Sonderfall, bei dem die Nachbarschaftsbeziehungen zerstört wurden. Normalerweise ist es nicht meine Art, aber nach einigen Tagen gab ich entnervt auf und beschloss einen Neuanfang. Ziel ist/war es einen Weg zu finden, der einfach ist, immer funktioniert und wenn möglich frei von Sonderfällen ist. „Keep it simple, stupid“ eben.

Bisher hatte ich versucht, die Nachbarschaftsbeziehungen mit jeder Aktualisierung zu prüfen und gegebenenfalls zu korrigieren. Wenn zwischen dem Panel „A“ und „B“, ein Panel „C“ eingeblendet wurde, so musste „B“ aus den Nachbarschaftsbeziehungen von „A“ entfernt und „C“ hinzugefügt werden. Bei „B“ musste der Nachbar „A“ entfernt und der Nachbar „C“ hinzugefügt werden. Bei „C“ ist es am einfachsten, denn da musste nur „A“und „B“ als Nachbar hinzugefügt werden. Hört sich einfach an, aber leider ist dies auch der einfachste Fall. Zum Beispiel habe ich die Nachbarn, die ober- und unterhalb von „A“ und „B“ liegen könnten in dem Beispiel gar nicht berücksichtigt. 

Debugdialog der Bildinformationspanel

Debugdialog der Bildinformationspanel

In der neuen Version des BVASystems bin ich meinem Ziel, eine einfache Lösung zu implementieren, nun einen großen Schritt nähergekommen. Den neuen Ansatz habe ich zum Testen in der Debug-Ansicht der Bildinformationspanels integriert. Ihr könnt diese Debug-Ansicht öffnen, in dem ihr auf das BVASystem-Icon in der Überschrift eines Bildinformationpanels klickt. Dort können  alle Nachbarschaftsbeziehungen neu bestimmt werden. Insgesamt gesehen ist der Aufwand natürlich größer, aber da im BVASystem aktuell nur 8 Panel benutzt werden können, hält sich der zeitliche Verlust in Grenzen. Auf meinem Entwicklungsrechner dauerte eine komplette Neubestimmung nur 0,03 ms. In den nächsten Tagen habe ich nun vor, die bestehende Lösung zu ersetzen, damit ich überprüfen kann, ob die neue Lösung wirklich immer funktioniert.

Prototyp: Animiertes Pagecontrol (Teil 2)

Verfasst am: Freitag, 08. Feb. 2013 um 23:22

Vor einigen Tagen wurde mir bewusst, das ich gerade viel zu viele offene Punkte versuche gleichzeitig zu bearbeiten. Daher habe ich mich entschlossen, etwas gezielter an den Sachen zu arbeiten, die ich relativ schnell abschließen kann. Meine erste Wahl fiel auf das animierte Pagecontrol.

In der letzten Woche habe ich soviel Zeit wie möglich in diese Komponente und die dazugehörige Test-Anwendung gesteckt. Ich denke das ich nun soweit bin, das ich alle benötigten Eigenschaften und Funktionen umgesetzt habe, das ich an die Integration der Komponente ins BVASystem denken kann. Geplant ist diese Integration nun für die Version 2.1.3.59-dev, also in 3-4 Wochen.

Testanwendung für animiertes Pagecontrol Teil 2

Testanwendung für animiertes Pagecontrol Teil 2

Für die Neugierigen habe ich wieder die Testanwendung zum Download zusammengepackt. Auf der ersten Seite des animierten Pagecontrols, welches sich auf der rechten Seite befindet , sind nun einige Steuerelemente zur Bedienung des animierten Pagecontols auf der linken Seite zu finden. So können zum Beispiel die Beschriftungen, die Sichtbarkeit der einzelnen Seiten und sogar die Animationsgeschwindigkeit geändert werden. Weiterhin befinden sich auf dem rechten Pagecontrol auf Seite 2, 2 Knöpfe. Damit kann jeweils ein weiterer Dialog geöffnet werden. In dem ersten kann das animierte Panel, welches sich nach oben bzw. nach unten öffnet getestet werden. Der zweite Dialog zeigt ein animiertes Pagecontrol, bei dem die Animationsmöglichkeit deaktiviert wurde. Letzteres werde ich benötigten, damit ich auch die Pagecontrols ersetzen kann, wo die Animation unerwünscht ist. Mir ist dies wichtig, damit die Pagecontrols alle gleich aussehen.

Überarbeitete Vollbildansicht

Verfasst am: Donnerstag, 24. Jan. 2013 um 21:59

Die alte Vollbildansicht stammt noch aus einer Zeit, wo ihre einzige Aufgabe darin bestand, ein einzelnes Foto anzuzeigen. Durch die Erweiterungen, die ich in den letzten beiden Jahren implementiert habe, wurde es langsam dringend notwendig, die Ansicht auch optisch zu überarbeiten. Wichtig waren mir vor allem 2 Änderungen. Zum einen nervte der gut gemeinte Hinweis, wie der Dialog geschlossen werden konnte und als zweites fehlte die Information, welche Position das angezeigte Foto in der Bildliste hat. 

In der ab heute verfügbaren Entwicklerversion 2.1.3.57 habe ich beide Probleme gelöst. Den Hinweis habe ich durch einen „Ansicht schließen“-Knopf im Überschrift-Bereich des Dialoges ersetzt. Außerdem habe ich der Ansicht eine Statusleiste spendiert, in der die Position innerhalb der Bildliste angezeigt wird. 

Überarbeitete Vollbildansicht

Überarbeitete Vollbildansicht

Desweiteren habe ich an eigentlich allen Baustellen, die ich begonnen habe, weitergearbeitet. Die Schlagwort-Komponente sieht optisch langsam genauso aus, wie ich es mir vorgestellt habe.  Bei der Bildinformationsansicht habe ich die Knöpfe im Kopfbereich ausgetauscht. Nun ist deutlicher zu erkennen, welche Bildinformation ein- bzw. ausgeblendet ist. Zu guter letzt habe ich mir noch ein Konzept überlegt, wie ich bei der Testanwendung Parameter speichern kann.

In den nächsten Wochen werde ich ähnlich weiterarbeiten wie bisher. Als erstes werde ich das Konzept für die Testanwendung umsetzen. Anschließend werde ich dann wieder einen Teil der Zeit mit der Schlagwortkomponente und dem Bildinformationspanel verbringen. Wahrscheinlich werde ich den Focus auf die Bildinformationspanel legen, damit ich die Anzahl der offenen Punkte endlich mal wieder reduzieren kann.

Prototyp: Animiertes Pagecontrol

Verfasst am: Samstag, 12. Jan. 2013 um 11:46

Am Ende des letzten Jahres schrieb ich, das ich an einem Prototypen arbeite, der die Oberfläche des BVASystems stark verändern wird. Da ich nun alle größeren Probleme scheinbar gelöst habe, möchte ich den Prototypen heute vorstellen. Besonders daran ist diesmal, das ich zum ersten Mal eine Änderung nicht direkt in der Bilddatenbank umgesetzt habe. Ihr könnt euch den Prototypen herunterladen und quasi selber einmal ausprobieren.

Vorstellung

Das wichtigste an einer Bilddatenbank sind natürlich die Bilder und daher sollten sie den größten Teil der Oberfläche einnehmen. Je mehr Funktionen nun allerdings in das Programm integriert werden, desto kleiner wird der Bereich, der für die Fotos übrig bleibt. Daher habe ich mir gedacht, das es gut wäre, wenn nicht ständig benötigte Oberflächenelemente ausgeblendet werden können. Entstanden ist dabei ein animiertes Pagecontrol, welches  an der linken oder rechten Seite eines Dialoges angeordnet werden kann. Fährt man mit der Maus über den Beschriftungsbereich der Komponente, so wird sie durch eine kleine Animation geöffnet. Solange man sich mit der Maus über dem geöffneten Pagecontrol befindet, kann dieses ganz normal benutzt werden. Verlässt man den Bereich, so wird das Control wieder auf den Beschriftungsbereich reduziert. Zusätzlich hat man rechts oben noch die Möglichkeit das Pagecontrol zu fixieren. 

Testanwendung für animiertes Pagecontrol

Testanwendung für animiertes Pagecontrol

Geplanter Einsatz im BVASystem

Im BVASystem möchte ich das animierte Pagecontrol an 2 Stellen einsetzen. Als erstes ist geplant den jetzigen Bereich, in dem die Verzeichnis- bzw. Datenbankstruktur dargestellt werden, durch ein animiertes Pagecontrol zu ersetzen. Sofern das animierte Pagecontrol nicht von euch fixiert wird, steht dadurch fast die gesamte Monitorbreite zur Darstellung der Fotos zur Verfügung.  In der Standard-Installation wird das Pagecontrol wohl fixiert sein, damit die gewohnte Oberfläche noch vorhanden bleibt. Es wäre dann eure Entscheidung, ob ihr den Bereich immer sehen wollt, oder ob er nur bei der Auswahl eines neuen Ordners sichtbar sein soll. Auf der rechten Seite ist ein weiteres Pagecontrol geplant, auf dem Möglichkeiten zur Filterung der aktiven Bildliste geschaffen werden sollen. Beispielsweise soll es möglich sein, das nur noch die Fotos angezeigt werden, die ihr mit 5 Sternen bewertet habt. Oder es sollen nur die Bilder angezeigt werden, die mit der Kamera „X“ aufgenommen habt. Das Pagecontrol zur Filterung der Bildliste wird in der Standardinstallation nicht fixiert sein. 

Zeitplanung

Ich denke, das noch einige Zeit vergehen wird, bis das animierte Pagecontrol seinen Weg in das BVASystem findet. Es sind noch eine Menge von Details zu erledigen, damit die Komponente alle benötigten Eigenschaften erhält. Ich habe vor, die Komponente außerhalb des BVASystems fertig zu stellen und vor allem zu testen. Über meine Fortschritte dabei werde ich sicher hier im Blog berichten. Sobald die Komponente fertig ist, wird die Ersetung auf der linken Programmseite kein Problem sein und recht zügig erfolgen. Die Filterungsfunktionen werden dann um einiges aufwendiger, da hier nicht nur eine bestehende Komponente ausgetauscht werden muss. Wahrscheinlich werde ich mit der Filterung erst beginnen, sobald ich meine aktuelle Arbeit an den Schlagworten abgeschlossen habe.

Neugestaltung der Funktion zum Einlesen von Miniaturbildern

Verfasst am: Sonntag, 06. Jan. 2013 um 16:42

Mit dem ersten Versionsupdate des Jahres 2013 gibt es gleich größere Veränderungen an dem BVASystem. Die freie Zeit zwischen den Feiertagen habe ich genutzt, um die Funktion zum Einlesen von Miniaturbildern komplett zu überarbeiten. Außerdem wurde mit der Umsetzung der Schlagwortfunktionalität begonnen, so das nun ein erster Prototyp der Komponente zum Anzeigen von Schlagwörtern begutachtet werden kann.

Einlesen von Miniaturbildern

Bisher war es so, das alle Miniaturbilder einer Bildliste nacheinander erstellt und im Arbeitsspeicher des Rechners zwischengespeichert wurden. Dies hatte zur Folge, das die Bilddatenbank bei großen Bildlisten sehr viel Arbeitsspeicher verbrauchte. Außerdem war die Reihenfolge, mit der die Bilder erstellt wurden, alles andere als optimal. Wollte man in der Liste die letzten Bilder sehen, so musste man warten, bis alle anderen davor eingelesen wurden.  Diese beiden Missstände waren für mich Grund genug, das Einlesen der Miniaturbilder zu überdenken.

In der jetzigen Version ist es so, das das Programm der Miniaturbild-Ladefunktion mitteilt, welche Bilder gerade zur Anzeige benötigt werden. Diese benötigten Bilder werden dann sofort eingelesen. Fotos, die gerade nicht mehr benötigt werden, werden von der Ladefunktion wieder freigegeben. Sobald sie wieder benötigt werden, werden sie wieder neu erstellt. Bei Bildern aus der Datenbank ist das erneute Laden kein Problem, denn da die Bilder bereits in der richtigen Größe vorliegen, geht dies sehr schnell. Kommen die Bilder hingegen von der Festplatte, muss erst das komplette Foto geladen werden, um es anschließend auf die richtige Größe zu verkleinern. Damit dies nicht immer und immer wieder gemacht werden muss, werden daher die erstellten Miniaturbilder temporär auf der Festplatte zwischen gespeichert. Mit diesem „Trick“ können die Miniaturbilder von Fotos auf der Festplatte fast genauso schnell erstellt werden, wie es bei Bildern aus der Datenbank der Fall ist.

Insgesamt konnte durch die Veränderungen erreicht werden, das die benötigten Miniaturbilder schneller zur Verfügung stehen. Auch der hohe Arbeitsspeicherverbrauch konnte beseitigt werden. Theoretisch ist es nun möglich, das Bildlisten mit beliebiger Bildanzahl erstellt werden können und jedes mal ungefähr die gleiche Arbeitsspeichergröße benötigt wird.

Komponente zur Anzeige von Schlagwörtern

Ich denke, das es an der Zeit ist, die lange vor mir her geschobene Schlagwortfunktionalität zu implementieren. Da ich mir dort relativ viel vorgenommen habe, kann ich allerdings noch nicht wirklich abschätzen, wie lange mich dieses Thema beschäftigen wird. Wahrscheinlich wird es mir ähnlich gehen, wie bei der Bildbewertungsfunktion, die mit jeder Weiterentwicklung umfangreicher wurde. Angefangen habe ich nun jedenfalls damit, eine Komponente zu erstellen, mit der die Schlagworte eines Bildes dargestellt und verändert werden können.  Da beim BVASystem Fotos nur zusammen mit einer Bildliste geladen werden können, fand ich es praktisch, wenn die Schlagworte in einer Tag-Cloud angezeigt werden. Ein groß geschriebenes Schlagwort bedeutet hierbei, das es in der aktiven Bildliste häufig vorkommt. Klein geschriebene Schlagworte kommen dagegen nur selten in der Liste vor.

Die Optik der Komponente, die im entsprechenden Panel der Bildinformationen betrachtet werden kann, gilt aber keinesfalls als endgültig. Ich denke ich werde sie noch überarbeiten müssen, da zum Beispiel dort auch die Funktion zum Löschen eines Schlagwortes mit integriert werden muss. 

Ausblick auf die nächste Version

Für die nächste Version habe ich mir vorgenommen, die Vollbildansicht zu überarbeiten. Dort stört mich zum Beispiel, das die Position des angezeigten Bildes in der Bildliste nicht ersichtlich ist. Außerdem stört der Hint, welcher einem mitteilen soll, wie der Vollbildmodus wieder verlassen werden kann. Außerdem werde ich an der Schlagwortkomponente weiterarbeiten. Ich hoffe, das ich den Prototypen, den ich in meinem letzten Jahresfazit angesprochen habe, soweit fertig bekomme, das ich ihn hier vorstellen kann.

Jahresfazit 2012

Verfasst am: Montag, 31. Dez. 2012 um 17:56

Der letzte Tag des Jahres bietet sich förmlich für einen Rückblick auf die letzten 12 Monate an. Im groben und ganzen bin ich mit dem vergangenem Jahr zufrieden. Vergleicht man die jetzige Programmversion mit der von vor einem Jahr, erkennt man deutliche Fortschritte. 

Versionsvergleich von Anfang und Ende 2012

Versionsvergleich von Anfang und Ende 2012

Die anfänglich recht rudimentären Datenbankfunktionalitäten konnten im laufe des Jahres deutlich erweitert werden. Anfang des Jahres konzentrierte ich mich auf die automatischen Zuordnung von Fotos zu Fotoalben. Dabei entstanden eine Reihe von Metadatenelementen, wie zum Beispiel die Belichtungsbewertung, die in beliebiger Kombination zur automatischen Zuordnung genutzt werden können. Außerdem entstand ein vierter Ansichtsmodus, in dem die zu einem Bild gehörenden Informationen angezeigt und teilweise bearbeitet werden können. Anschließend, nach meinem diesjährigen Urlaub, arbeitete ich an einer möglichst objektiven Bewertungsfunktionalität für Fotos. Die Arbeit nahm weit mehr Zeit in Anspruch, da der Umfang der Bewertungsfunktion mit jeder Zwischenversion größer wurde. Ende des Jahres integrierte ich mehrere Möglichkeiten zur schnellen Editierung von Bildtiteln und Bildbewertungen

Neben der Bilddatenbank entstand in diesem Jahr auch das Administrationstool, mit dem die technischen Schwierigkeiten der Programminstallation verringert werden konnten. Ganz frisch und leider noch nicht in einem fertigen Zustand, ist ein weiteres Tool hinzugekommen, mit dem ich die wichtigsten Funktionen des BVASystems automatisch testen möchte. Etwas unzufrieden bin ich mit der vorhandenen Dokumentation. Ich habe es nur geschafft, die Funktionen zu beschreiben, die nicht offensichtlich sind. Leider fehlt mir meist die Lust, Dokumentationen zu schreiben, denn programmieren macht deutlich mehr Spaß.    

Für das nächste Jahr habe ich bereits reichlich Ideen. Angefangen habe ich mit der Umsetzung der Schlagwortfunktionalität, die ich bereits lange vor mir her schiebe. Sie soll ähnlich, wie bereits die Fotoalben eine Funktion zur automatischen Zuordnung erhalten. Gerade bei den Schlagworten ist es wichtig, das ich einen Weg finde, der dem Anwender möglichst viel Arbeit abnimmt, denn wenn ein Bild wiedergefunden werden soll, geschieht dies meist über die Schlagworte. Außerdem arbeite ich bereits an einem Prototypen einer Komponente, welche die Oberfläche der Bilddatenbank stark verändern wird. Sie wird nämlich die beiden zentralen PageControl-Steuerelemente ersetzen. Sollten sich meine Erwartungen an dem Prototypen erfüllen, spiele ich außerdem mit den Gedanken einen Filterdialog zu schaffen, mit dem unerwünschte Fotos der aktiven Bildliste ausgeblendet werden können.

Ich hoffe, das ich es auch im Jahr 2013 wieder schaffe, so viele Veränderungen am Programm vorzunehmen. Es wäre schön, wenn ich Ende Dezember 2013 hier schreiben kann, das sich meine Erwartungen wieder erfüllt haben. 

Nachladen des Originalbildes

Verfasst am: Freitag, 14. Dez. 2012 um 12:12

Kurz vor den Feiertagen ist heute die wohl letzte Version für dieses Jahr vom BVASystem fertig geworden. Die letzten beiden Wochen habe ich hauptsächlich damit verbracht, das in den Darstellungen der Bilder das Originalbild nachgeladen werden kann. Außerdem habe ich Änderungen an den Debugausgaben und den Fehlermeldungen vorgenommen. Zu guter letzt habe ich meine Testanwendung soweit erweitert, das dort nun die erste BVASystem-Funktion getestet werden kann.

Nachladen des Originalbildes

Damit  Bilder schneller angezeigt werden können, arbeitet das BVASystem mit einem kleineren Vorschaubild. Dieses ist von der Größe so gewählt, das es ausreicht um Bilder im „Zoom-Fit“ in guter Qualität darzustellen. Bisher hatte ich es allerdings versäumt, das beim Wechsel des Zoom-Modus das Originalbild nachgeladen wird. Jetzt ist es so umgesetzt, das wenn das Originalbild eine bessere Qualität bringen würde als das vorhandene Vorschaubild, dann wird im Hintergrund das Originalbild geladen. Während des Ladevorgangs bekommt der Anwender weiterhin das Vorschaubild angezeigt und kann in diesem beliebig navigieren. Sobald das Originalbild fertig geladen ist, wird die Ansicht aktualisiert. Als Anwender bemerkt man, das die Qualität plötzlich besser wird. 

Damit sichtbar ist, welches Bild gerade angezeigt wird, ist im oberen Bereich neben dem Bildtitel ein Knopf/Informationsbereich angebracht. Folgende 4 möglichen Bilder können dort angezeigt werden:

Vorschaubild wurde geladen Das Vorschaubild wurde geladen. Mit einem Druck auf das Bild, kann das Originalbild geladen werden.
 Originalbild wird geladen Das Originalbild wird gerade geladen.
 Originalbild wurde geladen Das Originalbild wurde geladen.
 Nachladen des Originalbildes ist nicht möglich Das Nachladen des Originalbildes ist nicht möglich, da die Bildgröße des Originalbildes nicht bekannt ist. Mit einem Druck auf das Bild erscheint ein Hinweisdialog, der beschreibt wie dieser Fehler beseitigt werden kann.

Veränderungen an den Debugausgaben

Für eine spätere Änderung die ich vorhabe, war es notwendig die Funktion zur Ausgabe von Debug-Informationen anzupassen. Hauptsächlich ging es mir dabei um die Tatsache, das wegen der geöffneten Dateien, das BVASystem nur einmal gestartet werden konnte. Im Zuge dessen habe ich aber gleich weitere Änderungen einfließen lassen. 

  • Neu: DBLog-Funktion – Hier werden die an die Datenbank gesendeten SQL-Befehle in eine Datei geschrieben
  • Neu: Die Debugfunktionen können nun im Hauptmenü unter „Hilfe“ jederzeit ein- und ausgeschaltet werden
  • Geändert: Fehlerdialoge sind nun auch aus den Hintergrund-Threads möglich
  • Geändert: Startparameter – Hier können nun die Parameter „-trace“ und „-dblog“ verwendet werden. 
  • Neu: Silentmode – Hier werden die Fehlermeldungen nicht angezeigt, können allerdings mit „GetLastError“ abgefragt werden (Habe ich für die automatische Testung benötigt)

Erweiterung der Testanwendung

Die letzten Tage habe ich dann noch ab der Anwendung zur automatisierten Testung weitergearbeitet. Dort bin ich nun soweit, das eine erste Funktion des BVASystems (das Herstellen der Datenbankverbindung) getestet werden kann. Dabei habe ich mit Absicht einen Fehler provoziert, damit ich sehen kann, ob der umgesetzte Silentmode der Fehlerbehandlung funktioniert. Bisher ist es allerdings noch nicht möglich, der zu testenden Funktion Parameter mit auf den Weg zu geben. Daran werde ich in der nächsten Zeit weiterarbeiten. 

Ausblick

Für die nächste BVASystem Version steht wieder eine größere und für mich wohl schwierige Änderung auf dem Plan. Und zwar werde ich die Bildladefunktion für die Miniaturbilder anpassen. Bisher werden nacheinander immer alle Bilder nacheinander geladen. Mein Ziel ist es, das nur noch die geladen werden, welche auch zur Anzeige benötigt werden. Dadurch möchte ich Zeit und vor allem Speicherplatz einsparen. Außerdem werde ich wohl damit beginnen, mir ein Konzept zu überlegen, wie ich eine Schlagwortfunktionalität in das BVASystem integrieren könnte. Und zu guter letzt seht natürlich die Weiterarbeit an der Testanwendung mit auf dem Plan. 

BVASystem Version 2.1.3

Verfasst am: Donnerstag, 22. Nov. 2012 um 01:14

Seitdem ich die letzte stabile Softwareversion veröffentlicht habe, sind nun wieder einige Monate vergangen, in denen sehr viel passiert ist. Mittlerweile sind zum Glück alle begonnenen Änderungen abgeschlossen. Bevor ich nun wieder größere Baustellen aufreiße, scheint mir der Moment perfekt, um die nächste stabile Version zu veröffentlichen.

Was ist in den letzten Monaten entstanden?

Die letzten Monate standen ganz im Zeichen der Bildinformationen, so das nun fast alle neuen Tabellen, die bei der letzten Datenbank-Änderung hinzugekommen sind, auch genutzt werden. Die meiste Zeit ging sicherlich in das komplexe System zur Bildbewertung.  Als Anwender hat man im BVASystem die Wahl, ob man zur Bewertung eines Fotos die Unterkriterien nutzt, oder ob man nur eine einzelne globale Bewertung auswählt. Durch Nutzung der Unterkriterien kann eine objektivere Bildbewertung vorgenommen werden, während die globale Bewertung natürlich viel schneller vorgenommen werden kann.

In der Bildinformationsansicht sind eine ganze Reihe neue Informationspanel entstanden. So ist nun zum Beispiel ein Panel vorhanden, in dem der Aufnahmeort eines Fotos angezeigt werden kann. Ebenso ist ein Panel vorhanden, welches die errechneten Bildparameter (mittlere Helligkeit, Belichtungsbewertung, Tonwertumfang) anzeigt. Außerdem ist ein Panel vorhanden, in dem zu jedem Bild ein Bildtitel, der Autor und eine Bemerkung erfasst werden können. 

Alle Stellen, an denen der Bildtitel bzw. die Bildbewertung angezeigt werden, bieten die Möglichkeit zur Schnelleditierung. Dazu muss einfach die jeweilige Position angeklickt werden. In dem dann sichtbaren Popupfenster können die Daten editiert werden.

BVASystem 2.1.3 - Bildinformationen

BVASystem 2.1.3 – Bildinformationen

Zu guter letzt habe ich noch die Vollbildansicht um eine Gestensteuerung erweitert. Zieht man mit gedrückter linker Maustaste nach links, wird das nächste Bild geladen. Wird mit der Maus eine Linie nach rechts gezogen, wird das vorherige Bild geladen. Zeichnet man ein „größer“ Zeichen auf dem Monitor wird zum letzten Bild navigiert und analog dazu beim Zeichnen eines „kleiner“ Zeichen zum ersten Bild. Zusätzlich kann das aktive Foto noch per Mausgeste gedreht werden. Dazu muss bei gedrückter Maustaste nach rechts und dann nach unten gezogen werden. Das Bild wird nun nach rechts gedreht . Nach links gedreht wird, indem man die Maus nach links und anschließend nach unten bewegt.

Was wird in den nächsten Monaten folgen?

In den nächsten Entwicklerversionen werde ich zwei größere Probleme angehen, die seit längerem bestehen. Als erstes werde ich dafür sorgen, dass wenn benötigt das Originalbild nachgeladen wird. Aktuell ist es nämlich so, das das BVASystem fast ausschließlich mit einem sogenannten Vorschaubild arbeitet. Die Bildgröße dieses Bildes ist so gewählt, das es in der angepassten Ansicht schnell geladen und in optimaler Qualität angezeigt werden kann. Verlässt man die angepasste Ansicht, wird das Originalbild leider nicht nachgeladen. Damals, als ich begonnen habe das BVASystem neu zu entwickeln, erschien mir das nachladen nicht als sonderlich wichtig. Aktuell fehlt mir, beim Sortieren meiner Bilder, die wirkliche 100% Anzeige. Ohne die Ansicht kann ich einfach die Bildschärfe nicht richtig beurteilen.

Das zweite Problem liegt in der Art und Weise, wie ich die Miniaturbilder lade. Sie werden nämlich alle nacheinander in den Arbeitsspeicher geladen. Ich habe es nicht genau ausprobiert, aber schätzungsweise bis 2500 Bilder wird dies so funktionieren. Sollen mehr Bilder eingeladen werden, so kann das Programm keinen weiteren Arbeitsspeicher mehr anfordern und die Miniaturbilder bleiben folglich leer. Daher möchte ich das Laden der Miniaturbilder durch einen sogenannten Miniaturbildcache erweitern. In dem Cache sollen immer genau die Bilder vorgeladen werden, die für die Anzeige benötigt werden bzw. die in naher Zukunft wahrscheinlich benötigt werden. Dadurch habe ich nie mehr als einige hundert Bilder geladen, habe kein Arbeitsspeicher-Problem mehr und kann theoretisch beliebig viele Bilder in einer Bildliste darstellen. Mit dem Miniaturbildcache wird außerdem die Wartezeit für den Anwender verkürzt, da sofort die Bilder geladen werden, die für die Anzeige benötigt werden.

Da ich bis zur nächsten stabilen Softwareversion nicht nur Fehler beseitigen will, habe ich mir außerdem vorgenommen,  mit der Implementierung einer Schlagwortfunktionalität zu beginnen. Nachdem in der jetzigen Version 2.1.3 erste textuelle Daten zu einem Foto erfasst werden können, ist es einfach an der Zeit die wichtigen Schlagworte anzugehen. In welcher Form die Umsetzung erfolgen wird, steht allerdings noch nicht ganz fest. Ich bin noch dabei die Vor- und Nachteile der unterschiedlichen Möglichkeiten abzuwägen. 

 

Gestenerkennung mit TImage32

Verfasst am: Montag, 19. Nov. 2012 um 21:52

Gestern musste ich feststellen, das die Maus-Gestenerkennung in der Komponente TImage32 vom Graphics32-Project nicht unterstütz wird. Die notwendige Eigenschaft Touch und auch das OnGesture() Event sind dort nicht vorhanden. Auch die Gestenerkennung der übergeordneten Komponente ließ sich nicht dazu bewegen, auf Maus-Gesten im TImage32-Bereich zu reagieren. Daher habe ich mir eine eigene Komponente geschrieben, die TImage32 um die Gesten erweitert.

unit claBVAImage32;

interface

uses
System.SysUtils, System.Classes, Vcl.Controls, GR32_Image;

type
TBVAImage32 = class(TImage32)
private
protected
public
constructor Create(AOwner: TComponent); override;
published
property Touch;
property OnGesture;
end;

implementation

constructor TBVAImage32.Create(AOwner: TComponent);
begin
inherited;

ControlStyle := ControlStyle + [csGestures];
end;

Prinzipiell müsste der Lösungsweg bei jeder Komponente funktionieren, bei der die Gesten nicht funktionieren, da die Implementation der Gestensteuerung bereits in TControl vorhanden ist. Im Falle von TImage32 fehlte einfach das „csGestures“ im ControlStyle.