PhotoQt v1.7.1 – squashing some bugs

There have unfortunately been some bugs that snuck into v1.7 that remained unnoticed before the last release. Thanks to some fantastic users these bugs have been found, reported and now fixed! As some of them have a rather big impact on the usability of PhotoQt, here is a small bug fix release to take care of them.

These are the bugs that have been fixed:
  • Animated images would not load: This bug was due to a mistake in the function that takes care of the percentage encoding of filenames, it did not handle paths starting with 'file://' properly
  • The more images in a directory the slower PhotoQt would load first image: When loading an image in a directory with thousands of pictures, this delay was not just noticeable, it was just plain annoying. And while PhotoQt was busy loading the images, its interface remained unresponsive. PhotoQt is now much smarter in reusing information about files to display images again very quickly (more or less immediately).
  • Deleting an image would lead to infinite 'loading' indicator: To see this bug, simply delete any image and move two images in either direction. This was caused by a property binding that got broken during the deletion process.
  • List of releases in appdata file was in reverse order: This bug is not really visible and did not affect the usability of PhotoQt in any way. Nonetheless, it was there and it was not right.

Besides these fixes, there has been one tiny addition to PhotoQt:
Sometimes it takes a second or two for an element to load, in particular for the settings (as there are so many of them). To give some feedback that something is happening while the interface is unresponsive, the cursor will now be changed to a 'busy' cursor. A tiny change, yet very useful I believe.

I am sorry that these bugs have snuck into the last release, and I hope this update makes it to your machines very quickly!

Enjoy PhotoQt,

Lukas Spies

PhotoQt v1.7 is now available

PhotoQt v1.7 comes only about three months after v1.6, yet it once again brings a host of changes and improvements. Besides general speed improvements, it brings a wider range of supported image formats, several new and exciting features and fixes many bugs.

Here are some of the main changes you can find in this release:
  • FreeImage, DevIL, Poppler, libarchive, unrar: PhotoQt can now make use of all of these image libraries (in addition to GraphicsMagick and libraw) to display your images. Together with proper support for KImageFormats, this roughly doubles the number of images PhotoQt can display!
  • File Endings and MIME types: PhotoQt used to only consider the ending of a file to determine whether it is a known image or not. This caused images with wrong file endings to not be detected. PhotoQt now first considers the file ending and then also the MIME type of a file to see if it can be displayed. As usual, the user remains in full control over which file endings or MIME types PhotoQt should or should not take into consideration. Please note, that due to these massive changes, any previous settings regarding the image formats could not be preserved!
  • Face Tags: Various photo programs allow the tagging of faces in an image and store this information in the image XMP metadata. PhotoQt now joins their ranks by not only displaying such information but also allowing the user to add/remove tags.
  • Basic Window Management: Even though most window managers are generally doing a much better job at managing PhotoQt, there could be circumstances where you might need some help from PhotoQt. A click-and-drag on the quick info labels (where the filename/... is shown) moves the window around, and a double click on this same label (un-)maximizes the window. Please note that this is DISabled by default, it needs to be enabled in the settings first!
  • Small Screens: The usability of PhotoQt on very small screens or in window mode were somewhat limited, with rather a lot of information outside of the visible area. This was especially noticeable (and annoying) in the settings manager. But no more, PhotoQt now properly adjusts its interface to work on large as well as small screens!
  • Speed improvements: Yes, there have also been many speed improvements, again! In particular, images are loading a good bit faster now. For example: Loading an image with GraphicsMagick is now up to 30 times faster than before!
Of course, there have been several other changes too. A few more are listed in the Changelog, but the best would be to just give it a try and see for yourself! I am confident that you will love it too!

Enjoy PhotoQt,

Lukas Spies

PhotoQt v1.6

More than a year has passed since the last release of PhotoQt. That is quite a lot of time. For a large part of that time I was not able to work much on PhotoQt as life kept me very busy. However, now it is finally here: The all-new release of PhotoQt version 1.6!

