Skip to content

Commit

Permalink
Up Down Buttons And Minor Improvements
Browse files Browse the repository at this point in the history
"Surf Words" menu is now sorted alphabetically
Add up and down buttons to "Add Words" menu
remove addNewDefinition() and addNewSentence() and add addToListWidget()
remove removeNewDefinition() and removeNewSentence() and add removeFromListWidget()
Improved searching
Fixed a minor bug
  • Loading branch information
DolphyWind committed Oct 15, 2022
1 parent 70f9523 commit ee159ff
Showing 1 changed file with 112 additions and 60 deletions.
172 changes: 112 additions & 60 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,49 +174,93 @@ def chooseImage():
self.addWord_ChooseImageHLayout.addWidget(self.addWord_ChooseImageText)
# endregion

# region Manipulating List Widgets

def addToListWidget(lWidget, wordName, textBox):
word = wordName
word = self.modifyWord(word)
if not word:
return
for i in range(lWidget.count()):
item = lWidget.item(i)
if item.text() == word:
return
lWidget.addItem(word)
textBox.clear()

def removeFromListWidget(lWidget):
item = lWidget.currentItem()
if not item:
return
lWidget.takeItem(lWidget.row(item))

def moveSelectedToUp(lWidget):
items = lWidget.selectedIndexes()

if not items or items[0].row() == 0:
return
index = items[0].row()
item = lWidget.takeItem(index)
lWidget.insertItem(index - 1, item)
lWidget.setCurrentRow(index - 1)

def moveSelectedToDown(lWidget):
items = lWidget.selectedIndexes()

if not items or items[0].row() == lWidget.count() - 1:
return
index = items[0].row()
item = lWidget.takeItem(index)
lWidget.insertItem(index + 1, item)
lWidget.setCurrentRow(index + 1)


# endregion

# region Add Definitions
self.addWord_DefinitionsLineEdit = QtWidgets.QLineEdit()
self.addWord_DefinitionsLineEdit.setPlaceholderText("New Definition")
self.addWord_DefinitionsLineEdit.setFont(inapp_font)
self.addWord_DefinitionsLineEdit.setMaximumWidth(175)

self.addWord_DefinitionsListWidget = QtWidgets.QListWidget()
self.addWord_DefinitionsListWidget.setFont(inapp_font)

self.addWord_AddDefButton = QtWidgets.QPushButton("Add")
self.addWord_AddDefButton.setFont(inapp_font)
self.addWord_AddDefButton.clicked.connect(
lambda: addToListWidget(self.addWord_DefinitionsListWidget, self.addWord_DefinitionsLineEdit.text(), self.addWord_DefinitionsLineEdit)
)

self.addWord_RemoveDefButton = QtWidgets.QPushButton("Remove")
self.addWord_RemoveDefButton.setFont(inapp_font)
self.addWord_RemoveDefButton.clicked.connect(lambda: removeFromListWidget(self.addWord_DefinitionsListWidget))

self.addWord_DefinitionsListWidget = QtWidgets.QListWidget()
self.addWord_DefinitionsListWidget.setFont(inapp_font)
self.addWord_UpDefButton = QtWidgets.QPushButton("Up")
self.addWord_UpDefButton.setFont(inapp_font)
self.addWord_UpDefButton.clicked.connect(lambda: moveSelectedToUp(self.addWord_DefinitionsListWidget))

def addNewDefinition():
word = self.addWord_DefinitionsLineEdit.text()
word = self.modifyWord(word)
if not word:
return
for i in range(self.addWord_DefinitionsListWidget.count()):
item = self.addWord_DefinitionsListWidget.item(i)
if item.text() == word:
return
self.addWord_DefinitionsListWidget.addItem(word)
self.addWord_DefinitionsLineEdit.clear()
self.addWord_DownDefButton = QtWidgets.QPushButton("Down")
self.addWord_DownDefButton.setFont(inapp_font)
self.addWord_DownDefButton.clicked.connect(lambda: moveSelectedToDown(self.addWord_DefinitionsListWidget))

def removeNewDefinition():
item = self.addWord_DefinitionsListWidget.currentItem()
if not item:
return
self.addWord_DefinitionsListWidget.takeItem(self.addWord_DefinitionsListWidget.row(item))

