mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #2186 (Remove eMail button does not work)
This commit is contained in:
parent
0fbd15a76d
commit
51fa4e639e
@ -263,7 +263,7 @@ class EmailAccounts(QAbstractTableModel):
|
|||||||
|
|
||||||
def remove(self, index):
|
def remove(self, index):
|
||||||
if index.isValid():
|
if index.isValid():
|
||||||
row = self.index.row()
|
row = index.row()
|
||||||
account = self.account_order[row]
|
account = self.account_order[row]
|
||||||
self.accounts.pop(account)
|
self.accounts.pop(account)
|
||||||
self.account_order = sorted(self.accounts.keys())
|
self.account_order = sorted(self.accounts.keys())
|
||||||
@ -425,6 +425,8 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
|||||||
self.email_view.resizeColumnsToContents()
|
self.email_view.resizeColumnsToContents()
|
||||||
self.connect(self.test_email_button, SIGNAL('clicked(bool)'),
|
self.connect(self.test_email_button, SIGNAL('clicked(bool)'),
|
||||||
self.test_email)
|
self.test_email)
|
||||||
|
self.connect(self.email_remove, SIGNAL('clicked()'),
|
||||||
|
self.remove_email_account)
|
||||||
|
|
||||||
def add_email_account(self, checked):
|
def add_email_account(self, checked):
|
||||||
index = self._email_accounts.add()
|
index = self._email_accounts.add()
|
||||||
@ -432,6 +434,10 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
|||||||
self.email_view.resizeColumnsToContents()
|
self.email_view.resizeColumnsToContents()
|
||||||
self.email_view.edit(index)
|
self.email_view.edit(index)
|
||||||
|
|
||||||
|
def remove_email_account(self, *args):
|
||||||
|
idx = self.email_view.currentIndex()
|
||||||
|
self._email_accounts.remove(idx)
|
||||||
|
|
||||||
def create_gmail_relay(self, *args):
|
def create_gmail_relay(self, *args):
|
||||||
self.relay_username.setText('@gmail.com')
|
self.relay_username.setText('@gmail.com')
|
||||||
self.relay_password.setText('')
|
self.relay_password.setText('')
|
||||||
|
@ -6,7 +6,7 @@ from PyQt4.QtCore import Qt, QByteArray, SIGNAL
|
|||||||
from PyQt4.QtGui import QGraphicsRectItem, QGraphicsScene, QPen, \
|
from PyQt4.QtGui import QGraphicsRectItem, QGraphicsScene, QPen, \
|
||||||
QBrush, QColor, QFontDatabase, \
|
QBrush, QColor, QFontDatabase, \
|
||||||
QGraphicsItem, QGraphicsLineItem
|
QGraphicsItem, QGraphicsLineItem
|
||||||
|
|
||||||
from calibre.gui2.lrf_renderer.text import TextBlock, FontLoader, COLOR, PixmapItem
|
from calibre.gui2.lrf_renderer.text import TextBlock, FontLoader, COLOR, PixmapItem
|
||||||
|
|
||||||
|
|
||||||
@ -25,17 +25,17 @@ class Pen(QPen):
|
|||||||
|
|
||||||
|
|
||||||
class ContentObject(object):
|
class ContentObject(object):
|
||||||
|
|
||||||
has_content = True
|
has_content = True
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.has_content = True
|
self.has_content = True
|
||||||
|
|
||||||
|
|
||||||
class RuledLine(QGraphicsLineItem, ContentObject):
|
class RuledLine(QGraphicsLineItem, ContentObject):
|
||||||
|
|
||||||
map = {'solid': Qt.SolidLine, 'dashed': Qt.DashLine, 'dotted': Qt.DotLine, 'double': Qt.DashDotLine}
|
map = {'solid': Qt.SolidLine, 'dashed': Qt.DashLine, 'dotted': Qt.DotLine, 'double': Qt.DashDotLine}
|
||||||
|
|
||||||
def __init__(self, rl):
|
def __init__(self, rl):
|
||||||
QGraphicsLineItem.__init__(self, 0, 0, rl.linelength, 0)
|
QGraphicsLineItem.__init__(self, 0, 0, rl.linelength, 0)
|
||||||
ContentObject.__init__(self)
|
ContentObject.__init__(self)
|
||||||
@ -43,7 +43,7 @@ class RuledLine(QGraphicsLineItem, ContentObject):
|
|||||||
|
|
||||||
|
|
||||||
class ImageBlock(PixmapItem, ContentObject):
|
class ImageBlock(PixmapItem, ContentObject):
|
||||||
|
|
||||||
def __init__(self, obj):
|
def __init__(self, obj):
|
||||||
ContentObject.__init__(self)
|
ContentObject.__init__(self)
|
||||||
x0, y0, x1, y1 = obj.attrs['x0'], obj.attrs['y0'], obj.attrs['x1'], obj.attrs['y1']
|
x0, y0, x1, y1 = obj.attrs['x0'], obj.attrs['y0'], obj.attrs['x1'], obj.attrs['y1']
|
||||||
@ -51,26 +51,26 @@ class ImageBlock(PixmapItem, ContentObject):
|
|||||||
data, encoding = refstream.stream, refstream.encoding
|
data, encoding = refstream.stream, refstream.encoding
|
||||||
PixmapItem.__init__(self, data, encoding, x0, y0, x1, y1, xsize, ysize)
|
PixmapItem.__init__(self, data, encoding, x0, y0, x1, y1, xsize, ysize)
|
||||||
self.block_id = obj.id
|
self.block_id = obj.id
|
||||||
|
|
||||||
|
|
||||||
def object_factory(container, obj, respect_max_y=False):
|
def object_factory(container, obj, respect_max_y=False):
|
||||||
if hasattr(obj, 'name'):
|
if hasattr(obj, 'name'):
|
||||||
if obj.name.endswith('TextBlock'):
|
if obj.name.endswith('TextBlock'):
|
||||||
|
|
||||||
return TextBlock(obj, container.font_loader, respect_max_y, container.text_width,
|
return TextBlock(obj, container.font_loader, respect_max_y, container.text_width,
|
||||||
container.logger, container.opts, container.ruby_tags,
|
container.logger, container.opts, container.ruby_tags,
|
||||||
container.link_activated)
|
container.link_activated)
|
||||||
elif obj.name.endswith('ImageBlock'):
|
elif obj.name.endswith('ImageBlock'):
|
||||||
return ImageBlock(obj)
|
return ImageBlock(obj)
|
||||||
elif isinstance(obj, _RuledLine):
|
elif isinstance(obj, _RuledLine):
|
||||||
return RuledLine(obj)
|
return RuledLine(obj)
|
||||||
elif isinstance(obj, __Canvas):
|
elif isinstance(obj, __Canvas):
|
||||||
return Canvas(container.font_loader, obj, container.logger, container.opts,
|
return Canvas(container.font_loader, obj, container.logger, container.opts,
|
||||||
container.ruby_tags, container.link_activated)
|
container.ruby_tags, container.link_activated)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
class _Canvas(QGraphicsRectItem):
|
class _Canvas(QGraphicsRectItem):
|
||||||
|
|
||||||
def __init__(self, font_loader, logger, opts, width=0, height=0, parent=None, x=0, y=0):
|
def __init__(self, font_loader, logger, opts, width=0, height=0, parent=None, x=0, y=0):
|
||||||
QGraphicsRectItem.__init__(self, x, y, width, height, parent)
|
QGraphicsRectItem.__init__(self, x, y, width, height, parent)
|
||||||
self.font_loader, self.logger, self.opts = font_loader, logger, opts
|
self.font_loader, self.logger, self.opts = font_loader, logger, opts
|
||||||
@ -79,7 +79,7 @@ class _Canvas(QGraphicsRectItem):
|
|||||||
pen = QPen()
|
pen = QPen()
|
||||||
pen.setStyle(Qt.NoPen)
|
pen.setStyle(Qt.NoPen)
|
||||||
self.setPen(pen)
|
self.setPen(pen)
|
||||||
|
|
||||||
def layout_block(self, block, x, y):
|
def layout_block(self, block, x, y):
|
||||||
if isinstance(block, TextBlock):
|
if isinstance(block, TextBlock):
|
||||||
self.layout_text_block(block, x, y)
|
self.layout_text_block(block, x, y)
|
||||||
@ -89,17 +89,17 @@ class _Canvas(QGraphicsRectItem):
|
|||||||
self.layout_image_block(block, x, y)
|
self.layout_image_block(block, x, y)
|
||||||
elif isinstance(block, Canvas):
|
elif isinstance(block, Canvas):
|
||||||
self.layout_canvas(block, x, y)
|
self.layout_canvas(block, x, y)
|
||||||
|
|
||||||
def layout_canvas(self, canvas, x, y):
|
def layout_canvas(self, canvas, x, y):
|
||||||
if canvas.max_y + y > self.max_y and y > 0:
|
if canvas.max_y + y > self.max_y and y > 0:
|
||||||
self.is_full = True
|
self.is_full = True
|
||||||
return
|
return
|
||||||
canvas.setParentItem(self)
|
canvas.setParentItem(self)
|
||||||
canvas.setPos(x, y)
|
canvas.setPos(x, y)
|
||||||
canvas.has_content = False
|
canvas.has_content = False
|
||||||
canvas.put_objects()
|
canvas.put_objects()
|
||||||
self.current_y += canvas.max_y
|
self.current_y += canvas.max_y
|
||||||
|
|
||||||
def layout_text_block(self, block, x, y):
|
def layout_text_block(self, block, x, y):
|
||||||
textwidth = block.bs.blockwidth - block.bs.sidemargin
|
textwidth = block.bs.blockwidth - block.bs.sidemargin
|
||||||
if block.max_y == 0 or not block.lines: # Empty block skipping
|
if block.max_y == 0 or not block.lines: # Empty block skipping
|
||||||
@ -128,15 +128,15 @@ class _Canvas(QGraphicsRectItem):
|
|||||||
line = block.peek()
|
line = block.peek()
|
||||||
self.current_y = y
|
self.current_y = y
|
||||||
self.is_full = not block_consumed
|
self.is_full = not block_consumed
|
||||||
|
|
||||||
def layout_ruled_line(self, rl, x, y):
|
def layout_ruled_line(self, rl, x, y):
|
||||||
br = rl.boundingRect()
|
br = rl.boundingRect()
|
||||||
rl.setParentItem(self)
|
rl.setParentItem(self)
|
||||||
rl.setPos(x, y+1)
|
rl.setPos(x, y+1)
|
||||||
self.current_y = y + br.height() + 1
|
self.current_y = y + br.height() + 1
|
||||||
self.is_full = y > self.max_y-5
|
self.is_full = y > self.max_y-5
|
||||||
rl.has_content = False
|
rl.has_content = False
|
||||||
|
|
||||||
def layout_image_block(self, ib, x, y):
|
def layout_image_block(self, ib, x, y):
|
||||||
mw, mh = self.max_x - x, self.max_y - y
|
mw, mh = self.max_x - x, self.max_y - y
|
||||||
if self.current_y + ib.height > self.max_y-y and self.current_y > 5:
|
if self.current_y + ib.height > self.max_y-y and self.current_y > 5:
|
||||||
@ -161,8 +161,8 @@ class _Canvas(QGraphicsRectItem):
|
|||||||
print
|
print
|
||||||
print ib.block_id, ib.has_content, self.is_full
|
print ib.block_id, ib.has_content, self.is_full
|
||||||
print self.current_y, self.max_y, y, br.height()
|
print self.current_y, self.max_y, y, br.height()
|
||||||
print
|
print
|
||||||
|
|
||||||
def search(self, phrase):
|
def search(self, phrase):
|
||||||
matches = []
|
matches = []
|
||||||
for child in self.children():
|
for child in self.children():
|
||||||
@ -174,11 +174,11 @@ class _Canvas(QGraphicsRectItem):
|
|||||||
else:
|
else:
|
||||||
matches.append(res)
|
matches.append(res)
|
||||||
return matches
|
return matches
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Canvas(_Canvas, ContentObject):
|
class Canvas(_Canvas, ContentObject):
|
||||||
|
|
||||||
def __init__(self, font_loader, canvas, logger, opts, ruby_tags, link_activated, width=0, height=0):
|
def __init__(self, font_loader, canvas, logger, opts, ruby_tags, link_activated, width=0, height=0):
|
||||||
if hasattr(canvas, 'canvaswidth'):
|
if hasattr(canvas, 'canvaswidth'):
|
||||||
width, height = canvas.canvaswidth, canvas.canvasheight
|
width, height = canvas.canvaswidth, canvas.canvasheight
|
||||||
@ -198,11 +198,11 @@ class Canvas(_Canvas, ContentObject):
|
|||||||
item = object_factory(self, obj, respect_max_y=True)
|
item = object_factory(self, obj, respect_max_y=True)
|
||||||
if item:
|
if item:
|
||||||
self.items.append((item, po.x1, po.y1))
|
self.items.append((item, po.x1, po.y1))
|
||||||
|
|
||||||
def put_objects(self):
|
def put_objects(self):
|
||||||
for block, x, y in self.items:
|
for block, x, y in self.items:
|
||||||
self.layout_block(block, x, y)
|
self.layout_block(block, x, y)
|
||||||
|
|
||||||
def layout_block(self, block, x, y):
|
def layout_block(self, block, x, y):
|
||||||
block.reset()
|
block.reset()
|
||||||
_Canvas.layout_block(self, block, x, y)
|
_Canvas.layout_block(self, block, x, y)
|
||||||
@ -212,17 +212,17 @@ class Header(Canvas):
|
|||||||
Canvas.__init__(self, font_loader, header, logger, opts, ruby_tags, link_activated,
|
Canvas.__init__(self, font_loader, header, logger, opts, ruby_tags, link_activated,
|
||||||
page_style.textwidth, page_style.headheight)
|
page_style.textwidth, page_style.headheight)
|
||||||
if opts.visual_debug:
|
if opts.visual_debug:
|
||||||
self.setPen(QPen(Qt.blue, 1, Qt.DashLine))
|
self.setPen(QPen(Qt.blue, 1, Qt.DashLine))
|
||||||
|
|
||||||
class Footer(Canvas):
|
class Footer(Canvas):
|
||||||
def __init__(self, font_loader, footer, page_style, logger, opts, ruby_tags, link_activated):
|
def __init__(self, font_loader, footer, page_style, logger, opts, ruby_tags, link_activated):
|
||||||
Canvas.__init__(self, font_loader, footer, logger, opts, ruby_tags, link_activated,
|
Canvas.__init__(self, font_loader, footer, logger, opts, ruby_tags, link_activated,
|
||||||
page_style.textwidth, page_style.footheight)
|
page_style.textwidth, page_style.footheight)
|
||||||
if opts.visual_debug:
|
if opts.visual_debug:
|
||||||
self.setPen(QPen(Qt.blue, 1, Qt.DashLine))
|
self.setPen(QPen(Qt.blue, 1, Qt.DashLine))
|
||||||
|
|
||||||
class Screen(_Canvas):
|
class Screen(_Canvas):
|
||||||
|
|
||||||
def __init__(self, font_loader, chapter, odd, logger, opts, ruby_tags, link_activated):
|
def __init__(self, font_loader, chapter, odd, logger, opts, ruby_tags, link_activated):
|
||||||
self.logger, self.opts = logger, opts
|
self.logger, self.opts = logger, opts
|
||||||
page_style = chapter.style
|
page_style = chapter.style
|
||||||
@ -231,11 +231,11 @@ class Screen(_Canvas):
|
|||||||
self.content_x = 0 + sidemargin
|
self.content_x = 0 + sidemargin
|
||||||
self.text_width = page_style.textwidth
|
self.text_width = page_style.textwidth
|
||||||
self.header_y = page_style.topmargin
|
self.header_y = page_style.topmargin
|
||||||
|
|
||||||
self.text_y = self.header_y + page_style.headheight + page_style.headsep
|
self.text_y = self.header_y + page_style.headheight + page_style.headsep
|
||||||
self.text_height = page_style.textheight
|
self.text_height = page_style.textheight
|
||||||
self.footer_y = self.text_y + self.text_height + (page_style.footspace - page_style.footheight)
|
self.footer_y = self.text_y + self.text_height + (page_style.footspace - page_style.footheight)
|
||||||
|
|
||||||
_Canvas.__init__(self, font_loader, logger, opts, width=width, height=self.footer_y+page_style.footheight)
|
_Canvas.__init__(self, font_loader, logger, opts, width=width, height=self.footer_y+page_style.footheight)
|
||||||
if opts.visual_debug:
|
if opts.visual_debug:
|
||||||
self.setPen(QPen(Qt.red, 1, Qt.SolidLine))
|
self.setPen(QPen(Qt.red, 1, Qt.SolidLine))
|
||||||
@ -256,57 +256,57 @@ class Screen(_Canvas):
|
|||||||
if footer:
|
if footer:
|
||||||
footer = Footer(font_loader, footer, page_style, logger, opts, ruby_tags, link_activated)
|
footer = Footer(font_loader, footer, page_style, logger, opts, ruby_tags, link_activated)
|
||||||
self.layout_canvas(footer, self.content_x, self.header_y)
|
self.layout_canvas(footer, self.content_x, self.header_y)
|
||||||
|
|
||||||
self.page = None
|
self.page = None
|
||||||
|
|
||||||
def set_page(self, page):
|
def set_page(self, page):
|
||||||
if self.page is not None and self.page.scene():
|
if self.page is not None and self.page.scene():
|
||||||
self.scene().removeItem(self.page)
|
self.scene().removeItem(self.page)
|
||||||
self.page = page
|
self.page = page
|
||||||
self.page.setPos(self.content_x, self.text_y)
|
self.page.setPos(self.content_x, self.text_y)
|
||||||
self.scene().addItem(self.page)
|
self.scene().addItem(self.page)
|
||||||
|
|
||||||
def remove(self):
|
def remove(self):
|
||||||
if self.scene():
|
if self.scene():
|
||||||
if self.page is not None and self.page.scene():
|
if self.page is not None and self.page.scene():
|
||||||
self.scene().removeItem(self.page)
|
self.scene().removeItem(self.page)
|
||||||
self.scene().removeItem(self)
|
self.scene().removeItem(self)
|
||||||
|
|
||||||
|
|
||||||
class Page(_Canvas):
|
class Page(_Canvas):
|
||||||
|
|
||||||
def __init__(self, font_loader, logger, opts, width, height):
|
def __init__(self, font_loader, logger, opts, width, height):
|
||||||
_Canvas.__init__(self, font_loader, logger, opts, width, height)
|
_Canvas.__init__(self, font_loader, logger, opts, width, height)
|
||||||
if opts.visual_debug:
|
if opts.visual_debug:
|
||||||
self.setPen(QPen(Qt.cyan, 1, Qt.DashLine))
|
self.setPen(QPen(Qt.cyan, 1, Qt.DashLine))
|
||||||
|
|
||||||
def id(self):
|
def id(self):
|
||||||
for child in self.children():
|
for child in self.children():
|
||||||
if hasattr(child, 'block_id'):
|
if hasattr(child, 'block_id'):
|
||||||
return child.block_id
|
return child.block_id
|
||||||
|
|
||||||
def add_block(self, block):
|
def add_block(self, block):
|
||||||
self.layout_block(block, 0, self.current_y)
|
self.layout_block(block, 0, self.current_y)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Chapter(object):
|
class Chapter(object):
|
||||||
|
|
||||||
num_of_pages = property(fget=lambda self: len(self.pages))
|
num_of_pages = property(fget=lambda self: len(self.pages))
|
||||||
|
|
||||||
def __init__(self, oddscreen, evenscreen, pages, object_to_page_map):
|
def __init__(self, oddscreen, evenscreen, pages, object_to_page_map):
|
||||||
self.oddscreen, self.evenscreen, self.pages, self.object_to_page_map = \
|
self.oddscreen, self.evenscreen, self.pages, self.object_to_page_map = \
|
||||||
oddscreen, evenscreen, pages, object_to_page_map
|
oddscreen, evenscreen, pages, object_to_page_map
|
||||||
|
|
||||||
def page_of_object(self, id):
|
def page_of_object(self, id):
|
||||||
return self.object_to_page_map[id]
|
return self.object_to_page_map[id]
|
||||||
|
|
||||||
def page(self, num):
|
def page(self, num):
|
||||||
return self.pages[num-1]
|
return self.pages[num-1]
|
||||||
|
|
||||||
def screen(self, odd):
|
def screen(self, odd):
|
||||||
return self.oddscreen if odd else self.evenscreen
|
return self.oddscreen if odd else self.evenscreen
|
||||||
|
|
||||||
def search(self, phrase):
|
def search(self, phrase):
|
||||||
pages = []
|
pages = []
|
||||||
for i in range(len(self.pages)):
|
for i in range(len(self.pages)):
|
||||||
@ -314,36 +314,36 @@ class Chapter(object):
|
|||||||
if matches:
|
if matches:
|
||||||
pages.append([i, matches])
|
pages.append([i, matches])
|
||||||
return pages
|
return pages
|
||||||
|
|
||||||
|
|
||||||
class History(collections.deque):
|
class History(collections.deque):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
collections.deque.__init__(self)
|
collections.deque.__init__(self)
|
||||||
self.pos = 0
|
self.pos = 0
|
||||||
|
|
||||||
def back(self):
|
def back(self):
|
||||||
if self.pos - 1 < 0: return None
|
if self.pos - 1 < 0: return None
|
||||||
self.pos -= 1
|
self.pos -= 1
|
||||||
return self[self.pos]
|
return self[self.pos]
|
||||||
|
|
||||||
def forward(self):
|
def forward(self):
|
||||||
if self.pos + 1 >= len(self): return None
|
if self.pos + 1 >= len(self): return None
|
||||||
self.pos += 1
|
self.pos += 1
|
||||||
return self[self.pos]
|
return self[self.pos]
|
||||||
|
|
||||||
def add(self, item):
|
def add(self, item):
|
||||||
while len(self) > self.pos+1:
|
while len(self) > self.pos+1:
|
||||||
self.pop()
|
self.pop()
|
||||||
self.append(item)
|
self.append(item)
|
||||||
self.pos += 1
|
self.pos += 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Document(QGraphicsScene):
|
class Document(QGraphicsScene):
|
||||||
|
|
||||||
num_of_pages = property(fget=lambda self: sum(self.chapter_layout))
|
num_of_pages = property(fget=lambda self: sum(self.chapter_layout))
|
||||||
|
|
||||||
def __init__(self, logger, opts):
|
def __init__(self, logger, opts):
|
||||||
QGraphicsScene.__init__(self)
|
QGraphicsScene.__init__(self)
|
||||||
self.logger, self.opts = logger, opts
|
self.logger, self.opts = logger, opts
|
||||||
@ -358,23 +358,23 @@ class Document(QGraphicsScene):
|
|||||||
self.last_search = iter([])
|
self.last_search = iter([])
|
||||||
if not opts.white_background:
|
if not opts.white_background:
|
||||||
self.setBackgroundBrush(QBrush(QColor(0xee, 0xee, 0xee)))
|
self.setBackgroundBrush(QBrush(QColor(0xee, 0xee, 0xee)))
|
||||||
|
|
||||||
def page_of(self, oid):
|
def page_of(self, oid):
|
||||||
for chapter in self.chapters:
|
for chapter in self.chapters:
|
||||||
if oid in chapter.object_to_page_map:
|
if oid in chapter.object_to_page_map:
|
||||||
return chapter.object_to_page_map[oid]
|
return chapter.object_to_page_map[oid]
|
||||||
|
|
||||||
def get_page_num(self, chapterid, objid):
|
def get_page_num(self, chapterid, objid):
|
||||||
cnum = self.chapter_map[chapterid]
|
cnum = self.chapter_map[chapterid]
|
||||||
page = self.chapters[cnum].object_to_page_map[objid]
|
page = self.chapters[cnum].object_to_page_map[objid]
|
||||||
return sum(self.chapter_layout[:cnum])+page
|
return sum(self.chapter_layout[:cnum])+page
|
||||||
|
|
||||||
def add_to_history(self):
|
def add_to_history(self):
|
||||||
page = self.chapter_page(self.current_page)[1]
|
page = self.chapter_page(self.current_page)[1]
|
||||||
page_id = page.id()
|
page_id = page.id()
|
||||||
if page_id is not None:
|
if page_id is not None:
|
||||||
self.history.add(page_id)
|
self.history.add(page_id)
|
||||||
|
|
||||||
def link_activated(self, objid, on_creation=None):
|
def link_activated(self, objid, on_creation=None):
|
||||||
if on_creation is None:
|
if on_creation is None:
|
||||||
cid, oid = self.link_map[objid]
|
cid, oid = self.link_map[objid]
|
||||||
@ -385,30 +385,30 @@ class Document(QGraphicsScene):
|
|||||||
else:
|
else:
|
||||||
jb = self.objects[objid]
|
jb = self.objects[objid]
|
||||||
self.link_map[objid] = (jb.refpage, jb.refobj)
|
self.link_map[objid] = (jb.refpage, jb.refobj)
|
||||||
|
|
||||||
|
|
||||||
def back(self):
|
def back(self):
|
||||||
oid = self.history.back()
|
oid = self.history.back()
|
||||||
if oid is not None:
|
if oid is not None:
|
||||||
page = self.page_of(oid)
|
page = self.page_of(oid)
|
||||||
self.show_page(page)
|
self.show_page(page)
|
||||||
|
|
||||||
def forward(self):
|
def forward(self):
|
||||||
oid = self.history.forward()
|
oid = self.history.forward()
|
||||||
if oid is not None:
|
if oid is not None:
|
||||||
page = self.page_of(oid)
|
page = self.page_of(oid)
|
||||||
self.show_page(page)
|
self.show_page(page)
|
||||||
|
|
||||||
|
|
||||||
def load_fonts(self, lrf, load_substitutions=True):
|
def load_fonts(self, lrf, load_substitutions=True):
|
||||||
font_map = {}
|
font_map = {}
|
||||||
|
|
||||||
for font in lrf.font_map:
|
for font in lrf.font_map:
|
||||||
fdata = QByteArray(lrf.font_map[font].data)
|
fdata = QByteArray(lrf.font_map[font].data)
|
||||||
id = QFontDatabase.addApplicationFontFromData(fdata)
|
id = QFontDatabase.addApplicationFontFromData(fdata)
|
||||||
if id != -1:
|
if id != -1:
|
||||||
font_map[font] = [str(i) for i in QFontDatabase.applicationFontFamilies(id)][0]
|
font_map[font] = [str(i) for i in QFontDatabase.applicationFontFamilies(id)][0]
|
||||||
|
|
||||||
if load_substitutions:
|
if load_substitutions:
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_BoldItalic
|
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_BoldItalic
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_BoldItalic.font_data))
|
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_BoldItalic.font_data))
|
||||||
@ -434,10 +434,10 @@ class Document(QGraphicsScene):
|
|||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_BoldItalic.font_data))
|
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_BoldItalic.font_data))
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Regular
|
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Regular
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Regular.font_data))
|
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Regular.font_data))
|
||||||
|
|
||||||
self.font_loader = FontLoader(font_map, self.dpi)
|
self.font_loader = FontLoader(font_map, self.dpi)
|
||||||
|
|
||||||
|
|
||||||
def render_chapter(self, chapter, lrf):
|
def render_chapter(self, chapter, lrf):
|
||||||
oddscreen, evenscreen = Screen(self.font_loader, chapter, True, self.logger, self.opts, self.ruby_tags, self.link_activated), \
|
oddscreen, evenscreen = Screen(self.font_loader, chapter, True, self.logger, self.opts, self.ruby_tags, self.link_activated), \
|
||||||
Screen(self.font_loader, chapter, False, self.logger, self.opts, self.ruby_tags, self.link_activated)
|
Screen(self.font_loader, chapter, False, self.logger, self.opts, self.ruby_tags, self.link_activated)
|
||||||
@ -459,36 +459,36 @@ class Document(QGraphicsScene):
|
|||||||
if current_page:
|
if current_page:
|
||||||
pages.append(current_page)
|
pages.append(current_page)
|
||||||
self.chapters.append(Chapter(oddscreen, evenscreen, pages, object_to_page_map))
|
self.chapters.append(Chapter(oddscreen, evenscreen, pages, object_to_page_map))
|
||||||
self.chapter_map[chapter.id] = len(self.chapters)-1
|
self.chapter_map[chapter.id] = len(self.chapters)-1
|
||||||
|
|
||||||
|
|
||||||
def render(self, lrf, load_substitutions=True):
|
def render(self, lrf, load_substitutions=True):
|
||||||
self.dpi = lrf.device_info.dpi/10.
|
self.dpi = lrf.device_info.dpi/10.
|
||||||
self.ruby_tags = dict(**lrf.ruby_tags)
|
self.ruby_tags = dict(**lrf.ruby_tags)
|
||||||
self.load_fonts(lrf, load_substitutions)
|
self.load_fonts(lrf, load_substitutions)
|
||||||
self.objects = lrf.objects
|
self.objects = lrf.objects
|
||||||
|
|
||||||
num_chaps = 0
|
num_chaps = 0
|
||||||
for pt in lrf.page_trees:
|
for pt in lrf.page_trees:
|
||||||
for chapter in pt:
|
for chapter in pt:
|
||||||
num_chaps += 1
|
num_chaps += 1
|
||||||
self.emit(SIGNAL('chapter_rendered(int)'), num_chaps)
|
self.emit(SIGNAL('chapter_rendered(int)'), num_chaps)
|
||||||
|
|
||||||
for pt in lrf.page_trees:
|
for pt in lrf.page_trees:
|
||||||
for chapter in pt:
|
for chapter in pt:
|
||||||
self.render_chapter(chapter, lrf)
|
self.render_chapter(chapter, lrf)
|
||||||
|
|
||||||
self.emit(SIGNAL('chapter_rendered(int)'), -1)
|
self.emit(SIGNAL('chapter_rendered(int)'), -1)
|
||||||
self.chapter_layout = [i.num_of_pages for i in self.chapters]
|
self.chapter_layout = [i.num_of_pages for i in self.chapters]
|
||||||
self.objects = None
|
self.objects = None
|
||||||
|
|
||||||
def chapter_page(self, num):
|
def chapter_page(self, num):
|
||||||
for chapter in self.chapters:
|
for chapter in self.chapters:
|
||||||
if num <= chapter.num_of_pages:
|
if num <= chapter.num_of_pages:
|
||||||
break
|
break
|
||||||
num -= chapter.num_of_pages
|
num -= chapter.num_of_pages
|
||||||
return chapter, chapter.page(num)
|
return chapter, chapter.page(num)
|
||||||
|
|
||||||
def show_page(self, num):
|
def show_page(self, num):
|
||||||
if num < 1 or num > self.num_of_pages or num == self.current_page:
|
if num < 1 or num > self.num_of_pages or num == self.current_page:
|
||||||
return
|
return
|
||||||
@ -496,33 +496,33 @@ class Document(QGraphicsScene):
|
|||||||
self.current_page = num
|
self.current_page = num
|
||||||
chapter, page = self.chapter_page(num)
|
chapter, page = self.chapter_page(num)
|
||||||
screen = chapter.screen(odd)
|
screen = chapter.screen(odd)
|
||||||
|
|
||||||
if self.current_screen is not None and self.current_screen is not screen:
|
if self.current_screen is not None and self.current_screen is not screen:
|
||||||
self.current_screen.remove()
|
self.current_screen.remove()
|
||||||
self.current_screen = screen
|
self.current_screen = screen
|
||||||
if self.current_screen.scene() is None:
|
if self.current_screen.scene() is None:
|
||||||
self.addItem(self.current_screen)
|
self.addItem(self.current_screen)
|
||||||
|
|
||||||
self.current_screen.set_page(page)
|
self.current_screen.set_page(page)
|
||||||
self.emit(SIGNAL('page_changed(PyQt_PyObject)'), self.current_page)
|
self.emit(SIGNAL('page_changed(PyQt_PyObject)'), self.current_page)
|
||||||
|
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
self.next_by(1)
|
self.next_by(1)
|
||||||
|
|
||||||
def previous(self):
|
def previous(self):
|
||||||
self.previous_by(1)
|
self.previous_by(1)
|
||||||
|
|
||||||
def next_by(self, num):
|
def next_by(self, num):
|
||||||
self.show_page(self.current_page + num)
|
self.show_page(self.current_page + num)
|
||||||
|
|
||||||
def previous_by(self, num):
|
def previous_by(self, num):
|
||||||
self.show_page(self.current_page - num)
|
self.show_page(self.current_page - num)
|
||||||
|
|
||||||
def show_page_at_percent(self, p):
|
def show_page_at_percent(self, p):
|
||||||
num = self.num_of_pages*(p/100.)
|
num = self.num_of_pages*(p/100.)
|
||||||
self.show_page(num)
|
self.show_page(num)
|
||||||
|
|
||||||
def search(self, phrase):
|
def search(self, phrase):
|
||||||
if not phrase:
|
if not phrase:
|
||||||
return
|
return
|
||||||
@ -534,7 +534,7 @@ class Document(QGraphicsScene):
|
|||||||
matches += cmatches
|
matches += cmatches
|
||||||
self.last_search = itertools.cycle(matches)
|
self.last_search = itertools.cycle(matches)
|
||||||
self.next_match()
|
self.next_match()
|
||||||
|
|
||||||
def next_match(self):
|
def next_match(self):
|
||||||
page_num = self.last_search.next()[0]
|
page_num = self.last_search.next()[0]
|
||||||
if self.current_page == page_num:
|
if self.current_page == page_num:
|
||||||
@ -542,4 +542,4 @@ class Document(QGraphicsScene):
|
|||||||
else:
|
else:
|
||||||
self.add_to_history()
|
self.add_to_history()
|
||||||
self.show_page(page_num)
|
self.show_page(page_num)
|
||||||
|
|
||||||
|
@ -26,7 +26,8 @@ def initview(request):
|
|||||||
5. The feeds for the site (ids)
|
5. The feeds for the site (ids)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
site_id, cachekey = fjlib.getcurrentsite(request.META['HTTP_HOST'], \
|
site_id, cachekey = fjlib.getcurrentsite(request.META.get('HTTP_HOST',
|
||||||
|
'planet.calibre-ebook.com'), \
|
||||||
request.META.get('REQUEST_URI', request.META.get('PATH_INFO', '/')), \
|
request.META.get('REQUEST_URI', request.META.get('PATH_INFO', '/')), \
|
||||||
request.META['QUERY_STRING'])
|
request.META['QUERY_STRING'])
|
||||||
response = fjcache.cache_get(site_id, cachekey)
|
response = fjcache.cache_get(site_id, cachekey)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
ssh divok "cd /usr/local/calibre && bzr pull"
|
ssh divok "cd /usr/local/calibre && bzr up"
|
||||||
ssh divok /etc/init.d/apache2 graceful
|
ssh divok /etc/init.d/apache2 graceful
|
||||||
|
@ -667,9 +667,16 @@ class stage3(OptionlessCommand):
|
|||||||
def misc(cls):
|
def misc(cls):
|
||||||
check_call('ssh divok rm -f %s/calibre-\*.tar.gz'%DOWNLOADS, shell=True)
|
check_call('ssh divok rm -f %s/calibre-\*.tar.gz'%DOWNLOADS, shell=True)
|
||||||
check_call('scp dist/calibre-*.tar.gz divok:%s/'%DOWNLOADS, shell=True)
|
check_call('scp dist/calibre-*.tar.gz divok:%s/'%DOWNLOADS, shell=True)
|
||||||
|
check_call('gpg --armor --detach-sign dist/calibre-*.tar.gz',
|
||||||
|
shell=True)
|
||||||
|
check_call('scp dist/calibre-*.tar.gz.asc divok:%s/signatures/'%DOWNLOADS,
|
||||||
|
shell=True)
|
||||||
check_call('''rm -rf dist/* build/*''', shell=True)
|
check_call('''rm -rf dist/* build/*''', shell=True)
|
||||||
check_call('ssh divok bzr update /var/www/calibre.kovidgoyal.net/calibre/',
|
check_call('ssh divok bzr update /var/www/calibre.kovidgoyal.net/calibre/',
|
||||||
shell=True)
|
shell=True)
|
||||||
|
check_call('ssh divok bzr update /usr/local/calibre',
|
||||||
|
shell=True)
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
OptionlessCommand.run(self)
|
OptionlessCommand.run(self)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user