fix onHeight error by not reloading toolbar each note

This commit is contained in:
Damien Elmes 2016-07-07 17:29:53 +10:00
parent 258a10edc7
commit 9c569ac35c

View file

@ -379,6 +379,7 @@ class Browser(QMainWindow):
def setupToolbar(self): def setupToolbar(self):
self.toolbarWeb = AnkiWebView() self.toolbarWeb = AnkiWebView()
self.toolbarWeb.title = "browser toolbar"
self.toolbar = BrowserToolbar(self.mw, self.toolbarWeb, self) self.toolbar = BrowserToolbar(self.mw, self.toolbarWeb, self)
self.form.verticalLayout_3.insertWidget(0, self.toolbarWeb) self.form.verticalLayout_3.insertWidget(0, self.toolbarWeb)
self.toolbar.draw() self.toolbar.draw()
@ -600,7 +601,7 @@ class Browser(QMainWindow):
self.editor.card = self.card self.editor.card = self.card
self.singleCard = True self.singleCard = True
self._renderPreview(True) self._renderPreview(True)
self.toolbar.draw() self.toolbar.update()
def refreshCurrentCard(self, note): def refreshCurrentCard(self, note):
self.model.refreshNote(note) self.model.refreshNote(note)
@ -1693,44 +1694,59 @@ class BrowserToolbar(Toolbar):
Toolbar.__init__(self, mw, web) Toolbar.__init__(self, mw, web)
def draw(self): def draw(self):
mark = self.browser.isMarked() self._loaded = False
pause = self.browser.isSuspended()
def borderImg(link, icon, on, title, tooltip=None):
if on:
fmt = '''\
<a class=hitem title="%s" href=# onclick="pycmd('%s')">\
<img valign=bottom style='border: 1px solid #aaa;' src="qrc:/icons/%s.png"> %s</a>'''
else:
fmt = '''\
<a class=hitem title="%s" href=# onclick="pycmd('%s')"><img style="padding: 1px;" valign=bottom src="qrc:/icons/%s.png"> %s</a>'''
return fmt % (tooltip or title, link, icon, title)
right = "<div>"
right += borderImg("add", "add16", False, _("Add"),
shortcut(_("Add Note (Ctrl+E)")))
right += borderImg("info", "info", False, _("Info"),
shortcut(_("Card Info (Ctrl+Shift+I)")))
right += borderImg("mark", "star16", mark, _("Mark"),
shortcut(_("Mark Note (Ctrl+K)")))
right += borderImg("pause", "pause16", pause, _("Suspend"),
shortcut(_("Suspend Card (Ctrl+J)")))
right += borderImg("setDeck", "deck16", False, _("Change Deck"),
shortcut(_("Move To Deck (Ctrl+D)")))
right += borderImg("addtag", "addtag16", False, _("Add Tags"),
shortcut(_("Bulk Add Tags (Ctrl+Shift+T)")))
right += borderImg("deletetag", "deletetag16", False,
_("Remove Tags"), shortcut(_(
"Bulk Remove Tags (Ctrl+Alt+T)")))
right += borderImg("delete", "delete16", False, _("Delete"))
right += "</div>"
self.web.onBridgeCmd = self._linkHandler self.web.onBridgeCmd = self._linkHandler
self.web.onLoadFinished = self.onLoaded self.web.onLoadFinished = self.onLoaded
self.web.stdHtml(self._body % ( self.web.stdHtml(self.html(), self.css())
"",
right, ""), self._css + """ def onLoaded(self):
super().onLoaded()
self._loaded = True
self.update()
def update(self):
if not self._loaded:
return
for link, enabled in (
("mark", self.browser.isMarked()),
("pause", self.browser.isSuspended())):
if enabled:
self.web.eval("$('#%s').addClass('buttonOn')" % link)
else:
self.web.eval("$('#%s').removeClass('buttonOn')" % link)
def html(self):
def borderImg(link, icon, title, tooltip=None):
fmt = '''\
<a class=hitem title="%s" href=# onclick="pycmd('%s')"><img id=%s valign=bottom src="qrc:/icons/%s.png"> %s</a>'''
return fmt % (tooltip or title, link, link, icon, title)
right = "<div>"
right += borderImg("add", "add16", _("Add"),
shortcut(_("Add Note (Ctrl+E)")))
right += borderImg("info", "info", _("Info"),
shortcut(_("Card Info (Ctrl+Shift+I)")))
right += borderImg("mark", "star16", _("Mark"),
shortcut(_("Mark Note (Ctrl+K)")))
right += borderImg("pause", "pause16", _("Suspend"),
shortcut(_("Suspend Card (Ctrl+J)")))
right += borderImg("setDeck", "deck16", _("Change Deck"),
shortcut(_("Move To Deck (Ctrl+D)")))
right += borderImg("addtag", "addtag16", _("Add Tags"),
shortcut(_("Bulk Add Tags (Ctrl+Shift+T)")))
right += borderImg("deletetag", "deletetag16", _("Remove Tags"), shortcut(_(
"Bulk Remove Tags (Ctrl+Alt+T)")))
right += borderImg("delete", "delete16", _("Delete"))
right += "</div>"
return self._body % ("", right, "")
def css(self):
return self._css + """
#header { font-weight: normal; } #header { font-weight: normal; }
a { margin-right: 1em; } a { margin-right: 1em; }
.hitem { overflow: hidden; white-space: nowrap; } .hitem { overflow: hidden; white-space: nowrap; }
""") .hitem img { padding: 1px; }
.buttonOn { border: 1px solid #aaa; padding: 0px !important; }
"""
# Link handling # Link handling
###################################################################### ######################################################################