Added WIP collection, browser and topic UIs

Reason is mainly to not loose these files when working on other branches
dev
Peery 1 year ago
parent 9a4af1e7e9
commit d209f32133

@ -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)

@ -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_())

@ -0,0 +1,278 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>735</width>
<height>492</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="top_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="collection_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Collection Name</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="collection_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QFrame" name="image_list_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="entry_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Entries</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="entry_list"/>
</item>
<item>
<widget class="QFrame" name="button_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="add_image_button">
<property name="text">
<string>Add Art</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="ranking_list_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Ranking</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="ranking_list_view">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="button2_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="optimize_ranking_button">
<property name="text">
<string>Optimize Ranking</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="description_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="description_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Description</string>
</property>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="description_browser"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -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.

@ -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

@ -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_())

@ -0,0 +1,267 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>570</width>
<height>321</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="top_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QFrame" name="name_select_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="collection_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Collection Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="collection_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="presence_name_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="presence_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Presence Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="presence_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="presence_domain_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="presence_domain_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Presence Domain</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="presence_domain_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="art_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="art_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Art Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="art_name_line"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QListView" name="collection_list"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="button_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>133</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="create_collection_button">
<property name="text">
<string>Create Collection</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="edit_collection_button">
<property name="text">
<string>Edit Collection</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delete_collection_button">
<property name="text">
<string>Delete Collection</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -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_())

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>679</width>
<height>325</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="main_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="left_frame">
<item>
<widget class="QLabel" name="title_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Image Title:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="presence_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Presences:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="artist_label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Artists:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="collections_label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Collections:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="paths_label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Path:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="source_label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Source</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="right_frame">
<item>
<widget class="QLabel" name="title_text_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>title_text</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="presence_text_label">
<property name="text">
<string>presence_text</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="artist_text_label">
<property name="text">
<string>artist_text</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="collection_text_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>collection_text</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="path_text_label">
<property name="text">
<string>path_text</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="source_text_label">
<property name="text">
<string>source_text</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -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_())

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1326</width>
<height>952</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QFrame" name="display_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="art_name_label">
<property name="text">
<string>image_name</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="art_by_label">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>by</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="art_presence_label">
<property name="text">
<string>presences</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="art_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLabel" name="art_placeholder_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>NO_ART</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="art_selection_list"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="select_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QFrame" name="select_tag_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="search_tag_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Search Tag</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="search_tag_line"/>
</item>
<item>
<widget class="QListView" name="search_tag_list"/>
</item>
<item>
<widget class="QLabel" name="selected_tag_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Selected Tags</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="selected_tag_list"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="select_presence_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="search_presence_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Search Presence</string>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="search_presence_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QFrame" name="search_presence_name_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="search_presence_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="search_presence_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="search_presence_domain_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="search_presence_domain_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Domain</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="search_presence_domain_line"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QListView" name="search_presence_list"/>
</item>
<item>
<widget class="QLabel" name="selected_presence_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Selected Presences</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="selected_presence_list"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -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_())

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>396</width>
<height>100</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="input_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="link_label">
<property name="text">
<string>Link:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="link_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -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_())

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>artist_docker</class>
<widget class="QWidget" name="artist_docker">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>369</width>
<height>735</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="docker_topic_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>13</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Artist</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="search_artist_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QFrame" name="search_artist_name_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="search_artist_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="search_artist_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QListView" name="search_artist_list"/>
</item>
<item>
<widget class="QLabel" name="selected_artist_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Selected Artist:</string>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="selected_artist_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QCheckBox" name="selected_artist_box">
<property name="text">
<string>artist_name #ID</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="selected_artist_topic_list"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="search_topic_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="topic_label">
<property name="font">
<font>
<pointsize>13</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Topic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="search_topic_name_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="search_topic_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="search_topic_name_line"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="selected_topic_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Selected Topics:</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="selected_topic_list"/>
</item>
<item>
<widget class="QFrame" name="topic_button_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="create_topic_button">
<property name="text">
<string>Create Topic</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="edit_topic_button">
<property name="text">
<string>Edit Topic</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delete_topic_button">
<property name="text">
<string>Delete Topic</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -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_())

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1176</width>
<height>610</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QFrame" name="top_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QFrame" name="browse_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="image_headbar_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="image_title_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Image_Title</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="image_number_spinbox"/>
</item>
<item>
<widget class="QToolButton" name="image_info_button">
<property name="text">
<string>?</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGraphicsView" name="graphics_view">
<property name="minimumSize">
<size>
<width>800</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toggle_detail_frame_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>v</string>
</property>
<property name="arrowType">
<enum>Qt::DownArrow</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="right_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="toggle_search_frame_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="search_param_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="tag_search_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Search</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="tag_search_bar"/>
</item>
<item>
<widget class="QLabel" name="result_tags_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Result Stats</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="result_tags_listview"/>
</item>
<item>
<widget class="QFrame" name="button_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="open_location_button">
<property name="text">
<string>Open Location</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delete_art_button">
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="bottom_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QFrame" name="description_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="label_4">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Description</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="description_edit"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="collection_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="collections_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
<underline>false</underline>
</font>
</property>
<property name="text">
<string>Collections</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="collections_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1176</width>
<height>34</height>
</rect>
</property>
<widget class="QMenu" name="menuArtNet">
<property name="title">
<string>ArtNet</string>
</property>
<widget class="QMenu" name="menuOther_Apps">
<property name="title">
<string>Other Apps</string>
</property>
<addaction name="actionArtNet_Importer"/>
</widget>
<addaction name="actionChange_DB_Connection"/>
<addaction name="actionChange_ArtNet_root"/>
<addaction name="separator"/>
<addaction name="menuOther_Apps"/>
</widget>
<widget class="QMenu" name="menuCollection">
<property name="title">
<string>Collection</string>
</property>
<addaction name="actionSearch_Collection"/>
<addaction name="actionEdit_Collection"/>
</widget>
<addaction name="menuArtNet"/>
<addaction name="menuCollection"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionArtNet_Importer">
<property name="text">
<string>ArtNet Importer</string>
</property>
</action>
<action name="actionChange_DB_Connection">
<property name="text">
<string>Change DB Connection</string>
</property>
</action>
<action name="actionChange_ArtNet_root">
<property name="text">
<string>Change ArtNet Root</string>
</property>
</action>
<action name="actionSearch_Collection">
<property name="text">
<string>Search Collection</string>
</property>
</action>
<action name="actionEdit_Collection">
<property name="text">
<string>Edit Collection</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

