Great trip in the Red Sea on the Emperor Elite boat. We sailed down to St John and visited beautiful reefs!
These photos are Copyright by Francesco Santini 2022 and released under a CC-BY-ND license. This means that you can freely use and distribute them, even for commercial purposes, but you must cite the author and cannot modify them. Please contact me for other uses.
I never really bothered checking, but apparently, my KoboCloud project, a set of scripts to download books to Kobo ebook readers from multiple cloud storage services (Dropbox, pCloud, Google Drive, and more) is quite successful. A couple of people even made video tutorials about it, with thousands of views!
I’m happy that this little hobby project changed the experience for so many users!
I’m also very grateful to the other contributors, who implemented a ton of features into the project! Thank you guys, this is the power of Open Source!
The Maldives offer amazing biodiversity, with large fishes (sharks and mantas) as well as reef life. These pictures are from a week-long cruise with Emperor Maldives. Great experience and great company!
These photos are Copyright by Francesco Santini 2021 and released under a CC-BY-ND license. This means that you can freely use and distribute them, even for commercial purposes, but you must cite the author and cannot modify them. Please contact me for other uses.
I recently implemented a swift generic input dialog for PyQt5 which extends the functionality of QInputDialog. It supports multiple inputs in the same window, with text, numeric, boolean, and option inputs.
Its usage is simple and intuitive as demonstrated by the following code snippet:
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
accepted, values = GenericInputDialog.show_dialog("Test",
GenericInputDialog.IntSpinInput('My Int', 10, -100, 100),
GenericInputDialog.OptionInput('My string options', [
], 'option 3'),
GenericInputDialog.OptionInput('My int options', [
('option 1', 1.1),
('option 2', 2.2),
('option 3', 3.3)
# Note: for option inputs, the value list can be a list
# of strings, and then the output is the string itself, or a
# list of tuples, where the first element is a string (the label)
# and the second is the returned value (any).
# The default value for options can be the label string, the
# default returned value, or an integer index.
# returned values can be accessed by key or by position
# they can be iterated like a list
for v in values: