Neue Programmversion | BVA-System - Part 2

Archive for the ‘Neue Programmversion’ Category

Eine schwere Entscheidung: Wie geht es weiter?

Freitag, November 7th, 2014

Auch in der heutigen neuen Programmversion habe ich wieder ein weiteres Filterelement erstellt und an den internen Änderungen weitergearbeitet. Da aber mittlerweile die 3 Monate um sind, die ich normalerweise zwischen den stabilen Softwareversionen einhalten möchte, stellt sich mir die Frage, wie ich jetzt weiter entwickeln soll.

Filterkriterium Besitzer des Bildes

Filterkriterium Besitzer des Bildes

Die internen Änderungen, die ich mir vorgenommen habe, sind mittlerweile alle fertig. Es sind in den letzten Wochen jede Menge neue Filter entstanden. Aber rechtfertigt dies eine neue stabile Softwareversion? Bisher war es ja immer so, das ich eine größere Änderung bis zur nächsten stabilen Softwareversion fertigstellen konnte. Dieses mal sind die „möglichen“ größeren Änderungen noch relativ weit weg.

Zum ersten wäre da die Testdatenbank, welche auf dieser Homepage installiert wird. Nur dafür habe ich bisher fast alle Datenbankzugriffe auf eine neue Zugriffstechnologie umgestellt. Aktuell wäre ich soweit, das alle Funktionen, die keine Änderungen an der Datenbank vornehmen, ausprobiert werden könnten. Mit dem Worker wartet hier aber noch ein recht großes Stück arbeit.

Die zweite große Änderung, auf die ich hingearbeitet habe ist die lokale SQLite Datenbank. Diese habe ich für Anwender eingeplant , die ihre Bilder nicht innerhalb der Datenbank speichern wollen. Auch hierfür bräuchte ich die neuen Datenbankzugriffe. Außerdem fehlt hier noch das Modul, welches die lokale Datenbankstruktur erstellt. Auch muss das Laden der Bilder hierfür noch angepasst werden.

In den nächsten Tagen werde ich mich wohl zwischen 3 Möglichkeiten entscheiden müssen. Entweder ich veröffentliche eine stabile Softwareversion oder ich versuche eine der beiden großen Änderungen abzuschließen. Sicherlich hätte da die Testdatenbank bessere Chancen, da ich den benötigten Aufwand dafür geringer einschätze. Es wäre schön, wenn ich sie dieses Jahr noch fertigstellen könnte. Denn ich denke, das der bisher hohe Aufwand der Datenbankinstallation, viele potentielle Nutzer vom Test des BVASystems abhält. Auf der anderen Seite sehne ich mich allerdings auch nach einem Befreiungsschlag, wie ich ihn immer nach der Veröffentlichung einer stabilen Softwareversion erlebe. Endlich könnte ich dann wieder mit etwas beginnen, wodurch sichtbare Erfolge entstehen.

Ansichtseinschränkung: Brennweite

Donnerstag, Oktober 9th, 2014

Für  die letzte Version des BVASystems hatte ich ja extra eine Komponente geschrieben, mit der ein Brennweiten-Bereich ausgewählt werden kann. Daher lag es nahe, diese Komponente nun ein zweites Mal einzusetzen. Nun findet sie bei der Definition der Ansichtseinschränkung nach der Brennweite ebenfalls Verwendung.

Ansichtseinschränkung Brennweite

Ansichtseinschränkung Brennweite

Die Festlegung der Einschränkung funktioniert genauso, wie bei den anderen Einschränkungen auch. Allerdings stehen diesmal andere Bedingungen zur Auswahl, denn ein „ist gleich“ und „ist ungleich“ macht keinen Sinn, wenn man einen Brennweitenbereich auswählen muss. Daher heißen die beiden Bedingungen, die zur Auswahl stehen, nun „zwischen“ und „nicht zwischen“.

Außerdem habe ich natürlich wieder viel Zeit in interne Umstellungen investiert, die man leider nicht direkt sehen kann. Der größte Brocken war dabei sicherlich die Umstellung der Bildlisten-Abfragen auf die generalisierten Datenbankkomponenten. Schwierig dabei war, das sich das Modul Ansichtseinschränkung, welches sich ja auf die Bildlisten auswirkt, nicht direkt in das neue Konzept integrieren ließ. Erst nach einigen Versuchen fand ich einen Weg, mit dem ich zufrieden bin.

