preserving sroll position fix
This commit is contained in:
parent
8be501dd46
commit
8900b7b11d
44
frontend.py
44
frontend.py
@ -198,6 +198,17 @@ class AnimeTracker(QMainWindow):
|
||||
self.set_current_tab_by_identifier(last_tab)
|
||||
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):
|
||||
self.search_text = text.strip().lower()
|
||||
for table in self.tables:
|
||||
@ -643,9 +654,10 @@ class AnimeTracker(QMainWindow):
|
||||
parts = tab_text.split(' (')
|
||||
default_year = int(parts[0])
|
||||
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)
|
||||
if dialog.exec_() == QDialog.Accepted:
|
||||
current_id = self.get_current_tab_identifier()
|
||||
data = dialog.get_data()
|
||||
if data['season']:
|
||||
self.last_used_season = data['season']
|
||||
@ -654,36 +666,50 @@ class AnimeTracker(QMainWindow):
|
||||
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
||||
return
|
||||
self.backend.add_anime(data)
|
||||
new_year = data['year']
|
||||
new_id = "pre" if new_year < 2010 else new_year
|
||||
self.load_tabs()
|
||||
self.set_current_tab_by_identifier(current_id)
|
||||
self.set_current_tab_by_identifier(new_id)
|
||||
if self.get_current_tab_identifier() == current_id:
|
||||
self.set_current_scroll_pos(current_scroll)
|
||||
|
||||
def edit_anime(self, anime_id):
|
||||
entry = self.backend.get_anime_by_id(anime_id)
|
||||
if entry:
|
||||
current_id = self.get_current_tab_identifier()
|
||||
current_scroll = self.get_current_scroll_pos()
|
||||
dialog = AnimeDialog(self, entry)
|
||||
if dialog.exec_() == QDialog.Accepted:
|
||||
current_id = self.get_current_tab_identifier()
|
||||
data = dialog.get_data()
|
||||
if not data['name']:
|
||||
QMessageBox.warning(self, "Error", "Anime name cannot be empty.")
|
||||
return
|
||||
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.set_current_tab_by_identifier(current_id)
|
||||
self.set_current_tab_by_identifier(new_id)
|
||||
if self.get_current_tab_identifier() == current_id:
|
||||
self.set_current_scroll_pos(current_scroll)
|
||||
|
||||
def delete_anime(self, anime_id):
|
||||
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_scroll = self.get_current_scroll_pos()
|
||||
self.backend.delete_anime(anime_id)
|
||||
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 change_status(self, anime_id, new_status):
|
||||
current_id = self.get_current_tab_identifier()
|
||||
current_scroll = self.get_current_scroll_pos()
|
||||
self.backend.change_status(anime_id, new_status)
|
||||
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 add_new_year(self):
|
||||
current_year = datetime.now().year
|
||||
@ -704,8 +730,13 @@ class AnimeTracker(QMainWindow):
|
||||
QMessageBox.warning(self, "Error", f"Year {year} does not exist.")
|
||||
return
|
||||
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.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):
|
||||
if self.tab_widget.currentIndex() == -1:
|
||||
@ -770,9 +801,12 @@ class AnimeTracker(QMainWindow):
|
||||
file_name, _ = QFileDialog.getOpenFileName(self, "Import CSV", "", "CSV Files (*.csv)")
|
||||
if file_name:
|
||||
current_id = self.get_current_tab_identifier()
|
||||
current_scroll = self.get_current_scroll_pos()
|
||||
self.backend.import_from_csv(file_name)
|
||||
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 export_csv(self):
|
||||
file_name, _ = QFileDialog.getSaveFileName(self, "Export CSV", "anime_backlog.csv", "CSV Files (*.csv)")
|
||||
@ -818,4 +852,4 @@ if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
window = AnimeTracker()
|
||||
window.show()
|
||||
sys.exit(app.exec_())
|
||||
sys.exit(app.exec_())
|
||||
|
Loading…
Reference in New Issue
Block a user