cb4960 Wrote:Good call. I was using only the "Known Words" section with: C:\Program Files\Anki\Decks\Japanese Vocab.anki. I tried leaving that field blank and Rikaisama started working again. I have no dire need to use this option, so it's all good. Thank you very much.JackBS Wrote:SettingsAdditional question: Are you using either the Known Words or To-Do Words feature in the Vocab tab of the preferences dialog?
- Rikaichan 2.07. Dictionary file 2.01.130701. Rikaisama 20.1. Firefox 26.0.
- General: (The following are on) Highlight text. Translate alt/title tags. Automatically use selected text in Lookupbar. Show Lookupbar at the bottom. Show icon in statusbar. Show mini help. Rounded corners.
- Startup: (Everything off)
- Menus: Context Menu Toggle. ToolsMenu Toggle.
- EPWING: Kenkyuusha 5th ed.
2014-02-08, 5:15 pm
2014-02-09, 10:28 am
JackBS Wrote:You're welcome. The Known Words features only supports plain text files. If you'd like, Anki allows you to export your Anki deck to a tab-separated text file.cb4960 Wrote:Good call. I was using only the "Known Words" section with: C:\Program Files\Anki\Decks\Japanese Vocab.anki. I tried leaving that field blank and Rikaisama started working again. I have no dire need to use this option, so it's all good. Thank you very much.JackBS Wrote:SettingsAdditional question: Are you using either the Known Words or To-Do Words feature in the Vocab tab of the preferences dialog?
- Rikaichan 2.07. Dictionary file 2.01.130701. Rikaisama 20.1. Firefox 26.0.
- General: (The following are on) Highlight text. Translate alt/title tags. Automatically use selected text in Lookupbar. Show Lookupbar at the bottom. Show icon in statusbar. Show mini help. Rounded corners.
- Startup: (Everything off)
- Menus: Context Menu Toggle. ToolsMenu Toggle.
- EPWING: Kenkyuusha 5th ed.
Edited: 2014-02-09, 10:28 am
2014-03-06, 9:57 pm
# -*- coding: utf-8 -*-
#
# Copyright © 2013 Christopher Brochtrup
#
# This file is part of Real-Time Import.
#
# Real-Time Import is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Real-Time Import is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Real-Time Import. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
# Version: 1.1
# Contact: cb4960@gmail.com
###############################################################################
#### Includes ####
import os, re, codecs
import PyQt4.QtNetwork
import aqt
import anki
#### Configuration ####
# Listen on this port for incoming datagrams from Rikaisama
PORT = 49600
# True = allow duplicate notes to be added
ALLOW_DUPLICATES = False
# Debugging
DEBUG = True
LOG_FILE = os.path.join(aqt.mw.pm.base, "addons", "real_time_import.log");
CLEAR_LOG_AT_STARTUP = True
#### Code ####
# Note: This class was adapted from the Yomichan plugin by Alex Yatskov.
class Anki:
def addNote(self, deckName, modelName, fields, tags=list()):
note = self.createNote(deckName, modelName, fields, tags)
if note is not None:
collection = self.collection()
self.window().checkpoint("Add Note from Real-Time Import")
collection.addNote(note)
collection.autosave()
self.startEditing()
showTooltip("Note added.", 1000);
writeLog("Note added.")
return note.id
def canAddNote(self, deckName, modelName, fields):
return bool(self.createNote(deckName, modelName, fields))
def createNote(self, deckName, modelName, fields, tags=list()):
model = self.models().byName(modelName)
if model is None:
return None
deck = self.decks().byName(deckName)
if deck is None:
return None
note = anki.notes.Note(self.collection(), model)
note.model()['did'] = deck['id']
note.tags = tags
try:
for name, value in fields.items():
note[name] = value
except:
showTooltip("Error, current note type does not contain the following field: '" + name + "'", 5000);
writeLog("Anki.createNote: Error, current note type does not contain the following field: '" + name + "'")
return None
dupOrEmpty = note.dupeOrEmpty()
if dupOrEmpty == 1:
showTooltip("Error, first field in note is empty!");
writeLog("Anki.createNote: first field in note is empty!")
return note
elif dupOrEmpty == 2 and not ALLOW_DUPLICATES:
showTooltip("Error, duplicate note!");
writeLog("Anki.createNote: Error, duplicate note!")
else:
return note
def browseNote(self, noteId):
browser = aqt.dialogs.open('Browser', self.window())
browser.form.searchEdit.lineEdit().setText('nid:{0}'.format(noteId))
browser.onSearch()
def startEditing(self):
self.window().requireReset()
def stopEditing(self):
if self.collection():
self.window().maybeReset()
def window(self):
return aqt.mw
def addUiAction(self, action):
self.window().form.menuTools.addAction(action)
def collection(self):
return self.window().col
def models(self):
return self.collection().models
def modelNames(self):
return self.models().allNames()
def modelFieldNames(self, modelName):
model = self.models().byName(modelName)
if model is not None:
return [field['name'] for field in model['flds']]
def decks(self):
return self.collection().decks
def deckNames(self):
return self.decks().allNames()
def curModelID(self):
return self.collection().conf['curModel']
def curDeckID(self):
return self.collection().conf['curDeck']
def curModel(self):
return self.models().get(self.curModelID())
def curDeck(self):
return self.decks().get(self.curDeckID())
def curModelName(self):
return self.curModel()['name']
def curDeckName(self):
return self.curDeck()['name']
class MessageCommand():
def __init__(self, filename):
writeLog("MessageCommand.__init__: START")
self.anki = Anki()
self.version = None
self.command = None
self.fieldNames = []
self.tags = []
try:
self.file = codecs.open(filename, "r", "utf-8-sig")
except:
showTooltip("Error, unable to open \"" + filename + "\"");
writeLog("MessageCommand.__init__: Unable to open \"" + filename + "\"")
return
if self.parseHeader():
self.performCommand()
self.file.close()
def performCommand(self):
writeLog("MessageCommand.performCommand: START")
if self.command == "add":
self.doAdd()
else:
showTooltip("Error, invalid command = " + self.command);
writeLog("MessageCommand.performCommand: Invalid command = " + self.command)
def doAdd(self):
writeLog("MessageCommand.doAdd: START")
if self.version == "1":
self.parseFieldNames()
if len(self.fieldNames) > 0 and len(self.fieldNames[0]) > 0:
self.parseTags()
for line in self.file:
writeLog("MessageCommand.doAdd: line = " + line.strip())
self.addLineToDeck(line.strip())
else:
showTooltip("Error, no field names specified!");
writeLog("MessageCommand.doAdd: No field names specified")
else:
writeLog("MessageCommand.doAdd: Unsupported version = " + self.version)
def parseHeader(self):
status = True
# Get the command and command version
try:
items = re.split("\t", self.file.readline())
self.command = items[0].strip().lower()
self.version = items[1].strip()
writeLog("MessageCommand.parseHeader: command = " + unicode(self.command))
writeLog("MessageCommand.parseHeader: version = " + unicode(self.version))
except:
showTooltip("Error, invalid header line!");
writeLog("MessageCommand.parseHeader: Invalid header line")
status = False
return status
def parseFieldNames(self):
# Get the field names
self.fieldNames = re.split("\t", self.file.readline())
self.fieldNames = [i.strip() for i in self.fieldNames] # strip
writeLog("MessageCommand.parseFieldNames: fieldNames = " + unicode(self.fieldNames))
def parseTags(self):
# Get the tags
self.tags = re.split(" ", self.file.readline())
self.tags = [i.strip() for i in self.tags] # strip
writeLog("MessageCommand.parseTags: tags = \"" + unicode(self.tags) + "\"")
def addLineToDeck(self, line):
# Get the field contents
fields = re.split("\t", line)
# Does line contain the correct # of fields (according to given field names)?
if len(fields) >= len(self.fieldNames):
# Make a dictionary in the format {field_name: field_contents}
ankiFieldInfo = {}
for i in range(len(fields)):
ankiFieldInfo[self.fieldNames[i]] = fields[i].strip()
writeLog("MessageCommand.addLineToDeck: ankiFieldInfo = " + unicode(ankiFieldInfo))
# Try to add the card to the deck
noteId = self.anki.addNote(self.anki.curDeckName(), self.anki.curModelName(),
ankiFieldInfo, self.tags)
# Anki won't add the card if duplicate, fields names are incorrect, etc.
if not noteId:
writeLog("MessageCommand.addLineToDeck: Could not add to deck!")
else:
showTooltip("Error, too few fields, line not added!");
writeLog("MessageCommand.addLineToDeck: Too few fields, line not added!")
def clearLog():
if DEBUG:
file = codecs.open(LOG_FILE, "w", "utf-8-sig")
file.write("")
file.close()
def writeLog(text):
if DEBUG:
file = codecs.open(LOG_FILE, "a", "utf-8-sig")
file.write(text + "\n")
file.close()
def showTooltip(text, timeOut=3000):
aqt.utils.tooltip("<b>Real-Time Import</b><br />" + text, timeOut)
def processPendingDatagrams():
writeLog("processPendingDatagrams: START")
datagram, host, port = udpSocket.readDatagram(udpSocket.pendingDatagramSize())
filename = unicode(datagram.strip())
writeLog("processPendingDatagrams: filename = " + filename)
# Don't add if in deck browser (Note: it will work, but might be confusing)
if aqt.mw.state != "deckBrowser":
msgCmd = MessageCommand(filename);
else:
showTooltip("Error, you must open a deck first!");
#### Main ####
if CLEAR_LOG_AT_STARTUP:
clearLog()
writeLog("-----------------------------------------------------------")
writeLog("Main: START")
try:
udpSocket = PyQt4.QtNetwork.QUdpSocket()
udpSocket.bind(PORT);
udpSocket.readyRead.connect(processPendingDatagrams)
except:
writeLog("Main: Could not setup connection!")
#
# Copyright © 2013 Christopher Brochtrup
#
# This file is part of Real-Time Import.
#
# Real-Time Import is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Real-Time Import is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Real-Time Import. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
# Version: 1.1
# Contact: cb4960@gmail.com
###############################################################################
#### Includes ####
import os, re, codecs
import PyQt4.QtNetwork
import aqt
import anki
#### Configuration ####
# Listen on this port for incoming datagrams from Rikaisama
PORT = 49600
# True = allow duplicate notes to be added
ALLOW_DUPLICATES = False
# Debugging
DEBUG = True
LOG_FILE = os.path.join(aqt.mw.pm.base, "addons", "real_time_import.log");
CLEAR_LOG_AT_STARTUP = True
#### Code ####
# Note: This class was adapted from the Yomichan plugin by Alex Yatskov.
class Anki:
def addNote(self, deckName, modelName, fields, tags=list()):
note = self.createNote(deckName, modelName, fields, tags)
if note is not None:
collection = self.collection()
self.window().checkpoint("Add Note from Real-Time Import")
collection.addNote(note)
collection.autosave()
self.startEditing()
showTooltip("Note added.", 1000);
writeLog("Note added.")
return note.id
def canAddNote(self, deckName, modelName, fields):
return bool(self.createNote(deckName, modelName, fields))
def createNote(self, deckName, modelName, fields, tags=list()):
model = self.models().byName(modelName)
if model is None:
return None
deck = self.decks().byName(deckName)
if deck is None:
return None
note = anki.notes.Note(self.collection(), model)
note.model()['did'] = deck['id']
note.tags = tags
try:
for name, value in fields.items():
note[name] = value
except:
showTooltip("Error, current note type does not contain the following field: '" + name + "'", 5000);
writeLog("Anki.createNote: Error, current note type does not contain the following field: '" + name + "'")
return None
dupOrEmpty = note.dupeOrEmpty()
if dupOrEmpty == 1:
showTooltip("Error, first field in note is empty!");
writeLog("Anki.createNote: first field in note is empty!")
return note
elif dupOrEmpty == 2 and not ALLOW_DUPLICATES:
showTooltip("Error, duplicate note!");
writeLog("Anki.createNote: Error, duplicate note!")
else:
return note
def browseNote(self, noteId):
browser = aqt.dialogs.open('Browser', self.window())
browser.form.searchEdit.lineEdit().setText('nid:{0}'.format(noteId))
browser.onSearch()
def startEditing(self):
self.window().requireReset()
def stopEditing(self):
if self.collection():
self.window().maybeReset()
def window(self):
return aqt.mw
def addUiAction(self, action):
self.window().form.menuTools.addAction(action)
def collection(self):
return self.window().col
def models(self):
return self.collection().models
def modelNames(self):
return self.models().allNames()
def modelFieldNames(self, modelName):
model = self.models().byName(modelName)
if model is not None:
return [field['name'] for field in model['flds']]
def decks(self):
return self.collection().decks
def deckNames(self):
return self.decks().allNames()
def curModelID(self):
return self.collection().conf['curModel']
def curDeckID(self):
return self.collection().conf['curDeck']
def curModel(self):
return self.models().get(self.curModelID())
def curDeck(self):
return self.decks().get(self.curDeckID())
def curModelName(self):
return self.curModel()['name']
def curDeckName(self):
return self.curDeck()['name']
class MessageCommand():
def __init__(self, filename):
writeLog("MessageCommand.__init__: START")
self.anki = Anki()
self.version = None
self.command = None
self.fieldNames = []
self.tags = []
try:
self.file = codecs.open(filename, "r", "utf-8-sig")
except:
showTooltip("Error, unable to open \"" + filename + "\"");
writeLog("MessageCommand.__init__: Unable to open \"" + filename + "\"")
return
if self.parseHeader():
self.performCommand()
self.file.close()
def performCommand(self):
writeLog("MessageCommand.performCommand: START")
if self.command == "add":
self.doAdd()
else:
showTooltip("Error, invalid command = " + self.command);
writeLog("MessageCommand.performCommand: Invalid command = " + self.command)
def doAdd(self):
writeLog("MessageCommand.doAdd: START")
if self.version == "1":
self.parseFieldNames()
if len(self.fieldNames) > 0 and len(self.fieldNames[0]) > 0:
self.parseTags()
for line in self.file:
writeLog("MessageCommand.doAdd: line = " + line.strip())
self.addLineToDeck(line.strip())
else:
showTooltip("Error, no field names specified!");
writeLog("MessageCommand.doAdd: No field names specified")
else:
writeLog("MessageCommand.doAdd: Unsupported version = " + self.version)
def parseHeader(self):
status = True
# Get the command and command version
try:
items = re.split("\t", self.file.readline())
self.command = items[0].strip().lower()
self.version = items[1].strip()
writeLog("MessageCommand.parseHeader: command = " + unicode(self.command))
writeLog("MessageCommand.parseHeader: version = " + unicode(self.version))
except:
showTooltip("Error, invalid header line!");
writeLog("MessageCommand.parseHeader: Invalid header line")
status = False
return status
def parseFieldNames(self):
# Get the field names
self.fieldNames = re.split("\t", self.file.readline())
self.fieldNames = [i.strip() for i in self.fieldNames] # strip
writeLog("MessageCommand.parseFieldNames: fieldNames = " + unicode(self.fieldNames))
def parseTags(self):
# Get the tags
self.tags = re.split(" ", self.file.readline())
self.tags = [i.strip() for i in self.tags] # strip
writeLog("MessageCommand.parseTags: tags = \"" + unicode(self.tags) + "\"")
def addLineToDeck(self, line):
# Get the field contents
fields = re.split("\t", line)
# Does line contain the correct # of fields (according to given field names)?
if len(fields) >= len(self.fieldNames):
# Make a dictionary in the format {field_name: field_contents}
ankiFieldInfo = {}
for i in range(len(fields)):
ankiFieldInfo[self.fieldNames[i]] = fields[i].strip()
writeLog("MessageCommand.addLineToDeck: ankiFieldInfo = " + unicode(ankiFieldInfo))
# Try to add the card to the deck
noteId = self.anki.addNote(self.anki.curDeckName(), self.anki.curModelName(),
ankiFieldInfo, self.tags)
# Anki won't add the card if duplicate, fields names are incorrect, etc.
if not noteId:
writeLog("MessageCommand.addLineToDeck: Could not add to deck!")
else:
showTooltip("Error, too few fields, line not added!");
writeLog("MessageCommand.addLineToDeck: Too few fields, line not added!")
def clearLog():
if DEBUG:
file = codecs.open(LOG_FILE, "w", "utf-8-sig")
file.write("")
file.close()
def writeLog(text):
if DEBUG:
file = codecs.open(LOG_FILE, "a", "utf-8-sig")
file.write(text + "\n")
file.close()
def showTooltip(text, timeOut=3000):
aqt.utils.tooltip("<b>Real-Time Import</b><br />" + text, timeOut)
def processPendingDatagrams():
writeLog("processPendingDatagrams: START")
datagram, host, port = udpSocket.readDatagram(udpSocket.pendingDatagramSize())
filename = unicode(datagram.strip())
writeLog("processPendingDatagrams: filename = " + filename)
# Don't add if in deck browser (Note: it will work, but might be confusing)
if aqt.mw.state != "deckBrowser":
msgCmd = MessageCommand(filename);
else:
showTooltip("Error, you must open a deck first!");
#### Main ####
if CLEAR_LOG_AT_STARTUP:
clearLog()
writeLog("-----------------------------------------------------------")
writeLog("Main: START")
try:
udpSocket = PyQt4.QtNetwork.QUdpSocket()
udpSocket.bind(PORT);
udpSocket.readyRead.connect(processPendingDatagrams)
except:
writeLog("Main: Could not setup connection!")
Advertising (Register to hide)
May 16 - 30 : Pretty Big Deal: Save 31% on all Premium Subscriptions!
- Sign up here
2014-03-06, 10:04 pm
I have tried changing a few things with no luck. I am sure its something really obvious that I am missing.
Basically I use rikaisama everyday to read work emails. I am looking up the same words but without enough frequency to actually remember them. So it would be nice and easy for me to be able to easily add them to Anki to study later in the day. I want a card that has word in kanji only and then on the backside hiragana reading and english meaning.
Basically I use rikaisama everyday to read work emails. I am looking up the same words but without enough frequency to actually remember them. So it would be nice and easy for me to be able to easily add them to Anki to study later in the day. I want a card that has word in kanji only and then on the backside hiragana reading and english meaning.
2014-03-12, 7:17 pm
Can someone tell me how to copy a definition other than the first one listed? Thanks!
2014-03-20, 5:57 pm
click on options in firefox then change clipboardoptions.
as for my personal issues...
I have downloaded rikaichan for a project and
1 the rikaichan icon does not appear
2 when i go to firefox →add ons →extensions →rikaichan clicking on "options" freezes my computer.
Can someone help me please?
as for my personal issues...
I have downloaded rikaichan for a project and
1 the rikaichan icon does not appear
2 when i go to firefox →add ons →extensions →rikaichan clicking on "options" freezes my computer.
Can someone help me please?
2014-03-28, 4:15 pm
hey, シービー四千九百六十さん, just to add some immersive feeling to the program how about having the option to change its own layout to japanese. 理解様 is one of the only programs I don't have japanese set for.
2014-03-28, 4:34 pm
arnaldosfjunior Wrote:hey, シービー四千九百六十さん, just to add some immersive feeling to the program how about having the option to change its own layout to japanese. 理解様 is one of the only programs I don't have japanese set for.I'll add it to the wishlist.
2014-04-20, 2:34 pm
cb4960 Wrote:Hello, thank you very much for the greatest addon!ihatefall3 Wrote:Hello I am currently running the newest version of Rikaisama, Firefox and Anki.Open the Anki add-ons folder and then copy-paste the contents of real_time_import.log here. By default only that last run in logged, so go ahead and try to add some cards first.
I keep getting the "Waiting for editing to finish" screen everytime I try to add a card. When I click resume now, they haven't been added, even when I browse all. (I currently only have two cards in Anki)
I used to use Anki back in 2006 but it's been along time and I am out of practice.
What am I doing wrong?
alexp Wrote:cb4960, thank you for this wonderful add-on.You're welcome!
Unfortuantely I'm having the same Problem as the Poster above, after setting up everything up and trying to import vocab, it tells me "successfully added", but then the Anki screen is locked on "Waiting for editing to finish", and upon browsing, the cards were not added. Everything else seems to work smoothly, it even downloaded the audio files.
UPDATE: Found the problem, I didn't set up the cards correctly which caused Anki to prompt an error message which stopped Rikaisama from adding the card correctly, so ihatefall3 if you still have the problem try rewriting the card layout (or copy it from somewhere), then try manually inputting the same thing that you would expect Rikaisama to input, if it works it should work.
Edited: 2014-04-26, 4:59 am
2014-04-26, 10:02 am
I have just uploaded version 1.2 of the Real-Time Import Anki add-on.
https://ankiweb.net/shared/info/2512410601
What's New?
● The "Waiting for editing to finish" screen is no longer shown. It was unnecessary and annoying.
https://ankiweb.net/shared/info/2512410601
What's New?
● The "Waiting for editing to finish" screen is no longer shown. It was unnecessary and annoying.
Edited: 2014-04-26, 10:03 am
2014-04-26, 10:24 am
cb4960 Wrote:● The "Waiting for editing to finish" screen is no longer shown. It was unnecessary and annoying.Incidentally, is there a way to get rid of that thing entirely?
2014-04-26, 10:25 am
Vempele Wrote:Which thing?cb4960 Wrote:● The "Waiting for editing to finish" screen is no longer shown. It was unnecessary and annoying.Incidentally, is there a way to get rid of that thing entirely?
2014-04-26, 10:30 am
The "Waiting for editing to finish" screen. Anki displays it precisely when I'm already finished editing! (I never close the Add/Browse windows)
2014-04-26, 10:39 am
Vempele Wrote:The "Waiting for editing to finish" screen. Anki displays it precisely when I'm already finished editing! (I never close the Add/Browse windows)Ah. Maybe some kind person can write a plugin to permanently remove that screen.
2014-04-26, 11:12 am
Okay, did it myself. I was mostly just asking if there was anything already in your code that could be adapted to do that...
(I made AnkiQt._resetRequiredState() directly call self.maybeReset() instead of setting up a button to call it).
(I made AnkiQt._resetRequiredState() directly call self.maybeReset() instead of setting up a button to call it).
2014-04-27, 2:06 am
Sorry if this is documented somewhere. I did not know how to makes a search.
I am currently using this addon to save new vocab to a text file, using the "S" command.
Sometimes, however, the information I would like to store is not contained in the first line displayed in the popup, but in one of the following lines.
I remember reading somewhere that one can deal with such cases by using the "sticky" mode, but I could not figure out how to do this (tried to highlight the line in sticky mode before typing "S" but it did not work).
Does anybody know a way to do this?
I am currently using this addon to save new vocab to a text file, using the "S" command.
Sometimes, however, the information I would like to store is not contained in the first line displayed in the popup, but in one of the following lines.
I remember reading somewhere that one can deal with such cases by using the "sticky" mode, but I could not figure out how to do this (tried to highlight the line in sticky mode before typing "S" but it did not work).
Does anybody know a way to do this?
2014-04-27, 9:29 am
jmignot Wrote:Sorry if this is documented somewhere. I did not know how to makes a search.Perhaps you are thinking of "Super-Sticky" mode. This allows you to see the definition only when you Ctrl-click on a word (as opposed to hovering over it). Press the "U" key to toggle on/off. With this mode enabled you can hover over and Ctrl-click words that are in the definition popup.
I am currently using this addon to save new vocab to a text file, using the "S" command.
Sometimes, however, the information I would like to store is not contained in the first line displayed in the popup, but in one of the following lines.
I remember reading somewhere that one can deal with such cases by using the "sticky" mode, but I could not figure out how to do this (tried to highlight the line in sticky mode before typing "S" but it did not work).
Does anybody know a way to do this?
2014-04-27, 10:06 am
cb4960 Wrote:Perhaps you are thinking of "Super-Sticky" mode. This allows you to see the definition only when you Ctrl-click on a word (as opposed to hovering over it). Press the "U" key to toggle on/off. With this mode enabled you can hover over and Ctrl-click words that are in the definition popup.Thanks for your reply. The "Super-Sticky" mode works fine, but on the Mac, Ctrl-click triggers a system-wide contextual menu, rather than being handled by Rikaichan.
As discussed in this post:
http://apple.stackexchange.com/questions...ck-in-os-x,
disabling the Ctrl-click system shortcut is inconvenient, and using Cmd-click instead would be the proper approach for a Mac. For that, one should have the possibility to redefine this hot key in Rikaichan, e.g. using the Preference menu. Alternatively, the plug-in might be able to test on which machine it is being executed…
At the moment, I can only copy/paste manually from the Rikaichan popup, which requires subsequent editing of the text file.
Did anybody find how to circumvent this problem?
Edited: 2014-05-04, 7:19 am
2014-05-03, 7:07 am
Besides the newly released Firefox 29 being the biggest and ugliest piece of shit they have ever released, does anyone else get non-stop Firefox crashes/restarts when enabling Rikaisama and using it?
Thank god for https://addons.mozilla.org/firefox/addon...erestorer/, but FF still crashes when using Rikaisama.
Thank god for https://addons.mozilla.org/firefox/addon...erestorer/, but FF still crashes when using Rikaisama.
Edited: 2014-05-03, 8:49 am
2014-05-03, 10:07 am
toshiromiballza Wrote:Besides the newly released Firefox 29 being the biggest and ugliest piece of shit they have ever released, does anyone else get non-stop Firefox crashes/restarts when enabling Rikaisama and using it?Confirmed: Firefox 29 is a huge piece of garbage. For now, I've loaded Firefox 29 into a VM so that I don't infect my primary PC with this junk.
Thank god for https://addons.mozilla.org/firefox/addon...erestorer/, but FF still crashes when using Rikaisama.
I've noticed that the problem only occurs when either the "Show frequency information" or "Show pitch accent" box is checked. Can you confirm this on your PC?
I'll start debugging later today hopefully.
2014-05-03, 10:30 am
Doesn't seem to affect single-kanji words with both the accent and frequency information: 穂
It actually seems it's important how you scroll your mouse over a word. If you scroll from left to right, it doesn't crash, otherwise it does. Very weird.
I think it's the pitch data that's causing it:
Frequency only: 年齢相応 - no crash
Pitch only: 凜凜しい - crash, but only when mouse scrolls from right side
It actually seems it's important how you scroll your mouse over a word. If you scroll from left to right, it doesn't crash, otherwise it does. Very weird.
I think it's the pitch data that's causing it:
Frequency only: 年齢相応 - no crash
Pitch only: 凜凜しい - crash, but only when mouse scrolls from right side
Edited: 2014-05-03, 10:56 am
2014-05-03, 10:56 am
I think I found the issue. I'll release an update within an hour or so.
2014-05-03, 11:23 am
I have just uploaded version 20.3 of the Rikaisama Firefox extension.
Download version 20.3 via SourceForge
What's New?
● Fixed issue that caused Firefox 29 to crash when either pitch accent or frequency information was shown. (Thanks to toshiromiballza for quickly bringing this issue to my attention).
cb4960
Download version 20.3 via SourceForge
What's New?
● Fixed issue that caused Firefox 29 to crash when either pitch accent or frequency information was shown. (Thanks to toshiromiballza for quickly bringing this issue to my attention).
cb4960
2014-05-04, 6:57 am
toshiromiballza Wrote:Besides the newly released Firefox 29 being the biggest and ugliest piece of shit they have ever released
cb4960 Wrote:Confirmed: Firefox 29 is a huge piece of garbage. For now, I've loaded Firefox 29 into a VM so that I don't infect my primary PC with this junk.As a concerned citizen with severely limited IT expertise, I have to ask. Why do you find FF29 that bad? I looked up some reviews and I'm not finding anything too obvious. I'm gathering it's something (way) bigger than aesthetics or having Rikaisama crash on every lookup...
2014-05-07, 2:30 am
Hey, I was wondering if I can choose which translation to move to Anki with Rikaisama? Right now I only know how to move the first translation, but sometimes the correct meaning of the sentence might be the second translation down the list etc. For those situations I need to manually change the meanings in Anki.
It's quite likely that the functionality is there, but I haven't come across it yet. Also thanks so much for all the work you've done cb4960, learning post Core is such a breeze with this plugin!
It's quite likely that the functionality is there, but I haven't come across it yet. Also thanks so much for all the work you've done cb4960, learning post Core is such a breeze with this plugin!
Edited: 2014-05-07, 2:31 am