Des weiteren habe ich Änderungen am Administrationstool vorgenommen. Dort habe ich die, zur Herstellung einer Datenbank notwendigen, Verbindungsbefehle erweitert. Es ist nun möglich, für das BVASystem die MySQL ODBC-Treiber in der Version 5.3.x zu benutzen. Auch habe ich gleich einen Verbindungsbefehl für meine selbst entwickelte WebDB eingepflegt. Bei der WebDB wird es allerdings nicht möglich sein, die Datenbankstruktur mit dem Administrationstool zu erstellen. Die notwendigen Scripte werden später Teil des WebDB-Paketes werden.

Für die nächste Version habe ich mir vorgenommen, die Umstellung auf die generalisierten Datenbankverbindungen soweit fertig zu stellen, das alle lesenden Zugriffe auf die Datenbank darüber durchgeführt werden. Damit Ihr dies dann auch möglichst zeitnah testen könnt, habe ich mir überlegt, einen Modus zu schaffen, in dem der Worker gezielt deaktiviert wird bzw. er keine Anfragen mehr annimmt die Änderungen an der Datenbank zum Ziel haben. Sobald ich dies fertig habe und gleichzeitig die Weiterentwicklung der WebDB noch ein Stückchen vorangetrieben habe, sollte es mir endlich möglich sein, euch eine Testdatenbank zur Verfügung zu stellen. Es wird dann also nicht mehr nötig sein, das ihr ein DBMS installieren müsst, um das BVASystem zu testen.

Unsichtbare Änderungen Teil 2

Montag, August 18th, 2014

Auch beim heutigen Versionsupdate spielt sich wieder ein Großteil der Änderungen im Hintergrund ab. Nachdem ich beim letzten mal die einfachsten Datenbankabfragen auf die neue Datenbankzugriffsschicht umgestellt wurden, habe ich mir dieses mal alle Datenbankabfragen, die zur Erstellung des Baumes auf der linken Seite der Anwendung benötigt werden, vorgenommen. Es werden nun also die Fotoalben, die Schlagwortkategorien und der Aufnahmedatumsbereich über die neue Datenbankzugriffsschicht abgefragt. Damit muss ich nun nur noch 3 Programmmodule umstellen: die Abfrage der Bildlisten, die Abfrage der Einzelbilder und alle Änderungsabfragen, die vom Worker durchgeführt werden. Gerade der letzte Teil bereitet mir noch einiges an Kopfzerbrechen, da meine selbst geschriebene Datenbankzugriffsschicht noch nicht in der Lage ist, Parameter in SQL-Befehlen zu benutzen.

Weiterhin habe ich vor einigen Tagen damit begonnen, etwas umzusetzen, was ich „WebDB“ getauft habe. Dies soll ein Webmodul, welches ich in PHP entwickele, werden. Es wird  zwischen der eigentlichen Datenbank und dem BVASystem geschaltet. Damit möchte ich erreichen, das die BVASystem Datenbank auch auf einem Webserver installiert werden kann, auf dem man das Administrator Kennwort zur MySQL Datenbank nicht hat. Generell stelle ich es mir so vor, das das BVASystem über eine Http-Anfrage Daten bei der WebDB anfordert. Diese führt die eigentliche SQL-Abfrage durch und liefert die Ergebnisse in Form einer XML-Datei an das BVASystem. Die Datenbank stellt die Daten dann so dar, als wenn eine direkte Verbindung zur Datenbank bestanden hätte. Ein weiterer schöner Nebeneffekt wird es sein, das ich euch damit eine Demo-Datenbank zur Verfügung stellen kann. Ich erhoffe mir, das es dadurch viel einfacher wird, das BVASystem zu testen. Eine lokale Installation eines Datenbankmanagementsystems würde für den Test nämlich entfallen.

Zu guter letzt habe ich natürlich auch wieder etwas sichtbares am System verändert. Es können nun Ansichtseinschränkungen nach der automatischen Bildbewertung gesetzt werden. Außerdem befindet sich nun oben rechts ein Informationsbild, welches darauf hinweist, das eine Ansichtseinschränkung aktiv ist. Damit ist nun auch bei der eingeklappten Ordneransicht erkennbar, ob eine Ansichtseinschränkung aktiv ist.

Hinweis auf aktive Ansichtseinschränkung

Hinweis auf aktive Ansichtseinschränkung

Unsichtbare Änderungen Teil 1

Donnerstag, Juli 31st, 2014

Mal wieder habe ich mit Änderungen an der Bilddatenbank begonnen, die man über einen längeren Zeitraum kaum bemerken wird. Dieses mal geht es um die Datenbankzugriffskomponenten. Bisher habe ich dort immer ADO-Komponenten eingesetzt, die per ODBC eine Datenbankverbindung ermöglichten. Wie ich damit begonnen habe SQLite im BVASystem zu integrieren bemerkte ich schnell, das ich dafür andere Komponenten benötige. Da ich allerdings nicht alles doppelt programmieren möchte, habe ich mir überlegt eine eigene Datenbankschnittstelle zu entwickeln, die auf beide Datenbanksysteme zugreifen kann.