@ -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_())

@ -0,0 +1,657 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1367</width>
<height>888</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<property name="enabled">
<bool>true</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QFrame" name="left_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="presence_docker_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="presence_docker_layout"/>
</item>
<item>
<layout class="QVBoxLayout" name="left_layout">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QToolButton" name="prev_image_button">
<property name="text">
<string>&lt;</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QFrame" name="center_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="art_header_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="image_title_line">
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="text">
<string>Image_Title</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="imageNumberSpinBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="image_file_label">
<property name="text">
<string>file_name</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="author_by">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>by</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="image_author_label">
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>author_name</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="image_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="image_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>No Image</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="link_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="link_label">
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Source_Link</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="link_button">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="collection_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="collections_label">
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>No Collections</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="collections_button">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="description_label">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="description_edit"/>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="right_layout">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QToolButton" name="next_image_button">
<property name="text">
<string>&gt;</string>
</property>
<property name="arrowType">
<enum>Qt::RightArrow</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="right_frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="tag_layout">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QLabel" name="search_tags_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Search Tags</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="tag_list_layout">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QLineEdit" name="tag_search_bar">
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="search_result_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="selected_tags_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Selected Tags</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="tag_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="implied_tags_list">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Implied Tags</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="implied_tag_list">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="tag_button_layout">
<property name="spacing">
<number>5</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QPushButton" name="save_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="import_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Import Tags</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="prev_unknown_image_button">
<property name="text">
<string>prev Unknown</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="next_unknown_image_button">
<property name="text">
<string>next Unknown</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delete_button">
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QToolButton" name="topic_docker_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&gt;</string>
</property>
<property name="arrowType">
<enum>Qt::RightArrow</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1367</width>
<height>34</height>
</rect>
</property>
<widget class="QMenu" name="menuArtNet">
<property name="title">
<string>ArtNet</string>
</property>
<widget class="QMenu" name="menuOther_Apps">
<property name="title">
<string>Other Apps</string>
</property>
<addaction name="actionArtNet_Browser"/>
</widget>
<addaction name="actionChange_Connection_Details"/>
<addaction name="actionChange_ArtNet_Root_Folder"/>
<addaction name="separator"/>
<addaction name="menuOther_Apps"/>
</widget>
<widget class="QMenu" name="menuTags">
<property name="title">
<string>Tags</string>
</property>
<addaction name="actionCreate_New_Tag"/>
<addaction name="actionDelete_a_Tag"/>
<addaction name="actionEdit_a_Tag"/>
</widget>
<widget class="QMenu" name="menuCategory">
<property name="title">
<string>Category</string>
</property>
<addaction name="actionCreate_New_Category_2"/>
<addaction name="actionDelete_a_Category_2"/>
</widget>
<addaction name="menuArtNet"/>
<addaction name="menuTags"/>
<addaction name="menuCategory"/>
</widget>
<action name="actionChange_Connection_Details">
<property name="text">
<string>Change DB Connection</string>
</property>
</action>
<action name="actionChange_ArtNet_Root_Folder">
<property name="text">
<string>Change ArtNet Root</string>
</property>
</action>
<action name="actionCreate_New_Tag">
<property name="text">
<string>Create New Tag</string>
</property>
</action>
<action name="actionDelete_a_Tag">
<property name="text">
<string>Delete a Tag</string>
</property>
</action>
<action name="actionEdit_a_Tag">
<property name="text">
<string>Edit a Tag</string>
</property>
</action>
<action name="actionCreate_New_Category">
<property name="text">
<string>Create New Category</string>
</property>
</action>
<action name="actionDelete_a_Category">
<property name="text">
<string>Delete a Category</string>
</property>
</action>
<action name="actionCreate_New_Category_2">
<property name="text">
<string>Create New Category</string>
</property>
</action>
<action name="actionDelete_a_Category_2">
<property name="text">
<string>Delete a Category</string>
</property>
</action>
<action name="actionArtNet_Browser">
<property name="text">
<string>ArtNet Browser</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
Loading…
Cancel
Save