Skip to content

Commit

Permalink
add import button
Browse files Browse the repository at this point in the history
  • Loading branch information
Snowad14 committed Mar 26, 2023
1 parent 909ddbc commit 08bdaa4
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 13 deletions.
24 changes: 20 additions & 4 deletions configWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from natsort import os_sorted
import os, sys, glob, configparser

import description_element
import utils
from flowlayout import FlowLayout
import prompt_element, image_element
Expand Down Expand Up @@ -110,6 +111,9 @@ def __init__(self, mainFrame):
self.exportPromptsButton.clicked.connect(self.exportPrompts)
self.layout.addWidget(self.exportPromptsButton)

self.importPromptsButton = QtWidgets.QPushButton(self)
self.importPromptsButton.clicked.connect(self.importPrompts)
self.layout.addWidget(self.importPromptsButton)

self.SubfolderCheckbox.setText("Include Subfolders")
self.TxtCaptionCheckbox.setText("Txt Caption")
Expand All @@ -120,6 +124,7 @@ def __init__(self, mainFrame):
self.subjectSeparatorLabel.setText("Subject :")
self.descriptionSeparatorLabel.setText("Description :")
self.exportPromptsButton.setText("Export Prompts")
self.importPromptsButton.setText("Import Prompts")

def changeImageDimension(self):
for imageWidget in image_element.ImageElement.allImages:
Expand All @@ -134,11 +139,22 @@ def exportPrompts(self):
txt_file.write(prompt.entry.text() + "\n")
for description in prompt.getNonEmptyDescriptions():
txt_file.write(" " + description.entry.text() + "\n")
utils.sendInfoMessage("Exported Successfully")

finishDialog = QtWidgets.QMessageBox()
finishDialog.setText("Exported Successfully")
finishDialog.setWindowTitle("Finished")
finishDialog.exec_()
def importPrompts(self):
# make user context file menu to choose a txt file to save caption
txt_file_path = QtWidgets.QFileDialog.getOpenFileName(self, "Import Caption", "", "Text Files (*.txt)")[0]
with open(txt_file_path, "r", encoding="utf-8") as txt_file:
lastPrompt = None
for line in txt_file:
if line.startswith(" "):
if lastPrompt:
if not description_element.DescriptionElement.getDescriptionWithText(line.strip(), lastPrompt):
description_element.DescriptionElement.createDescriptionFromImport(parentPrompt=lastPrompt, mainFrame=self.mainFrame,txt=line.strip())
else:
if not prompt_element.PromptElement.getPromptWithText(line.strip()): # check if prompt already exists
lastPrompt = prompt_element.PromptElement.createPromptFromImport(mainFrame=self.mainFrame, txt=line.strip())
utils.sendInfoMessage("Imported Successfully")

def updateConfig(self):
self.config["DEFAULT"]["Include_Subfolder"] = str(self.SubfolderCheckbox.isChecked())
Expand Down
13 changes: 13 additions & 0 deletions description_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ def __init__(self, promptParent, mainFrame):
self.entry.selectionChanged.connect(lambda: self.entry.setSelection(0, 0)) # disable selection
self.entry.clicked.connect(self.selectEntry)

@staticmethod
def getDescriptionWithText(txt, promptParent):
for i in promptParent.descriptions:
if i.entry.text() == txt:
return i

@staticmethod
def createDescriptionFromImport(parentPrompt, mainFrame, txt):
desc = DescriptionElement(parentPrompt, mainFrame=mainFrame)
desc.entry.setText(txt)
desc.entry.setReadOnly(True)
return desc

def isUniqueElement(self):
if [desc.entry.text() for desc in self.promptParent.descriptions].count(self.entry.text()) > 1:
return False
Expand Down
12 changes: 3 additions & 9 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import prompt_element, image_element, description_element, configWindow, utils

os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
VERSION = "1.2.4"
VERSION = "1.2.5"

class QDragDropScrollArea(QtWidgets.QScrollArea):

Expand Down Expand Up @@ -270,18 +270,12 @@ def importImage(self, folder_path):
subjectPrompt = target_prompt
newdico[subjectPrompt] = target_prompt.descriptions
else:
subjectPrompt = prompt_element.PromptElement(mainFrame=self)
subjectPrompt.entry.setText(subject)
subjectPrompt.entry.setReadOnly(True)
subjectPrompt.addButton.setEnabled(True)
subjectPrompt.deleteButton.setEnabled(True)
subjectPrompt = prompt_element.PromptElement.createPromptFromImport(mainFrame=self, txt=subject)
newdico[subjectPrompt] = []

for desc in dico[subject]:
if desc not in [i.entry.text() for i in subjectPrompt.descriptions]:
descPrompt = description_element.DescriptionElement(subjectPrompt, mainFrame=self)
descPrompt.entry.setText(desc)
descPrompt.entry.setReadOnly(True)
descPrompt = description_element.DescriptionElement.createDescriptionFromImport(subjectPrompt, mainFrame=self, txt=desc)
newdico[subjectPrompt].append(descPrompt)

for img in image_element.ImageElement.allImages:
Expand Down
9 changes: 9 additions & 0 deletions prompt_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,15 @@ def getPromptWithText(txt):
if i.entry.text() == txt:
return i

@staticmethod
def createPromptFromImport(mainFrame, txt):
subjectPrompt = PromptElement(mainFrame=mainFrame)
subjectPrompt.entry.setText(txt)
subjectPrompt.entry.setReadOnly(True)
subjectPrompt.addButton.setEnabled(True)
subjectPrompt.deleteButton.setEnabled(True)
return subjectPrompt

def collapsePrompt(self):
collapseIcon = QtGui.QIcon()
pixmap = QtGui.QPixmap("assets/triangle.svg")
Expand Down
6 changes: 6 additions & 0 deletions utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ def sendErrorMessage(message : str):
errorDialog.setWindowTitle("Error")
errorDialog.exec_()

def sendInfoMessage(message : str):
infoDialog = QtWidgets.QMessageBox()
infoDialog.setText(message)
infoDialog.setWindowTitle("Info")
infoDialog.exec_()

def sendConfirmMessage(message : str):
result = QMessageBox.question(
None,
Expand Down

0 comments on commit 08bdaa4

Please sign in to comment.