Mittlerweile ist der lesende Datenbankzugriff über die neue Datenbankschnittstelle möglich und ich habe bereits einen kleinen Teil der Funktionen des BVASystems umgestellt. Die einfachen Abfragen, mit denen zum Beispiel die Auswahllisten gefüllt werden, werden jetzt über die die neue Datenbankschnittstelle durchgeführt. Eigentlich ist es etwas schade, das die SQLite Datenbank noch leer ist. Denn die umgestellten Abfragen könnten nun ohne weiteren Programmieraufwand auch über SQLite ausgeführt werden.

Ein weiteres Problem versuche ich bei der Umstellung gleich mitzulösen. Beim BVASystem ist es so, das jedes eigenständige Programmmodul eine eigene Datenbankverbindung besitzt, da die ADO-Komponenten sicht Thread-Safe sind. Nutzt man über mehrere Threads hinweg eine einzelne Datenbankverbindung kommt es zu unkontrollierbaren Programmabstürzen. Mein Problem dabei ist, das in unterschiedlichen Modulen teilweise gleiche Abfragen durchgeführt werden. Da die Module nichts voneinander wissen, habe ich die gleiche Funktionalität doppelt programmiert. Dies ist sehr unschön und soll daher nun durch eine zentralere Lösung ersetzt werden.

Ich habe damit begonnen, alle Datenbankfunktionen in nur einem Objekt zusammenzufassen. Die jeweiligen Programmmodule erhalten jeweils eine Instanz von diesem Objekt und sind somit in der Lage, alle Datenbankfunktionen auszuführen. Auch diese Zentralisierung habe ich in den letzten beiden Wochen für das erste Programmmodul umgesetzt. Die weiteren werden in den nächsten Versionen folgen.

Da ich allerdings überhaupt kein Freund davon bin, nur unsichtbare Programmänderungen umzusetzen, habe ich in den letzten Tagen noch eine schöne neue Funktion implementiert. Es ist nun möglich, die Ansicht auf die Datenbank nach der manuellen Bildbewertung auszuführen. Ab jetzt wird es nicht mehr so langwierig/langweilig, wenn man Freunden Urlaubsbilder zeigen möchte. Einfach die Einschränkung auf die am besten bewerteten Fotos setzen und schon sind die ganzen, nicht so schönen Bilder, nicht mehr sichtbar. Die neue Funktion kann, wie immer, natürlich mit der neuen Entwicklerversion getestet werden.

Ansichtseinschränkung Manuelle Bildbewertung

Ansichtseinschränkung Manuelle Bildbewertung

BVASystem Version 2.2.1

Sonntag, Juli 13th, 2014

Die heutige Version des BVASystems, ist für mich etwas ganz besonderes, denn es ist die insgesamt einhundertste Version, die ich hier auf der Homepage veröffentlicht habe. Von diesen 100 Versionen waren 13 Versionen vom alten BVA-System 1.0. Die restlichen Versionen gehen alle auf das Konto dieses Blogs, den ich mit dem Start vom BVASystem 2.0 ins Leben gerufen habe. Ehrlich gesagt war der Blog die beste Idee, die ich jemals hatte. Ich finde es zum Beispiel gerade jetzt total interessant, in alten Entwicklungsständen zu stöbern und diese mit der aktuellen Version zu vergleichen. Es ist schon erstaunlich, auf was für eine Größe das BVASystem herangewachsen ist.  Nun aber wieder zur aktuellen Version:

Was ist neu in der Version 2.2.1

Die größte Änderung, die ich in den letzten Monaten umgesetzt habe ist die Ansichtseinschränkung. Mit dieser Funktion können unerwünschte Fotos aus den Bildlisten komplett ausgeblendet werden. Mir war diese Funktion so wichtig, damit ich die Bilder meiner Kinder ausblenden kann, wenn ich mir meine eigenen Fotos ansehen möchte. Des weiteren habe ich die Schlagwortverwaltung um weitere Funktionen erweitert. So ist es nun möglich Schlagworte umzubenennen, Schlagworte zu löschen und es können sogar 2 ähnliche Schlagworte zusammengeführt werden. Außerdem habe ich mit einigen Änderungen begonnen, die noch keine sichtbaren Früchte tragen. Wie versprochen habe ich erste Vorarbeiten durchgeführt, damit langfristig alle Datenbankfunktionen auch bei Bildern auf der lokalen Festplatte zur Verfügung stehen. Zu guter letzt habe ich mir eine eigene Scrollbar und eine eigene Scrollbox-Komponente geschrieben. Sie ersetzen nun bereits zum Großteil die hässlichen Standard-Scrollbars. 