self.addWord_AddDefButton.clicked.connect(addNewDefinition)
self.addWord_RemoveDefButton.clicked.connect(removeNewDefinition)
# endregion

# region Definition Layouts

self.addWord_AddRemoveDefHLayout = QtWidgets.QHBoxLayout()
self.addWord_AddRemoveDefHLayout.addWidget(self.addWord_AddDefButton)
self.addWord_AddRemoveDefHLayout.addWidget(self.addWord_RemoveDefButton)

self.addWord_UpDownDefHLayout = QtWidgets.QHBoxLayout()
self.addWord_UpDownDefHLayout.addWidget(self.addWord_UpDefButton)
self.addWord_UpDownDefHLayout.addWidget(self.addWord_DownDefButton)

self.addWord_DefinitionsVLayout = QtWidgets.QVBoxLayout()
self.addWord_DefinitionsVLayout.addStretch()
self.addWord_DefinitionsVLayout.addWidget(self.addWord_DefinitionsLineEdit)
self.addWord_DefinitionsVLayout.addWidget(self.addWord_AddDefButton)
self.addWord_DefinitionsVLayout.addWidget(self.addWord_RemoveDefButton)
self.addWord_DefinitionsVLayout.addLayout(self.addWord_AddRemoveDefHLayout)
self.addWord_DefinitionsVLayout.addLayout(self.addWord_UpDownDefHLayout)
self.addWord_DefinitionsVLayout.addStretch()

self.addWord_DefinitionsHLayout = QtWidgets.QHBoxLayout()
Expand All @@ -232,35 +276,27 @@ def removeNewDefinition():
self.addWord_SentencesTextEdit.setMaximumHeight(80)
self.addWord_SentencesTextEdit.setMinimumHeight(80)

self.addWord_SentencesListWidget = QtWidgets.QListWidget()
self.addWord_SentencesListWidget.setFont(inapp_font)

self.addWord_AddSentencesButton = QtWidgets.QPushButton("Add")
self.addWord_AddSentencesButton.setFont(inapp_font)
self.addWord_AddSentencesButton.clicked.connect(
lambda: addToListWidget(self.addWord_SentencesListWidget, self.addWord_SentencesTextEdit.toPlainText(), self.addWord_SentencesTextEdit)
)

self.addWord_RemoveSentencesButton = QtWidgets.QPushButton("Remove")
self.addWord_RemoveSentencesButton.setFont(inapp_font)
self.addWord_RemoveSentencesButton.clicked.connect(lambda: removeFromListWidget(self.addWord_SentencesListWidget))

self.addWord_SentencesListWidget = QtWidgets.QListWidget()
self.addWord_SentencesListWidget.setFont(inapp_font)
self.addWord_UpSentenceButton = QtWidgets.QPushButton("Up")
self.addWord_UpSentenceButton.setFont(inapp_font)
self.addWord_UpSentenceButton.clicked.connect(lambda: moveSelectedToUp(self.addWord_SentencesListWidget))

def addNewSentence():
word = self.addWord_SentencesTextEdit.toPlainText()
word = self.modifyWord(word)
word = word.replace('\n', ' ')
if not word:
return
for i in range(self.addWord_SentencesListWidget.count()):
item = self.addWord_SentencesListWidget.item(i)
if item.text() == word:
return
self.addWord_SentencesListWidget.addItem(word)
self.addWord_SentencesTextEdit.clear()
def removeNewSentence():
item = self.addWord_SentencesListWidget.currentItem()
if not item:
return
self.addWord_SentencesListWidget.takeItem(self.addWord_SentencesListWidget.row(item))
self.addWord_DownSentenceButton = QtWidgets.QPushButton("Down")
self.addWord_DownSentenceButton.setFont(inapp_font)
self.addWord_DownSentenceButton.clicked.connect(lambda: moveSelectedToDown(self.addWord_SentencesListWidget))

self.addWord_AddSentencesButton.clicked.connect(addNewSentence)
self.addWord_RemoveSentencesButton.clicked.connect(removeNewSentence)
# endregion

# region Check if has pre loaded word
Expand All @@ -280,11 +316,20 @@ def removeNewSentence():
# endregion

# region Example Sentence Layouts