The code has changed a lot since the last release, more than 600 commits made it into git! Some of the main changes are:
  • Restructured code: PhotoQt was completely restructured to improve performance (and code maintainability). One of the things that was done to improve its performance was to hide all those parts of PhotoQt that might not be needed in any one session behind Loader's and only load them when actually needed. This means that PhotoQt now starts not just a little bit faster, but (according to some simple testing on my laptop) almost 4 times faster!
  • Reworked elements: Some of the elements were re-worked to make them faster and to fix bugs (also due to better maintainability). One notable example of this is the element for opening files. Not only is it now significantly faster than before, it also has some nice features (e.g., proper drag-and-drop for adding folders to the bookmarks section, quick hover thumbnail, and more) and lost plenty of bugs.
  • Online integration: Don't worry, PhotoQt does not connect to anywhere online. Except if you tell it to upload an image directly to PhotoQt can upload images to both anonymously and to a connected user account. In either case, it reports back the URL to view the image and the URL to delete it.
  • Main Image: The main image element is another area that was completely revamped. For example, the main image can now be moved freely, i.e., it is not anymore tied to the screen edges. It also implements proper touchscreen support (go ahead, try it out), and can now pause animated images. On the flipside, it currently does not support 'zoom to mouse position', i.e., when zooming the image it always zoom to/from the image center. I hope to change this for the next release, however, I believe it is only a minor issue (if at all).
  • Export/Import: You like PhotoQt. You have it set up exactly the way you want to have it. You switch computers and/or install PhotoQt on a different one. Now you can export/import all the configuration files of PhotoQt from inside the settings manager and thus create a 'proper' copy of PhotoQt on a different machine! This can be done both from the graphical interface (inside settings manager) or through the command line.
  • Shortcuts: Not only does PhotoQt now handle Shortcuts a little differently (most people shouldn't notice anything), but it now also allows to set the same key/mouse combo for multiple shortcuts, as requested repeatedly!
  • Standalone: PhotoQt can now be started in standalone mode. This means, that you can have multiple instances of PhotoQt running at the same time, however, you wont be able to interact with any of them remotely. For example, clicking on an image to open it with PhotoQt would in that case start a new instance of PhotoQt (non-standalone).

These are only some of the bigger changes in PhotoQt v1.6. There are also plenty of other changes, too many to name them all here (a few more are listed in the Changelog). However, the best is to just try it out yourself! I'm sure you will love it!

Enjoy PhotoQt :-)

Lukas Spies

Introducing ImgurQt

Today I want to quickly introduce a new small application called ImgurQt. ImgurQt is a simple console application (also based on Qt) that implements some of the basic commands of the APIv3. All of the code is hosted on GitLab.

Initially, ImgurQt wasn't planned at all, but as I was developing the functionality to add it to PhotoQt, it seemed like a logical step to also publish it as a standalone application. It does not come with any GUI, though the Qt libraries are used in the code. By design, all of the actual functionality is kept separately from the program flow. This way, it should be fairly easy to use the code in other applications. All you need are the files in the src subdirectory of the source tree. Read here or check out the README for more detailed information.

ImgurQt does not implement the full APIv3, only the basics: Authenticating with an account, uploading an image either to the connected account or anonymously, and deleting an image using a deletion hash. I currently don't plan on adding many more features to ImgurQt, as this is all I currently need for PhotoQt. Though if there is enough interest, then I might consider expanding it.

Hope you find this useful!

Enjoy ImgurQt :-)

PhotoQt v1.5.1 is available

Even though PhotoQt v1.5 is only a few days old, I have heard from some users about some difficulties they had in getting the required dependency QtCharts installed. It appears that this QML module is not shipped by all distributions as it's a rather new module (even though it doesn't state this on the respective documentation page). This issue is addressed with this release.

The module QtCharts was only used by one element: the one responsible for drawing the histogram. However, I only needed some very basic features of this module, so I sat down and developed a custom drawing implementation that does the same thing I need without requiring this dependency. I now use a simple Image element with a special image loader that creates the required histogram at the required size. I was also able to streamline a few things, so that it should even be a little bit faster now, in particular when switching between the colour and greyscale version.

The QtCharts module was the main dependency I was trying to replace. However, this caused me to take a closer look at all the modules imported in the QML source files. As it turns out, the modules QtQuick.Window and QtQuick.Dialogs are both imported in a few files, but not used anywhere anymore. Thus it was enough to remove all the respective import statements for these two modules in order to eliminate another two dependencies.

Other than these two changes (one big one, one small one), there hasn't really been anything new in v1.5.1. However, my hope is that this release can now be available for anyone on any platforms.

If you have any thoughts, feedback, comments, or if you find a bug, please don't hesitate to let me know: (you need to enable javascript to see the email address)

Enjoy PhotoQt :-)

PhotoQt v1.5 released!

