Compare commits
No commits in common. "c0a37c4b4513e3459d478b0aa7ecba72f234a836" and "8be501dd46fddeaeb958094032881f552d1a79e0" have entirely different histories.
c0a37c4b45
...
8be501dd46
45
frontend.py
45
frontend.py
@ -63,8 +63,7 @@ class AnimeDialog(QDialog):
|
|||||||
# Unescape for display in input fields
|
# Unescape for display in input fields
|
||||||
self.name_edit.setText(html.unescape(entry[1]))
|
self.name_edit.setText(html.unescape(entry[1]))
|
||||||
self.year_spin.setValue(entry[2])
|
self.year_spin.setValue(entry[2])
|
||||||
self.season_combo.setCurrentText((entry[3] or "Other").capitalize())
|
self.season_combo.setCurrentText(entry[3])
|
||||||
print("entry[3] = " + entry[3])
|
|
||||||
self.status_combo.setCurrentText(entry[4])
|
self.status_combo.setCurrentText(entry[4])
|
||||||
self.type_combo.setCurrentText(entry[5] or '')
|
self.type_combo.setCurrentText(entry[5] or '')
|
||||||
self.comment_edit.setPlainText(html.unescape(entry[6] or ''))
|
self.comment_edit.setPlainText(html.unescape(entry[6] or ''))
|
||||||
@ -199,17 +198,6 @@ class AnimeTracker(QMainWindow):
|
|||||||
self.set_current_tab_by_identifier(last_tab)
|
self.set_current_tab_by_identifier(last_tab)
|
||||||
self.tab_widget.setFocus()
|
self.tab_widget.setFocus()
|
||||||
|
|
||||||
def get_current_scroll_pos(self):
|
|
||||||
widget = self.tab_widget.currentWidget()
|
|
||||||
if widget:
|
|
||||||
return widget.verticalScrollBar().value()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def set_current_scroll_pos(self, pos):
|
|
||||||
widget = self.tab_widget.currentWidget()
|
|
||||||
if widget:
|
|
||||||
widget.verticalScrollBar().setValue(pos)
|
|
||||||
|
|
||||||
def filter_tables(self, text):
|
def filter_tables(self, text):
|
||||||
self.search_text = text.strip().lower()
|
self.search_text = text.strip().lower()
|
||||||
for table in self.tables:
|
for table in self.tables:
|
||||||
@ -655,10 +643,9 @@ class AnimeTracker(QMainWindow):
|
|||||||
parts = tab_text.split(' (')
|
parts = tab_text.split(' (')
|
||||||
default_year = int(parts[0])
|
default_year = int(parts[0])
|
||||||
default_season = ''
|
default_season = ''
|
||||||
current_id = self.get_current_tab_identifier()
|
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
dialog = AnimeDialog(self, None, default_year, self.last_used_season)
|
dialog = AnimeDialog(self, None, default_year, self.last_used_season)
|
||||||
if dialog.exec_() == QDialog.Accepted:
|
if dialog.exec_() == QDialog.Accepted:
|
||||||
|
current_id = self.get_current_tab_identifier()
|
||||||
data = dialog.get_data()
|
data = dialog.get_data()
|
||||||
if data['season']:
|
if data['season']:
|
||||||
self.last_used_season = data['season']
|
self.last_used_season = data['season']
|
||||||
@ -667,50 +654,36 @@ class AnimeTracker(QMainWindow):
|
|||||||
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
||||||
return
|
return
|
||||||
self.backend.add_anime(data)
|
self.backend.add_anime(data)
|
||||||
new_year = data['year']
|
|
||||||
new_id = "pre" if new_year < 2010 else new_year
|
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(new_id)
|
self.set_current_tab_by_identifier(current_id)
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def edit_anime(self, anime_id):
|
def edit_anime(self, anime_id):
|
||||||
entry = self.backend.get_anime_by_id(anime_id)
|
entry = self.backend.get_anime_by_id(anime_id)
|
||||||
if entry:
|
if entry:
|
||||||
current_id = self.get_current_tab_identifier()
|
current_id = self.get_current_tab_identifier()
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
dialog = AnimeDialog(self, entry)
|
dialog = AnimeDialog(self, entry)
|
||||||
if dialog.exec_() == QDialog.Accepted:
|
if dialog.exec_() == QDialog.Accepted:
|
||||||
|
current_id = self.get_current_tab_identifier()
|
||||||
data = dialog.get_data()
|
data = dialog.get_data()
|
||||||
if not data['name']:
|
if not data['name']:
|
||||||
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
||||||
return
|
return
|
||||||
self.backend.edit_anime(anime_id, data)
|
self.backend.edit_anime(anime_id, data)
|
||||||
new_year = data['year']
|
|
||||||
new_id = "pre" if new_year < 2010 else new_year
|
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(new_id)
|
self.set_current_tab_by_identifier(current_id)
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def delete_anime(self, anime_id):
|
def delete_anime(self, anime_id):
|
||||||
if QMessageBox.question(self, "Confirm Delete", "Are you sure you want to delete this entry?") == QMessageBox.Yes:
|
if QMessageBox.question(self, "Confirm Delete", "Are you sure you want to delete this entry?") == QMessageBox.Yes:
|
||||||
current_id = self.get_current_tab_identifier()
|
current_id = self.get_current_tab_identifier()
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
self.backend.delete_anime(anime_id)
|
self.backend.delete_anime(anime_id)
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(current_id)
|
self.set_current_tab_by_identifier(current_id)
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def change_status(self, anime_id, new_status):
|
def change_status(self, anime_id, new_status):
|
||||||
current_id = self.get_current_tab_identifier()
|
current_id = self.get_current_tab_identifier()
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
self.backend.change_status(anime_id, new_status)
|
self.backend.change_status(anime_id, new_status)
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(current_id)
|
self.set_current_tab_by_identifier(current_id)
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def add_new_year(self):
|
def add_new_year(self):
|
||||||
current_year = datetime.now().year
|
current_year = datetime.now().year
|
||||||
@ -731,13 +704,8 @@ class AnimeTracker(QMainWindow):
|
|||||||
QMessageBox.warning(self, "Error", f"Year {year} does not exist.")
|
QMessageBox.warning(self, "Error", f"Year {year} does not exist.")
|
||||||
return
|
return
|
||||||
if QMessageBox.question(self, "Confirm Delete", f"Are you sure you want to delete all entries for {year}?") == QMessageBox.Yes:
|
if QMessageBox.question(self, "Confirm Delete", f"Are you sure you want to delete all entries for {year}?") == QMessageBox.Yes:
|
||||||
current_id = self.get_current_tab_identifier()
|
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
self.backend.delete_year(year)
|
self.backend.delete_year(year)
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(current_id)
|
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def random_pick(self):
|
def random_pick(self):
|
||||||
if self.tab_widget.currentIndex() == -1:
|
if self.tab_widget.currentIndex() == -1:
|
||||||
@ -802,12 +770,9 @@ class AnimeTracker(QMainWindow):
|
|||||||
file_name, _ = QFileDialog.getOpenFileName(self, "Import CSV", "", "CSV Files (*.csv)")
|
file_name, _ = QFileDialog.getOpenFileName(self, "Import CSV", "", "CSV Files (*.csv)")
|
||||||
if file_name:
|
if file_name:
|
||||||
current_id = self.get_current_tab_identifier()
|
current_id = self.get_current_tab_identifier()
|
||||||
current_scroll = self.get_current_scroll_pos()
|
|
||||||
self.backend.import_from_csv(file_name)
|
self.backend.import_from_csv(file_name)
|
||||||
self.load_tabs()
|
self.load_tabs()
|
||||||
self.set_current_tab_by_identifier(current_id)
|
self.set_current_tab_by_identifier(current_id)
|
||||||
if self.get_current_tab_identifier() == current_id:
|
|
||||||
self.set_current_scroll_pos(current_scroll)
|
|
||||||
|
|
||||||
def export_csv(self):
|
def export_csv(self):
|
||||||
file_name, _ = QFileDialog.getSaveFileName(self, "Export CSV", "anime_backlog.csv", "CSV Files (*.csv)")
|
file_name, _ = QFileDialog.getSaveFileName(self, "Export CSV", "anime_backlog.csv", "CSV Files (*.csv)")
|
||||||
|
@ -10,8 +10,5 @@
|
|||||||
Then run a binary:
|
Then run a binary:
|
||||||
`./dist/AnimeTracker/AnimeTracker`
|
`./dist/AnimeTracker/AnimeTracker`
|
||||||
|
|
||||||
## How to update the binary file
|
|
||||||
cp ~/Documents/programs/python/anime-tracker/dist/AnimeTracker/AnimeTracker ~/Applications/AnimeTracker/AnimeTracker
|
|
||||||
|
|
||||||
## How to run this app without building:
|
## How to run this app without building:
|
||||||
`python frontend.py`
|
`python frontend.py`
|
Loading…
Reference in New Issue
Block a user