diff --git a/ArtNet/gui/dialogs/collection_modify_dialog/collection_dialog.py b/ArtNet/gui/dialogs/collection_modify_dialog/collection_dialog.py
new file mode 100644
index 0000000..56b19cf
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_modify_dialog/collection_dialog.py
@@ -0,0 +1,194 @@
+import logging
+import os.path
+from typing import List, Tuple
+
+from PyQt5 import QtWidgets
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QStandardItem, QStandardItemModel
+
+from ArtNet.gui.dialogs.collection_modify_dialog.collection_modify_dialog import Ui_Dialog
+
+from ArtNet.gui.dialogs.image_select_dialog.image_sel_dialog import ImageSelectDialog
+from ArtNet.db.db_adapter import DBAdapter
+
+
+class CollectionModDialog(QtWidgets.QDialog):
+ """
+ Dialog to edit and modify a collection and its entries' ranking
+ """
+
+ # TODO add way to increase and lower ranking for an entry (up and down buttons?)
+ # TODO add way to delete entry (button)
+ # TODO can I catch which item in a list is selected?
+
+ def __init__(self, parent, db_connection: DBAdapter, edit_collection: bool = False):
+ super().__init__(parent)
+ self.parent = parent
+ self.__db = db_connection
+
+ self.__curr_entries: List[Tuple[str, dict]] = list() # [(entry_str, Dict[title, path, ranking])]
+ self.data = dict()
+
+ self.setWindowTitle("Creating Collection")
+
+ self.ui = Ui_Dialog()
+ self.ui.setupUi(self)
+
+ if not edit_collection:
+ self.ui.collection_name_line.setReadOnly(True)
+ self.ui.description_browser.setReadOnly(True)
+
+ self.ui.add_image_button.clicked.connect(self.on_add_art_clicked)
+ self.ui.optimize_ranking_button.clicked.connect(self.on_optimize_ranking_clicked)
+
+ @staticmethod
+ def create_entry_string(art_data: dict) -> str:
+ """
+ Creates a string representation of the given art in the collection including its ranking string
+ """
+ title: str = art_data["title"] if art_data["title"] is not None else os.path.basename(art_data["path"])
+ if len(title) > 20:
+ title = title[-20:]
+ elif len(title) < 20:
+ while len(title) < 20:
+ title += " "
+ entry_string = title + " | " + art_data["ranking"]
+ return entry_string
+
+ def append_collection_entry(self, art_data: dict):
+ """
+ Append a new art entry into the collection
+ """
+ if len(self.__curr_entries) > 0: # need to create even lower entry
+ lowest_r = None
+ for s, data in self.__curr_entries:
+ r = data["ranking"]
+ if lowest_r is None or lowest_r < r:
+ lowest_r = r
+
+ if lowest_r[-1] < "z": # lower and not 'z'
+ ranking = lowest_r
+ ranking = ranking[:-1]
+ ranking += chr(ord(lowest_r[-1]) + (ord('z')-ord(lowest_r[-1]))//2 + 1) # last character + 1
+ else:
+ ranking = lowest_r if lowest_r is not None else ""
+ ranking += "m"
+
+ else: # first to add
+ ranking = "m" # the middle
+
+ art_data["ranking"] = ranking
+ title: str = art_data["title"] if art_data["title"] is not None else os.path.basename(art_data["path"])
+ if len(title) > 20:
+ title = title[-20:]
+ elif len(title) < 20:
+ while len(title) < 20:
+ title += " "
+
+ entry_string = title + " | " + art_data["ranking"]
+ self.__curr_entries.append((entry_string, art_data))
+ self.__curr_entries.sort(key=lambda x: x[1]["ranking"])
+ logging.debug(f"New collection list is: {self.__curr_entries}")
+ self.set_collection_entry_list(self.__curr_entries)
+
+ def insert_collection_entry(self, art_data: dict, index: int):
+ """
+ Insert the art entry into the collection at position index.
+ This might shift other entries in their index but tries to minimize ranking string changes.
+ """
+ assert(index >= 0)
+ if len(self.__curr_entries)-1 > index: # inserts between entries or in front of entries
+ conflicting_art = self.__curr_entries[index][1]
+ following_art = self.__curr_entries[index+1][1]
+
+ if len(conflicting_art["ranking"]) == len(following_art["ranking"]): # can I squeeze it in?
+ if following_art["ranking"][-1] < conflicting_art["ranking"][-1] < "z":
+ # both are not same and not "z" -> there might be space
+ char_diff = ord(conflicting_art["ranking"][-1]) - ord(following_art["ranking"][-1])
+ if char_diff > 1: # can squeeze a letter between them
+ ranking = conflicting_art["ranking"][:-1]
+ ranking += chr(ord(conflicting_art["ranking"][-1]) + char_diff//2)
+ else:
+ ranking = conflicting_art["ranking"] + "m"
+ else:
+ ranking = conflicting_art["ranking"] + "m"
+
+ elif conflicting_art["ranking"][-1] < "z": # just insert it the plain way
+ ranking = conflicting_art["ranking"]
+ ranking = chr(ord(ranking[-1])+1)
+ else:
+ ranking = conflicting_art["ranking"] + "m"
+
+ art_data["ranking"] = ranking
+ entry_string = CollectionModDialog.create_entry_string(art_data)
+ self.__curr_entries.append((entry_string, art_data))
+ self.__curr_entries.sort(key=lambda x: x[1]["ranking"])
+ logging.debug(f"New collection list is: {self.__curr_entries}")
+ self.set_collection_entry_list(self.__curr_entries)
+
+ else: # inserts at the end
+ self.append_collection_entry(art_data)
+
+ def collect_collection_details(self):
+ """
+ Collect the entered details about the collection and save them as self.data
+ """
+ self.data["name"] = self.ui.collection_name_line.text()
+ self.data["description"] = self.ui.description_browser.toPlainText().strip()
+ self.data["entries"] = self.__curr_entries
+
+ def set_collection_entry_list(self, entries: list):
+ """
+ Set the entries in the list
+ :param entries:
+ :return:
+ """
+ item_model = QStandardItemModel(self.ui.entry_list)
+
+ entries.sort(key=lambda x: x[1]["ranking"])
+
+ for entry, _ in entries:
+ item = QStandardItem(entry)
+ flags = Qt.ItemIsEnabled
+ item.setFlags(flags)
+
+ item.setData(Qt.Unchecked, Qt.CheckStateRole)
+ item.setCheckState(Qt.Checked) # can just be checked, otherwise not in the entry list
+
+ item_model.appendRow(item)
+
+ item_model.itemChanged.connect(self.on_collection_entry_changed)
+ self.ui.entry_list.setModel(item_model)
+
+ def exec_(self, collection_details: dict = None) -> dict:
+ if collection_details is not None:
+ self.ui.collection_name_line.setText(collection_details["name"])
+ self.ui.description_browser.setText(collection_details["description"])
+ self.__curr_entries = collection_details["entries"]
+ self.set_collection_entry_list([CollectionModDialog.create_entry_string(entry) for entry in
+ collection_details["entries"]])
+
+ if super(CollectionModDialog, self).exec_() == QtWidgets.QDialog.Rejected:
+ return None
+ self.collect_collection_details()
+
+ return self.data
+
+ # callback method
+ def on_add_art_clicked(self):
+ logging.info("Clicked add art for collection")
+ dialog = ImageSelectDialog(db_connection=self.__db, parent=self)
+ art_data = dialog.exec_()
+ logging.info(f"Received selected art: {art_data}")
+ if art_data is None: # nothing was selected
+ return
+ self.append_collection_entry(art_data)
+
+ def on_optimize_ranking_clicked(self):
+ logging.info("Clicked optimize ranking for collection")
+ # TODO use some optimization algo to change the ranking strings to be minimal in length, with max distance
+
+ def on_collection_entry_changed(self, item: QStandardItem):
+ logging.info(f"Removing entry {item.text()}")
+ entry_id = item.text().split(":")[0]
+ self.__curr_entries.remove(entry_id)
diff --git a/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.py b/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.py
new file mode 100644
index 0000000..c27c94b
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.py
@@ -0,0 +1,165 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/collection_modify_dialog/collection_modify_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(735, 492)
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.top_frame = QtWidgets.QFrame(Dialog)
+ self.top_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.top_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.top_frame.setObjectName("top_frame")
+ self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.top_frame)
+ self.horizontalLayout_4.setObjectName("horizontalLayout_4")
+ self.collection_name_label = QtWidgets.QLabel(self.top_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.collection_name_label.sizePolicy().hasHeightForWidth())
+ self.collection_name_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ font.setBold(True)
+ font.setWeight(75)
+ self.collection_name_label.setFont(font)
+ self.collection_name_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
+ self.collection_name_label.setObjectName("collection_name_label")
+ self.horizontalLayout_4.addWidget(self.collection_name_label)
+ self.collection_name_line = QtWidgets.QLineEdit(self.top_frame)
+ self.collection_name_line.setObjectName("collection_name_line")
+ self.horizontalLayout_4.addWidget(self.collection_name_line)
+ self.verticalLayout.addWidget(self.top_frame)
+ self.frame = QtWidgets.QFrame(Dialog)
+ self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.image_list_frame = QtWidgets.QFrame(self.frame)
+ self.image_list_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.image_list_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.image_list_frame.setObjectName("image_list_frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.image_list_frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.entry_label = QtWidgets.QLabel(self.image_list_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.entry_label.setFont(font)
+ self.entry_label.setObjectName("entry_label")
+ self.verticalLayout_2.addWidget(self.entry_label)
+ self.entry_list = QtWidgets.QListView(self.image_list_frame)
+ self.entry_list.setObjectName("entry_list")
+ self.verticalLayout_2.addWidget(self.entry_list)
+ self.button_frame = QtWidgets.QFrame(self.image_list_frame)
+ self.button_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.button_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.button_frame.setObjectName("button_frame")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.button_frame)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.add_image_button = QtWidgets.QPushButton(self.button_frame)
+ self.add_image_button.setObjectName("add_image_button")
+ self.horizontalLayout_2.addWidget(self.add_image_button)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem)
+ self.verticalLayout_2.addWidget(self.button_frame)
+ self.horizontalLayout.addWidget(self.image_list_frame)
+ self.ranking_list_frame = QtWidgets.QFrame(self.frame)
+ self.ranking_list_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.ranking_list_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.ranking_list_frame.setObjectName("ranking_list_frame")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.ranking_list_frame)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.label = QtWidgets.QLabel(self.ranking_list_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.label.setFont(font)
+ self.label.setObjectName("label")
+ self.verticalLayout_3.addWidget(self.label)
+ self.ranking_list_view = QtWidgets.QListView(self.ranking_list_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.ranking_list_view.sizePolicy().hasHeightForWidth())
+ self.ranking_list_view.setSizePolicy(sizePolicy)
+ self.ranking_list_view.setObjectName("ranking_list_view")
+ self.verticalLayout_3.addWidget(self.ranking_list_view)
+ self.button2_frame = QtWidgets.QFrame(self.ranking_list_frame)
+ self.button2_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.button2_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.button2_frame.setObjectName("button2_frame")
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.button2_frame)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.optimize_ranking_button = QtWidgets.QPushButton(self.button2_frame)
+ self.optimize_ranking_button.setObjectName("optimize_ranking_button")
+ self.horizontalLayout_3.addWidget(self.optimize_ranking_button)
+ spacerItem1 = QtWidgets.QSpacerItem(30, 20, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_3.addItem(spacerItem1)
+ self.verticalLayout_3.addWidget(self.button2_frame)
+ self.horizontalLayout.addWidget(self.ranking_list_frame)
+ self.description_frame = QtWidgets.QFrame(self.frame)
+ self.description_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.description_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.description_frame.setObjectName("description_frame")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.description_frame)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.description_label = QtWidgets.QLabel(self.description_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.description_label.sizePolicy().hasHeightForWidth())
+ self.description_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.description_label.setFont(font)
+ self.description_label.setObjectName("description_label")
+ self.verticalLayout_4.addWidget(self.description_label)
+ self.description_browser = QtWidgets.QTextBrowser(self.description_frame)
+ self.description_browser.setObjectName("description_browser")
+ self.verticalLayout_4.addWidget(self.description_browser)
+ self.horizontalLayout.addWidget(self.description_frame)
+ self.verticalLayout.addWidget(self.frame)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
+ self.collection_name_label.setText(_translate("Dialog", "Collection Name"))
+ self.entry_label.setText(_translate("Dialog", "Entries"))
+ self.add_image_button.setText(_translate("Dialog", "Add Art"))
+ self.label.setText(_translate("Dialog", "Ranking"))
+ self.optimize_ranking_button.setText(_translate("Dialog", "Optimize Ranking"))
+ self.description_label.setText(_translate("Dialog", "Description"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ Dialog = QtWidgets.QDialog()
+ ui = Ui_Dialog()
+ ui.setupUi(Dialog)
+ Dialog.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.ui b/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.ui
new file mode 100644
index 0000000..f7635da
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_modify_dialog/collection_modify_dialog.ui
@@ -0,0 +1,278 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 735
+ 492
+
+
+
+ Dialog
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 12
+ 75
+ true
+
+
+
+ Collection Name
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Entries
+
+
+
+ -
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Add Art
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Ranking
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Optimize Ranking
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Preferred
+
+
+
+ 30
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 75
+ true
+
+
+
+ Description
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ArtNet/gui/dialogs/collection_modify_dialog/presence_selection_dialog.py b/ArtNet/gui/dialogs/collection_modify_dialog/presence_selection_dialog.py
new file mode 100644
index 0000000..37495f2
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_modify_dialog/presence_selection_dialog.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/collection_view_dialog/presence_selection_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
diff --git a/ArtNet/gui/dialogs/collection_select_dialog/collection_sel_dialog.py b/ArtNet/gui/dialogs/collection_select_dialog/collection_sel_dialog.py
new file mode 100644
index 0000000..49f2a3c
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_select_dialog/collection_sel_dialog.py
@@ -0,0 +1,113 @@
+import logging
+
+from PyQt5 import QtWidgets
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QStandardItem, QStandardItemModel
+
+from ArtNet.gui.dialogs.collection_select_dialog.collection_select_dialog import Ui_Dialog
+
+from ArtNet.gui.dialogs.collection_modify_dialog.collection_dialog import CollectionModDialog
+
+
+class CollectionSelectDialog(QtWidgets.QDialog):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.parent = parent
+
+ self.__curr_searched_collections: list = None
+ self.curr_collections = list()
+
+ self.ui = Ui_Dialog()
+ self.ui.setupUi(self)
+
+ self.setWindowTitle("Select a Collection")
+
+ self.ui.collection_name_line.textChanged.connect(self.on_search_params_changed)
+ self.ui.presence_name_line.textChanged.connect(self.on_search_params_changed)
+ self.ui.presence_domain_line.textChanged.connect(self.on_search_params_changed)
+ self.ui.art_name_line.textChanged.connect(self.on_search_params_changed)
+
+ self.ui.create_collection_button.clicked.connect(self.on_create_collection_clicked)
+ self.ui.edit_collection_button.clicked.connect(self.on_edit_collection_clicked)
+ self.ui.delete_collection_button.clicked.connect(self.on_delete_collection_clicked)
+
+ def exec_(self, already_selected_collections: list) -> list:
+ self.curr_collections = already_selected_collections
+ self.on_search_params_changed()
+ if super(CollectionSelectDialog, self).exec_() == QtWidgets.QDialog.Rejected:
+ return None
+
+ logging.debug(f"Finished collection selection dialog! User chose collections: {self.curr_collections}")
+ return self.curr_collections
+
+ def set_collection_search_result(self, collections: list):
+ """
+ Set the collections in the list
+ :param collections:
+ :return:
+ """
+ item_model = QStandardItemModel(self.ui.collection_list)
+
+ self.__curr_searched_collections = list()
+ for collection in collections:
+ coll_id, coll_name, coll_desc, _, _, _, _ = collection
+ collection_string = f"#{coll_id}:{coll_name}"
+ self.__curr_searched_collections.append(collection)
+
+ item = QStandardItem(collection_string)
+ flags = Qt.ItemIsEnabled
+ flags |= Qt.ItemIsUserCheckable
+ item.setFlags(flags)
+
+ item.setData(Qt.Unchecked, Qt.CheckStateRole)
+ if self.curr_collections is not None and coll_id in [coll_id for coll_id, coll_name in self.curr_collections]:
+ item.setCheckState(Qt.Checked)
+
+ item_model.appendRow(item)
+
+ item_model.itemChanged.connect(self.on_collection_search_item_changed)
+ self.ui.collection_list.setModel(item_model)
+
+ # callback methods
+
+ def on_collection_search_item_changed(self, item: QStandardItem):
+ coll_id = int(item.text().split(":")[0].split("#")[1])
+ coll_name = item.text().split(":")[1]
+
+ if item.checkState() == Qt.Checked:
+ self.curr_collections.append((coll_id, coll_name))
+ else: # unchecked
+ self.curr_collections.remove((coll_id, coll_name))
+ self.set_collection_search_result(self.__curr_searched_collections) # unchecks previously checked collections
+
+ def on_search_params_changed(self):
+ coll_name = self.ui.collection_name_line.text()
+ pr_name = self.ui.presence_name_line.text()
+ pr_domain = self.ui.presence_domain_line.text()
+ art_title = self.ui.art_name_line.text()
+
+ result = self.parent.search_collections(collection_name=coll_name, presence_name=pr_name,
+ presence_domain=pr_domain,
+ art_name=art_title)
+
+ self.set_collection_search_result(result)
+
+ def on_create_collection_clicked(self):
+ logging.info("Clicked on create collection button!")
+ dialog = CollectionModDialog(self, edit_collection=True, db_connection=self.parent.main.db_connection)
+ collection_data = dialog.exec_()
+ if collection_data is None:
+ return
+
+ self.parent.create_collection(collection_data["name"],
+ collection_data["description"])
+ self.on_search_params_changed()
+
+ def on_edit_collection_clicked(self):
+ logging.info("Clicked on edit collection button!")
+ raise NotImplementedError # TODO
+
+ def on_delete_collection_clicked(self):
+ logging.info("Clicked on delete collection button!")
+ raise NotImplementedError # TODO
diff --git a/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.py b/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.py
new file mode 100644
index 0000000..379e97b
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.py
@@ -0,0 +1,168 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/collection_select_dialog/collection_select_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(570, 321)
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.frame = QtWidgets.QFrame(Dialog)
+ self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.frame)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.top_frame = QtWidgets.QFrame(self.frame)
+ self.top_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.top_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.top_frame.setObjectName("top_frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.top_frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.name_select_frame = QtWidgets.QFrame(self.top_frame)
+ self.name_select_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.name_select_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.name_select_frame.setObjectName("name_select_frame")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.name_select_frame)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.collection_name_label = QtWidgets.QLabel(self.name_select_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.collection_name_label.sizePolicy().hasHeightForWidth())
+ self.collection_name_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.collection_name_label.setFont(font)
+ self.collection_name_label.setObjectName("collection_name_label")
+ self.verticalLayout_3.addWidget(self.collection_name_label)
+ self.collection_name_line = QtWidgets.QLineEdit(self.name_select_frame)
+ self.collection_name_line.setObjectName("collection_name_line")
+ self.verticalLayout_3.addWidget(self.collection_name_line)
+ self.horizontalLayout.addWidget(self.name_select_frame)
+ self.presence_name_frame = QtWidgets.QFrame(self.top_frame)
+ self.presence_name_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.presence_name_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.presence_name_frame.setObjectName("presence_name_frame")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.presence_name_frame)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.presence_name_label = QtWidgets.QLabel(self.presence_name_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.presence_name_label.sizePolicy().hasHeightForWidth())
+ self.presence_name_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.presence_name_label.setFont(font)
+ self.presence_name_label.setObjectName("presence_name_label")
+ self.verticalLayout_4.addWidget(self.presence_name_label)
+ self.presence_name_line = QtWidgets.QLineEdit(self.presence_name_frame)
+ self.presence_name_line.setObjectName("presence_name_line")
+ self.verticalLayout_4.addWidget(self.presence_name_line)
+ self.horizontalLayout.addWidget(self.presence_name_frame)
+ self.presence_domain_frame = QtWidgets.QFrame(self.top_frame)
+ self.presence_domain_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.presence_domain_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.presence_domain_frame.setObjectName("presence_domain_frame")
+ self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.presence_domain_frame)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.presence_domain_label = QtWidgets.QLabel(self.presence_domain_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.presence_domain_label.sizePolicy().hasHeightForWidth())
+ self.presence_domain_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.presence_domain_label.setFont(font)
+ self.presence_domain_label.setObjectName("presence_domain_label")
+ self.verticalLayout_5.addWidget(self.presence_domain_label)
+ self.presence_domain_line = QtWidgets.QLineEdit(self.presence_domain_frame)
+ self.presence_domain_line.setObjectName("presence_domain_line")
+ self.verticalLayout_5.addWidget(self.presence_domain_line)
+ self.horizontalLayout.addWidget(self.presence_domain_frame)
+ self.art_frame = QtWidgets.QFrame(self.top_frame)
+ self.art_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.art_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.art_frame.setObjectName("art_frame")
+ self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.art_frame)
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.art_name_label = QtWidgets.QLabel(self.art_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.art_name_label.setFont(font)
+ self.art_name_label.setObjectName("art_name_label")
+ self.verticalLayout_6.addWidget(self.art_name_label)
+ self.art_name_line = QtWidgets.QLineEdit(self.art_frame)
+ self.art_name_line.setObjectName("art_name_line")
+ self.verticalLayout_6.addWidget(self.art_name_line)
+ self.horizontalLayout.addWidget(self.art_frame)
+ self.verticalLayout.addWidget(self.top_frame)
+ self.collection_list = QtWidgets.QListView(self.frame)
+ self.collection_list.setObjectName("collection_list")
+ self.verticalLayout.addWidget(self.collection_list)
+ self.verticalLayout_2.addWidget(self.frame)
+ self.button_frame = QtWidgets.QFrame(Dialog)
+ self.button_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.button_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.button_frame.setObjectName("button_frame")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.button_frame)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ spacerItem = QtWidgets.QSpacerItem(133, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem)
+ self.create_collection_button = QtWidgets.QPushButton(self.button_frame)
+ self.create_collection_button.setObjectName("create_collection_button")
+ self.horizontalLayout_2.addWidget(self.create_collection_button)
+ self.edit_collection_button = QtWidgets.QPushButton(self.button_frame)
+ self.edit_collection_button.setObjectName("edit_collection_button")
+ self.horizontalLayout_2.addWidget(self.edit_collection_button)
+ self.delete_collection_button = QtWidgets.QPushButton(self.button_frame)
+ self.delete_collection_button.setObjectName("delete_collection_button")
+ self.horizontalLayout_2.addWidget(self.delete_collection_button)
+ self.verticalLayout_2.addWidget(self.button_frame)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout_2.addWidget(self.buttonBox)
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
+ self.collection_name_label.setText(_translate("Dialog", "Collection Name"))
+ self.presence_name_label.setText(_translate("Dialog", "Presence Name"))
+ self.presence_domain_label.setText(_translate("Dialog", "Presence Domain"))
+ self.art_name_label.setText(_translate("Dialog", "Art Name"))
+ self.create_collection_button.setText(_translate("Dialog", "Create Collection"))
+ self.edit_collection_button.setText(_translate("Dialog", "Edit Collection"))
+ self.delete_collection_button.setText(_translate("Dialog", "Delete Collection"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ Dialog = QtWidgets.QDialog()
+ ui = Ui_Dialog()
+ ui.setupUi(Dialog)
+ Dialog.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.ui b/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.ui
new file mode 100644
index 0000000..599def0
--- /dev/null
+++ b/ArtNet/gui/dialogs/collection_select_dialog/collection_select_dialog.ui
@@ -0,0 +1,267 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 570
+ 321
+
+
+
+ Dialog
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 75
+ true
+
+
+
+ Collection Name
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 75
+ true
+
+
+
+ Presence Name
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 75
+ true
+
+
+
+ Presence Domain
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Art Name
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 133
+ 20
+
+
+
+
+ -
+
+
+ Create Collection
+
+
+
+ -
+
+
+ Edit Collection
+
+
+
+ -
+
+
+ Delete Collection
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.py b/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.py
new file mode 100644
index 0000000..a0fc889
--- /dev/null
+++ b/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.py
@@ -0,0 +1,166 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/image_info_dialog/image_info_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(679, 325)
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.main_frame = QtWidgets.QFrame(Dialog)
+ self.main_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.main_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.main_frame.setObjectName("main_frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.main_frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.left_frame = QtWidgets.QVBoxLayout()
+ self.left_frame.setObjectName("left_frame")
+ self.title_label = QtWidgets.QLabel(self.main_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.title_label.sizePolicy().hasHeightForWidth())
+ self.title_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.title_label.setFont(font)
+ self.title_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.title_label.setObjectName("title_label")
+ self.left_frame.addWidget(self.title_label)
+ self.presence_label = QtWidgets.QLabel(self.main_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.presence_label.sizePolicy().hasHeightForWidth())
+ self.presence_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.presence_label.setFont(font)
+ self.presence_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.presence_label.setObjectName("presence_label")
+ self.left_frame.addWidget(self.presence_label)
+ self.artist_label = QtWidgets.QLabel(self.main_frame)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.artist_label.setFont(font)
+ self.artist_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.artist_label.setObjectName("artist_label")
+ self.left_frame.addWidget(self.artist_label)
+ self.collections_label = QtWidgets.QLabel(self.main_frame)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.collections_label.setFont(font)
+ self.collections_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.collections_label.setObjectName("collections_label")
+ self.left_frame.addWidget(self.collections_label)
+ self.paths_label = QtWidgets.QLabel(self.main_frame)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.paths_label.setFont(font)
+ self.paths_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.paths_label.setObjectName("paths_label")
+ self.left_frame.addWidget(self.paths_label)
+ self.source_label = QtWidgets.QLabel(self.main_frame)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ font.setUnderline(True)
+ font.setWeight(75)
+ self.source_label.setFont(font)
+ self.source_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.source_label.setObjectName("source_label")
+ self.left_frame.addWidget(self.source_label)
+ self.horizontalLayout.addLayout(self.left_frame)
+ self.right_frame = QtWidgets.QVBoxLayout()
+ self.right_frame.setObjectName("right_frame")
+ self.title_text_label = QtWidgets.QLabel(self.main_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.title_text_label.sizePolicy().hasHeightForWidth())
+ self.title_text_label.setSizePolicy(sizePolicy)
+ self.title_text_label.setObjectName("title_text_label")
+ self.right_frame.addWidget(self.title_text_label)
+ self.presence_text_label = QtWidgets.QLabel(self.main_frame)
+ self.presence_text_label.setObjectName("presence_text_label")
+ self.right_frame.addWidget(self.presence_text_label)
+ self.artist_text_label = QtWidgets.QLabel(self.main_frame)
+ self.artist_text_label.setObjectName("artist_text_label")
+ self.right_frame.addWidget(self.artist_text_label)
+ self.collection_text_label = QtWidgets.QLabel(self.main_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.collection_text_label.sizePolicy().hasHeightForWidth())
+ self.collection_text_label.setSizePolicy(sizePolicy)
+ self.collection_text_label.setObjectName("collection_text_label")
+ self.right_frame.addWidget(self.collection_text_label)
+ self.path_text_label = QtWidgets.QLabel(self.main_frame)
+ self.path_text_label.setObjectName("path_text_label")
+ self.right_frame.addWidget(self.path_text_label)
+ self.source_text_label = QtWidgets.QLabel(self.main_frame)
+ self.source_text_label.setObjectName("source_text_label")
+ self.right_frame.addWidget(self.source_text_label)
+ self.horizontalLayout.addLayout(self.right_frame)
+ self.verticalLayout.addWidget(self.main_frame)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
+ self.title_label.setText(_translate("Dialog", "Image Title:"))
+ self.presence_label.setText(_translate("Dialog", "Presences:"))
+ self.artist_label.setText(_translate("Dialog", "Artists:"))
+ self.collections_label.setText(_translate("Dialog", "Collections:"))
+ self.paths_label.setText(_translate("Dialog", "Path:"))
+ self.source_label.setText(_translate("Dialog", "Source"))
+ self.title_text_label.setText(_translate("Dialog", "title_text"))
+ self.presence_text_label.setText(_translate("Dialog", "presence_text"))
+ self.artist_text_label.setText(_translate("Dialog", "artist_text"))
+ self.collection_text_label.setText(_translate("Dialog", "collection_text"))
+ self.path_text_label.setText(_translate("Dialog", "path_text"))
+ self.source_text_label.setText(_translate("Dialog", "source_text"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ Dialog = QtWidgets.QDialog()
+ ui = Ui_Dialog()
+ ui.setupUi(Dialog)
+ Dialog.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.ui b/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.ui
new file mode 100644
index 0000000..7481722
--- /dev/null
+++ b/ArtNet/gui/dialogs/image_info_dialog/image_info_dialog.ui
@@ -0,0 +1,258 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 679
+ 325
+
+
+
+ Dialog
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Image Title:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Presences:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Artists:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Collections:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Path:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 11
+ 75
+ true
+ true
+
+
+
+ Source
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ title_text
+
+
+
+ -
+
+
+ presence_text
+
+
+
+ -
+
+
+ artist_text
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ collection_text
+
+
+
+ -
+
+
+ path_text
+
+
+
+ -
+
+
+ source_text
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.py b/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.py
new file mode 100644
index 0000000..b90ada7
--- /dev/null
+++ b/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.py
@@ -0,0 +1,225 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/image_select_dialog/image_select_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(1326, 952)
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.frame = QtWidgets.QFrame(Dialog)
+ self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.display_frame = QtWidgets.QFrame(self.frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.display_frame.sizePolicy().hasHeightForWidth())
+ self.display_frame.setSizePolicy(sizePolicy)
+ self.display_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.display_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.display_frame.setObjectName("display_frame")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.display_frame)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.art_name_label = QtWidgets.QLabel(self.display_frame)
+ self.art_name_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.art_name_label.setObjectName("art_name_label")
+ self.verticalLayout_4.addWidget(self.art_name_label)
+ self.art_by_label = QtWidgets.QLabel(self.display_frame)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ self.art_by_label.setFont(font)
+ self.art_by_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.art_by_label.setObjectName("art_by_label")
+ self.verticalLayout_4.addWidget(self.art_by_label)
+ self.art_presence_label = QtWidgets.QLabel(self.display_frame)
+ self.art_presence_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.art_presence_label.setObjectName("art_presence_label")
+ self.verticalLayout_4.addWidget(self.art_presence_label)
+ self.art_frame = QtWidgets.QFrame(self.display_frame)
+ self.art_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.art_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.art_frame.setObjectName("art_frame")
+ self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.art_frame)
+ self.verticalLayout_8.setObjectName("verticalLayout_8")
+ self.art_placeholder_label = QtWidgets.QLabel(self.art_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.art_placeholder_label.sizePolicy().hasHeightForWidth())
+ self.art_placeholder_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.art_placeholder_label.setFont(font)
+ self.art_placeholder_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.art_placeholder_label.setObjectName("art_placeholder_label")
+ self.verticalLayout_8.addWidget(self.art_placeholder_label)
+ self.art_selection_list = QtWidgets.QListView(self.art_frame)
+ self.art_selection_list.setObjectName("art_selection_list")
+ self.verticalLayout_8.addWidget(self.art_selection_list)
+ self.verticalLayout_4.addWidget(self.art_frame)
+ self.horizontalLayout.addWidget(self.display_frame)
+ self.select_frame = QtWidgets.QFrame(self.frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.select_frame.sizePolicy().hasHeightForWidth())
+ self.select_frame.setSizePolicy(sizePolicy)
+ self.select_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.select_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.select_frame.setObjectName("select_frame")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.select_frame)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.select_tag_frame = QtWidgets.QFrame(self.select_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.select_tag_frame.sizePolicy().hasHeightForWidth())
+ self.select_tag_frame.setSizePolicy(sizePolicy)
+ self.select_tag_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.select_tag_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.select_tag_frame.setObjectName("select_tag_frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.select_tag_frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.search_tag_label = QtWidgets.QLabel(self.select_tag_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_tag_label.setFont(font)
+ self.search_tag_label.setObjectName("search_tag_label")
+ self.verticalLayout_2.addWidget(self.search_tag_label)
+ self.search_tag_line = QtWidgets.QLineEdit(self.select_tag_frame)
+ self.search_tag_line.setObjectName("search_tag_line")
+ self.verticalLayout_2.addWidget(self.search_tag_line)
+ self.search_tag_list = QtWidgets.QListView(self.select_tag_frame)
+ self.search_tag_list.setObjectName("search_tag_list")
+ self.verticalLayout_2.addWidget(self.search_tag_list)
+ self.selected_tag_label = QtWidgets.QLabel(self.select_tag_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.selected_tag_label.setFont(font)
+ self.selected_tag_label.setObjectName("selected_tag_label")
+ self.verticalLayout_2.addWidget(self.selected_tag_label)
+ self.selected_tag_list = QtWidgets.QListView(self.select_tag_frame)
+ self.selected_tag_list.setObjectName("selected_tag_list")
+ self.verticalLayout_2.addWidget(self.selected_tag_list)
+ self.verticalLayout_3.addWidget(self.select_tag_frame)
+ self.select_presence_frame = QtWidgets.QFrame(self.select_frame)
+ self.select_presence_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.select_presence_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.select_presence_frame.setObjectName("select_presence_frame")
+ self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.select_presence_frame)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.search_presence_label = QtWidgets.QLabel(self.select_presence_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_presence_label.setFont(font)
+ self.search_presence_label.setObjectName("search_presence_label")
+ self.verticalLayout_5.addWidget(self.search_presence_label)
+ self.search_presence_frame = QtWidgets.QFrame(self.select_presence_frame)
+ self.search_presence_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_presence_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_presence_frame.setObjectName("search_presence_frame")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.search_presence_frame)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.search_presence_name_frame = QtWidgets.QFrame(self.search_presence_frame)
+ self.search_presence_name_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_presence_name_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_presence_name_frame.setObjectName("search_presence_name_frame")
+ self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.search_presence_name_frame)
+ self.verticalLayout_7.setObjectName("verticalLayout_7")
+ self.search_presence_name_label = QtWidgets.QLabel(self.search_presence_name_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_presence_name_label.setFont(font)
+ self.search_presence_name_label.setObjectName("search_presence_name_label")
+ self.verticalLayout_7.addWidget(self.search_presence_name_label)
+ self.search_presence_name_line = QtWidgets.QLineEdit(self.search_presence_name_frame)
+ self.search_presence_name_line.setObjectName("search_presence_name_line")
+ self.verticalLayout_7.addWidget(self.search_presence_name_line)
+ self.horizontalLayout_2.addWidget(self.search_presence_name_frame)
+ self.search_presence_domain_frame = QtWidgets.QFrame(self.search_presence_frame)
+ self.search_presence_domain_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_presence_domain_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_presence_domain_frame.setObjectName("search_presence_domain_frame")
+ self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.search_presence_domain_frame)
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.search_presence_domain_label = QtWidgets.QLabel(self.search_presence_domain_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_presence_domain_label.setFont(font)
+ self.search_presence_domain_label.setObjectName("search_presence_domain_label")
+ self.verticalLayout_6.addWidget(self.search_presence_domain_label)
+ self.search_presence_domain_line = QtWidgets.QLineEdit(self.search_presence_domain_frame)
+ self.search_presence_domain_line.setObjectName("search_presence_domain_line")
+ self.verticalLayout_6.addWidget(self.search_presence_domain_line)
+ self.horizontalLayout_2.addWidget(self.search_presence_domain_frame)
+ self.verticalLayout_5.addWidget(self.search_presence_frame)
+ self.search_presence_list = QtWidgets.QListView(self.select_presence_frame)
+ self.search_presence_list.setObjectName("search_presence_list")
+ self.verticalLayout_5.addWidget(self.search_presence_list)
+ self.selected_presence_label = QtWidgets.QLabel(self.select_presence_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.selected_presence_label.setFont(font)
+ self.selected_presence_label.setObjectName("selected_presence_label")
+ self.verticalLayout_5.addWidget(self.selected_presence_label)
+ self.selected_presence_list = QtWidgets.QListView(self.select_presence_frame)
+ self.selected_presence_list.setObjectName("selected_presence_list")
+ self.verticalLayout_5.addWidget(self.selected_presence_list)
+ self.verticalLayout_3.addWidget(self.select_presence_frame)
+ self.horizontalLayout.addWidget(self.select_frame)
+ self.verticalLayout.addWidget(self.frame)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
+ self.art_name_label.setText(_translate("Dialog", "image_name"))
+ self.art_by_label.setText(_translate("Dialog", "by"))
+ self.art_presence_label.setText(_translate("Dialog", "presences"))
+ self.art_placeholder_label.setText(_translate("Dialog", "NO_ART"))
+ self.search_tag_label.setText(_translate("Dialog", "Search Tag"))
+ self.selected_tag_label.setText(_translate("Dialog", "Selected Tags"))
+ self.search_presence_label.setText(_translate("Dialog", "Search Presence"))
+ self.search_presence_name_label.setText(_translate("Dialog", "Name"))
+ self.search_presence_domain_label.setText(_translate("Dialog", "Domain"))
+ self.selected_presence_label.setText(_translate("Dialog", "Selected Presences"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ Dialog = QtWidgets.QDialog()
+ ui = Ui_Dialog()
+ ui.setupUi(Dialog)
+ Dialog.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.ui b/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.ui
new file mode 100644
index 0000000..4aa95dc
--- /dev/null
+++ b/ArtNet/gui/dialogs/image_select_dialog/image_select_dialog.ui
@@ -0,0 +1,349 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 1326
+ 952
+
+
+
+ Dialog
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ image_name
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 8
+
+
+
+ by
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ presences
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 75
+ true
+
+
+
+ NO_ART
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Search Tag
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Selected Tags
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Search Presence
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Name
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Domain
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Selected Presences
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.py b/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.py
new file mode 100644
index 0000000..3f93066
--- /dev/null
+++ b/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dialogs/link_input_dialog/link_input_dialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(396, 100)
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.input_frame = QtWidgets.QFrame(Dialog)
+ self.input_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.input_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.input_frame.setObjectName("input_frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.input_frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.link_label = QtWidgets.QLabel(self.input_frame)
+ self.link_label.setObjectName("link_label")
+ self.horizontalLayout.addWidget(self.link_label)
+ self.link_line = QtWidgets.QLineEdit(self.input_frame)
+ self.link_line.setObjectName("link_line")
+ self.horizontalLayout.addWidget(self.link_line)
+ self.verticalLayout.addWidget(self.input_frame)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
+ self.link_label.setText(_translate("Dialog", "Link:"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ Dialog = QtWidgets.QDialog()
+ ui = Ui_Dialog()
+ ui.setupUi(Dialog)
+ Dialog.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.ui b/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.ui
new file mode 100644
index 0000000..9025070
--- /dev/null
+++ b/ArtNet/gui/dialogs/link_input_dialog/link_input_dialog.ui
@@ -0,0 +1,86 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 396
+ 100
+
+
+
+ Dialog
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Link:
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ArtNet/gui/dockers/topic/artist_topic_docker.py b/ArtNet/gui/dockers/topic/artist_topic_docker.py
new file mode 100644
index 0000000..aae9943
--- /dev/null
+++ b/ArtNet/gui/dockers/topic/artist_topic_docker.py
@@ -0,0 +1,173 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dockers/topic/artist_topic_docker.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_artist_docker(object):
+ def setupUi(self, artist_docker):
+ artist_docker.setObjectName("artist_docker")
+ artist_docker.resize(369, 735)
+ self.verticalLayout = QtWidgets.QVBoxLayout(artist_docker)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.frame = QtWidgets.QFrame(artist_docker)
+ self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.docker_topic_label = QtWidgets.QLabel(self.frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.docker_topic_label.sizePolicy().hasHeightForWidth())
+ self.docker_topic_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ self.docker_topic_label.setFont(font)
+ self.docker_topic_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.docker_topic_label.setObjectName("docker_topic_label")
+ self.verticalLayout_2.addWidget(self.docker_topic_label)
+ self.search_artist_frame = QtWidgets.QFrame(self.frame)
+ self.search_artist_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_artist_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_artist_frame.setObjectName("search_artist_frame")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.search_artist_frame)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.search_artist_name_frame = QtWidgets.QFrame(self.search_artist_frame)
+ self.search_artist_name_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_artist_name_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_artist_name_frame.setObjectName("search_artist_name_frame")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.search_artist_name_frame)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.search_artist_name_label = QtWidgets.QLabel(self.search_artist_name_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_artist_name_label.setFont(font)
+ self.search_artist_name_label.setObjectName("search_artist_name_label")
+ self.verticalLayout_3.addWidget(self.search_artist_name_label)
+ self.search_artist_name_line = QtWidgets.QLineEdit(self.search_artist_name_frame)
+ self.search_artist_name_line.setObjectName("search_artist_name_line")
+ self.verticalLayout_3.addWidget(self.search_artist_name_line)
+ self.verticalLayout_4.addWidget(self.search_artist_name_frame)
+ self.search_artist_list = QtWidgets.QListView(self.search_artist_frame)
+ self.search_artist_list.setObjectName("search_artist_list")
+ self.verticalLayout_4.addWidget(self.search_artist_list)
+ self.selected_artist_label = QtWidgets.QLabel(self.search_artist_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.selected_artist_label.setFont(font)
+ self.selected_artist_label.setObjectName("selected_artist_label")
+ self.verticalLayout_4.addWidget(self.selected_artist_label)
+ self.selected_artist_frame = QtWidgets.QFrame(self.search_artist_frame)
+ self.selected_artist_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.selected_artist_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.selected_artist_frame.setObjectName("selected_artist_frame")
+ self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.selected_artist_frame)
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.selected_artist_box = QtWidgets.QCheckBox(self.selected_artist_frame)
+ self.selected_artist_box.setObjectName("selected_artist_box")
+ self.verticalLayout_6.addWidget(self.selected_artist_box)
+ self.selected_artist_topic_list = QtWidgets.QListView(self.selected_artist_frame)
+ self.selected_artist_topic_list.setObjectName("selected_artist_topic_list")
+ self.verticalLayout_6.addWidget(self.selected_artist_topic_list)
+ self.verticalLayout_4.addWidget(self.selected_artist_frame)
+ self.verticalLayout_2.addWidget(self.search_artist_frame)
+ self.search_topic_frame = QtWidgets.QFrame(self.frame)
+ self.search_topic_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_topic_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_topic_frame.setObjectName("search_topic_frame")
+ self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.search_topic_frame)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.topic_label = QtWidgets.QLabel(self.search_topic_frame)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ self.topic_label.setFont(font)
+ self.topic_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.topic_label.setObjectName("topic_label")
+ self.verticalLayout_5.addWidget(self.topic_label)
+ self.search_topic_name_frame = QtWidgets.QFrame(self.search_topic_frame)
+ self.search_topic_name_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_topic_name_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_topic_name_frame.setObjectName("search_topic_name_frame")
+ self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.search_topic_name_frame)
+ self.verticalLayout_7.setObjectName("verticalLayout_7")
+ self.search_topic_name_label = QtWidgets.QLabel(self.search_topic_name_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_topic_name_label.setFont(font)
+ self.search_topic_name_label.setObjectName("search_topic_name_label")
+ self.verticalLayout_7.addWidget(self.search_topic_name_label)
+ self.search_topic_name_line = QtWidgets.QLineEdit(self.search_topic_name_frame)
+ self.search_topic_name_line.setObjectName("search_topic_name_line")
+ self.verticalLayout_7.addWidget(self.search_topic_name_line)
+ self.verticalLayout_5.addWidget(self.search_topic_name_frame)
+ self.selected_topic_label = QtWidgets.QLabel(self.search_topic_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.selected_topic_label.setFont(font)
+ self.selected_topic_label.setObjectName("selected_topic_label")
+ self.verticalLayout_5.addWidget(self.selected_topic_label)
+ self.selected_topic_list = QtWidgets.QListView(self.search_topic_frame)
+ self.selected_topic_list.setObjectName("selected_topic_list")
+ self.verticalLayout_5.addWidget(self.selected_topic_list)
+ self.topic_button_frame = QtWidgets.QFrame(self.search_topic_frame)
+ self.topic_button_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.topic_button_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.topic_button_frame.setObjectName("topic_button_frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.topic_button_frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.create_topic_button = QtWidgets.QPushButton(self.topic_button_frame)
+ self.create_topic_button.setObjectName("create_topic_button")
+ self.horizontalLayout.addWidget(self.create_topic_button)
+ self.edit_topic_button = QtWidgets.QPushButton(self.topic_button_frame)
+ self.edit_topic_button.setObjectName("edit_topic_button")
+ self.horizontalLayout.addWidget(self.edit_topic_button)
+ self.delete_topic_button = QtWidgets.QPushButton(self.topic_button_frame)
+ self.delete_topic_button.setObjectName("delete_topic_button")
+ self.horizontalLayout.addWidget(self.delete_topic_button)
+ self.verticalLayout_5.addWidget(self.topic_button_frame)
+ self.verticalLayout_2.addWidget(self.search_topic_frame)
+ self.verticalLayout.addWidget(self.frame)
+
+ self.retranslateUi(artist_docker)
+ QtCore.QMetaObject.connectSlotsByName(artist_docker)
+
+ def retranslateUi(self, artist_docker):
+ _translate = QtCore.QCoreApplication.translate
+ artist_docker.setWindowTitle(_translate("artist_docker", "Form"))
+ self.docker_topic_label.setText(_translate("artist_docker", "Artist"))
+ self.search_artist_name_label.setText(_translate("artist_docker", "Name:"))
+ self.selected_artist_label.setText(_translate("artist_docker", "Selected Artist:"))
+ self.selected_artist_box.setText(_translate("artist_docker", "artist_name #ID"))
+ self.topic_label.setText(_translate("artist_docker", "Topic"))
+ self.search_topic_name_label.setText(_translate("artist_docker", "Name:"))
+ self.selected_topic_label.setText(_translate("artist_docker", "Selected Topics:"))
+ self.create_topic_button.setText(_translate("artist_docker", "Create Topic"))
+ self.edit_topic_button.setText(_translate("artist_docker", "Edit Topic"))
+ self.delete_topic_button.setText(_translate("artist_docker", "Delete Topic"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ artist_docker = QtWidgets.QWidget()
+ ui = Ui_artist_docker()
+ ui.setupUi(artist_docker)
+ artist_docker.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/dockers/topic/artist_topic_docker.ui b/ArtNet/gui/dockers/topic/artist_topic_docker.ui
new file mode 100644
index 0000000..7eb11ad
--- /dev/null
+++ b/ArtNet/gui/dockers/topic/artist_topic_docker.ui
@@ -0,0 +1,240 @@
+
+
+ artist_docker
+
+
+
+ 0
+ 0
+ 369
+ 735
+
+
+
+ Form
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 13
+ 75
+ true
+
+
+
+ Artist
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Name:
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Selected Artist:
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ artist_name #ID
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 13
+ 75
+ true
+
+
+
+ Topic
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Name:
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Selected Topics:
+
+
+
+ -
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Create Topic
+
+
+
+ -
+
+
+ Edit Topic
+
+
+
+ -
+
+
+ Delete Topic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ArtNet/gui/windows/browser/picture_browser.py b/ArtNet/gui/windows/browser/picture_browser.py
new file mode 100644
index 0000000..bbe7932
--- /dev/null
+++ b/ArtNet/gui/windows/browser/picture_browser.py
@@ -0,0 +1,257 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'windows/browser/picture_browser.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(1176, 610)
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.top_frame = QtWidgets.QFrame(self.centralwidget)
+ self.top_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.top_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.top_frame.setObjectName("top_frame")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.top_frame)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.browse_frame = QtWidgets.QFrame(self.top_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.browse_frame.sizePolicy().hasHeightForWidth())
+ self.browse_frame.setSizePolicy(sizePolicy)
+ self.browse_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.browse_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.browse_frame.setObjectName("browse_frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.browse_frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.image_headbar_frame = QtWidgets.QFrame(self.browse_frame)
+ self.image_headbar_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.image_headbar_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.image_headbar_frame.setObjectName("image_headbar_frame")
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.image_headbar_frame)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.image_title_label = QtWidgets.QLabel(self.image_headbar_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.image_title_label.sizePolicy().hasHeightForWidth())
+ self.image_title_label.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(10)
+ font.setBold(True)
+ font.setWeight(75)
+ self.image_title_label.setFont(font)
+ self.image_title_label.setLayoutDirection(QtCore.Qt.LeftToRight)
+ self.image_title_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.image_title_label.setObjectName("image_title_label")
+ self.horizontalLayout_3.addWidget(self.image_title_label)
+ self.image_number_spinbox = QtWidgets.QSpinBox(self.image_headbar_frame)
+ self.image_number_spinbox.setObjectName("image_number_spinbox")
+ self.horizontalLayout_3.addWidget(self.image_number_spinbox)
+ self.image_info_button = QtWidgets.QToolButton(self.image_headbar_frame)
+ self.image_info_button.setObjectName("image_info_button")
+ self.horizontalLayout_3.addWidget(self.image_info_button)
+ self.verticalLayout_2.addWidget(self.image_headbar_frame)
+ self.graphics_view = QtWidgets.QGraphicsView(self.browse_frame)
+ self.graphics_view.setMinimumSize(QtCore.QSize(800, 0))
+ self.graphics_view.setObjectName("graphics_view")
+ self.verticalLayout_2.addWidget(self.graphics_view)
+ self.toggle_detail_frame_button = QtWidgets.QToolButton(self.browse_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.toggle_detail_frame_button.sizePolicy().hasHeightForWidth())
+ self.toggle_detail_frame_button.setSizePolicy(sizePolicy)
+ self.toggle_detail_frame_button.setArrowType(QtCore.Qt.DownArrow)
+ self.toggle_detail_frame_button.setObjectName("toggle_detail_frame_button")
+ self.verticalLayout_2.addWidget(self.toggle_detail_frame_button)
+ self.horizontalLayout.addWidget(self.browse_frame)
+ self.right_frame = QtWidgets.QFrame(self.top_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.right_frame.sizePolicy().hasHeightForWidth())
+ self.right_frame.setSizePolicy(sizePolicy)
+ self.right_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.right_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.right_frame.setObjectName("right_frame")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.right_frame)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.toggle_search_frame_button = QtWidgets.QToolButton(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.toggle_search_frame_button.sizePolicy().hasHeightForWidth())
+ self.toggle_search_frame_button.setSizePolicy(sizePolicy)
+ self.toggle_search_frame_button.setArrowType(QtCore.Qt.LeftArrow)
+ self.toggle_search_frame_button.setObjectName("toggle_search_frame_button")
+ self.horizontalLayout_2.addWidget(self.toggle_search_frame_button)
+ self.search_param_frame = QtWidgets.QFrame(self.right_frame)
+ self.search_param_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.search_param_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.search_param_frame.setObjectName("search_param_frame")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.search_param_frame)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.tag_search_label = QtWidgets.QLabel(self.search_param_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.tag_search_label.setFont(font)
+ self.tag_search_label.setObjectName("tag_search_label")
+ self.verticalLayout.addWidget(self.tag_search_label)
+ self.tag_search_bar = QtWidgets.QLineEdit(self.search_param_frame)
+ self.tag_search_bar.setObjectName("tag_search_bar")
+ self.verticalLayout.addWidget(self.tag_search_bar)
+ self.result_tags_label = QtWidgets.QLabel(self.search_param_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.result_tags_label.setFont(font)
+ self.result_tags_label.setObjectName("result_tags_label")
+ self.verticalLayout.addWidget(self.result_tags_label)
+ self.result_tags_listview = QtWidgets.QListView(self.search_param_frame)
+ self.result_tags_listview.setObjectName("result_tags_listview")
+ self.verticalLayout.addWidget(self.result_tags_listview)
+ self.button_frame = QtWidgets.QFrame(self.search_param_frame)
+ self.button_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.button_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.button_frame.setObjectName("button_frame")
+ self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.button_frame)
+ self.horizontalLayout_4.setObjectName("horizontalLayout_4")
+ self.open_location_button = QtWidgets.QPushButton(self.button_frame)
+ self.open_location_button.setObjectName("open_location_button")
+ self.horizontalLayout_4.addWidget(self.open_location_button)
+ self.delete_art_button = QtWidgets.QPushButton(self.button_frame)
+ self.delete_art_button.setObjectName("delete_art_button")
+ self.horizontalLayout_4.addWidget(self.delete_art_button)
+ self.verticalLayout.addWidget(self.button_frame)
+ self.horizontalLayout_2.addWidget(self.search_param_frame)
+ self.horizontalLayout.addWidget(self.right_frame)
+ self.verticalLayout_3.addWidget(self.top_frame)
+ self.bottom_frame = QtWidgets.QFrame(self.centralwidget)
+ self.bottom_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.bottom_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.bottom_frame.setObjectName("bottom_frame")
+ self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.bottom_frame)
+ self.horizontalLayout_5.setObjectName("horizontalLayout_5")
+ self.description_frame = QtWidgets.QFrame(self.bottom_frame)
+ self.description_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.description_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.description_frame.setObjectName("description_frame")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.description_frame)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.label_4 = QtWidgets.QLabel(self.description_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.label_4.setFont(font)
+ self.label_4.setObjectName("label_4")
+ self.verticalLayout_4.addWidget(self.label_4)
+ self.description_edit = QtWidgets.QTextEdit(self.description_frame)
+ self.description_edit.setObjectName("description_edit")
+ self.verticalLayout_4.addWidget(self.description_edit)
+ self.horizontalLayout_5.addWidget(self.description_frame)
+ self.collection_frame = QtWidgets.QFrame(self.bottom_frame)
+ self.collection_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.collection_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.collection_frame.setObjectName("collection_frame")
+ self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.collection_frame)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.collections_label = QtWidgets.QLabel(self.collection_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setUnderline(False)
+ font.setWeight(75)
+ self.collections_label.setFont(font)
+ self.collections_label.setObjectName("collections_label")
+ self.verticalLayout_5.addWidget(self.collections_label)
+ self.collections_list = QtWidgets.QListView(self.collection_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.collections_list.sizePolicy().hasHeightForWidth())
+ self.collections_list.setSizePolicy(sizePolicy)
+ self.collections_list.setObjectName("collections_list")
+ self.verticalLayout_5.addWidget(self.collections_list)
+ self.horizontalLayout_5.addWidget(self.collection_frame)
+ self.verticalLayout_3.addWidget(self.bottom_frame)
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1176, 34))
+ self.menubar.setObjectName("menubar")
+ self.menuArtNet = QtWidgets.QMenu(self.menubar)
+ self.menuArtNet.setObjectName("menuArtNet")
+ self.menuOther_Apps = QtWidgets.QMenu(self.menuArtNet)
+ self.menuOther_Apps.setObjectName("menuOther_Apps")
+ self.menuCollection = QtWidgets.QMenu(self.menubar)
+ self.menuCollection.setObjectName("menuCollection")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusbar = QtWidgets.QStatusBar(MainWindow)
+ self.statusbar.setObjectName("statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+ self.actionArtNet_Importer = QtWidgets.QAction(MainWindow)
+ self.actionArtNet_Importer.setObjectName("actionArtNet_Importer")
+ self.actionChange_DB_Connection = QtWidgets.QAction(MainWindow)
+ self.actionChange_DB_Connection.setObjectName("actionChange_DB_Connection")
+ self.actionChange_ArtNet_root = QtWidgets.QAction(MainWindow)
+ self.actionChange_ArtNet_root.setObjectName("actionChange_ArtNet_root")
+ self.actionSearch_Collection = QtWidgets.QAction(MainWindow)
+ self.actionSearch_Collection.setObjectName("actionSearch_Collection")
+ self.actionEdit_Collection = QtWidgets.QAction(MainWindow)
+ self.actionEdit_Collection.setObjectName("actionEdit_Collection")
+ self.menuOther_Apps.addAction(self.actionArtNet_Importer)
+ self.menuArtNet.addAction(self.actionChange_DB_Connection)
+ self.menuArtNet.addAction(self.actionChange_ArtNet_root)
+ self.menuArtNet.addSeparator()
+ self.menuArtNet.addAction(self.menuOther_Apps.menuAction())
+ self.menuCollection.addAction(self.actionSearch_Collection)
+ self.menuCollection.addAction(self.actionEdit_Collection)
+ self.menubar.addAction(self.menuArtNet.menuAction())
+ self.menubar.addAction(self.menuCollection.menuAction())
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.image_title_label.setText(_translate("MainWindow", "Image_Title"))
+ self.image_info_button.setText(_translate("MainWindow", "?"))
+ self.toggle_detail_frame_button.setText(_translate("MainWindow", "v"))
+ self.toggle_search_frame_button.setText(_translate("MainWindow", "<"))
+ self.tag_search_label.setText(_translate("MainWindow", "Search"))
+ self.result_tags_label.setText(_translate("MainWindow", "Result Stats"))
+ self.open_location_button.setText(_translate("MainWindow", "Open Location"))
+ self.delete_art_button.setText(_translate("MainWindow", "Delete"))
+ self.label_4.setText(_translate("MainWindow", "Description"))
+ self.collections_label.setText(_translate("MainWindow", "Collections"))
+ self.menuArtNet.setTitle(_translate("MainWindow", "ArtNet"))
+ self.menuOther_Apps.setTitle(_translate("MainWindow", "Other Apps"))
+ self.menuCollection.setTitle(_translate("MainWindow", "Collection"))
+ self.actionArtNet_Importer.setText(_translate("MainWindow", "ArtNet Importer"))
+ self.actionChange_DB_Connection.setText(_translate("MainWindow", "Change DB Connection"))
+ self.actionChange_ArtNet_root.setText(_translate("MainWindow", "Change ArtNet Root"))
+ self.actionSearch_Collection.setText(_translate("MainWindow", "Search Collection"))
+ self.actionEdit_Collection.setText(_translate("MainWindow", "Edit Collection"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ MainWindow = QtWidgets.QMainWindow()
+ ui = Ui_MainWindow()
+ ui.setupUi(MainWindow)
+ MainWindow.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/windows/browser/picture_browser.ui b/ArtNet/gui/windows/browser/picture_browser.ui
new file mode 100644
index 0000000..b50e673
--- /dev/null
+++ b/ArtNet/gui/windows/browser/picture_browser.ui
@@ -0,0 +1,367 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 1176
+ 610
+
+
+
+ MainWindow
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 10
+ 75
+ true
+
+
+
+ Qt::LeftToRight
+
+
+ Image_Title
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ -
+
+
+ ?
+
+
+
+
+
+
+ -
+
+
+
+ 800
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ v
+
+
+ Qt::DownArrow
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <
+
+
+ Qt::LeftArrow
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Search
+
+
+
+ -
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Result Stats
+
+
+
+ -
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Open Location
+
+
+
+ -
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Description
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 75
+ true
+ false
+
+
+
+ Collections
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ArtNet Importer
+
+
+
+
+ Change DB Connection
+
+
+
+
+ Change ArtNet Root
+
+
+
+
+ Search Collection
+
+
+
+
+ Edit Collection
+
+
+
+
+
+
diff --git a/ArtNet/gui/windows/importer/picture_importer.py b/ArtNet/gui/windows/importer/picture_importer.py
new file mode 100644
index 0000000..4a51c19
--- /dev/null
+++ b/ArtNet/gui/windows/importer/picture_importer.py
@@ -0,0 +1,401 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'windows/importer/picture_importer.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.6
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(1367, 888)
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setEnabled(True)
+ self.centralwidget.setObjectName("centralwidget")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
+ self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.left_frame = QtWidgets.QFrame(self.centralwidget)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.left_frame.sizePolicy().hasHeightForWidth())
+ self.left_frame.setSizePolicy(sizePolicy)
+ self.left_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.left_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.left_frame.setObjectName("left_frame")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.left_frame)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.presence_docker_button = QtWidgets.QToolButton(self.left_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.presence_docker_button.sizePolicy().hasHeightForWidth())
+ self.presence_docker_button.setSizePolicy(sizePolicy)
+ self.presence_docker_button.setArrowType(QtCore.Qt.LeftArrow)
+ self.presence_docker_button.setObjectName("presence_docker_button")
+ self.horizontalLayout_2.addWidget(self.presence_docker_button)
+ self.presence_docker_layout = QtWidgets.QVBoxLayout()
+ self.presence_docker_layout.setObjectName("presence_docker_layout")
+ self.horizontalLayout_2.addLayout(self.presence_docker_layout)
+ self.left_layout = QtWidgets.QVBoxLayout()
+ self.left_layout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
+ self.left_layout.setObjectName("left_layout")
+ self.prev_image_button = QtWidgets.QToolButton(self.left_frame)
+ self.prev_image_button.setArrowType(QtCore.Qt.LeftArrow)
+ self.prev_image_button.setObjectName("prev_image_button")
+ self.left_layout.addWidget(self.prev_image_button)
+ self.horizontalLayout_2.addLayout(self.left_layout)
+ self.center_frame = QtWidgets.QFrame(self.left_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.center_frame.sizePolicy().hasHeightForWidth())
+ self.center_frame.setSizePolicy(sizePolicy)
+ self.center_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.center_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.center_frame.setObjectName("center_frame")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.center_frame)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.art_header_frame = QtWidgets.QFrame(self.center_frame)
+ self.art_header_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.art_header_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.art_header_frame.setObjectName("art_header_frame")
+ self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.art_header_frame)
+ self.horizontalLayout_4.setObjectName("horizontalLayout_4")
+ self.image_title_line = QtWidgets.QLineEdit(self.art_header_frame)
+ font = QtGui.QFont()
+ font.setPointSize(10)
+ font.setBold(True)
+ font.setWeight(75)
+ self.image_title_line.setFont(font)
+ self.image_title_line.setAutoFillBackground(False)
+ self.image_title_line.setAlignment(QtCore.Qt.AlignCenter)
+ self.image_title_line.setReadOnly(False)
+ self.image_title_line.setObjectName("image_title_line")
+ self.horizontalLayout_4.addWidget(self.image_title_line)
+ self.imageNumberSpinBox = QtWidgets.QSpinBox(self.art_header_frame)
+ self.imageNumberSpinBox.setObjectName("imageNumberSpinBox")
+ self.horizontalLayout_4.addWidget(self.imageNumberSpinBox)
+ self.verticalLayout.addWidget(self.art_header_frame)
+ self.image_file_label = QtWidgets.QLabel(self.center_frame)
+ self.image_file_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.image_file_label.setObjectName("image_file_label")
+ self.verticalLayout.addWidget(self.image_file_label)
+ self.author_by = QtWidgets.QLabel(self.center_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.author_by.sizePolicy().hasHeightForWidth())
+ self.author_by.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(7)
+ font.setBold(False)
+ font.setWeight(50)
+ self.author_by.setFont(font)
+ self.author_by.setAlignment(QtCore.Qt.AlignCenter)
+ self.author_by.setObjectName("author_by")
+ self.verticalLayout.addWidget(self.author_by)
+ self.image_author_label = QtWidgets.QLabel(self.center_frame)
+ font = QtGui.QFont()
+ font.setPointSize(10)
+ font.setBold(False)
+ font.setItalic(False)
+ font.setWeight(50)
+ self.image_author_label.setFont(font)
+ self.image_author_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.image_author_label.setObjectName("image_author_label")
+ self.verticalLayout.addWidget(self.image_author_label)
+ self.image_frame = QtWidgets.QFrame(self.center_frame)
+ self.image_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.image_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.image_frame.setObjectName("image_frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.image_frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.image_label = QtWidgets.QLabel(self.image_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.image_label.sizePolicy().hasHeightForWidth())
+ self.image_label.setSizePolicy(sizePolicy)
+ self.image_label.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.image_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.image_label.setObjectName("image_label")
+ self.verticalLayout_2.addWidget(self.image_label)
+ self.verticalLayout.addWidget(self.image_frame)
+ self.link_frame = QtWidgets.QFrame(self.center_frame)
+ self.link_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.link_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.link_frame.setObjectName("link_frame")
+ self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.link_frame)
+ self.horizontalLayout_5.setObjectName("horizontalLayout_5")
+ self.link_label = QtWidgets.QLabel(self.link_frame)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(True)
+ font.setWeight(75)
+ self.link_label.setFont(font)
+ self.link_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.link_label.setObjectName("link_label")
+ self.horizontalLayout_5.addWidget(self.link_label)
+ self.link_button = QtWidgets.QToolButton(self.link_frame)
+ self.link_button.setObjectName("link_button")
+ self.horizontalLayout_5.addWidget(self.link_button)
+ self.verticalLayout.addWidget(self.link_frame)
+ self.collection_frame = QtWidgets.QFrame(self.center_frame)
+ self.collection_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.collection_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.collection_frame.setObjectName("collection_frame")
+ self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.collection_frame)
+ self.horizontalLayout_6.setObjectName("horizontalLayout_6")
+ self.collections_label = QtWidgets.QLabel(self.collection_frame)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(True)
+ font.setWeight(75)
+ self.collections_label.setFont(font)
+ self.collections_label.setAlignment(QtCore.Qt.AlignCenter)
+ self.collections_label.setObjectName("collections_label")
+ self.horizontalLayout_6.addWidget(self.collections_label)
+ self.collections_button = QtWidgets.QToolButton(self.collection_frame)
+ self.collections_button.setObjectName("collections_button")
+ self.horizontalLayout_6.addWidget(self.collections_button)
+ self.verticalLayout.addWidget(self.collection_frame)
+ self.description_label = QtWidgets.QLabel(self.center_frame)
+ self.description_label.setObjectName("description_label")
+ self.verticalLayout.addWidget(self.description_label)
+ self.description_edit = QtWidgets.QTextEdit(self.center_frame)
+ self.description_edit.setObjectName("description_edit")
+ self.verticalLayout.addWidget(self.description_edit)
+ self.horizontalLayout_2.addWidget(self.center_frame)
+ self.right_layout = QtWidgets.QVBoxLayout()
+ self.right_layout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
+ self.right_layout.setObjectName("right_layout")
+ self.next_image_button = QtWidgets.QToolButton(self.left_frame)
+ self.next_image_button.setArrowType(QtCore.Qt.RightArrow)
+ self.next_image_button.setObjectName("next_image_button")
+ self.right_layout.addWidget(self.next_image_button)
+ self.horizontalLayout_2.addLayout(self.right_layout)
+ self.horizontalLayout.addWidget(self.left_frame)
+ self.right_frame = QtWidgets.QFrame(self.centralwidget)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.right_frame.sizePolicy().hasHeightForWidth())
+ self.right_frame.setSizePolicy(sizePolicy)
+ self.right_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.right_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.right_frame.setObjectName("right_frame")
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.right_frame)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.tag_layout = QtWidgets.QVBoxLayout()
+ self.tag_layout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
+ self.tag_layout.setObjectName("tag_layout")
+ self.search_tags_label = QtWidgets.QLabel(self.right_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.search_tags_label.setFont(font)
+ self.search_tags_label.setObjectName("search_tags_label")
+ self.tag_layout.addWidget(self.search_tags_label)
+ self.tag_list_layout = QtWidgets.QVBoxLayout()
+ self.tag_list_layout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
+ self.tag_list_layout.setObjectName("tag_list_layout")
+ self.tag_search_bar = QtWidgets.QLineEdit(self.right_frame)
+ self.tag_search_bar.setMaximumSize(QtCore.QSize(400, 16777215))
+ self.tag_search_bar.setObjectName("tag_search_bar")
+ self.tag_list_layout.addWidget(self.tag_search_bar)
+ self.search_result_list = QtWidgets.QListView(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.search_result_list.sizePolicy().hasHeightForWidth())
+ self.search_result_list.setSizePolicy(sizePolicy)
+ self.search_result_list.setMinimumSize(QtCore.QSize(0, 0))
+ self.search_result_list.setMaximumSize(QtCore.QSize(400, 16777215))
+ self.search_result_list.setObjectName("search_result_list")
+ self.tag_list_layout.addWidget(self.search_result_list)
+ self.selected_tags_label = QtWidgets.QLabel(self.right_frame)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.selected_tags_label.setFont(font)
+ self.selected_tags_label.setObjectName("selected_tags_label")
+ self.tag_list_layout.addWidget(self.selected_tags_label)
+ self.tag_list = QtWidgets.QListView(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.tag_list.sizePolicy().hasHeightForWidth())
+ self.tag_list.setSizePolicy(sizePolicy)
+ self.tag_list.setMinimumSize(QtCore.QSize(100, 0))
+ self.tag_list.setMaximumSize(QtCore.QSize(400, 16777215))
+ self.tag_list.setObjectName("tag_list")
+ self.tag_list_layout.addWidget(self.tag_list)
+ self.implied_tags_list = QtWidgets.QLabel(self.right_frame)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(True)
+ font.setWeight(75)
+ self.implied_tags_list.setFont(font)
+ self.implied_tags_list.setObjectName("implied_tags_list")
+ self.tag_list_layout.addWidget(self.implied_tags_list)
+ self.implied_tag_list = QtWidgets.QListView(self.right_frame)
+ self.implied_tag_list.setMinimumSize(QtCore.QSize(100, 0))
+ self.implied_tag_list.setMaximumSize(QtCore.QSize(400, 16777215))
+ self.implied_tag_list.setObjectName("implied_tag_list")
+ self.tag_list_layout.addWidget(self.implied_tag_list)
+ self.tag_layout.addLayout(self.tag_list_layout)
+ self.tag_button_layout = QtWidgets.QHBoxLayout()
+ self.tag_button_layout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
+ self.tag_button_layout.setSpacing(5)
+ self.tag_button_layout.setObjectName("tag_button_layout")
+ self.save_button = QtWidgets.QPushButton(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.save_button.sizePolicy().hasHeightForWidth())
+ self.save_button.setSizePolicy(sizePolicy)
+ self.save_button.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.save_button.setObjectName("save_button")
+ self.tag_button_layout.addWidget(self.save_button)
+ self.import_button = QtWidgets.QPushButton(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.import_button.sizePolicy().hasHeightForWidth())
+ self.import_button.setSizePolicy(sizePolicy)
+ self.import_button.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.import_button.setObjectName("import_button")
+ self.tag_button_layout.addWidget(self.import_button)
+ self.prev_unknown_image_button = QtWidgets.QPushButton(self.right_frame)
+ self.prev_unknown_image_button.setObjectName("prev_unknown_image_button")
+ self.tag_button_layout.addWidget(self.prev_unknown_image_button)
+ self.next_unknown_image_button = QtWidgets.QPushButton(self.right_frame)
+ self.next_unknown_image_button.setObjectName("next_unknown_image_button")
+ self.tag_button_layout.addWidget(self.next_unknown_image_button)
+ self.delete_button = QtWidgets.QPushButton(self.right_frame)
+ self.delete_button.setObjectName("delete_button")
+ self.tag_button_layout.addWidget(self.delete_button)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.tag_button_layout.addItem(spacerItem)
+ self.tag_layout.addLayout(self.tag_button_layout)
+ self.horizontalLayout_3.addLayout(self.tag_layout)
+ self.topic_docker_button = QtWidgets.QToolButton(self.right_frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.topic_docker_button.sizePolicy().hasHeightForWidth())
+ self.topic_docker_button.setSizePolicy(sizePolicy)
+ self.topic_docker_button.setArrowType(QtCore.Qt.RightArrow)
+ self.topic_docker_button.setObjectName("topic_docker_button")
+ self.horizontalLayout_3.addWidget(self.topic_docker_button)
+ self.horizontalLayout.addWidget(self.right_frame)
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.statusbar = QtWidgets.QStatusBar(MainWindow)
+ self.statusbar.setObjectName("statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+ self.menuBar = QtWidgets.QMenuBar(MainWindow)
+ self.menuBar.setGeometry(QtCore.QRect(0, 0, 1367, 34))
+ self.menuBar.setObjectName("menuBar")
+ self.menuArtNet = QtWidgets.QMenu(self.menuBar)
+ self.menuArtNet.setObjectName("menuArtNet")
+ self.menuOther_Apps = QtWidgets.QMenu(self.menuArtNet)
+ self.menuOther_Apps.setObjectName("menuOther_Apps")
+ self.menuTags = QtWidgets.QMenu(self.menuBar)
+ self.menuTags.setObjectName("menuTags")
+ self.menuCategory = QtWidgets.QMenu(self.menuBar)
+ self.menuCategory.setObjectName("menuCategory")
+ MainWindow.setMenuBar(self.menuBar)
+ self.actionChange_Connection_Details = QtWidgets.QAction(MainWindow)
+ self.actionChange_Connection_Details.setObjectName("actionChange_Connection_Details")
+ self.actionChange_ArtNet_Root_Folder = QtWidgets.QAction(MainWindow)
+ self.actionChange_ArtNet_Root_Folder.setObjectName("actionChange_ArtNet_Root_Folder")
+ self.actionCreate_New_Tag = QtWidgets.QAction(MainWindow)
+ self.actionCreate_New_Tag.setObjectName("actionCreate_New_Tag")
+ self.actionDelete_a_Tag = QtWidgets.QAction(MainWindow)
+ self.actionDelete_a_Tag.setObjectName("actionDelete_a_Tag")
+ self.actionEdit_a_Tag = QtWidgets.QAction(MainWindow)
+ self.actionEdit_a_Tag.setObjectName("actionEdit_a_Tag")
+ self.actionCreate_New_Category = QtWidgets.QAction(MainWindow)
+ self.actionCreate_New_Category.setObjectName("actionCreate_New_Category")
+ self.actionDelete_a_Category = QtWidgets.QAction(MainWindow)
+ self.actionDelete_a_Category.setObjectName("actionDelete_a_Category")
+ self.actionCreate_New_Category_2 = QtWidgets.QAction(MainWindow)
+ self.actionCreate_New_Category_2.setObjectName("actionCreate_New_Category_2")
+ self.actionDelete_a_Category_2 = QtWidgets.QAction(MainWindow)
+ self.actionDelete_a_Category_2.setObjectName("actionDelete_a_Category_2")
+ self.actionArtNet_Browser = QtWidgets.QAction(MainWindow)
+ self.actionArtNet_Browser.setObjectName("actionArtNet_Browser")
+ self.menuOther_Apps.addAction(self.actionArtNet_Browser)
+ self.menuArtNet.addAction(self.actionChange_Connection_Details)
+ self.menuArtNet.addAction(self.actionChange_ArtNet_Root_Folder)
+ self.menuArtNet.addSeparator()
+ self.menuArtNet.addAction(self.menuOther_Apps.menuAction())
+ self.menuTags.addAction(self.actionCreate_New_Tag)
+ self.menuTags.addAction(self.actionDelete_a_Tag)
+ self.menuTags.addAction(self.actionEdit_a_Tag)
+ self.menuCategory.addAction(self.actionCreate_New_Category_2)
+ self.menuCategory.addAction(self.actionDelete_a_Category_2)
+ self.menuBar.addAction(self.menuArtNet.menuAction())
+ self.menuBar.addAction(self.menuTags.menuAction())
+ self.menuBar.addAction(self.menuCategory.menuAction())
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.presence_docker_button.setText(_translate("MainWindow", "<"))
+ self.prev_image_button.setText(_translate("MainWindow", "<"))
+ self.image_title_line.setText(_translate("MainWindow", "Image_Title"))
+ self.image_file_label.setText(_translate("MainWindow", "file_name"))
+ self.author_by.setText(_translate("MainWindow", "by"))
+ self.image_author_label.setText(_translate("MainWindow", "author_name"))
+ self.image_label.setText(_translate("MainWindow", "No Image"))
+ self.link_label.setText(_translate("MainWindow", "Source_Link"))
+ self.link_button.setText(_translate("MainWindow", "..."))
+ self.collections_label.setText(_translate("MainWindow", "No Collections"))
+ self.collections_button.setText(_translate("MainWindow", "..."))
+ self.description_label.setText(_translate("MainWindow", "Description:"))
+ self.next_image_button.setText(_translate("MainWindow", ">"))
+ self.search_tags_label.setText(_translate("MainWindow", "Search Tags"))
+ self.selected_tags_label.setText(_translate("MainWindow", "Selected Tags"))
+ self.implied_tags_list.setText(_translate("MainWindow", "Implied Tags"))
+ self.save_button.setText(_translate("MainWindow", "Save"))
+ self.import_button.setText(_translate("MainWindow", "Import Tags"))
+ self.prev_unknown_image_button.setText(_translate("MainWindow", "prev Unknown"))
+ self.next_unknown_image_button.setText(_translate("MainWindow", "next Unknown"))
+ self.delete_button.setText(_translate("MainWindow", "Delete"))
+ self.topic_docker_button.setText(_translate("MainWindow", ">"))
+ self.menuArtNet.setTitle(_translate("MainWindow", "ArtNet"))
+ self.menuOther_Apps.setTitle(_translate("MainWindow", "Other Apps"))
+ self.menuTags.setTitle(_translate("MainWindow", "Tags"))
+ self.menuCategory.setTitle(_translate("MainWindow", "Category"))
+ self.actionChange_Connection_Details.setText(_translate("MainWindow", "Change DB Connection"))
+ self.actionChange_ArtNet_Root_Folder.setText(_translate("MainWindow", "Change ArtNet Root"))
+ self.actionCreate_New_Tag.setText(_translate("MainWindow", "Create New Tag"))
+ self.actionDelete_a_Tag.setText(_translate("MainWindow", "Delete a Tag"))
+ self.actionEdit_a_Tag.setText(_translate("MainWindow", "Edit a Tag"))
+ self.actionCreate_New_Category.setText(_translate("MainWindow", "Create New Category"))
+ self.actionDelete_a_Category.setText(_translate("MainWindow", "Delete a Category"))
+ self.actionCreate_New_Category_2.setText(_translate("MainWindow", "Create New Category"))
+ self.actionDelete_a_Category_2.setText(_translate("MainWindow", "Delete a Category"))
+ self.actionArtNet_Browser.setText(_translate("MainWindow", "ArtNet Browser"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ MainWindow = QtWidgets.QMainWindow()
+ ui = Ui_MainWindow()
+ ui.setupUi(MainWindow)
+ MainWindow.show()
+ sys.exit(app.exec_())
diff --git a/ArtNet/gui/windows/importer/picture_importer.ui b/ArtNet/gui/windows/importer/picture_importer.ui
new file mode 100644
index 0000000..e0c5885
--- /dev/null
+++ b/ArtNet/gui/windows/importer/picture_importer.ui
@@ -0,0 +1,657 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 1367
+ 888
+
+
+
+ MainWindow
+
+
+
+ true
+
+
+
+ QLayout::SetDefaultConstraint
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <
+
+
+ Qt::LeftArrow
+
+
+
+ -
+
+
+ -
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+ <
+
+
+ Qt::LeftArrow
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 10
+ 75
+ true
+
+
+
+ false
+
+
+ Image_Title
+
+
+ Qt::AlignCenter
+
+
+ false
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ file_name
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 7
+ 50
+ false
+
+
+
+ by
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 10
+ 50
+ false
+ false
+
+
+
+ author_name
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ No Image
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 8
+ 75
+ true
+
+
+
+ Source_Link
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ ...
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 8
+ 75
+ true
+
+
+
+ No Collections
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ ...
+
+
+
+
+
+
+ -
+
+
+ Description:
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+ >
+
+
+ Qt::RightArrow
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ Search Tags
+
+
+
+ -
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+
+ 400
+ 16777215
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 400
+ 16777215
+
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Selected Tags
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+
+ 400
+ 16777215
+
+
+
+
+ -
+
+
+
+ 9
+ 75
+ true
+
+
+
+ Implied Tags
+
+
+
+ -
+
+
+
+ 100
+ 0
+
+
+
+
+ 400
+ 16777215
+
+
+
+
+
+
+ -
+
+
+ 5
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Save
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Import Tags
+
+
+
+ -
+
+
+ prev Unknown
+
+
+
+ -
+
+
+ next Unknown
+
+
+
+ -
+
+
+ Delete
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ >
+
+
+ Qt::RightArrow
+
+
+
+
+
+
+
+
+
+
+
+
+ Change DB Connection
+
+
+
+
+ Change ArtNet Root
+
+
+
+
+ Create New Tag
+
+
+
+
+ Delete a Tag
+
+
+
+
+ Edit a Tag
+
+
+
+
+ Create New Category
+
+
+
+
+ Delete a Category
+
+
+
+
+ Create New Category
+
+
+
+
+ Delete a Category
+
+
+
+
+ ArtNet Browser
+
+
+
+
+
+