public TranslationForm() { InitializeComponent(); hintForm = new HintForm(); hintForm.setMainForm(this); backgroundForm = new BackgroundForm(); backgroundForm.setMainForm(this); FormUtil.restoreLocation(this); TopMost = Settings.app.stayOnTop; webBrowser1.ObjectForScripting = new BrowserInterop(webBrowser1, new InteropMethods(this)); webBrowser1.Url = Utils.getUriForBrowser("translation.html"); TranslationService.instance.onTranslationRequest += (id, raw, src) => { var translators = Settings.app.getSelectedTranslators(!Atlas.instance.isNotFound); if (translators.Count == 1 && Settings.session.po != null) { // trying .po translation var poTrans = PoManager.instance.getTranslation(raw); if (!string.IsNullOrEmpty(poTrans)) { webBrowser1.callScript("newTranslationResult", id, Utils.toJson(new TranslationResult(poTrans, false))); return; } } webBrowser1.callScript("translate", id, raw, src, Utils.toJson(translators)); }; TranslationService.instance.onEdictDone += (id, parse) => { lastParseResult = parse; if (id == waitingForId) { waitingForId = -1; return; } lastParseOptions = null; submitParseResult(parse); }; if (OptionsForm.instance.Visible) { this.SuspendTopMostBegin(); } OptionsForm.instance.VisibleChanged += (sender, e) => { if ((sender as Form).Visible) { this.SuspendTopMostBegin(); } else { this.SuspendTopMostEnd(); } }; SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged; //Utils.setWindowNoActivate(this.Handle); Winapi.RegisterHotKey(Handle, 0, (int)Winapi.KeyModifier.Control, (int)Keys.Oemtilde); }
public static string serializeResult(ParseResult p) { object parts; if (p.type == ParseResultType.COMPLEX) { parts = p.serialize(Settings.app.okuriganaType); } else { parts = new object[] { p.serialize(Settings.app.okuriganaType) }; } var serializedObj = new { parts = parts, okuri = Settings.app.okuriganaType.ToString() }; return Utils.toJson(serializedObj); }
private void updateLastSelection() { lastSelection = getSelection(); lastIsRealSelection = true; lastSelectedParseResult = getSelectedParseResult(); }
private bool unrealSelection() { string s = (string)webBrowser1.callScript("getCurrentWord"); //Logger.log("word: " + s); if (!string.IsNullOrEmpty(s)) { lastIsRealSelection = false; lastSelection = s; lastSelectedParseResult = getSelectedParseResult(); return true; } else { return false; } }
private void submitParseResult(ParseResult parse) { webBrowser1.callScript("newParseResult", parse.id, ParseResult.serializeResult(parse)); }
internal void showContextMenu(string selection, bool isRealSelection, int selectedParseResultId) { lastSelection = cleanTextSelection(selection); lastIsRealSelection = isRealSelection; if (selectedParseResultId != 0) { lastSelectedParseResult = TranslationService.instance.getParseResult(selectedParseResultId); } else { lastSelectedParseResult = lastParseResult; } contextMenuStrip1.Show(Cursor.Position); }
internal string replaceNames(ParseResult parseData) { StringBuilder sb = new StringBuilder(); IEnumerable<ParseResult> parts; if (parseData.type == ParseResult.ParseResultType.COMPLEX) { parts = (parseData as ComplexParseResult).parts; } else { parts = Enumerable.Repeat(parseData, 1); } bool prevName = false; foreach (var part in parts) { if (part.type == ParseResult.ParseResultType.UNPARSED) { prevName = false; sb.Append(part.asText()); } else if (part.type == ParseResult.ParseResultType.WORD) { WordParseResult wp = part as WordParseResult; bool found = false; bool isName = wp.isName(); bool isReplacement = wp.isReplacement(); if (isName || isReplacement) { var entry = wp.getSelectedEntry(); DictionarySense sense = entry.sense.FirstOrDefault(); if (sense != null && sense.glossary.Count > 0) { if (prevName) sb.Append(' '); sb.Append(sense.glossary.First()); found = true; } else { if (entry.kana.Count > 0) { if (prevName) sb.Append(' '); sb.Append(entry.kana.First().text); found = true; } } } else if (prevName) { foreach (EdictEntry entry in wp.getEntries()) { if (nameSuffixes.ContainsKey(part.asText())) { string reading = nameSuffixes[part.asText()]; sb.Append(reading); found = true; break; } else if (nameSuffixes.ContainsKey(entry.getText())) { string reading = nameSuffixes[entry.getText()]; sb.Append(reading); found = true; break; } } } if (found) { prevName = isName || prevName; } else { prevName = false; sb.Append(part.asText()); } } } return sb.ToString(); }