It's here: A brand-new release of PhotoQt, version 1.5. This release brings once again many exciting changes! Some of the highlights of this release include:
  • Improved shortcuts handling. Not only do the traditional shortcuts work more reliably, PhotoQt now supports any custom mouse gesture as shortcut. And if a touchscreen is available, you can set any touch gesture as shortcut, too! You can use any gesture you like, there are no limitations...
  • PhotoQt can now show a histogram of the currently viewed image. When enabled, the histogram is shown in a floating rectangle that can be resied and moved as desired. There are two versions available: 1) greyscale histogram, combining all colors into a greyscale value, 2) color histogram showing three curves, one for each of red, green and blue.
  • PhotoQt can now be told to re-open the last loaded image at startup. This is disabled by default, but can be enabled in the first tab of the settings element. PhotoQt will ignore this setting only if an image path has been passed on to it. I.e., if you open an image with PhotoQt, that image will be loaded as expected and not the previously loaded one.
  • The bar with the thumbnails has been re-worked (once again). Starting with this release PhotoQt now lets Qt/QML handle most of the thumbnails loading. In the past, this was done manually, resembling to some degree all that was necessary back in the time of a pure Qt/QWidgets PhotoQt. It just took a little while to really move beyond this mindset and surrender some control over the thumbnails over to Qt/QML. The code is much cleaner now, and the thumbnails feel as if they even offer slightly better performance than before (though that might just be wishful thinking). In any case, they're performance has at least not suffered, they still load very efficiently!

Of course these are only the four biggest highlights in this release. There have many many more additions and changes. A few more are listed in the Changelog, or to get a full overview of what has happened, check out the commit messages of the Git repository (they are typically pretty descriptive).

Also, once again many small and not so small bugs have been fixed along the way, far too many to name all of them. Suffice to say that PhotoQt has never worked as reliable and has never shown as good performance as with v1.5. Given that it always has been pretty fast, this is very exciting!

If you happen to find any bug or anything that is not working (hopefully everything works just fine), please let me know and I'll make sure to fix it for the next release!

Over the next couple of days I will also progressively update the various other packages and Windows builds... If they're not yet done by the time you check, simply come back a little later and it should be updated!

Enjoy PhotoQt :-)

On the road to PhotoQt v1.5

It's that time again, we're getting close to a new release!!

Over the past few months, there have been numerous changes, bug fixes and improvements to PhotoQt. To get a rough idea of some of the bigger changes, check out the roadmap, all the items marked in green have made their way into the codebase for v1.5. But this is only part of the story, there are many more not on the list. And many newly discovered bugs have been fixed and more will be fixed by the time the final release is out (aiming for before the end of the year, depending on bug hunt and translations). Update: The new release date aimed for is the weekend of January 7/8.

Long story short: PhotoQt has now officially entered the beta testing stage. I hope to catch as many remaining bugs as possible before the final release, but I need your help with that! Please, give it a try! You can find the latest source code on GitLab in the development branch. In order to test it, you need to build it from source, but it is a very straightforward task (check out the README for instructions) and you can always contact me ((you need to enable javascript to see the email address)) for help.

Hope you have fun playing around with v1.5beta and let me know any comments and any feedback you have!

PhotoQt v1.4.1.1: Updates to photoqt.appdata.xml

It has been a little while since there has been anything going on here, about 3 months. My apologies for once again having such a long break in the development! Over the past few months I finished my Masters degree in Scientific Computing (if you're curious, here's a copy of the final version of my thesis) and moved from St. John's in Newfoundland (Canada) to Champaign, IL, in the United States of America where I'll be working as a research assistant at the University of Illinois for one year. However, finishing up my Masters and moving countries has taken up pretty much all of my free time over the past many weeks... But I'm back now :-)

PhotoQt v1.4.1.1 is only a very tiny update to the photoqt.appdata.xml file. It doesn't change any code, so if you are only interested in running PhotoQt, there is no need to upgrade to this newer version. However, the updates are necessary for including PhotoQt in the software center. The software center is a place for software (no surprise there) and can be used from various distributions, although a lot of its users come from Ubuntu flavours.

This is all there is to say about this change. I am currently working on implementing better support for mouse gestures and also touch gestures. It will be a little while before this will be ready for use, but it's on its way and it's looking quite promising already :-)

Stay tuned and enjoy PhotoQt!

PhotoQt v1.4.1 – fixing some bugs

It has been just over two weeks have passed since v1.4 was released. And there have been a few bug reports dripping in since then. I had hoped to catch all of them before releasing v1.4, but unfortunately some slipped through. Hence, PhotoQt v1.4.1 fixed a total of 17 bugs (sorted below in the order in which they were fixed), and adds only a single tiny thing:
  • Fix: External Shortcuts aren't working
  • Fix: Detecting a key combination for a shortcut didn't work when a language other than English was set
  • Fix: Disabling of thumbnails wasn't preserved across sessions
  • Fix: Not possible to change setting for Extras filetypes (xcf and psd/psb)
  • Fix: Deleting images that had non-Latin characters in their filepath/filename didn't work
  • Fix: Pressing the 'Enter' key in a CustomLineEdit went to a second line
  • Fix: Renaming a file didn't reload the directory or hide the 'Rename' element
  • Fix: Add 'missing' photoqt.appdata.xml file to source tree
  • Fix: Impossible to use '+' (normal and keypad) for shortcuts
  • Fix: Resizing PhotoQt in window mode didn't adjust the width/height of the image container properly
  • Fix: Triggering 'floatable' mode of MetaData element didn't adjust width/height of image container
  • Fix: RAW: PhotoQt would always load at most a half-sized image instead of the full one
  • Fix: Handling of non-Latin characters faulty in certain cases
  • Fix: PhotoQt sometimes would load the thumbnails with a higher priority than the main image
  • Fix: Database info in settings manager didn't update automatically after cleaning/emptying database
  • Fix: When loading a folder, thumbnails sometimes wouldn't start loading automatically
  • Fix: RAW fileformats are not enabled by default (when compiled with LibRaw support)
  • Add: Shortcut to hard-delete a file directly, by-passing the confirmation element
