mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-31 14:33:54 -04:00
KG fixes for catalog builder/windows
This commit is contained in:
commit
089f785d93
@ -54,7 +54,7 @@ gprefs.defaults['toolbar_text'] = 'auto'
|
|||||||
gprefs.defaults['show_child_bar'] = False
|
gprefs.defaults['show_child_bar'] = False
|
||||||
gprefs.defaults['font'] = None
|
gprefs.defaults['font'] = None
|
||||||
gprefs.defaults['tags_browser_partition_method'] = 'first letter'
|
gprefs.defaults['tags_browser_partition_method'] = 'first letter'
|
||||||
gprefs.defaults['tags_browser_collapse_at'] = 50
|
gprefs.defaults['tags_browser_collapse_at'] = 100
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ def gui_catalog(fmt, title, dbspec, ids, out_file_name, sync, fmt_options, conne
|
|||||||
from calibre.library import db
|
from calibre.library import db
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
prefs.refresh()
|
prefs.refresh()
|
||||||
db = db()
|
db = db(read_only=True)
|
||||||
db.catalog_plugin_on_device_temp_mapping = dbspec
|
db.catalog_plugin_on_device_temp_mapping = dbspec
|
||||||
|
|
||||||
# Create a minimal OptionParser that we can append to
|
# Create a minimal OptionParser that we can append to
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>670</width>
|
<width>670</width>
|
||||||
<height>420</height>
|
<height>392</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -141,36 +141,64 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="7" column="0" colspan="2">
|
||||||
|
<layout class="QHBoxLayout">
|
||||||
|
<item>
|
||||||
<widget class="QLabel" name="label_6">
|
<widget class="QLabel" name="label_6">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Tags browser: partitioning method:</string>
|
<string>Tags browser category partitioning method:</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="buddy">
|
||||||
<cstring>opt_tags_browser_partition_method</cstring>
|
<cstring>opt_tags_browser_partition_method</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item>
|
||||||
<widget class="QComboBox" name="opt_tags_browser_partition_method"/>
|
<widget class="QComboBox" name="opt_tags_browser_partition_method">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Choose how tag browser subcategories are displayed when
|
||||||
|
there are more items than the limit. Select by first
|
||||||
|
letter to see an A, B, C list. Choose partitioned to
|
||||||
|
have a list of fixed-sized groups. Set to disabled
|
||||||
|
if you never want subcategories</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="label_6">
|
<widget class="QLabel" name="label_6">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Tags browser - collapse when more items than:</string>
|
<string>Collapse when more items than:</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="buddy">
|
||||||
<cstring>opt_tags_browser_collapse_at</cstring>
|
<cstring>opt_tags_browser_collapse_at</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1">
|
<item>
|
||||||
<widget class="QSpinBox" name="opt_tags_browser_collapse_at">
|
<widget class="QSpinBox" name="opt_tags_browser_collapse_at">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>If a Tag Browser category has more than this number of items, it is divided up into sub-categories. Set to zero to disable.</string>
|
||||||
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>1000000</number>
|
<number>10000</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>5</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item row="15" column="0" colspan="2">
|
<item row="15" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
|
@ -174,7 +174,7 @@ class CybookOrizon(CybookOpus):
|
|||||||
class PocketBook360(CybookOpus):
|
class PocketBook360(CybookOpus):
|
||||||
|
|
||||||
manufacturer = 'PocketBook'
|
manufacturer = 'PocketBook'
|
||||||
name = 'PocketBook 360'
|
name = 'PocketBook 360 and newer models'
|
||||||
id = 'pocketbook360'
|
id = 'pocketbook360'
|
||||||
output_profile = 'cybook_opus'
|
output_profile = 'cybook_opus'
|
||||||
|
|
||||||
|
@ -2,10 +2,11 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
''' Code to manage ebook library'''
|
''' Code to manage ebook library'''
|
||||||
|
|
||||||
def db(path=None):
|
def db(path=None, read_only=False):
|
||||||
from calibre.library.database2 import LibraryDatabase2
|
from calibre.library.database2 import LibraryDatabase2
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
return LibraryDatabase2(path if path else prefs['library_path'])
|
return LibraryDatabase2(path if path else prefs['library_path'],
|
||||||
|
read_only=read_only)
|
||||||
|
|
||||||
|
|
||||||
def generate_test_db(library_path, # {{{
|
def generate_test_db(library_path, # {{{
|
||||||
|
@ -1005,7 +1005,6 @@ class EPUB_MOBI(CatalogPlugin):
|
|||||||
self.opts.log.warning(" invalidating cache at '%s'" % self.__archive_path)
|
self.opts.log.warning(" invalidating cache at '%s'" % self.__archive_path)
|
||||||
self.opts.log.warning(' thumb_width changed: %1.2f" => %1.2f"' %
|
self.opts.log.warning(' thumb_width changed: %1.2f" => %1.2f"' %
|
||||||
(float(cached_thumb_width),float(self.opts.thumb_width)))
|
(float(cached_thumb_width),float(self.opts.thumb_width)))
|
||||||
os.remove(self.__archive_path)
|
|
||||||
with ZipFile(self.__archive_path, mode='w') as zfw:
|
with ZipFile(self.__archive_path, mode='w') as zfw:
|
||||||
zfw.writestr("Catalog Thumbs Archive",'')
|
zfw.writestr("Catalog Thumbs Archive",'')
|
||||||
else:
|
else:
|
||||||
|
@ -102,7 +102,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
if self.user_version == 0:
|
if self.user_version == 0:
|
||||||
self.initialize_database()
|
self.initialize_database()
|
||||||
# remember to add any filter to the connect method in sqlite.py as well
|
# remember to add any filter to the connect method in sqlite.py as well
|
||||||
# so that various code taht connects directly will not complain about
|
# so that various code that connects directly will not complain about
|
||||||
# missing functions
|
# missing functions
|
||||||
self.books_list_filter = self.conn.create_dynamic_filter('books_list_filter')
|
self.books_list_filter = self.conn.create_dynamic_filter('books_list_filter')
|
||||||
# Store temporary tables in memory
|
# Store temporary tables in memory
|
||||||
@ -113,7 +113,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
def exists_at(cls, path):
|
def exists_at(cls, path):
|
||||||
return path and os.path.exists(os.path.join(path, 'metadata.db'))
|
return path and os.path.exists(os.path.join(path, 'metadata.db'))
|
||||||
|
|
||||||
def __init__(self, library_path, row_factory=False, default_prefs=None):
|
def __init__(self, library_path, row_factory=False, default_prefs=None,
|
||||||
|
read_only=False):
|
||||||
self.field_metadata = FieldMetadata()
|
self.field_metadata = FieldMetadata()
|
||||||
self.dirtied_queue = Queue()
|
self.dirtied_queue = Queue()
|
||||||
if not os.path.exists(library_path):
|
if not os.path.exists(library_path):
|
||||||
@ -127,6 +128,14 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
if isinstance(self.dbpath, unicode) and not iswindows:
|
if isinstance(self.dbpath, unicode) and not iswindows:
|
||||||
self.dbpath = self.dbpath.encode(filesystem_encoding)
|
self.dbpath = self.dbpath.encode(filesystem_encoding)
|
||||||
|
|
||||||
|
if read_only and os.path.exists(self.dbpath):
|
||||||
|
# Work on only a copy of metadata.db to ensure that
|
||||||
|
# metadata.db is not changed
|
||||||
|
pt = PersistentTemporaryFile('_metadata_ro.db')
|
||||||
|
pt.close()
|
||||||
|
shutil.copyfile(self.dbpath, pt.name)
|
||||||
|
self.dbpath = pt.name
|
||||||
|
|
||||||
apply_default_prefs = not os.path.exists(self.dbpath)
|
apply_default_prefs = not os.path.exists(self.dbpath)
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
@ -2769,7 +2778,6 @@ books_series_link feeds
|
|||||||
os.remove(dest)
|
os.remove(dest)
|
||||||
raise
|
raise
|
||||||
else:
|
else:
|
||||||
os.remove(self.dbpath)
|
|
||||||
shutil.copyfile(dest, self.dbpath)
|
shutil.copyfile(dest, self.dbpath)
|
||||||
self.connect()
|
self.connect()
|
||||||
self.initialize_dynamic()
|
self.initialize_dynamic()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user