Redo TODO
This commit is contained in:
81
__main__.py
81
__main__.py
@@ -1,37 +1,50 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
""" TODO
|
""" TODO
|
||||||
✓ sqlite3 for cover images cache
|
|
||||||
✓ sqlite3 for storing metadata
|
|
||||||
✓ Drop down for SortBy (library view)
|
|
||||||
✓ Define every widget in code because you're going to need to create separate tabs
|
|
||||||
✓ Override the keypress event of the textedit
|
|
||||||
✓ Search bar in toolbar
|
|
||||||
✓ Shift focus to the tab that has the book open
|
|
||||||
✓ Search bar in toolbar
|
|
||||||
✓ Drop down for TOC (book view)
|
|
||||||
✓ Image reflow
|
|
||||||
✓ Implement book view settings with a(nother) toolbar
|
|
||||||
✓ Use format* icons for toolbar buttons
|
|
||||||
✓ Image delegates
|
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
Ignore a and the for sorting purposes
|
|
||||||
Check files (hashes) upon restart
|
Check files (hashes) upon restart
|
||||||
Recursive file addition
|
Recursive file addition
|
||||||
Show what on startup
|
Show what on startup
|
||||||
Maybe include icons for emblems
|
Library:
|
||||||
mobi, azw support
|
✓ sqlite3 for cover images cache
|
||||||
txt, doc, djvu support
|
✓ sqlite3 for storing metadata
|
||||||
pdf support?
|
✓ Drop down for SortBy
|
||||||
Goodreads API: Ratings, Read, Recommendations
|
✓ Image delegates
|
||||||
Get ISBN using python-isbnlib
|
✓ Image reflow
|
||||||
All ebooks should first be added to the database and then returned as HTML
|
✓ Search bar in toolbar
|
||||||
Theming
|
✓ Shift focus to the tab that has the book open
|
||||||
Pagination
|
Ignore a / the / numbers for sorting purposes
|
||||||
Information dialog widget
|
Maybe create emblem per filetype
|
||||||
Library context menu: Cache, Read, Edit database, delete
|
Put the path in the scope of the search
|
||||||
Set context menu for definitions and the like
|
maybe as a type: switch
|
||||||
|
Mass tagging
|
||||||
|
Information dialog widget
|
||||||
|
Context menu: Cache, Read, Edit database, delete, Mark read/unread
|
||||||
|
Create separate thread for parser - Show progress in main window
|
||||||
|
Reading:
|
||||||
|
✓ Drop down for TOC
|
||||||
|
✓ Override the keypress event of the textedit
|
||||||
|
✓ Use format* icons for toolbar buttons
|
||||||
|
✓ Implement book view settings with a(nother) toolbar
|
||||||
|
Consider substituting the textedit for another widget
|
||||||
|
All ebooks should first be added to the database and then returned as HTML
|
||||||
|
Pagination
|
||||||
|
Theming
|
||||||
|
Set context menu for definitions and the like
|
||||||
|
Keep fontsize and margins consistent - Let page increase in length
|
||||||
|
Filetypes:
|
||||||
|
epub support
|
||||||
|
mobi, azw support
|
||||||
|
txt, doc, djvu support
|
||||||
|
pdf support?
|
||||||
|
cbz, cbr support
|
||||||
|
Keep font settings enabled but only for background color
|
||||||
|
Internet:
|
||||||
|
Goodreads API: Ratings, Read, Recommendations
|
||||||
|
Get ISBN using python-isbnlib
|
||||||
|
Other:
|
||||||
|
✓ Define every widget in code
|
||||||
|
Maybe include icons for emblems
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -127,11 +140,11 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
|
|
||||||
# The rest is illustrated using informative variable names
|
# The rest is illustrated using informative variable names
|
||||||
space_occupied = num_images * default_size
|
space_occupied = num_images * default_size
|
||||||
|
# 12 is the scrollbar width
|
||||||
|
# Larger numbers keep reduce flickering but also increase
|
||||||
|
# the distance from the scrollbar
|
||||||
space_left = (
|
space_left = (
|
||||||
self.listView.viewport().width() - space_occupied - 19) # 12 is the scrollbar width
|
self.listView.viewport().width() - space_occupied - 19)
|
||||||
# Larger numbers keep reduce
|
|
||||||
# flickering but also increase
|
|
||||||
# the distance from the scrollbar
|
|
||||||
try:
|
try:
|
||||||
layout_extra_space_per_image = space_left // num_images
|
layout_extra_space_per_image = space_left // num_images
|
||||||
self.listView.setGridSize(
|
self.listView.setGridSize(
|
||||||
@@ -182,13 +195,13 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
msg_box.exec_()
|
msg_box.exec_()
|
||||||
|
|
||||||
def only_update_listview(self):
|
def only_update_listview(self):
|
||||||
self.lib_ref.update_proxyModel()
|
self.lib_ref.update_proxymodel()
|
||||||
|
|
||||||
def reload_listview(self):
|
def reload_listview(self):
|
||||||
if not self.viewModel:
|
if not self.viewModel:
|
||||||
self.lib_ref.generate_model()
|
self.lib_ref.generate_model()
|
||||||
self.lib_ref.create_proxyModel()
|
self.lib_ref.create_proxymodel()
|
||||||
self.lib_ref.update_proxyModel()
|
self.lib_ref.update_proxymodel()
|
||||||
|
|
||||||
def tab_switch(self):
|
def tab_switch(self):
|
||||||
if self.tabWidget.currentIndex() == 0:
|
if self.tabWidget.currentIndex() == 0:
|
||||||
|
@@ -98,14 +98,14 @@ class Library:
|
|||||||
item.setIcon(QtGui.QIcon(img_pixmap))
|
item.setIcon(QtGui.QIcon(img_pixmap))
|
||||||
self.parent_window.viewModel.appendRow(item)
|
self.parent_window.viewModel.appendRow(item)
|
||||||
|
|
||||||
def create_proxyModel(self):
|
def create_proxymodel(self):
|
||||||
self.proxy_model = QtCore.QSortFilterProxyModel()
|
self.proxy_model = QtCore.QSortFilterProxyModel()
|
||||||
self.proxy_model.setSourceModel(self.parent_window.viewModel)
|
self.proxy_model.setSourceModel(self.parent_window.viewModel)
|
||||||
s = QtCore.QSize(160, 250) # Set icon sizing here
|
s = QtCore.QSize(160, 250) # Set icon sizing here
|
||||||
self.parent_window.listView.setIconSize(s)
|
self.parent_window.listView.setIconSize(s)
|
||||||
self.parent_window.listView.setModel(self.proxy_model)
|
self.parent_window.listView.setModel(self.proxy_model)
|
||||||
|
|
||||||
def update_proxyModel(self):
|
def update_proxymodel(self):
|
||||||
self.proxy_model.setFilterRole(QtCore.Qt.UserRole + 4)
|
self.proxy_model.setFilterRole(QtCore.Qt.UserRole + 4)
|
||||||
self.proxy_model.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive)
|
self.proxy_model.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive)
|
||||||
self.proxy_model.setFilterWildcard(self.parent_window.libraryToolBar.filterEdit.text())
|
self.proxy_model.setFilterWildcard(self.parent_window.libraryToolBar.filterEdit.text())
|
||||||
|
Reference in New Issue
Block a user