I highly recommend upgrading from v1.4 to v1.4.1 (grab it from the downloads page) as this will drastically enhance your experience with PhotoQt!

And if I could ask for a favor: Please help hunting bugs in PhotoQt! If you come across anything not working in v1.4.1, please let me know and I'll do my best to fix it. And if you come across a beta testing for a new release of PhotoQt, I would highly appreciate it if you take the time to try it out and share your experience with me. I'd also be more than happy to help with any difficulty you might encounter during compilation (though it should be a rather straight-forward process).

Also a quick note regarding where to find the source code: I manage the source code through GitLab repository, however, the source code is automatically also mirrored back to a GitHub repository. So even though I'll keep using GitLab for my day-to-day development, everything is also visible and available through GitHub. And I'm happy to provide support in either place!

Enjoy PhotoQt :-)

PhotoQt v1.4

It is here: PhotoQt v1.4!! After only 295 days of development, an all-new release with many exciting new features and improvements awaits.

Over this past year, I got to dive into the world of High Performance Computing (HPC) as part of my studies on iterative methods. It has been an amazing adventure already, and I learned a lot! At the end of March, I was able to present my research at a conference in Colorado, USA. This was a fantastic opportunity, but it came at the price of having a large amount of work to do going up to the conference. Thus, there were unfortunately some rather long periods of hardly any development going on over the past year.

Nonetheless, there have been numerous changes. The biggest ones are:
  1. The interface has been updated in almost every part, streamlining the workflow. The quicksettings element has been removed, and the context menu and drop-down main menu have been merged in a full-height bar hidden at the right screen edge. The metadata element is now a full-height bar hidden at the left edge. The thumbnail bar is the only one to stay as it was.
  2. There is a new built-in 'Open File' dialog for opening an image. It now uses three columns, with some commonly used favourites on the left, the folders in the middle, and the image files on the right. There are of course several adjustments possible, from zooming to hiding parts of the interface. The old way of opening a file has not been removed entirely, it can still be called with a shortcut (none set per default).
  3. The settings manager has been re-designed. All the descriptive text is now displayed as tooltip for the settings titles in the left column. This condensed the layout in such a way, that there wasn't the need for a distinction between 'Basic' and 'Advanced' settings anymore (no more guessing which one to choose). The fileformat setting has been fixed, so that it now actually works. The shortcuts settings have been re-designed and various bugs fixed.
  4. This has often been criticised as one of the bigger shortcomings of PhotoQt: The lack of support of RAW images. Well, I'm happy to tell you, that PhotoQt now supports displaying almost all varieties of RAW images. It uses the Libraw library behind the scenes for that.
  5. Whenever an image is zoomed or rotated, it now doesn't simply 'happen' instantaneously anymore, but it comes with a very simple and fast animation. It's nothing fancy, but it makes the overall appearance of PhotoQt much smoother
  6. Tooltips have been one of the things that were completely missing in v1.3. QML doesn't ship with out-of-the-box support for tooltips, but I managed to implement this feature using a C++ backend.
  7. Closing the PhotoQt window has now become much easier. Up until v1.3, whenever the PhotoQt window was closed, PhotoQt first checked if an element inside PhotoQt was open (like the settings or the About element). If that was the case, PhotoQt didn't close alltogether, but only the element inside PhotoQt. This has changed now: Closing the PhotoQt window now closes PhotoQt, end of story.
  8. The image engine and display has been completely re-written and re-designed. It should be much faster and more reliable now, as I got rid of a lot of nunnecessary detours in the code and many bugs.
These are only the main changes. There have been many more! Have a look at the Changelog for a slightly larger overview.

There is no shortage of plans where to go from here with PhotoQt. A number of features and improvements I'm hoping to look at are listed in the roadmap. Besides that, I will focus a lot on improving the speed of PhotoQt for the next release. It already got a good bit faster since v1.3, but there is still a lot of room for improvement.

I hope you like the changes and improvements in this version! I'm happy to hear any feedback you have.

Enjoy PhotoQt :-)


PS: The Ubuntu PPA and the Windows installer will both be updated within the next minutes to hours...