BVASystem 2.2.1 - Einzelbildansicht

BVASystem 2.2.1 – Einzelbildansicht

Ausblick

Da ich es noch nicht ganz geschafft habe, überall im Programm meine neue Scrollbar einzubinden, steht dieses ganz oben auf meiner Wunschliste. Außerdem möchte ich auch weiterhin die Möglichkeiten zur Bildfilterung und auch der Ansichtseinschränkung erweitern. Gerade die Ansichtseinschränkung ist mit den 2 vorhandenen Kriterien noch ziemlich dünn. Der dritte Punkt, an dem ich arbeiten möchte ist etwas schwerer zu erklären. Das BVASystem hat aktuell eine sehr große technische Hürde. Wenn man das Programm wirklich testen möchte, so muss zuerst ein Datenbanksystem installiert und eingerichtet werden. Selbst wenn man dazu technisch gesehen in der Lage wäre, so wird man diesen Aufwand scheuen. Eine Lösung für das Problem wäre es, wenn ich eine Demo-Datenbank hier auf der Homepage installiere. Leider ist dies in der aktuellen Form nicht möglich, da ich dafür zu viele Datenbankrechte offen legen müsste. Daher habe ich mir etwas überlegt, damit ich beim Arbeiten an der lokalen Datenbankdatei auch dem Ziel Demo-Datenbank näher komme. Ich denke allerdings nicht, das es bis zu nächsten stabilen Softwareversion dort eine fertige Lösung geben wird. 

Oberflächenentwurf zur Ansichtseinschränkung

Mittwoch, Juni 11th, 2014

Beim  Sortieren meiner eigenen Fotos wurde ich auf ein größeres Problem aufmerksam.  In der Familie besitzen wir mehrere verschiedene Digitalkameras. Die Bilder die dabei entstehen sollen aber alle im BVASystem verwaltet werden. Dabei stellte es sich, wenn ich Freunden Bilder zeigen wollte, als störend heraus, das die Fotos meiner Tochter immer mit angezeigt wurden. 

Es besteht zwar die Möglichkeit, die unerwünschten Fotos mit der Filter-Funktion und Sortierfunktion an das Ende der Bildlisten zu bringen, aber gänzlich ausgeblendet werden können sie nicht. Daher habe ich mir nun eine Möglichkeit überlegt, die Ansicht auf die Datenbank einzuschränken. Der dazu notwendige Oberflächenbereich ist nun fertig und kann in der neuen Programmversion 2.2.0.84-dev begutachtet werden.

Ansichtseinschränkung festlegen

Ansichtseinschränkung festlegen

Über dem Rubrikenbaum befinden sich nun 2 Knöpfe. Mit dem Ersten können, über einen Popup-Dialog, Kriterien zur Einschränkung der Datenbankansicht definiert werden. Im aktuellen Entwurf steht nur ein Kriterium, und zwar die zur Aufnahme verwendete Kamera, zur Verfügung. Für spätere Versionen ist geplant, weitere Kriterien zu schaffen. Der zweite Knopf dient zum Löschen der gesetzten Einschränkung. Ich hoffe, das das dadurch enstehende System relativ leicht zu bedienen ist und mein gewünschtes Ziel damit erreicht werden kann. 

In den nächsten Wochen werde ich mich darum kümmern, das die nun fertige Oberfläche zur Ansichtseinschränkung auch funktional umgesetzt wird. Dazu muss ich aus der Oberfläche eine Einschränkungsdefinitions-XML-Datei generieren, die ich dann in der Datenschicht des BVASystems in einen SQL Befehl umwandele. Dieser muss dann bei jeder Bildlisten-Abfrage mitgenutzt werden. Ich hoffe, das ich damit schneller vorankommen werde. In den letzten Wochen habe ich leider relativ wenig geschafft, da ich 2 Wochen im Urlaub war. Und jetzt gerade bei den schwül warmen Temperaturen, habe ich nicht wirklich Lust auf Arbeit… 

Änderungs-Sammelsurium Teil 2

Montag, April 21st, 2014

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

BVASystem Version 2.2.0

Dienstag, März 11th, 2014

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.

Sortierung der Bildlisten

Montag, März 3rd, 2014

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

Samstag, Februar 15th, 2014

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.