diff --git a/CHANGELOG.md b/CHANGELOG.md
index 016972d..a9b2781 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,20 +1,8 @@
# Changelog
-
-## 1.6.x
-### 1.6.0: Feature – Add Information from Developing Process
-
-- Added two new combo boxes: one for **film developer** and one for **development time** (how long the film was developed).
-- The film developer field accepts all characters, while the time field only accepts `NA` or `mm:ss`.
-- **Improved EXIF Edit Window**: Pressing **Enter** (Return) now adds the new item to the list, just like pressing the **Add** button.
-
----
-
## 1.5.x
### 1.5.0: Feature - Time of dateEdit now today
- Changes that instead of the dateEdit elements being always set to a last day of 2024 it is the current day.
----
-
## 1.4.x
### 1.4.2: Fix links
- Fixed that changelog was linked to GitLab, not it is to code.boxyfoxy.net
diff --git a/src/OptimaLab35/mainWindow.py b/src/OptimaLab35/mainWindow.py
index 9d7f49e..c299689 100644
--- a/src/OptimaLab35/mainWindow.py
+++ b/src/OptimaLab35/mainWindow.py
@@ -160,33 +160,6 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
elif index == 0: # Main Tab
self.handle_exif_file("write")
- def parse_time(self, s):
- # Modified ChatGPT code
- """Return total seconds if valid mm:ss, otherwise None."""
- try:
- mm, ss = s.split(":")
- return int(mm) * 60 + int(ss)
- except (ValueError, AttributeError):
- return None
-
- def sort_times(self, times):
- # Keep only mm:ss or NA
- # Modified ChatGPT code
- filtered = []
- for t in times:
- if t is None:
- filtered.append(None)
- elif isinstance(t, str):
- stripped = t.strip()
- if stripped.upper() in {"NA"}:
- filtered.append(stripped)
- elif self.parse_time(stripped) is not None:
- filtered.append(stripped)
- # ignore anything else
- # Sort: NA first, then valid times ascending
- return sorted(filtered, key=lambda x: (0, 0) if (x is None or str(x).strip().upper() in {"NA"})
- else (1, self.parse_time(x)))
-
def sort_dict_of_lists(self, input_dict):
# Partily ChatGPT
sorted_dict = {}
@@ -197,14 +170,9 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
lst = sorted(lst)
lst = [str(x) for x in lst]
sorted_dict["iso"] = lst
- elif key == "time":
- lst = self.sort_times(lst)
- sorted_dict["time"] = lst
+
elif all(isinstance(x, str) for x in lst):
- sorted_dict[key] = sorted(
- lst,
- key=lambda x: (0, x.lower()) if str(x).lower() == "na" else (1, str(x).lower())
- )
+ sorted_dict[key] = sorted(lst, key=str.lower) # Case-insensitive sort for strings
return sorted_dict
@@ -238,8 +206,6 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
"user_comment": self.ui.user_comment_comboBox,
"artist": self.ui.artist_comboBox,
"copyright_info": self.ui.copyright_info_comboBox,
- "developer": self.ui.dev_comboBox,
- "time": self.ui.time_comboBox,
}
self.populate_comboboxes(combo_mapping)
@@ -444,28 +410,13 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
new_date = datetime.strptime(date_input, "%Y-%m-%d")
return new_date.strftime("%Y:%m:%d 00:00:00")
- def add_laboratory_info(self):
- lab_info_str = ""
- dev_text = self.ui.dev_comboBox.currentText()
- time_text = self.ui.time_comboBox.currentText()
- if dev_text != "NA":
- lab_info_str += f", {dev_text}"
-
- if time_text != "NA":
- lab_info_str += f", {time_text}"
-
- return lab_info_str
-
def collect_selected_exif(self):
user_data = {}
user_data["make"] = self.ui.make_comboBox.currentText()
user_data["model"] = self.ui.model_comboBox.currentText()
user_data["lens"] = self.ui.lens_comboBox.currentText()
user_data["iso"] = self.ui.iso_comboBox.currentText()
- lab_info = self.add_laboratory_info()
- print("TEXT")
- print(lab_info)
- user_data["image_description"] = f"{self.ui.image_description_comboBox.currentText()} {lab_info}"
+ user_data["image_description"] = self.ui.image_description_comboBox.currentText()
user_data["artist"] = self.ui.artist_comboBox.currentText()
user_data["copyright_info"] = self.ui.copyright_info_comboBox.currentText()
user_data["software"] = f"{self.name} {self.version} with {self.o.name} {self.o.version}"
diff --git a/src/OptimaLab35/ui/exif_handler_window.py b/src/OptimaLab35/ui/exif_handler_window.py
index 54e6026..930fb51 100644
--- a/src/OptimaLab35/ui/exif_handler_window.py
+++ b/src/OptimaLab35/ui/exif_handler_window.py
@@ -34,7 +34,6 @@ class ExifEditor(QMainWindow):
# Line edit for adding items
self.line_edit = QLineEdit()
- self.line_edit.returnPressed.connect(self.add_item)
self.line_edit.setPlaceholderText("Enter new item...")
main_layout.addWidget(self.line_edit)
diff --git a/src/OptimaLab35/ui/main_window.py b/src/OptimaLab35/ui/main_window.py
index f526159..38191e5 100644
--- a/src/OptimaLab35/ui/main_window.py
+++ b/src/OptimaLab35/ui/main_window.py
@@ -3,7 +3,7 @@
################################################################################
## Form generated from reading UI file 'main_window.ui'
##
-## Created by: Qt User Interface Compiler version 6.9.0
+## Created by: Qt User Interface Compiler version 6.8.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
@@ -28,7 +28,7 @@ class Ui_MainWindow(object):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.setWindowModality(Qt.WindowModality.NonModal)
- MainWindow.resize(450, 696)
+ MainWindow.resize(450, 720)
MainWindow.setMinimumSize(QSize(350, 677))
MainWindow.setMaximumSize(QSize(450, 1000))
self.actionInfo = QAction(MainWindow)
@@ -364,105 +364,141 @@ class Ui_MainWindow(object):
self.exif_options_group.setEnabled(False)
self.gridLayout_7 = QGridLayout(self.exif_options_group)
self.gridLayout_7.setObjectName(u"gridLayout_7")
- self.label_7 = QLabel(self.exif_options_group)
+ self.widget_7 = QWidget(self.exif_options_group)
+ self.widget_7.setObjectName(u"widget_7")
+ self.verticalLayout_7 = QVBoxLayout(self.widget_7)
+ self.verticalLayout_7.setObjectName(u"verticalLayout_7")
+ self.label_7 = QLabel(self.widget_7)
self.label_7.setObjectName(u"label_7")
- self.gridLayout_7.addWidget(self.label_7, 6, 0, 1, 1)
+ self.verticalLayout_7.addWidget(self.label_7)
- self.label = QLabel(self.exif_options_group)
- self.label.setObjectName(u"label")
-
- self.gridLayout_7.addWidget(self.label, 0, 0, 1, 1)
-
- self.image_description_comboBox = QComboBox(self.exif_options_group)
- self.image_description_comboBox.setObjectName(u"image_description_comboBox")
-
- self.gridLayout_7.addWidget(self.image_description_comboBox, 5, 0, 1, 1)
-
- self.label_4 = QLabel(self.exif_options_group)
- self.label_4.setObjectName(u"label_4")
-
- self.gridLayout_7.addWidget(self.label_4, 2, 1, 1, 1)
-
- self.time_comboBox = QComboBox(self.exif_options_group)
- self.time_comboBox.setObjectName(u"time_comboBox")
-
- self.gridLayout_7.addWidget(self.time_comboBox, 9, 1, 1, 1)
-
- self.dev_comboBox = QComboBox(self.exif_options_group)
- self.dev_comboBox.setObjectName(u"dev_comboBox")
-
- self.gridLayout_7.addWidget(self.dev_comboBox, 9, 0, 1, 1)
-
- self.label_5 = QLabel(self.exif_options_group)
- self.label_5.setObjectName(u"label_5")
-
- self.gridLayout_7.addWidget(self.label_5, 4, 0, 1, 1)
-
- self.model_comboBox = QComboBox(self.exif_options_group)
- self.model_comboBox.setObjectName(u"model_comboBox")
-
- self.gridLayout_7.addWidget(self.model_comboBox, 1, 1, 1, 1)
-
- self.lens_comboBox = QComboBox(self.exif_options_group)
- self.lens_comboBox.setObjectName(u"lens_comboBox")
-
- self.gridLayout_7.addWidget(self.lens_comboBox, 3, 0, 1, 1)
-
- self.user_comment_comboBox = QComboBox(self.exif_options_group)
- self.user_comment_comboBox.setObjectName(u"user_comment_comboBox")
-
- self.gridLayout_7.addWidget(self.user_comment_comboBox, 5, 1, 1, 1)
-
- self.make_comboBox = QComboBox(self.exif_options_group)
- self.make_comboBox.setObjectName(u"make_comboBox")
-
- self.gridLayout_7.addWidget(self.make_comboBox, 1, 0, 1, 1)
-
- self.label_14 = QLabel(self.exif_options_group)
- self.label_14.setObjectName(u"label_14")
-
- self.gridLayout_7.addWidget(self.label_14, 8, 0, 1, 1)
-
- self.label_8 = QLabel(self.exif_options_group)
- self.label_8.setObjectName(u"label_8")
-
- self.gridLayout_7.addWidget(self.label_8, 6, 1, 1, 1)
-
- self.label_3 = QLabel(self.exif_options_group)
- self.label_3.setObjectName(u"label_3")
-
- self.gridLayout_7.addWidget(self.label_3, 0, 1, 1, 1)
-
- self.label_6 = QLabel(self.exif_options_group)
- self.label_6.setObjectName(u"label_6")
-
- self.gridLayout_7.addWidget(self.label_6, 4, 1, 1, 1)
-
- self.copyright_info_comboBox = QComboBox(self.exif_options_group)
- self.copyright_info_comboBox.setObjectName(u"copyright_info_comboBox")
-
- self.gridLayout_7.addWidget(self.copyright_info_comboBox, 7, 1, 1, 1)
-
- self.iso_comboBox = QComboBox(self.exif_options_group)
- self.iso_comboBox.setObjectName(u"iso_comboBox")
-
- self.gridLayout_7.addWidget(self.iso_comboBox, 3, 1, 1, 1)
-
- self.label_15 = QLabel(self.exif_options_group)
- self.label_15.setObjectName(u"label_15")
-
- self.gridLayout_7.addWidget(self.label_15, 8, 1, 1, 1)
-
- self.label_2 = QLabel(self.exif_options_group)
- self.label_2.setObjectName(u"label_2")
-
- self.gridLayout_7.addWidget(self.label_2, 2, 0, 1, 1)
-
- self.artist_comboBox = QComboBox(self.exif_options_group)
+ self.artist_comboBox = QComboBox(self.widget_7)
self.artist_comboBox.setObjectName(u"artist_comboBox")
- self.gridLayout_7.addWidget(self.artist_comboBox, 7, 0, 1, 1)
+ self.verticalLayout_7.addWidget(self.artist_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_7, 3, 0, 1, 1)
+
+ self.widget_4 = QWidget(self.exif_options_group)
+ self.widget_4.setObjectName(u"widget_4")
+ self.verticalLayout_4 = QVBoxLayout(self.widget_4)
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
+ self.label_4 = QLabel(self.widget_4)
+ self.label_4.setObjectName(u"label_4")
+
+ self.verticalLayout_4.addWidget(self.label_4)
+
+ self.iso_comboBox = QComboBox(self.widget_4)
+ self.iso_comboBox.setObjectName(u"iso_comboBox")
+
+ self.verticalLayout_4.addWidget(self.iso_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_4, 1, 1, 1, 1)
+
+ self.widget_6 = QWidget(self.exif_options_group)
+ self.widget_6.setObjectName(u"widget_6")
+ self.verticalLayout_6 = QVBoxLayout(self.widget_6)
+ self.verticalLayout_6.setObjectName(u"verticalLayout_6")
+ self.label_6 = QLabel(self.widget_6)
+ self.label_6.setObjectName(u"label_6")
+
+ self.verticalLayout_6.addWidget(self.label_6)
+
+ self.user_comment_comboBox = QComboBox(self.widget_6)
+ self.user_comment_comboBox.setObjectName(u"user_comment_comboBox")
+
+ self.verticalLayout_6.addWidget(self.user_comment_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_6, 2, 1, 1, 1)
+
+ self.widget_2 = QWidget(self.exif_options_group)
+ self.widget_2.setObjectName(u"widget_2")
+ self.verticalLayout_2 = QVBoxLayout(self.widget_2)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.label_2 = QLabel(self.widget_2)
+ self.label_2.setObjectName(u"label_2")
+
+ self.verticalLayout_2.addWidget(self.label_2)
+
+ self.lens_comboBox = QComboBox(self.widget_2)
+ self.lens_comboBox.setObjectName(u"lens_comboBox")
+
+ self.verticalLayout_2.addWidget(self.lens_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_2, 1, 0, 1, 1)
+
+ self.widget_5 = QWidget(self.exif_options_group)
+ self.widget_5.setObjectName(u"widget_5")
+ self.verticalLayout_5 = QVBoxLayout(self.widget_5)
+ self.verticalLayout_5.setObjectName(u"verticalLayout_5")
+ self.label_5 = QLabel(self.widget_5)
+ self.label_5.setObjectName(u"label_5")
+
+ self.verticalLayout_5.addWidget(self.label_5)
+
+ self.image_description_comboBox = QComboBox(self.widget_5)
+ self.image_description_comboBox.setObjectName(u"image_description_comboBox")
+
+ self.verticalLayout_5.addWidget(self.image_description_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_5, 2, 0, 1, 1)
+
+ self.widget = QWidget(self.exif_options_group)
+ self.widget.setObjectName(u"widget")
+ self.verticalLayout = QVBoxLayout(self.widget)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.label = QLabel(self.widget)
+ self.label.setObjectName(u"label")
+
+ self.verticalLayout.addWidget(self.label)
+
+ self.make_comboBox = QComboBox(self.widget)
+ self.make_comboBox.setObjectName(u"make_comboBox")
+
+ self.verticalLayout.addWidget(self.make_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget, 0, 0, 1, 1)
+
+ self.widget_3 = QWidget(self.exif_options_group)
+ self.widget_3.setObjectName(u"widget_3")
+ self.verticalLayout_3 = QVBoxLayout(self.widget_3)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.label_3 = QLabel(self.widget_3)
+ self.label_3.setObjectName(u"label_3")
+
+ self.verticalLayout_3.addWidget(self.label_3)
+
+ self.model_comboBox = QComboBox(self.widget_3)
+ self.model_comboBox.setObjectName(u"model_comboBox")
+
+ self.verticalLayout_3.addWidget(self.model_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_3, 0, 1, 1, 1)
+
+ self.widget_8 = QWidget(self.exif_options_group)
+ self.widget_8.setObjectName(u"widget_8")
+ self.verticalLayout_8 = QVBoxLayout(self.widget_8)
+ self.verticalLayout_8.setObjectName(u"verticalLayout_8")
+ self.label_8 = QLabel(self.widget_8)
+ self.label_8.setObjectName(u"label_8")
+
+ self.verticalLayout_8.addWidget(self.label_8)
+
+ self.copyright_info_comboBox = QComboBox(self.widget_8)
+ self.copyright_info_comboBox.setObjectName(u"copyright_info_comboBox")
+
+ self.verticalLayout_8.addWidget(self.copyright_info_comboBox)
+
+
+ self.gridLayout_7.addWidget(self.widget_8, 3, 1, 1, 1)
self.verticalLayout_9.addWidget(self.exif_options_group)
@@ -507,7 +543,7 @@ class Ui_MainWindow(object):
self.dateEdit = QDateEdit(self.date_groupBox)
self.dateEdit.setObjectName(u"dateEdit")
self.dateEdit.setEnabled(False)
- self.dateEdit.setDateTime(QDateTime(QDate(2024, 12, 31), QTime(20, 0, 0)))
+ self.dateEdit.setDateTime(QDateTime(QDate(2024, 12, 31), QTime(22, 0, 0)))
self.dateEdit.setMaximumDate(QDate(2038, 12, 31))
self.dateEdit.setMinimumDate(QDate(1970, 1, 1))
self.dateEdit.setCalendarPopup(True)
@@ -527,7 +563,7 @@ class Ui_MainWindow(object):
MainWindow.setStatusBar(self.statusBar)
self.menuBar = QMenuBar(MainWindow)
self.menuBar.setObjectName(u"menuBar")
- self.menuBar.setGeometry(QRect(0, 0, 450, 26))
+ self.menuBar.setGeometry(QRect(0, 0, 450, 19))
self.menuHelp = QMenu(self.menuBar)
self.menuHelp.setObjectName(u"menuHelp")
self.menuSettings = QMenu(self.menuBar)
@@ -674,17 +710,15 @@ class Ui_MainWindow(object):
self.edit_exif_button.setText(QCoreApplication.translate("MainWindow", u"EXIF editor", None))
self.exif_options_group.setTitle(QCoreApplication.translate("MainWindow", u"Essential EXIF Info", None))
self.label_7.setText(QCoreApplication.translate("MainWindow", u"Artist", None))
- self.label.setText(QCoreApplication.translate("MainWindow", u"Make", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"ISO", None))
+ self.label_6.setText(QCoreApplication.translate("MainWindow", u"Scanner", None))
+ self.label_2.setText(QCoreApplication.translate("MainWindow", u"Lens", None))
self.label_5.setText(QCoreApplication.translate("MainWindow", u"Film", None))
+ self.label.setText(QCoreApplication.translate("MainWindow", u"Make", None))
self.make_comboBox.setCurrentText("")
self.make_comboBox.setPlaceholderText("")
- self.label_14.setText(QCoreApplication.translate("MainWindow", u"Developer", None))
- self.label_8.setText(QCoreApplication.translate("MainWindow", u"Copyright", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"Model", None))
- self.label_6.setText(QCoreApplication.translate("MainWindow", u"Scanner", None))
- self.label_15.setText(QCoreApplication.translate("MainWindow", u"Time", None))
- self.label_2.setText(QCoreApplication.translate("MainWindow", u"Lens", None))
+ self.label_8.setText(QCoreApplication.translate("MainWindow", u"Copyright", None))
self.gps_groupBox.setTitle(QCoreApplication.translate("MainWindow", u"GPS Coordinates", None))
#if QT_CONFIG(tooltip)
self.gps_checkBox.setToolTip(QCoreApplication.translate("MainWindow", u"From a Homepage like latlong.net", None))
diff --git a/src/OptimaLab35/ui/main_window.ui b/src/OptimaLab35/ui/main_window.ui
index 8a46292..6b87b83 100644
--- a/src/OptimaLab35/ui/main_window.ui
+++ b/src/OptimaLab35/ui/main_window.ui
@@ -10,7 +10,7 @@
0
0
450
- 696
+ 720
@@ -672,112 +672,140 @@
Essential EXIF Info
- -
-
-
- Artist
-
-
-
- -
-
-
- Make
-
-
-
- -
-
-
- -
-
-
- ISO
-
-
-
- -
-
-
- -
-
-
- -
-
-
- Film
-
+
-
+
+
+
-
+
+
+ Artist
+
+
+
+ -
+
+
+
-
-
+
+
+
-
+
+
+ ISO
+
+
+
+ -
+
+
+
+
- -
-
-
- -
-
+
-
+
+
+
-
+
+
+ Scanner
+
+
+
+ -
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- -
-
-
- Developer
-
-
-
- -
-
-
- Copyright
-
-
-
- -
-
-
- Model
-
-
-
- -
-
-
- Scanner
-
-
-
- -
-
-
- -
-
-
- -
-
-
- Time
-
+
+
+
-
+
+
+ Lens
+
+
+
+ -
+
+
+
-
-
-
- Lens
-
+
+
+
-
+
+
+ Film
+
+
+
+ -
+
+
+
- -
-
+
-
+
+
+
-
+
+
+ Make
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
-
+
+
+ Model
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
-
+
+
+ Copyright
+
+
+
+ -
+
+
+
+
@@ -868,7 +896,7 @@
- 20
+ 22
0
0
2024
@@ -911,7 +939,7 @@
0
0
450
- 26
+ 19