Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 private void updateLastSelection()
 {
     lastSelection = getSelection();
     lastIsRealSelection = true;
     lastSelectedParseResult = getSelectedParseResult();
 }
Esempio n. 4
0
 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;
     }
 }
Esempio n. 5
0
 private void submitParseResult(ParseResult parse)
 {
     webBrowser1.callScript("newParseResult", parse.id, ParseResult.serializeResult(parse));
 }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
 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();
 }