self.addWord_AddRemoveSentencesHLayout = QtWidgets.QHBoxLayout()
self.addWord_AddRemoveSentencesHLayout.addWidget(self.addWord_AddSentencesButton)
self.addWord_AddRemoveSentencesHLayout.addWidget(self.addWord_RemoveSentencesButton)

self.addWord_UpDownSentencesHLayout = QtWidgets.QHBoxLayout()
self.addWord_UpDownSentencesHLayout.addWidget(self.addWord_UpSentenceButton)
self.addWord_UpDownSentencesHLayout.addWidget(self.addWord_DownSentenceButton)

self.addWord_SentencesVLayout = QtWidgets.QVBoxLayout()
self.addWord_SentencesVLayout.addStretch()
self.addWord_SentencesVLayout.addWidget(self.addWord_SentencesTextEdit)
self.addWord_SentencesVLayout.addWidget(self.addWord_AddSentencesButton)
self.addWord_SentencesVLayout.addWidget(self.addWord_RemoveSentencesButton)
self.addWord_SentencesVLayout.addLayout(self.addWord_AddRemoveSentencesHLayout)
self.addWord_SentencesVLayout.addLayout(self.addWord_UpDownSentencesHLayout)
self.addWord_SentencesVLayout.addStretch()

self.addWord_SentencesHLayout = QtWidgets.QHBoxLayout()
Expand Down Expand Up @@ -338,7 +383,7 @@ def addWord():
if preloadedWord is None:
self.switchMenu(self.currentMenu)
else:
self.switchMenu(self.previousMenu, preloadedWord)
self.switchMenu(self.previousMenu, w)

self.addWord_SaveButton.clicked.connect(addWord)
# endregion
Expand Down Expand Up @@ -378,14 +423,22 @@ def updateListWidget(word: str):
self.searchWord_ListWidget.clear()

searched = self.modifyWord(word)
searched = searched.lower()

matchedWordsStartsWith = []
matchedWordsIncludes = []

matchedWords = []
for w in self.wordDataDict.keys():
if w.startswith(searched):
matchedWords.append(w)
if w.lower().startswith(searched):
matchedWordsStartsWith.append(w)
elif searched in w.lower():
matchedWordsIncludes.append(w)

matchedWordsStartsWith = sorted(matchedWordsStartsWith)
matchedWordsIncludes = sorted(matchedWordsIncludes)
matchedWordsStartsWith += matchedWordsIncludes

matchedWords = sorted(matchedWords)
for w in matchedWords:
for w in matchedWordsStartsWith:
self.searchWord_ListWidget.addItem(QtWidgets.QListWidgetItem(w))

self.searchWord_LineEdit = QtWidgets.QLineEdit()
Expand Down Expand Up @@ -487,16 +540,17 @@ def removeSelected():

def createSurfWordsMenu(self, currentWord:word.Word = None):

keys_list = sorted(list(self.wordDataDict.keys()))

# region Initialize
if currentWord is None:
currentWord = word.Word()
keys_list = list(self.wordDataDict.keys())
randomWord = keys_list[0]
currentWord.loadFromDict(randomWord, self.wordDataDict[randomWord])

index = 0
for i in range(len(self.wordDataDict.keys())):
if list(self.wordDataDict.keys())[i] == currentWord.word:
for i in range(len(keys_list)):
if keys_list[i] == currentWord.word:
index = i
# endregion

Expand Down Expand Up @@ -597,17 +651,15 @@ def createSurfWordsMenu(self, currentWord:word.Word = None):
def changeWord(index, step):
index += step
if index < 0:
index = len(self.wordDataDict.keys()) - 1
elif index > len(self.wordDataDict.keys()) - 1:
index = len(keys_list) - 1
elif index > len(keys_list) - 1:
index = 0
key_list = list(self.wordDataDict.keys())
currentStr = key_list[index]
currentStr = keys_list[index]
currentWord.loadFromDict(currentStr, self.wordDataDict[currentStr])
self.switchMenu(Menu.SURF_WORDS, currentWord)

def getRandomWord():
new_word = word.Word()
keys_list = list(self.wordDataDict.keys())
if len(keys_list) <= 1:
return
randomWord = random.choice(keys_list)
Expand Down

0 comments on commit ee159ff

Please sign in to comment.