Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

activaid leo tooltip erweitern
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grossermanituo
Gast





BeitragVerfasst am: Fr Jun 22, 2007 1:46 pm    Titel: activaid leo tooltip erweitern Antworten mit Zitat

ich bin ein rießen fan von activaid. besonders der leo tooltip funktion. (ich makiere ein word das ich überstezten möchte und per shortcut wid auf basis von leo.org mir ein menu mit möglichen übersetzungen angezeigt)
über dieses menu kann ich mir die jeweilige übersetzung direkt anzeigen lassen.

was ich gerne machen möchte ist, dass wenn ich meine passende übersetzung gefunden habe und ich diese ausgewählt habe, mir vokabeln und überstzung in eine txt datei kopiert wird.

somit kann ich wöchentlich auf einfache weise noch vokabeln pauken.

basics in sachen ahk habe ich drauf, dieser code übersteigt aber mein ahk-wissen. für hilfe wäre ich sehr dankbar


anbei der aktuelle code von leo-erweiterung (version 1.181)
Code:

; -----------------------------------------------------------------------------
; #############################################################################
; -----------------------------------------------------------------------------
; Name:               LeoToolTip
; -----------------------------------------------------------------------------
; Prefix:             leo_
; Version:            0.8
; Date:               2007-06-07
; Author:             Wolfgang Reszel
; Copyright:          2007 Heise Zeitschriften Verlag GmbH & Co. KG
; -----------------------------------------------------------------------------

; -----------------------------------------------------------------------------
; === Initialisation ==========================================================
; -----------------------------------------------------------------------------

; Initialisierungsroutine, welche beim Start von ac'tivAid aufgerufen wird.
init_LeoToolTip:
   Prefix = leo
   %Prefix%_ScriptName    = LeoToolTip
   %Prefix%_ScriptVersion = 0.8
   %Prefix%_Author        = Wolfgang Reszel
   RequireExtensions      =
   CustomHotkey_LeoToolTip = 0           ; automatisches benutzerdefinierbares Tastaturkürzel? (1 = ja)
   Hotkey_LeoToolTip       =             ; Standard-Hotkey
   HotkeyPrefix_LeoToolTip =             ; Präfix, welches vor immer vor dem Tastaturkürzel gesetzt wird

   ; Sprachabhängige Variablen
   If Lng = 07  ; = Deutsch (0407, 0807, 0c07 ...)
   {
      MenuName                      = %leo_ScriptName% - markiertes Wort übersetzen
      Description                   = Übersetzt mittels dict.leo.org das markierte Wort und zeigt das Ergebnis als Tooltip an.
      lng_leo_NothingFound          = Suchbegriff nicht gefunden
      lng_leo_Error                 = Fehler beim Zugriff auf LEO.`nVermutlich wurden zu viele Abfragen in Folge an den Server geschickt.`nLEO sperrt in diesem Fall ihre IP-Adresse für 2 Minuten.`n`nKlicken Sie mit der rechten Maustaste auf diese Meldung,`num die Fehlerseite aufzurufen.
      lng_leo_LeoOnMbutton          = Suche automatisch ausführen, wenn ein Wort mit der mittleren Maustaste markiert wird. (MouseClip)
      lng_leo_Searching             = Verbinde mit
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org ist schneller, aber bei vielen Anfragen in kurzer Zeit gibt es eine 2-Minuten-Sperrung.
      lng_leo_ToolTipTimeout        = Sekunden, nach denen der Tooltip automatisch verschwindet
      lng_leo_UseMenu               = Menü statt eines Tooltips einblenden, womit die ausgewählte Übersetzung direkt eingefügt werden kann
      lng_leo_GotoURL               = Suchergebnisse mit dict.leo.org im Browser anzeigen
      lng_leo_GotoURLCompact        = im Browser anzeigen
      lng_leo_AutoCorrect           = Verwende ähnlichen Suchbegriff
      lng_leo_Lang1                 = Deutsch-Englisch
      lng_leo_Lang2                 = Deutsch-Französisch
      lng_leo_Lang3                 = Deutsch-Spanisch
      lng_leo_SearchFor             = Bitte Suchbegriff eingeben
      lng_leo_CheckProxy            = Bitte prüfen Sie auch Ihre Proxy-Einstellungen im Internet Explorer.`nLeoToolTip funktioniert nicht bei Proxies mit manueller Anmeldung.`nEvtl. hilft die Aktivierung von "HTTP 1.1 über Proxy-Verbindungen verwenden" in den Internetoptionen unter Erweitert.`nUnter Umständen könnte auch der Server nicht erreichbar sein.
      lng_leo_Browser               = Browser für Rechtsklick auf ToolTip
      lng_leo_BrowserError          = Der Browser kann evtl. nicht gestartet werden, Windows meldet:`n
      lng_leo_SelectBrowser         = Auswählen ...
      lng_leo_FileTypeEXE           = Programme (*.exe)
      lng_leo_TranslationToClipboard= Ausgewählte Übersetzung wird nicht eingefügt, sondern in die Zwischenablage gelegt
      lng_leo_CompactMenu           = Kompakteres Menü
   }
   else        ; = Alternativ-Sprache (wenn nicht Deutsch und keine language.ini vorhanden)
   {
      MenuName                      = %leo_ScriptName% - translate selected word
      Description                   = Translates the selected word with dict.leo.org and shows the result as a tooltip.
      lng_leo_NothingFound          = search item not found
      lng_leo_Error                 = Error while accessing LEO.`nMaybe you've sent to many queries in a short time.`nIn that case, LEO locks your IP-address for 2 minutes.
      lng_leo_LeoOnMbutton          = Search automatically when selecting a word with the middle mouse-button. (MouseClip)
      lng_leo_Searching             = Connecting to
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org is faster, but you will be locked for 2 minutes for to many queries in a short time.
      lng_leo_ToolTipTimeout        = Seconds, when the tooltip automatically disappears
      lng_leo_UseMenu               = Show a menu instead of a tooltip to make it possible to directly paste a translation
      lng_leo_GotoURL               = Show results with dict.leo.org in browser
      lng_leo_GotoURLCompact        = Show in browser
      lng_leo_AutoCorrect           = Using similar search item
      lng_leo_Lang1                 = German-English
      lng_leo_Lang2                 = German-French
      lng_leo_Lang3                 = German-Spanish
      lng_leo_SearchFor             = Please enter search item
      lng_leo_CheckProxy            = Please check also your proxy settings in Internet Explorer,`nLeoToolTip does not work at proxies with manual authentification.`nAlso the Leo-server could be down at the moment.
      lng_leo_Browser               = Browser for right-click on tooltip
      lng_leo_BrowserError          = Maybe the browser can't be launched, windows returns:`n
      lng_leo_SelectBrowser         = Choose...
      lng_leo_FileTypeEXE           = Programs (*.exe)
      lng_leo_TranslationToClipboard= Selected translation will be stored in the clipboard instead of pasting it
      lng_leo_CompactMenu           = More compact menu
   }

   func_HotkeyRead( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip", "leo_sub_Hotkey1", "^+l", "$" )
   func_HotkeyRead( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip", "leo_sub_Hotkey2", "", "$" )
   func_HotkeyRead( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip", "leo_sub_Hotkey3", "", "$" )

   RegisterAdditionalSetting( "leo", "CompactMenu", 0 )

   IniRead, leo_UseMenu , %ConfigFile%, LeoToolTip, UseMenu, 0
   IniRead, leo_NumOfResults, %ConfigFile%, LeoToolTip, NumOfResults, 5
   IniRead, leo_EnableMButton, %ConfigFile%, LeoToolTip, LeoOnMButton, 0
   IniRead, leo_TranslationToClipboard, %ConfigFile%, LeoToolTip, TranslationToClipboard, 0
   IniRead, leo_Server, %ConfigFile%, LeoToolTip, LeoServerURL, pda.leo.org
   IniRead, leo_ToolTipTimeout, %ConfigFile%, LeoToolTip, ToolTipTimeout, 10
   IniRead, leo_Browser, %ConfigFile%, LeoToolTip, Browser, %A_Space%
   IniRead, leo_HistoryFile, %ConfigFile%, LeoToolTip, HistoryFile, %A_Space%

   ; Liste der Texte, die aus dem Ergebnis entfernt werden sollen. (Regulärer Ausdruck)
   leo_RemoveBeforeReplace := "i)\.{3}|j[mnd]{3}\.(/| |$)|etw\. |s(b|o)\.(/| |$)|sth\.(/| |$)|^to |^it |^the |^d(er|ie|as) | ad(j|v)\.| pl\.| also: .*| rarely: .*| auch: .*| selten: .*"

   leo_WebBrowsers = OpWindow,MozillaUIWindowClass,IEFrame

   leo_AlphaNums := "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   leo_CleanChars = `%|&\$|\$&|\$#|#|\$|&|\(|\)|\[|\]|\{|\}|^ +| +$|@
Return

SettingsGui_LeoToolTip:
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang1, "leo_Hotkey1", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang2, "leo_Hotkey2", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang3, "leo_Hotkey3", "xs+10 y+6 w180" )

   If Enable_MouseClip = 1
      Gui, Add, Checkbox, -Wrap xs+10 y+10 gleo_sub_MouseClip vleo_EnableMButton Checked%leo_EnableMButton%, %lng_leo_LeoOnMbutton%
   Gui, Add, Checkbox, -Wrap xs+10 y+5 gsub_CheckIfSettingsChanged vleo_UseMenu Checked%leo_UseMenu%, %lng_leo_UseMenu%
   Gui, Add, Checkbox, -Wrap xs+20 y+5 gsub_CheckIfSettingsChanged vleo_TranslationToClipboard Checked%leo_TranslationToClipboard%, %lng_leo_TranslationToClipboard%
   Gui, Add, Text, xs+10 y+20, %lng_leo_Server%:
   leo_Servers = dict.leo.org|pda.leo.org
   Gui, Add, DropDownList, x+5 yp-4 gsub_CheckIfSettingsChanged vleo_Server, %leo_Servers%
   GuiControl,Choose,leo_Server,%leo_Server%
   Gui, Add, Text, xs+10 y+3, %lng_leo_ServerTip%
   Gui, Add, Text, xs+10 y+11, %lng_leo_ToolTipTimeout%:
   Gui, Add, Edit, x+5 yp-3 -Wrap r1 Number w40 gsub_CheckIfSettingsChanged vleo_ToolTipTimeout, %leo_ToolTipTimeout%
   Gui, Add, UpDown, Range1-99, %leo_ToolTipTimeout%

   Gui, Add, Text, xs+10 y+20, %lng_leo_Browser%:
   Gui, Add, Edit, x+5 yp-3 R1 -Wrap w290 gsub_CheckIfSettingsChanged vleo_Browser, %leo_Browser%
   Gui, Add, Button, x+5 -Wrap w80 h21 gleo_sub_SelectBrowser, %lng_leo_SelectBrowser%
Return

leo_sub_SelectBrowser:
   Gui, +OwnDialogs
   leo_Suspended = %A_IsSuspended%
   If leo_Suspended = 0
      Suspend, On

   FileSelectFile, leo_Browser_tmp,, %A_Programfiles%, %lng_leo_Browser%, %lng_leo_FileTypeEXE%
   If ErrorLevel = 0
      GuiControl,, leo_Browser, %leo_Browser_tmp%

   If leo_Suspended = 0
      Suspend, Off
Return

leo_sub_MouseClip:
   Gosub, sub_CheckIfSettingsChanged
   GuiControlGet, leo_EnableMButton_tmp,,leo_EnableMButton
   If (leo_EnableMButton_tmp = 1 AND Enable_ThesauroToolTip <> "")
      GuiControl,,ttt_EnableMButton,0
Return

SaveSettings_LeoToolTip:
   IniWrite, %leo_UseMenu%, %ConfigFile%, LeoToolTip, UseMenu
   IniWrite, %leo_EnableMButton%, %ConfigFile%, LeoToolTip, LeoOnMButton
   IniWrite, %leo_Server%, %ConfigFile%, LeoToolTip, LeoServerURL
   IniWrite, %leo_ToolTipTimeout%, %ConfigFile%, LeoToolTip, ToolTipTimeout
   IniWrite, %leo_Browser%, %ConfigFile%, LeoToolTip, Browser
   IniWrite, %leo_TranslationToClipboard%, %ConfigFile%, LeoToolTip, TranslationToClipboard

   func_HotkeyWrite( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip" )
Return

AddSettings_LeoToolTip:
Return

CancelSettings_LeoToolTip:
Return

DoEnable_LeoToolTip:
   If leo_EnableMButton
      RegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyEnable("leo_Hotkey1")
   func_HotkeyEnable("leo_Hotkey2")
   func_HotkeyEnable("leo_Hotkey3")
Return

DoDisable_LeoToolTip:
   If leo_EnableMButton
      UnRegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyDisable("leo_Hotkey1")
   func_HotkeyDisable("leo_Hotkey2")
   func_HotkeyDisable("leo_Hotkey3")
Return

DefaultSettings_LeoToolTip:
Return

OnExitAndReload_LeoToolTip:
Return

; -----------------------------------------------------------------------------
; === Hotkeys =================================================================
; -----------------------------------------------------------------------------

leo_sub_Hotkey1:
   leo_LangStr = ende
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey2:
   leo_LangStr = frde
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey3:
   leo_LangStr = esde
   Gosub, sub_Hotkey_LeoToolTip
Return

; Unterroutine für das automatische Tastaturkürzel
sub_Hotkey_LeoToolTip:
   WinGetClass, leo_WinClass, A
   Coordmode, Caret, Screen

   If leo_WinClass Contains %leo_WebBrowsers%
   {
      leo_ttX =
      leo_ttY =
   }
   Else
   {
      leo_ttX := A_CaretX+10
      leo_ttY := A_CaretY+10
   }
   gosub, leo_sub_Search
   If ErrorLevel = 1
      Return
   SetTimer, leo_tim_ToolTipOff, % leo_ToolTipTimeout * 1000
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      Gosub, DoDisable_LeoToolTip
      Input, leo_SingleKey, L1 I V, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}{CtrlBreak}%InputEscapeKeys%
      StringReplace, leo_SingleKey, ErrorLevel, Endkey:,,A
      Gosub, DoEnable_LeoToolTip
   }
   Gosub, leo_tim_ToolTipOff
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      If leo_SingleKey = %Hotkey_leo_Hotkey1%
         Gosub, leo_sub_Hotkey1
      If leo_SingleKey = %Hotkey_leo_Hotkey2%
         Gosub, leo_sub_Hotkey2
      If leo_SingleKey = %Hotkey_leo_Hotkey3%
         Gosub, leo_sub_Hotkey3
   }
Return

MButton_LeoToolTip:
   If (leo_EnableMButton = 1 AND Enable_MouseClip = 1)
   {
      mc_NoPaste = yes
      leo_ttX =
      leo_ttY =
      leo_LangStr = ende
      gosub, leo_sub_Search
      MButton_send =
   }
Return

; -----------------------------------------------------------------------------
; === Subroutines =============================================================
; -----------------------------------------------------------------------------

leo_sub_Search:
   AutoTrim, On
   Coordmode, ToolTip, Screen
   Coordmode, Menu, Screen

   If leo_NotFound =
   {
      func_GetSelection()
      leo_searchOrig :=  Selection
   }
   Else
      leo_NotFound++

   If leo_searchOrig =
   {
      StringUpper, leo_Text, leo_LangStr
      leo_Text := lng_leo_SearchFor " (" SubStr(leo_Text,1,2) " <-> " SubStr(leo_Text,3,2) "):"
      InputBox, leo_searchOrig, %leo_ScriptName% (%ScriptTitle%), %leo_Text%,,,115,,,,,%leo_LastSearchOrig%
      If ErrorLevel = 1
         Return
   }

   ; Zeilenumbrüche entfernen
   leo_searchOrig := RegExReplace(leo_searchOrig, "\r\n|\r|\n"," ")

   ; Variablenzeichen und Klammern entfernen (Aufgabe)
   leo_searchClean := RegExReplace(leo_searchOrig,leo_CleanChars,"")

   leo_searchFor := leo_func_URLEncode(leo_searchClean)

   If ( ( leo_LangStr leo_searchFor <> leo_LastLangStr leo_lastSearch AND leo_searchFor <> "" ) OR (leo_lastSearch = "" AND leo_searchFor ="") )
   {
      If leo_NotFound =
         tooltip, %lng_leo_Searching% %leo_Server% ..., %leo_ttX%, %leo_ttY%, 7
      Else
         tooltip, %lng_leo_AutoCorrect% %leo_searchOrig% ..., %leo_ttX%, %leo_ttY%, 7

      URLDownloadToFile, http://%leo_Server%/?lp=%leo_langStr%&relink=off&sectHdr=off&spellToler=on&search=%leo_searchFor%, %A_Temp%\leoahk.tmp
      ;FileCopy, %A_Temp%\leoahk.tmp, %A_Desktop%\LeoToolTip-DebugDatei.txt
      FileRead, leo_Query, %A_Temp%\leoahk.tmp
      FileDelete, %A_Temp%\leoahk.tmp

      StringGetPos, leo_tmp, leo_Query, <td class="td1" valign="middle" width="4
      StringTrimLeft, leo_Result, leo_Query, %leo_tmp%

      ; erst alle " entfernen, da sie nicht benötigt werden
      StringReplace, leo_Result, leo_Result, ",, A
      ; verschiedene Tags entfernen
      leo_Result := RegExReplace(leo_Result,"i)<->.|<img.*?>|<td class=td1 nowrap width=.`%>||</td>|<small>|</small>|<font size=-1>|</font>|`t", "")
      ; LineBreaks einfügen
      leo_Result := RegExReplace(leo_Result, "i)<!--`n|<td class=td1 valign=middle width=..`%>", "`n")
      ; bestimmte Tags zu Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<sup>(.*?)</sup>|<sub>(.*?)</sub>", " ($1)")
      ; bestimmte Tags zu geschweiften Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<I>(.*?)</I>", "{$1}")
      ; zwei Klammern zu einer machen, z.B.: { [..]}
      leo_Result := RegExReplace(leo_Result,"\{ ?(\(|\[)(.*?)(\]|\))\}", "$1$2$3")
      leo_Result := RegExReplace(leo_Result,"\[ ?(\{|\(|\[)(.*?)(\]|\)|\})\]", "[$2]")
      ; Sonderzeichen mit Ampersand ersetzen (z.B. whiteout)
      leo_Result := RegExReplace(leo_Result,"&reg;", "®")
      leo_Result := RegExReplace(leo_Result,"&copy;", "©")
      ;alle anderen Ampersand-Semikolon Teile löschen
      leo_Result := RegExReplace(leo_Result,"&.*?;", "")
      ; Ende des Eintragens der Übersetzung bestimmen |
      leo_Result := RegExReplace(leo_Result,"<br>", "|")
      ; mehrfach und HTML Leerzeichen zu einem Leerzeichen machen
      leo_Result := RegExReplace(leo_Result,"i)&nbsp;|\t| {2,}", " ")
      leo_FinalResult =
      leo_Line = 0
      Loop, Parse, leo_Result, `n
      {
         If (A_Index/2 > leo_NumOfResults+1)
            break
         IfInstring, A_LoopField, Sie haben Ihr Zugriffslimit überschritten
         {
            leo_FinalResult = %lng_leo_Error%!
            leo_SearchFor =
            Break
         }

         If leo_Line = 1
         {
            leo_Line = 2
            StringGetPos, leo_tmp, A_LoopField, <a
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
            IfInstring, A_LoopField, </tr>
               Break
            IfInstring, A_LoopField, <html>
            {
               If leo_NotFound = 1
                  leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!
               Else
                  leo_NotFound = 1
               Break
            }
            If A_LoopField =
               Break
            IfInstring, A_LoopField, <head>
            {
               leo_FinalResult = %lng_leo_Error%!
               leo_SearchFor =
               Break
            }
            StringGetPos, leo_tmp, A_LoopField, <img border="0" alt
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
         }
         Else If leo_Line = 2
         {
            leo_Line = 1
            StringGetPos, leo_tmp, A_LoopField, <td
            StringLeft, leo_ToLang, A_LoopField, %leo_tmp%
            leo_FinalResult = %leo_FinalResult%%leo_FromLang%%A_Tab%%leo_ToLang%`r`n
            IfInstring, A_LoopField, </table>
               Break
         }
         Else
         {
            leo_Line = 1
         }
      }
      StringTrimRight, leo_FinalResult, leo_FinalResult, 2
      If leo_Query =
         leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!`r`n%lng_leo_CheckProxy%
   }
   Else
      leo_searchFor = %leo_lastSearch%

   If leo_NotFound = 1
   {
      IfInstring, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
      {
         StringGetPos, leo_tmp, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
         StringTrimLeft, leo_Result, leo_Query, %leo_tmp%
         StringGetPos, leo_tmp, leo_Result, ">
         StringTrimLeft, leo_Result, leo_Result, % leo_tmp+2
         StringGetPos, leo_tmp, leo_Result, </A>
         StringLeft, leo_searchOrig, leo_Result, %leo_tmp%
         leo_lastSearch =
         leo_lastLangStr =
         Gosub leo_sub_Search
         Return
      }
   }
   If leo_NotFound = 1
      leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!

   leo_FinalResultTip := RegExReplace(leo_FinalResult,"i)<B>|</B>", "")
   StringReplace, leo_FinalResultTip, leo_FinalResultTip, %A_Tab%, % "  =  ", All
   leo_NotFound =

   leo_lastSearch = %leo_searchFor%
   leo_lastSearchOrig = %leo_searchOrig%
   leo_LastLangStr = %leo_LangStr%
   MouseGetPos, leo_startX, leo_startY

   StringLeft, leo_Lang1, leo_LangStr, 2
   StringRight, leo_Lang2, leo_LangStr, 2
   StringUpper, leo_Lang1, leo_Lang1
   StringUpper, leo_Lang2, leo_Lang2

   If (leo_UseMenu = 1 AND !InStr(leo_FinalResult, lng_leo_NothingFound ": " leo_searchOrig))
   {
      leo_Index = 0
      Loop, Parse, leo_FinalResult, `n, `r
      {
         leo_Split = %A_LoopField%

         StringSplit, leo_Split, leo_Split, %A_Tab%

         IfInString, leo_Split1, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split2%
            leo_MenuStringB = %leo_Split1%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang2%-%leo_Lang1%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall

         }
         IfInString, leo_Split2, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split1%
            leo_MenuStringB =%leo_Split2%
            leo_MenuString = %leo_MenuString%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang1%-%leo_Lang2%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall
         }

      }
      Gosub, leo_tim_ToolTipOff
      Menu, LeoToolTip, Add
      If leo_CompactMenu = 0
         Menu, LeoToolTip, Add, &# - %lng_leo_GotoURL%, leo_sub_GotoURL
      Else
         Menu, LeoToolTip, Add, %lng_leo_GotoURLCompact%, leo_sub_GotoURL
      If leo_HistoryFile <>
         FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%

      Menu, LeoToolTip, Show, %leo_ttX%, %leo_ttY%
      Menu, LeoToolTip, DeleteAll
      Return
   }
   Else
   {
      tooltip, %leo_FinalResultTip%, %leo_ttX%, %leo_ttY%, 7
      ;Clipboard = %leo_FinalResult%
      SetTimer, leo_tim_WatchToolTip, 20
      If (leo_HistoryFile <> "" AND !InStr(leo_FinalResult, lng_leo_NothingFound))
         FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%
   }
Return

leo_sub_MenuCall:
   leo_MenuString := leo_MenuItem[%A_ThisMenuItemPos%]
   ; geschützte Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, " ", "")
   ; Eckige und runde Klammern mit Inhalt entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "(\(|\[).*?(\)|\])", "")
   ; Nach Minus, geschweifter Klammer, senkrechtem Strich oder Tabulator schneiden
   leo_MenuString := RegExReplace(leo_MenuString, "^(.*?)(- |\{|\||,|\t).*", "$1")
   ; Sonderwörter entfernen
   leo_MenuString := RegExReplace(leo_MenuString, leo_RemoveBeforeReplace, "")
   ; überflüssige Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "\s+", " ")
   leo_MenuString := RegExReplace(leo_MenuString, "^\s*", "")
   leo_MenuString := RegExReplace(leo_MenuString, "\s*$", "")
   ; Variablenzeichen und Klammern wieder hinzufügen
   leo_MenuString := RegExReplace(leo_searchOrig, "^(" leo_CleanChars ")?.*?(" leo_CleanChars ")?$", "$1" leo_MenuString "$2")

   If leo_TranslationToClipboard = 1
      Clipboard = %leo_MenuString%
   Else
      SendRaw, %leo_MenuString%
Return

leo_func_URLEncode( leo_url ) {
   SetFormat, integer, hex
   StringReplace, leo_url, leo_url, %A_Space%, `%20
   Loop, 127
   {
      leo_HexCode := A_Index+127
      Transform, leo_HighChar, Chr, %leo_HexCode%
      StringReplace, leo_HexCode, leo_HexCode, 0x,`%
      StringReplace, leo_url, leo_url, %leo_HighChar%, %leo_HexCode%
   }
   SetFormat, integer, dec
   Return %leo_url%
}

leo_tim_ToolTipOff:
   RButton_tip =
   leo_BreakLoop = 1
   SetTimer, leo_tim_ToolTipOff, Off
   tooltip,,,,7
   SetTimer, leo_tim_WatchToolTip, Off
Return

leo_sub_GotoURL:
   If leo_Browser =
      Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   Else
      Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   If ErrorLevel = ERROR
      func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
Return

leo_tim_WatchToolTip:
   MouseGetPos, leo_X, leo_Y, leo_WinID
   If leo_startX <>
   {
      If (leo_X > leo_StartX+4 OR leo_Y > leo_StartY+4 OR leo_X < leo_StartX-4 OR leo_Y < leo_StartY-4)
      {
         leo_startX =
         SetTimer, leo_tim_ToolTipOff, 2000
      }
   }
   WinGetTitle, leo_TipText, ahk_id %leo_WinID%
   If leo_TipText = %leo_FinalResultTip%
   {
      GetKeyState, leo_LButton, LButton
      GetKeyState, leo_RButton, RButton
      If leo_LButton = D
         Gosub, leo_tim_ToolTipOff
      Else If (leo_RButton = "D" OR RButton_tip = "yes")
      {
         If leo_Browser =
            Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         Else
            Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         If ErrorLevel = ERROR
            func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
         Gosub, leo_tim_ToolTipOff
      }
      Else
      {
         SetTimer, leo_tim_ToolTipOff, 1000
      }
   }
   GetKeyState, leo_ESC, ESC
   If leo_ESC = D
      SetTimer, leo_tim_ToolTipOff, 1
Return

Nach oben
Leo_ToolTip
Gast





BeitragVerfasst am: So Jun 24, 2007 6:11 am    Titel: Antworten mit Zitat

Hallo,

ich hab's mir mal angesehen. Nettes Skript!

Ich glaube, Deine Datei schon gibt es schon:
Code:
IniRead, leo_HistoryFile, %ConfigFile%, LeoToolTip, HistoryFile, %A_Space%

Diese Datei sollte bei den Einstellungen für Leo ToolTip vorzugeben sein, und wenn sie vorgegeben ist, werden alle Treffer dort hineingeschrieben:
Code:
If leo_HistoryFile <>
   FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%
...
...
If (leo_HistoryFile <> "" AND !InStr(leo_FinalResult, lng_leo_NothingFound))
   FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%

Probier doch einfach mal!
Nach oben
grossermanitou
Gast





BeitragVerfasst am: Fr Jul 06, 2007 1:50 pm    Titel: Antworten mit Zitat

also. in den einstellungen gibt es keine möglichkeiten eine datei oder speicherort zu definieren. jedenfalls sehe ich nichts anbei die oberfläche

http://home.arcor.de/gardenofhouse/images/Bild1.png
Nach oben
Leo_Tooltip
Gast





BeitragVerfasst am: Sa Jul 07, 2007 6:32 am    Titel: Antworten mit Zitat

So, das hat etwas gedauert.

In der ac'tivAid.ini im Ordner Settings gibt es eine Section [LeoToolTip]. Wenn nicht, musst Du die Einstellungen für LeoTooltip einmal speichern lassen.

Dort must Du händisch einen Eintrag wie z.B.
Code:
HistoryFile                     =D:\AHK\ActivAid\LeoHistory.txt
einfügen, der den Pfad der von Dir gewünschten Datei enthält. In dieser Datei werden dann alle Ergebnisse protokolliert.

Wenn dort auch noch der ursprüngliche Suchbegriff protokolliert werden soll, kannst Du die FileAppend Anweisungen wie folgt ergänzen:
Code:
FileAppend, %leo_searchOrig%`r`n%leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%

Ich habe gesprochen!
Nach oben
grossermanituo
Gast





BeitragVerfasst am: Mo Jul 09, 2007 8:09 am    Titel: Super Antworten mit Zitat

Also das klappt schonmal einwandfrei. Vielen Dank. Gibt es eine Möglichkeit in meine txt datei nur das reinzuschreiben was ich auch tatsächlich im Menu ausgewählt habe?
Nach oben
Leo_Tooltip
Gast





BeitragVerfasst am: Mo Jul 09, 2007 11:11 am    Titel: Antworten mit Zitat

Du kannst ja mal versuchen, die beiden vorhandenen FileAppends auszukommentieren und das Skript wie folgt zu ergänzen:
Code:
leo_sub_MenuCall:
   leo_MenuString := leo_MenuItem[%A_ThisMenuItemPos%]
   ; geschützte Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, " ", "")
   ; Eckige und runde Klammern mit Inhalt entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "(\(|\[).*?(\)|\])", "")
   ; Nach Minus, geschweifter Klammer, senkrechtem Strich oder Tabulator schneiden
   leo_MenuString := RegExReplace(leo_MenuString, "^(.*?)(- |\{|\||,|\t).*", "$1")
   ; Sonderwörter entfernen
   leo_MenuString := RegExReplace(leo_MenuString, leo_RemoveBeforeReplace, "")
   ; überflüssige Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "\s+", " ")
   leo_MenuString := RegExReplace(leo_MenuString, "^\s*", "")
   leo_MenuString := RegExReplace(leo_MenuString, "\s*$", "")
   ; Variablenzeichen und Klammern wieder hinzufügen
   leo_MenuString := RegExReplace(leo_searchOrig, "^(" leo_CleanChars ")?.*?(" leo_CleanChars ")?$", "$1" leo_MenuString "$2")

   If leo_TranslationToClipboard = 1
      Clipboard = %leo_MenuString%
   Else
      SendRaw, %leo_MenuString%
   If leo_HistoryFile <>
      FileAppend, %leo_searchOrig%`r`n%leo_MenuString%`r`n`r`n, %leo_HistoryFile%

Return

(*ungetestet*)
Nach oben
grossermanitou
Gast





BeitragVerfasst am: Mo Jul 09, 2007 1:29 pm    Titel: Antworten mit Zitat

alos ich habe deine anweisungen befolgt und den code eingefügt

Code:
 
; -----------------------------------------------------------------------------
; #############################################################################
; -----------------------------------------------------------------------------
; Name:               LeoToolTip
; -----------------------------------------------------------------------------
; Prefix:             leo_
; Version:            0.8
; Date:               2007-06-07
; Author:             Wolfgang Reszel
; Copyright:          2007 Heise Zeitschriften Verlag GmbH & Co. KG
; -----------------------------------------------------------------------------

; -----------------------------------------------------------------------------
; === Initialisation ==========================================================
; -----------------------------------------------------------------------------

; Initialisierungsroutine, welche beim Start von ac'tivAid aufgerufen wird.
init_LeoToolTip:
   Prefix = leo
   %Prefix%_ScriptName    = LeoToolTip
   %Prefix%_ScriptVersion = 0.8
   %Prefix%_Author        = Wolfgang Reszel
   RequireExtensions      =
   CustomHotkey_LeoToolTip = 0           ; automatisches benutzerdefinierbares Tastaturkürzel? (1 = ja)
   Hotkey_LeoToolTip       =             ; Standard-Hotkey
   HotkeyPrefix_LeoToolTip =             ; Präfix, welches vor immer vor dem Tastaturkürzel gesetzt wird

   ; Sprachabhängige Variablen
   If Lng = 07  ; = Deutsch (0407, 0807, 0c07 ...)
   {
      MenuName                      = %leo_ScriptName% - markiertes Wort übersetzen
      Description                   = Übersetzt mittels dict.leo.org das markierte Wort und zeigt das Ergebnis als Tooltip an.
      lng_leo_NothingFound          = Suchbegriff nicht gefunden
      lng_leo_Error                 = Fehler beim Zugriff auf LEO.`nVermutlich wurden zu viele Abfragen in Folge an den Server geschickt.`nLEO sperrt in diesem Fall ihre IP-Adresse für 2 Minuten.`n`nKlicken Sie mit der rechten Maustaste auf diese Meldung,`num die Fehlerseite aufzurufen.
      lng_leo_LeoOnMbutton          = Suche automatisch ausführen, wenn ein Wort mit der mittleren Maustaste markiert wird. (MouseClip)
      lng_leo_Searching             = Verbinde mit
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org ist schneller, aber bei vielen Anfragen in kurzer Zeit gibt es eine 2-Minuten-Sperrung.
      lng_leo_ToolTipTimeout        = Sekunden, nach denen der Tooltip automatisch verschwindet
      lng_leo_UseMenu               = Menü statt eines Tooltips einblenden, womit die ausgewählte Übersetzung direkt eingefügt werden kann
      lng_leo_GotoURL               = Suchergebnisse mit dict.leo.org im Browser anzeigen
      lng_leo_GotoURLCompact        = im Browser anzeigen
      lng_leo_AutoCorrect           = Verwende ähnlichen Suchbegriff
      lng_leo_Lang1                 = Deutsch-Englisch
      lng_leo_Lang2                 = Deutsch-Französisch
      lng_leo_Lang3                 = Deutsch-Spanisch
      lng_leo_SearchFor             = Bitte Suchbegriff eingeben
      lng_leo_CheckProxy            = Bitte prüfen Sie auch Ihre Proxy-Einstellungen im Internet Explorer.`nLeoToolTip funktioniert nicht bei Proxies mit manueller Anmeldung.`nEvtl. hilft die Aktivierung von "HTTP 1.1 über Proxy-Verbindungen verwenden" in den Internetoptionen unter Erweitert.`nUnter Umständen könnte auch der Server nicht erreichbar sein.
      lng_leo_Browser               = Browser für Rechtsklick auf ToolTip
      lng_leo_BrowserError          = Der Browser kann evtl. nicht gestartet werden, Windows meldet:`n
      lng_leo_SelectBrowser         = Auswählen ...
      lng_leo_FileTypeEXE           = Programme (*.exe)
      lng_leo_TranslationToClipboard= Ausgewählte Übersetzung wird nicht eingefügt, sondern in die Zwischenablage gelegt
      lng_leo_CompactMenu           = Kompakteres Menü
   }
   else        ; = Alternativ-Sprache (wenn nicht Deutsch und keine language.ini vorhanden)
   {
      MenuName                      = %leo_ScriptName% - translate selected word
      Description                   = Translates the selected word with dict.leo.org and shows the result as a tooltip.
      lng_leo_NothingFound          = search item not found
      lng_leo_Error                 = Error while accessing LEO.`nMaybe you've sent to many queries in a short time.`nIn that case, LEO locks your IP-address for 2 minutes.
      lng_leo_LeoOnMbutton          = Search automatically when selecting a word with the middle mouse-button. (MouseClip)
      lng_leo_Searching             = Connecting to
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org is faster, but you will be locked for 2 minutes for to many queries in a short time.
      lng_leo_ToolTipTimeout        = Seconds, when the tooltip automatically disappears
      lng_leo_UseMenu               = Show a menu instead of a tooltip to make it possible to directly paste a translation
      lng_leo_GotoURL               = Show results with dict.leo.org in browser
      lng_leo_GotoURLCompact        = Show in browser
      lng_leo_AutoCorrect           = Using similar search item
      lng_leo_Lang1                 = German-English
      lng_leo_Lang2                 = German-French
      lng_leo_Lang3                 = German-Spanish
      lng_leo_SearchFor             = Please enter search item
      lng_leo_CheckProxy            = Please check also your proxy settings in Internet Explorer,`nLeoToolTip does not work at proxies with manual authentification.`nAlso the Leo-server could be down at the moment.
      lng_leo_Browser               = Browser for right-click on tooltip
      lng_leo_BrowserError          = Maybe the browser can't be launched, windows returns:`n
      lng_leo_SelectBrowser         = Choose...
      lng_leo_FileTypeEXE           = Programs (*.exe)
      lng_leo_TranslationToClipboard= Selected translation will be stored in the clipboard instead of pasting it
      lng_leo_CompactMenu           = More compact menu
   }

   func_HotkeyRead( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip", "leo_sub_Hotkey1", "^+l", "$" )
   func_HotkeyRead( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip", "leo_sub_Hotkey2", "", "$" )
   func_HotkeyRead( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip", "leo_sub_Hotkey3", "", "$" )

   RegisterAdditionalSetting( "leo", "CompactMenu", 0 )

   IniRead, leo_UseMenu , %ConfigFile%, LeoToolTip, UseMenu, 0
   IniRead, leo_NumOfResults, %ConfigFile%, LeoToolTip, NumOfResults, 5
   IniRead, leo_EnableMButton, %ConfigFile%, LeoToolTip, LeoOnMButton, 0
   IniRead, leo_TranslationToClipboard, %ConfigFile%, LeoToolTip, TranslationToClipboard, 0
   IniRead, leo_Server, %ConfigFile%, LeoToolTip, LeoServerURL, pda.leo.org
   IniRead, leo_ToolTipTimeout, %ConfigFile%, LeoToolTip, ToolTipTimeout, 10
   IniRead, leo_Browser, %ConfigFile%, LeoToolTip, Browser, %A_Space%
   IniRead, leo_HistoryFile, %ConfigFile%, LeoToolTip, HistoryFile, %A_Space%

   ; Liste der Texte, die aus dem Ergebnis entfernt werden sollen. (Regulärer Ausdruck)
   leo_RemoveBeforeReplace := "i)\.{3}|j[mnd]{3}\.(/| |$)|etw\. |s(b|o)\.(/| |$)|sth\.(/| |$)|^to |^it |^the |^d(er|ie|as) | ad(j|v)\.| pl\.| also: .*| rarely: .*| auch: .*| selten: .*"

   leo_WebBrowsers = OpWindow,MozillaUIWindowClass,IEFrame

   leo_AlphaNums := "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   leo_CleanChars = `%|&\$|\$&|\$#|#|\$|&|\(|\)|\[|\]|\{|\}|^ +| +$|@
Return

SettingsGui_LeoToolTip:
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang1, "leo_Hotkey1", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang2, "leo_Hotkey2", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang3, "leo_Hotkey3", "xs+10 y+6 w180" )

   If Enable_MouseClip = 1
      Gui, Add, Checkbox, -Wrap xs+10 y+10 gleo_sub_MouseClip vleo_EnableMButton Checked%leo_EnableMButton%, %lng_leo_LeoOnMbutton%
   Gui, Add, Checkbox, -Wrap xs+10 y+5 gsub_CheckIfSettingsChanged vleo_UseMenu Checked%leo_UseMenu%, %lng_leo_UseMenu%
   Gui, Add, Checkbox, -Wrap xs+20 y+5 gsub_CheckIfSettingsChanged vleo_TranslationToClipboard Checked%leo_TranslationToClipboard%, %lng_leo_TranslationToClipboard%
   Gui, Add, Text, xs+10 y+20, %lng_leo_Server%:
   leo_Servers = dict.leo.org|pda.leo.org
   Gui, Add, DropDownList, x+5 yp-4 gsub_CheckIfSettingsChanged vleo_Server, %leo_Servers%
   GuiControl,Choose,leo_Server,%leo_Server%
   Gui, Add, Text, xs+10 y+3, %lng_leo_ServerTip%
   Gui, Add, Text, xs+10 y+11, %lng_leo_ToolTipTimeout%:
   Gui, Add, Edit, x+5 yp-3 -Wrap r1 Number w40 gsub_CheckIfSettingsChanged vleo_ToolTipTimeout, %leo_ToolTipTimeout%
   Gui, Add, UpDown, Range1-99, %leo_ToolTipTimeout%

   Gui, Add, Text, xs+10 y+20, %lng_leo_Browser%:
   Gui, Add, Edit, x+5 yp-3 R1 -Wrap w290 gsub_CheckIfSettingsChanged vleo_Browser, %leo_Browser%
   Gui, Add, Button, x+5 -Wrap w80 h21 gleo_sub_SelectBrowser, %lng_leo_SelectBrowser%
Return

leo_sub_SelectBrowser:
   Gui, +OwnDialogs
   leo_Suspended = %A_IsSuspended%
   If leo_Suspended = 0
      Suspend, On

   FileSelectFile, leo_Browser_tmp,, %A_Programfiles%, %lng_leo_Browser%, %lng_leo_FileTypeEXE%
   If ErrorLevel = 0
      GuiControl,, leo_Browser, %leo_Browser_tmp%

   If leo_Suspended = 0
      Suspend, Off
Return

leo_sub_MouseClip:
   Gosub, sub_CheckIfSettingsChanged
   GuiControlGet, leo_EnableMButton_tmp,,leo_EnableMButton
   If (leo_EnableMButton_tmp = 1 AND Enable_ThesauroToolTip <> "")
      GuiControl,,ttt_EnableMButton,0
Return

SaveSettings_LeoToolTip:
   IniWrite, %leo_UseMenu%, %ConfigFile%, LeoToolTip, UseMenu
   IniWrite, %leo_EnableMButton%, %ConfigFile%, LeoToolTip, LeoOnMButton
   IniWrite, %leo_Server%, %ConfigFile%, LeoToolTip, LeoServerURL
   IniWrite, %leo_ToolTipTimeout%, %ConfigFile%, LeoToolTip, ToolTipTimeout
   IniWrite, %leo_Browser%, %ConfigFile%, LeoToolTip, Browser
   IniWrite, %leo_TranslationToClipboard%, %ConfigFile%, LeoToolTip, TranslationToClipboard

   func_HotkeyWrite( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip" )
Return

AddSettings_LeoToolTip:
Return

CancelSettings_LeoToolTip:
Return

DoEnable_LeoToolTip:
   If leo_EnableMButton
      RegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyEnable("leo_Hotkey1")
   func_HotkeyEnable("leo_Hotkey2")
   func_HotkeyEnable("leo_Hotkey3")
Return

DoDisable_LeoToolTip:
   If leo_EnableMButton
      UnRegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyDisable("leo_Hotkey1")
   func_HotkeyDisable("leo_Hotkey2")
   func_HotkeyDisable("leo_Hotkey3")
Return

DefaultSettings_LeoToolTip:
Return

OnExitAndReload_LeoToolTip:
Return

; -----------------------------------------------------------------------------
; === Hotkeys =================================================================
; -----------------------------------------------------------------------------

leo_sub_Hotkey1:
   leo_LangStr = ende
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey2:
   leo_LangStr = frde
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey3:
   leo_LangStr = esde
   Gosub, sub_Hotkey_LeoToolTip
Return

; Unterroutine für das automatische Tastaturkürzel
sub_Hotkey_LeoToolTip:
   WinGetClass, leo_WinClass, A
   Coordmode, Caret, Screen

   If leo_WinClass Contains %leo_WebBrowsers%
   {
      leo_ttX =
      leo_ttY =
   }
   Else
   {
      leo_ttX := A_CaretX+10
      leo_ttY := A_CaretY+10
   }
   gosub, leo_sub_Search
   If ErrorLevel = 1
      Return
   SetTimer, leo_tim_ToolTipOff, % leo_ToolTipTimeout * 1000
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      Gosub, DoDisable_LeoToolTip
      Input, leo_SingleKey, L1 I V, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}{CtrlBreak}%InputEscapeKeys%
      StringReplace, leo_SingleKey, ErrorLevel, Endkey:,,A
      Gosub, DoEnable_LeoToolTip
   }
   Gosub, leo_tim_ToolTipOff
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      If leo_SingleKey = %Hotkey_leo_Hotkey1%
         Gosub, leo_sub_Hotkey1
      If leo_SingleKey = %Hotkey_leo_Hotkey2%
         Gosub, leo_sub_Hotkey2
      If leo_SingleKey = %Hotkey_leo_Hotkey3%
         Gosub, leo_sub_Hotkey3
   }
Return

MButton_LeoToolTip:
   If (leo_EnableMButton = 1 AND Enable_MouseClip = 1)
   {
      mc_NoPaste = yes
      leo_ttX =
      leo_ttY =
      leo_LangStr = ende
      gosub, leo_sub_Search
      MButton_send =
   }
Return

; -----------------------------------------------------------------------------
; === Subroutines =============================================================
; -----------------------------------------------------------------------------

leo_sub_Search:
   AutoTrim, On
   Coordmode, ToolTip, Screen
   Coordmode, Menu, Screen

   If leo_NotFound =
   {
      func_GetSelection()
      leo_searchOrig :=  Selection
   }
   Else
      leo_NotFound++

   If leo_searchOrig =
   {
      StringUpper, leo_Text, leo_LangStr
      leo_Text := lng_leo_SearchFor " (" SubStr(leo_Text,1,2) " <-> " SubStr(leo_Text,3,2) "):"
      InputBox, leo_searchOrig, %leo_ScriptName% (%ScriptTitle%), %leo_Text%,,,115,,,,,%leo_LastSearchOrig%
      If ErrorLevel = 1
         Return
   }

   ; Zeilenumbrüche entfernen
   leo_searchOrig := RegExReplace(leo_searchOrig, "\r\n|\r|\n"," ")

   ; Variablenzeichen und Klammern entfernen (Aufgabe)
   leo_searchClean := RegExReplace(leo_searchOrig,leo_CleanChars,"")

   leo_searchFor := leo_func_URLEncode(leo_searchClean)

   If ( ( leo_LangStr leo_searchFor <> leo_LastLangStr leo_lastSearch AND leo_searchFor <> "" ) OR (leo_lastSearch = "" AND leo_searchFor ="") )
   {
      If leo_NotFound =
         tooltip, %lng_leo_Searching% %leo_Server% ..., %leo_ttX%, %leo_ttY%, 7
      Else
         tooltip, %lng_leo_AutoCorrect% %leo_searchOrig% ..., %leo_ttX%, %leo_ttY%, 7

      URLDownloadToFile, http://%leo_Server%/?lp=%leo_langStr%&relink=off&sectHdr=off&spellToler=on&search=%leo_searchFor%, %A_Temp%\leoahk.tmp
      ;FileCopy, %A_Temp%\leoahk.tmp, %A_Desktop%\LeoToolTip-DebugDatei.txt
      FileRead, leo_Query, %A_Temp%\leoahk.tmp
      FileDelete, %A_Temp%\leoahk.tmp

      StringGetPos, leo_tmp, leo_Query, <td class="td1" valign="middle" width="4
      StringTrimLeft, leo_Result, leo_Query, %leo_tmp%

      ; erst alle " entfernen, da sie nicht benötigt werden
      StringReplace, leo_Result, leo_Result, ",, A
      ; verschiedene Tags entfernen
      leo_Result := RegExReplace(leo_Result,"i)<->.|<img.*?>|<td class=td1 nowrap width=.`%>||</td>|<small>|</small>|<font size=-1>|</font>|`t", "")
      ; LineBreaks einfügen
      leo_Result := RegExReplace(leo_Result, "i)<!--`n|<td class=td1 valign=middle width=..`%>", "`n")
      ; bestimmte Tags zu Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<sup>(.*?)</sup>|<sub>(.*?)</sub>", " ($1)")
      ; bestimmte Tags zu geschweiften Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<I>(.*?)</I>", "{$1}")
      ; zwei Klammern zu einer machen, z.B.: { [..]}
      leo_Result := RegExReplace(leo_Result,"\{ ?(\(|\[)(.*?)(\]|\))\}", "$1$2$3")
      leo_Result := RegExReplace(leo_Result,"\[ ?(\{|\(|\[)(.*?)(\]|\)|\})\]", "[$2]")
      ; Sonderzeichen mit Ampersand ersetzen (z.B. whiteout)
      leo_Result := RegExReplace(leo_Result,"&reg;", "®")
      leo_Result := RegExReplace(leo_Result,"&copy;", "©")
      ;alle anderen Ampersand-Semikolon Teile löschen
      leo_Result := RegExReplace(leo_Result,"&.*?;", "")
      ; Ende des Eintragens der Übersetzung bestimmen |
      leo_Result := RegExReplace(leo_Result,"<br>", "|")
      ; mehrfach und HTML Leerzeichen zu einem Leerzeichen machen
      leo_Result := RegExReplace(leo_Result,"i)&nbsp;|\t| {2,}", " ")
      leo_FinalResult =
      leo_Line = 0
      Loop, Parse, leo_Result, `n
      {
         If (A_Index/2 > leo_NumOfResults+1)
            break
         IfInstring, A_LoopField, Sie haben Ihr Zugriffslimit überschritten
         {
            leo_FinalResult = %lng_leo_Error%!
            leo_SearchFor =
            Break
         }

         If leo_Line = 1
         {
            leo_Line = 2
            StringGetPos, leo_tmp, A_LoopField, <a
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
            IfInstring, A_LoopField, </tr>
               Break
            IfInstring, A_LoopField, <html>
            {
               If leo_NotFound = 1
                  leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!
               Else
                  leo_NotFound = 1
               Break
            }
            If A_LoopField =
               Break
            IfInstring, A_LoopField, <head>
            {
               leo_FinalResult = %lng_leo_Error%!
               leo_SearchFor =
               Break
            }
            StringGetPos, leo_tmp, A_LoopField, <img border="0" alt
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
         }
         Else If leo_Line = 2
         {
            leo_Line = 1
            StringGetPos, leo_tmp, A_LoopField, <td
            StringLeft, leo_ToLang, A_LoopField, %leo_tmp%
            leo_FinalResult = %leo_FinalResult%%leo_FromLang%%A_Tab%%leo_ToLang%`r`n
            IfInstring, A_LoopField, </table>
               Break
         }
         Else
         {
            leo_Line = 1
         }
      }
      StringTrimRight, leo_FinalResult, leo_FinalResult, 2
      If leo_Query =
         leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!`r`n%lng_leo_CheckProxy%
   }
   Else
      leo_searchFor = %leo_lastSearch%

   If leo_NotFound = 1
   {
      IfInstring, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
      {
         StringGetPos, leo_tmp, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
         StringTrimLeft, leo_Result, leo_Query, %leo_tmp%
         StringGetPos, leo_tmp, leo_Result, ">
         StringTrimLeft, leo_Result, leo_Result, % leo_tmp+2
         StringGetPos, leo_tmp, leo_Result, </A>
         StringLeft, leo_searchOrig, leo_Result, %leo_tmp%
         leo_lastSearch =
         leo_lastLangStr =
         Gosub leo_sub_Search
         Return
      }
   }
   If leo_NotFound = 1
      leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!

   leo_FinalResultTip := RegExReplace(leo_FinalResult,"i)<B>|</B>", "")
   StringReplace, leo_FinalResultTip, leo_FinalResultTip, %A_Tab%, % "  =  ", All
   leo_NotFound =

   leo_lastSearch = %leo_searchFor%
   leo_lastSearchOrig = %leo_searchOrig%
   leo_LastLangStr = %leo_LangStr%
   MouseGetPos, leo_startX, leo_startY

   StringLeft, leo_Lang1, leo_LangStr, 2
   StringRight, leo_Lang2, leo_LangStr, 2
   StringUpper, leo_Lang1, leo_Lang1
   StringUpper, leo_Lang2, leo_Lang2

   If (leo_UseMenu = 1 AND !InStr(leo_FinalResult, lng_leo_NothingFound ": " leo_searchOrig))
   {
      leo_Index = 0
      Loop, Parse, leo_FinalResult, `n, `r
      {
         leo_Split = %A_LoopField%

         StringSplit, leo_Split, leo_Split, %A_Tab%

         IfInString, leo_Split1, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split2%
            leo_MenuStringB = %leo_Split1%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang2%-%leo_Lang1%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall

         }
         IfInString, leo_Split2, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split1%
            leo_MenuStringB =%leo_Split2%
            leo_MenuString = %leo_MenuString%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang1%-%leo_Lang2%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall
         }

      }
      Gosub, leo_tim_ToolTipOff
      Menu, LeoToolTip, Add
      If leo_CompactMenu = 0
         Menu, LeoToolTip, Add, &# - %lng_leo_GotoURL%, leo_sub_GotoURL
      Else
         Menu, LeoToolTip, Add, %lng_leo_GotoURLCompact%, leo_sub_GotoURL
      If leo_HistoryFile <>
         FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%

      Menu, LeoToolTip, Show, %leo_ttX%, %leo_ttY%
      Menu, LeoToolTip, DeleteAll
      Return
   }
   Else
   {
      tooltip, %leo_FinalResultTip%, %leo_ttX%, %leo_ttY%, 7
      ;Clipboard = %leo_FinalResult%
      SetTimer, leo_tim_WatchToolTip, 20
      If (leo_HistoryFile <> "" AND !InStr(leo_FinalResult, lng_leo_NothingFound))
         FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%
   }
Return

leo_sub_MenuCall:
   leo_MenuString := leo_MenuItem[%A_ThisMenuItemPos%]
   ; geschützte Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, " ", "")
   ; Eckige und runde Klammern mit Inhalt entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "(\(|\[).*?(\)|\])", "")
   ; Nach Minus, geschweifter Klammer, senkrechtem Strich oder Tabulator schneiden
   leo_MenuString := RegExReplace(leo_MenuString, "^(.*?)(- |\{|\||,|\t).*", "$1")
   ; Sonderwörter entfernen
   leo_MenuString := RegExReplace(leo_MenuString, leo_RemoveBeforeReplace, "")
   ; überflüssige Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "\s+", " ")
   leo_MenuString := RegExReplace(leo_MenuString, "^\s*", "")
   leo_MenuString := RegExReplace(leo_MenuString, "\s*$", "")
   ; Variablenzeichen und Klammern wieder hinzufügen
   leo_MenuString := RegExReplace(leo_searchOrig, "^(" leo_CleanChars ")?.*?(" leo_CleanChars ")?$", "$1" leo_MenuString "$2")

   If leo_TranslationToClipboard = 1
      Clipboard = %leo_MenuString%
   Else
      SendRaw, %leo_MenuString%
   If leo_HistoryFile <>
      FileAppend, %leo_searchOrig%`r`n%leo_MenuString%`r`n`r`n, %leo_HistoryFile%
Return

leo_func_URLEncode( leo_url ) {
   SetFormat, integer, hex
   StringReplace, leo_url, leo_url, %A_Space%, `%20
   Loop, 127
   {
      leo_HexCode := A_Index+127
      Transform, leo_HighChar, Chr, %leo_HexCode%
      StringReplace, leo_HexCode, leo_HexCode, 0x,`%
      StringReplace, leo_url, leo_url, %leo_HighChar%, %leo_HexCode%
   }
   SetFormat, integer, dec
   Return %leo_url%
}

leo_tim_ToolTipOff:
   RButton_tip =
   leo_BreakLoop = 1
   SetTimer, leo_tim_ToolTipOff, Off
   tooltip,,,,7
   SetTimer, leo_tim_WatchToolTip, Off
Return

leo_sub_GotoURL:
   If leo_Browser =
      Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   Else
      Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   If ErrorLevel = ERROR
      func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
Return

leo_tim_WatchToolTip:
   MouseGetPos, leo_X, leo_Y, leo_WinID
   If leo_startX <>
   {
      If (leo_X > leo_StartX+4 OR leo_Y > leo_StartY+4 OR leo_X < leo_StartX-4 OR leo_Y < leo_StartY-4)
      {
         leo_startX =
         SetTimer, leo_tim_ToolTipOff, 2000
      }
   }
   WinGetTitle, leo_TipText, ahk_id %leo_WinID%
   If leo_TipText = %leo_FinalResultTip%
   {
      GetKeyState, leo_LButton, LButton
      GetKeyState, leo_RButton, RButton
      If leo_LButton = D
         Gosub, leo_tim_ToolTipOff
      Else If (leo_RButton = "D" OR RButton_tip = "yes")
      {
         If leo_Browser =
            Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         Else
            Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         If ErrorLevel = ERROR
            func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
         Gosub, leo_tim_ToolTipOff
      }
      Else
      {
         SetTimer, leo_tim_ToolTipOff, 1000
      }
   }
   GetKeyState, leo_ESC, ESC
   If leo_ESC = D
      SetTimer, leo_tim_ToolTipOff, 1
Return




so sieht das ganze jetzt in meiner txt aus:

to lope = laufen    | lief, gelaufen |
to run    | ran, run | = laufen
to walk = laufen
to be in force = laufen
to pace around = hin und her laufen

laufen
walk

vollkommen glücklich wäre ich wenn es so assehen würde

laufen=walk
Nach oben
Leo_ToolTip
Gast





BeitragVerfasst am: Mo Jul 09, 2007 2:02 pm    Titel: Antworten mit Zitat

Zitat:
Du kannst ja mal versuchen, die beiden vorhandenen FileAppends auszukommentieren und das Skript wie folgt zu ergänzen:

Hast Du nicht getan!

Wenns "laufen=walk" sein soll, musst Du das neu eingefügte FileAppend ändern:
Code:
FileAppend, %leo_searchOrig%=%leo_MenuString%`r`n`r`n, %leo_HistoryFile%
Nach oben
grossermanitou
Gast





BeitragVerfasst am: Di Jul 10, 2007 10:20 am    Titel: Antworten mit Zitat

klasse!ich hatte mir schon gedacht das es damit zutun hatte. was du aber mit ausklammern gemeint hattest war mir nicht ganz klar.

wie auch immer. es funktioniert. einfach nur top! danke
Nach oben
Fisch
Gast





BeitragVerfasst am: Fr Nov 23, 2007 2:43 am    Titel: funktioniert teilweise Antworten mit Zitat

hm ich habe gerade das gleiche befolgt. soweit funktiniert alles. leider wird mir nicht der eintrag in meine txt-datei eingefügt den ich auswähle, sondern immer nur der letzte Beitrag.

Bsp. ich lasse "messy" übersetzten. ich entscheide mich für durcheinander und wähle dies im Menu aus. in meine txt datei wird aber der letzte eintrag ( "verschmutzt") eingefügt.
Nach oben
denick



Anmeldedatum: 15.09.2006
Beiträge: 1955
Wohnort: Berlin

BeitragVerfasst am: Fr Nov 23, 2007 5:35 am    Titel: Antworten mit Zitat

Moin,

stell doch bitte mal Deine komplette Subroutine leo_sub_MenuCall: ein. Vielleicht hat der Autor ja etwas geändert.
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fisch
Gast





BeitragVerfasst am: Fr Nov 23, 2007 7:45 am    Titel: Antworten mit Zitat

ich nehme an du meinst die leotooltip.ahk

Code:

; -----------------------------------------------------------------------------
; #############################################################################
; -----------------------------------------------------------------------------
; Name:               LeoToolTip
; -----------------------------------------------------------------------------
; Prefix:             leo_
; Version:            0.8
; Date:               2007-06-07
; Author:             Wolfgang Reszel
; Copyright:          2007 Heise Zeitschriften Verlag GmbH & Co. KG
; -----------------------------------------------------------------------------

; -----------------------------------------------------------------------------
; === Initialisation ==========================================================
; -----------------------------------------------------------------------------

; Initialisierungsroutine, welche beim Start von ac'tivAid aufgerufen wird.
init_LeoToolTip:
   Prefix = leo
   %Prefix%_ScriptName    = LeoToolTip
   %Prefix%_ScriptVersion = 0.8
   %Prefix%_Author        = Wolfgang Reszel
   RequireExtensions      =
   CustomHotkey_LeoToolTip = 0           ; automatisches benutzerdefinierbares Tastaturkürzel? (1 = ja)
   Hotkey_LeoToolTip       =             ; Standard-Hotkey
   HotkeyPrefix_LeoToolTip =             ; Präfix, welches vor immer vor dem Tastaturkürzel gesetzt wird

   ; Sprachabhängige Variablen
   If Lng = 07  ; = Deutsch (0407, 0807, 0c07 ...)
   {
      MenuName                      = %leo_ScriptName% - markiertes Wort übersetzen
      Description                   = Übersetzt mittels dict.leo.org das markierte Wort und zeigt das Ergebnis als Tooltip an.
      lng_leo_NothingFound          = Suchbegriff nicht gefunden
      lng_leo_Error                 = Fehler beim Zugriff auf LEO.`nVermutlich wurden zu viele Abfragen in Folge an den Server geschickt.`nLEO sperrt in diesem Fall ihre IP-Adresse für 2 Minuten.`n`nKlicken Sie mit der rechten Maustaste auf diese Meldung,`num die Fehlerseite aufzurufen.
      lng_leo_LeoOnMbutton          = Suche automatisch ausführen, wenn ein Wort mit der mittleren Maustaste markiert wird. (MouseClip)
      lng_leo_Searching             = Verbinde mit
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org ist schneller, aber bei vielen Anfragen in kurzer Zeit gibt es eine 2-Minuten-Sperrung.
      lng_leo_ToolTipTimeout        = Sekunden, nach denen der Tooltip automatisch verschwindet
      lng_leo_UseMenu               = Menü statt eines Tooltips einblenden, womit die ausgewählte Übersetzung direkt eingefügt werden kann
      lng_leo_GotoURL               = Suchergebnisse mit dict.leo.org im Browser anzeigen
      lng_leo_GotoURLCompact        = im Browser anzeigen
      lng_leo_AutoCorrect           = Verwende ähnlichen Suchbegriff
      lng_leo_Lang1                 = Deutsch-Englisch
      lng_leo_Lang2                 = Deutsch-Französisch
      lng_leo_Lang3                 = Deutsch-Spanisch
      lng_leo_SearchFor             = Bitte Suchbegriff eingeben
      lng_leo_CheckProxy            = Bitte prüfen Sie auch Ihre Proxy-Einstellungen im Internet Explorer.`nLeoToolTip funktioniert nicht bei Proxies mit manueller Anmeldung.`nEvtl. hilft die Aktivierung von "HTTP 1.1 über Proxy-Verbindungen verwenden" in den Internetoptionen unter Erweitert.`nUnter Umständen könnte auch der Server nicht erreichbar sein.
      lng_leo_Browser               = Browser für Rechtsklick auf ToolTip
      lng_leo_BrowserError          = Der Browser kann evtl. nicht gestartet werden, Windows meldet:`n
      lng_leo_SelectBrowser         = Auswählen ...
      lng_leo_FileTypeEXE           = Programme (*.exe)
      lng_leo_TranslationToClipboard= Ausgewählte Übersetzung wird nicht eingefügt, sondern in die Zwischenablage gelegt
      lng_leo_CompactMenu           = Kompakteres Menü
   }
   else        ; = Alternativ-Sprache (wenn nicht Deutsch und keine language.ini vorhanden)
   {
      MenuName                      = %leo_ScriptName% - translate selected word
      Description                   = Translates the selected word with dict.leo.org and shows the result as a tooltip.
      lng_leo_NothingFound          = search item not found
      lng_leo_Error                 = Error while accessing LEO.`nMaybe you've sent to many queries in a short time.`nIn that case, LEO locks your IP-address for 2 minutes.
      lng_leo_LeoOnMbutton          = Search automatically when selecting a word with the middle mouse-button. (MouseClip)
      lng_leo_Searching             = Connecting to
      lng_leo_Server                = Server
      lng_leo_ServerTip             = pda.leo.org is faster, but you will be locked for 2 minutes for to many queries in a short time.
      lng_leo_ToolTipTimeout        = Seconds, when the tooltip automatically disappears
      lng_leo_UseMenu               = Show a menu instead of a tooltip to make it possible to directly paste a translation
      lng_leo_GotoURL               = Show results with dict.leo.org in browser
      lng_leo_GotoURLCompact        = Show in browser
      lng_leo_AutoCorrect           = Using similar search item
      lng_leo_Lang1                 = German-English
      lng_leo_Lang2                 = German-French
      lng_leo_Lang3                 = German-Spanish
      lng_leo_SearchFor             = Please enter search item
      lng_leo_CheckProxy            = Please check also your proxy settings in Internet Explorer,`nLeoToolTip does not work at proxies with manual authentification.`nAlso the Leo-server could be down at the moment.
      lng_leo_Browser               = Browser for right-click on tooltip
      lng_leo_BrowserError          = Maybe the browser can't be launched, windows returns:`n
      lng_leo_SelectBrowser         = Choose...
      lng_leo_FileTypeEXE           = Programs (*.exe)
      lng_leo_TranslationToClipboard= Selected translation will be stored in the clipboard instead of pasting it
      lng_leo_CompactMenu           = More compact menu
   }

   func_HotkeyRead( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip", "leo_sub_Hotkey1", "^+l", "$" )
   func_HotkeyRead( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip", "leo_sub_Hotkey2", "", "$" )
   func_HotkeyRead( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip", "leo_sub_Hotkey3", "", "$" )

   RegisterAdditionalSetting( "leo", "CompactMenu", 0 )

   IniRead, leo_UseMenu , %ConfigFile%, LeoToolTip, UseMenu, 0
   IniRead, leo_NumOfResults, %ConfigFile%, LeoToolTip, NumOfResults, 5
   IniRead, leo_EnableMButton, %ConfigFile%, LeoToolTip, LeoOnMButton, 0
   IniRead, leo_TranslationToClipboard, %ConfigFile%, LeoToolTip, TranslationToClipboard, 0
   IniRead, leo_Server, %ConfigFile%, LeoToolTip, LeoServerURL, pda.leo.org
   IniRead, leo_ToolTipTimeout, %ConfigFile%, LeoToolTip, ToolTipTimeout, 10
   IniRead, leo_Browser, %ConfigFile%, LeoToolTip, Browser, %A_Space%
   IniRead, leo_HistoryFile, %ConfigFile%, LeoToolTip, HistoryFile, %A_Space%

   ; Liste der Texte, die aus dem Ergebnis entfernt werden sollen. (Regulärer Ausdruck)
   leo_RemoveBeforeReplace := "i)\.{3}|j[mnd]{3}\.(/| |$)|etw\. |s(b|o)\.(/| |$)|sth\.(/| |$)|^to |^it |^the |^d(er|ie|as) | ad(j|v)\.| pl\.| also: .*| rarely: .*| auch: .*| selten: .*"

   leo_WebBrowsers = OpWindow,MozillaUIWindowClass,IEFrame

   leo_AlphaNums := "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   leo_CleanChars = `%|&\$|\$&|\$#|#|\$|&|\(|\)|\[|\]|\{|\}|^ +| +$|@

   leo_SearchCache = |
Return

SettingsGui_LeoToolTip:
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang1, "leo_Hotkey1", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang2, "leo_Hotkey2", "xs+10 y+6 w180" )
   func_HotkeyAddGuiControl( lng_Hotkey " " lng_leo_Lang3, "leo_Hotkey3", "xs+10 y+6 w180" )

   If Enable_MouseClip = 1
      Gui, Add, Checkbox, -Wrap xs+10 y+10 gleo_sub_MouseClip vleo_EnableMButton Checked%leo_EnableMButton%, %lng_leo_LeoOnMbutton%
   Gui, Add, Checkbox, -Wrap xs+10 y+5 gsub_CheckIfSettingsChanged vleo_UseMenu Checked%leo_UseMenu%, %lng_leo_UseMenu%
   Gui, Add, Checkbox, -Wrap xs+20 y+5 gsub_CheckIfSettingsChanged vleo_TranslationToClipboard Checked%leo_TranslationToClipboard%, %lng_leo_TranslationToClipboard%
   Gui, Add, Text, xs+10 y+20, %lng_leo_Server%:
   leo_Servers = dict.leo.org|pda.leo.org
   Gui, Add, DropDownList, x+5 yp-4 gsub_CheckIfSettingsChanged vleo_Server, %leo_Servers%
   GuiControl,Choose,leo_Server,%leo_Server%
   Gui, Add, Text, xs+10 y+3, %lng_leo_ServerTip%
   Gui, Add, Text, xs+10 y+11, %lng_leo_ToolTipTimeout%:
   Gui, Add, Edit, x+5 yp-3 -Wrap r1 Number w40 gsub_CheckIfSettingsChanged vleo_ToolTipTimeout, %leo_ToolTipTimeout%
   Gui, Add, UpDown, Range1-99, %leo_ToolTipTimeout%

   Gui, Add, Text, xs+10 y+20, %lng_leo_Browser%:
   Gui, Add, Edit, x+5 yp-3 R1 -Wrap w290 gsub_CheckIfSettingsChanged vleo_Browser, %leo_Browser%
   Gui, Add, Button, x+5 -Wrap w80 h21 gleo_sub_SelectBrowser, %lng_leo_SelectBrowser%
Return

leo_sub_SelectBrowser:
   Gui, +OwnDialogs
   leo_Suspended = %A_IsSuspended%
   If leo_Suspended = 0
      Suspend, On

   FileSelectFile, leo_Browser_tmp,, %A_Programfiles%, %lng_leo_Browser%, %lng_leo_FileTypeEXE%
   If ErrorLevel = 0
      GuiControl,, leo_Browser, %leo_Browser_tmp%

   If leo_Suspended = 0
      Suspend, Off
Return

leo_sub_MouseClip:
   Gosub, sub_CheckIfSettingsChanged
   GuiControlGet, leo_EnableMButton_tmp,,leo_EnableMButton
   If (leo_EnableMButton_tmp = 1 AND Enable_ThesauroToolTip <> "")
      GuiControl,,ttt_EnableMButton,0
Return

SaveSettings_LeoToolTip:
   IniWrite, %leo_UseMenu%, %ConfigFile%, LeoToolTip, UseMenu
   IniWrite, %leo_EnableMButton%, %ConfigFile%, LeoToolTip, LeoOnMButton
   IniWrite, %leo_Server%, %ConfigFile%, LeoToolTip, LeoServerURL
   IniWrite, %leo_ToolTipTimeout%, %ConfigFile%, LeoToolTip, ToolTipTimeout
   IniWrite, %leo_Browser%, %ConfigFile%, LeoToolTip, Browser
   IniWrite, %leo_TranslationToClipboard%, %ConfigFile%, LeoToolTip, TranslationToClipboard
   IniWrite, %leo_HistoryFile%, %ConfigFile%, LeoToolTip, HistoryFile

   func_HotkeyWrite( "leo_Hotkey1", ConfigFile , leo_ScriptName, "Hotkey_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey2", ConfigFile , leo_ScriptName, "Hotkey2_LeoToolTip" )
   func_HotkeyWrite( "leo_Hotkey3", ConfigFile , leo_ScriptName, "Hotkey3_LeoToolTip" )
Return

AddSettings_LeoToolTip:
Return

CancelSettings_LeoToolTip:
Return

DoEnable_LeoToolTip:
   If leo_EnableMButton
      RegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyEnable("leo_Hotkey1")
   func_HotkeyEnable("leo_Hotkey2")
   func_HotkeyEnable("leo_Hotkey3")
Return

DoDisable_LeoToolTip:
   If leo_EnableMButton
      UnRegisterHook( Extend_MButton, "LeoToolTip" )
   EnableMButton_LeoToolTip = %leo_EnableMButton%
   func_HotkeyDisable("leo_Hotkey1")
   func_HotkeyDisable("leo_Hotkey2")
   func_HotkeyDisable("leo_Hotkey3")
Return

DefaultSettings_LeoToolTip:
Return

OnExitAndReload_LeoToolTip:
Return

; -----------------------------------------------------------------------------
; === Hotkeys =================================================================
; -----------------------------------------------------------------------------

leo_sub_Hotkey1:
   leo_LangStr = ende
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey2:
   leo_LangStr = frde
   Gosub, sub_Hotkey_LeoToolTip
Return

leo_sub_Hotkey3:
   leo_LangStr = esde
   Gosub, sub_Hotkey_LeoToolTip
Return

; Unterroutine für das automatische Tastaturkürzel
sub_Hotkey_LeoToolTip:
   WinGetClass, leo_WinClass, A
   Coordmode, Caret, Screen

   If leo_WinClass Contains %leo_WebBrowsers%
   {
      leo_ttX =
      leo_ttY =
   }
   Else
   {
      leo_ttX := A_CaretX+10
      leo_ttY := A_CaretY+10
   }
   gosub, leo_sub_Search
   If ErrorLevel = 1
      Return
   SetTimer, leo_tim_ToolTipOff, % leo_ToolTipTimeout * 1000
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      Gosub, DoDisable_LeoToolTip
      Input, leo_SingleKey, L1 I V, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}{CtrlBreak}%InputEscapeKeys%
      StringReplace, leo_SingleKey, ErrorLevel, Endkey:,,A
      Gosub, DoEnable_LeoToolTip
   }
   Gosub, leo_tim_ToolTipOff
   If ( leo_UseMenu <> 1 OR InStr(leo_FinalResult,lng_leo_NothingFound) )
   {
      If leo_SingleKey = %Hotkey_leo_Hotkey1%
         Gosub, leo_sub_Hotkey1
      If leo_SingleKey = %Hotkey_leo_Hotkey2%
         Gosub, leo_sub_Hotkey2
      If leo_SingleKey = %Hotkey_leo_Hotkey3%
         Gosub, leo_sub_Hotkey3
   }
Return

MButton_LeoToolTip:
   If (leo_EnableMButton = 1 AND Enable_MouseClip = 1)
   {
      mc_NoPaste = yes
      leo_ttX =
      leo_ttY =
      leo_LangStr = ende
      gosub, leo_sub_Search
      MButton_send =
   }
Return

; -----------------------------------------------------------------------------
; === Subroutines =============================================================
; -----------------------------------------------------------------------------

leo_sub_Search:
   AutoTrim, On
   Coordmode, ToolTip, Screen
   Coordmode, Menu, Screen

   If leo_NotFound =
   {
      func_GetSelection()
      leo_searchOrig :=  Selection
   }
   Else
      leo_NotFound++

   If leo_searchOrig =
   {
      StringUpper, leo_Text, leo_LangStr
      leo_Text := lng_leo_SearchFor " (" SubStr(leo_Text,1,2) " <-> " SubStr(leo_Text,3,2) "):"
      InputBox, leo_searchOrig, %leo_ScriptName% (%ScriptTitle%), %leo_Text%,,,115,,,,,%leo_LastSearchOrig%
      If ErrorLevel = 1
         Return
   }

   leo_ServerOrg = %leo_Server%
   If leo_RetryWithServer <>
   {
      leo_Server = %leo_RetryWithServer%
      leo_RetryWithServer =
   }

   ; Zeilenumbrüche entfernen
   leo_searchOrig := RegExReplace(leo_searchOrig, "\r\n|\r|\n"," ")

   ; Variablenzeichen und Klammern entfernen (Aufgabe)
   leo_searchClean := RegExReplace(leo_searchOrig,leo_CleanChars,"")

   leo_searchFor := leo_func_URLEncode(leo_searchClean)

   leo_Temp := InStr(leo_SearchCache, "|" leo_LangStr " " leo_searchFor "|")
   If leo_Temp
   {
      leo_LastLangStr = %leo_LangStr%
      leo_lastSearch  = %leo_searchFor%
      leo_FinalResult := leo_ResultCache[%leo_Temp%]
   }

   If ( ( leo_LangStr leo_searchFor <> leo_LastLangStr leo_lastSearch AND leo_searchFor <> "" ) OR (leo_lastSearch = "" AND leo_searchFor ="") )
   {
      If leo_NotFound =
         tooltip, %lng_leo_Searching% %leo_Server% ..., %leo_ttX%, %leo_ttY%, 7
      Else
         tooltip, %lng_leo_AutoCorrect% %leo_searchOrig% ..., %leo_ttX%, %leo_ttY%, 7

      URLDownloadToFile, http://%leo_Server%/?lp=%leo_langStr%&relink=off&sectHdr=off&spellToler=on&search=%leo_searchFor%, %A_Temp%\leoahk.tmp
      ;FileCopy, %A_Temp%\leoahk.tmp, %A_Desktop%\LeoToolTip-DebugDatei.txt
      FileRead, leo_Query, %A_Temp%\leoahk.tmp
      FileDelete, %A_Temp%\leoahk.tmp

      StringGetPos, leo_tmp, leo_Query, <td class="td1" valign="middle" width="4
      StringTrimLeft, leo_Result, leo_Query, %leo_tmp%

      ; erst alle " entfernen, da sie nicht benötigt werden
      StringReplace, leo_Result, leo_Result, ",, A
      ; verschiedene Tags entfernen
      leo_Result := RegExReplace(leo_Result,"i)<->.|<img.*?>|<td class=td1 nowrap width=.`%>||</td>|<small>|</small>|<font size=-1>|</font>|`t", "")
      ; LineBreaks einfügen
      leo_Result := RegExReplace(leo_Result, "i)<!--`n|<td class=td1 valign=middle width=..`%>", "`n")
      ; bestimmte Tags zu Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<sup>(.*?)</sup>|<sub>(.*?)</sub>", " ($1)")
      ; bestimmte Tags zu geschweiften Klammern umwandeln
      leo_Result := RegExReplace(leo_Result,"i)<I>(.*?)</I>", "{$1}")
      ; zwei Klammern zu einer machen, z.B.: { [..]}
      leo_Result := RegExReplace(leo_Result,"\{ ?(\(|\[)(.*?)(\]|\))\}", "$1$2$3")
      leo_Result := RegExReplace(leo_Result,"\[ ?(\{|\(|\[)(.*?)(\]|\)|\})\]", "[$2]")
      ; Sonderzeichen mit Ampersand ersetzen (z.B. whiteout)
      leo_Result := RegExReplace(leo_Result,"&reg;", "®")
      leo_Result := RegExReplace(leo_Result,"&copy;", "©")
      ;alle anderen Ampersand-Semikolon Teile löschen
      leo_Result := RegExReplace(leo_Result,"&.*?;", "")
      ; Ende des Eintragens der Übersetzung bestimmen |
      leo_Result := RegExReplace(leo_Result,"<br>", "|")
      ; mehrfach und HTML Leerzeichen zu einem Leerzeichen machen
      leo_Result := RegExReplace(leo_Result,"i)&nbsp;|\t| {2,}", " ")
      leo_FinalResult =
      leo_Line = 0
      Loop, Parse, leo_Result, `n
      {
         If (A_Index/2 > leo_NumOfResults+1)
            break
         IfInstring, A_LoopField, Sie haben Ihr Zugriffslimit überschritten
         {
            leo_FinalResult = %lng_leo_Error%!
            leo_SearchFor =
            If leo_Server <> dict.leo.org
               leo_RetryWithServer = dict.leo.org
            Break
         }

         If leo_Line = 1
         {
            leo_Line = 2
            StringGetPos, leo_tmp, A_LoopField, <a
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
            IfInstring, A_LoopField, </tr>
               Break
            IfInstring, A_LoopField, <html>
            {
               If leo_NotFound = 1
                  leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!
               Else
                  leo_NotFound = 1
               Break
            }
            If A_LoopField =
               Break
            IfInstring, A_LoopField, <head>
            {
               leo_FinalResult = %lng_leo_Error%!
               leo_SearchFor =
               If leo_Server <> dict.leo.org
                  leo_RetryWithServer = dict.leo.org
               Break
            }
            StringGetPos, leo_tmp, A_LoopField, <img border="0" alt
            StringLeft, leo_FromLang, A_LoopField, %leo_tmp%
            If leo_tmp < 1
               leo_FromLang = %A_LoopField%
         }
         Else If leo_Line = 2
         {
            leo_Line = 1
            StringGetPos, leo_tmp, A_LoopField, <td
            StringLeft, leo_ToLang, A_LoopField, %leo_tmp%
            leo_FinalResult = %leo_FinalResult%%leo_FromLang%%A_Tab%%leo_ToLang%`r`n
            IfInstring, A_LoopField, </table>
               Break
         }
         Else
         {
            leo_Line = 1
         }
      }
      StringTrimRight, leo_FinalResult, leo_FinalResult, 2
      If leo_Query =
         leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!`r`n%lng_leo_CheckProxy%
   }
   Else
      leo_searchFor = %leo_lastSearch%

   leo_Server = %leo_ServerOrg%

   If leo_NotFound = 1
   {
      IfInstring, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
      {
         StringGetPos, leo_tmp, leo_Query, <b>Orthographisch ähnliche Wörter &ndash
         StringTrimLeft, leo_Result, leo_Query, %leo_tmp%
         StringGetPos, leo_tmp, leo_Result, ">
         StringTrimLeft, leo_Result, leo_Result, % leo_tmp+2
         StringGetPos, leo_tmp, leo_Result, </A>
         StringLeft, leo_searchOrig, leo_Result, %leo_tmp%
         leo_lastSearch =
         leo_lastLangStr =
         Gosub leo_sub_Search
         Return
      }

      leo_FinalResult = %lng_leo_NothingFound%: %leo_searchOrig%!
   }
   If leo_RetryWithServer <>
   {
      Gosub, leo_sub_Search
      Return
   }

   leo_Temp := StrLen(leo_SearchCache)
   leo_SearchCache = %leo_SearchCache%%leo_LangStr% %leo_searchFor%|
   leo_ResultCache[%leo_Temp%] = %leo_FinalResult%

   leo_FinalResultTip := RegExReplace(leo_FinalResult,"i)<B>|</B>", "")
   StringReplace, leo_FinalResultTip, leo_FinalResultTip, %A_Tab%, % "  =  ", All
   leo_NotFound =

   leo_lastSearch = %leo_searchFor%
   leo_lastSearchOrig = %leo_searchOrig%
   leo_LastLangStr = %leo_LangStr%
   MouseGetPos, leo_startX, leo_startY

   StringLeft, leo_Lang1, leo_LangStr, 2
   StringRight, leo_Lang2, leo_LangStr, 2
   StringUpper, leo_Lang1, leo_Lang1
   StringUpper, leo_Lang2, leo_Lang2

   If (leo_UseMenu = 1 AND !InStr(leo_FinalResult, lng_leo_NothingFound ": " leo_searchOrig))
   {
      leo_Index = 0
      Loop, Parse, leo_FinalResult, `n, `r
      {
         leo_Split = %A_LoopField%

         StringSplit, leo_Split, leo_Split, %A_Tab%

         IfInString, leo_Split1, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split2%
            leo_MenuStringB = %leo_Split1%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang2%-%leo_Lang1%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall

         }
         IfInString, leo_Split2, <b>
         {
            leo_Index++
            leo_MenuString = %leo_Split1%
            leo_MenuStringB =%leo_Split2%
            leo_MenuString = %leo_MenuString%
            If leo_CompactMenu = 0
               leo_MenuStringB = «%leo_Lang1%-%leo_Lang2%»      %leo_MenuStringB%

            StringMid, leo_Key, leo_AlphaNums, leo_Index, 1

            leo_MenuString := RegExReplace(leo_MenuString,"i)<B>|</B>", "")
            leo_MenuStringB := RegExReplace(leo_MenuStringB,"i)<B>|</B>", "")

            leo_MenuItem[%leo_Index%] = %leo_MenuString%

            If (StrLen(leo_MenuString) > 85)
               leo_MenuString := func_StrLeft(leo_MenuString, 85) "..."
            If (StrLen(leo_MenuStringB) > 85)
               leo_MenuStringB := func_StrLeft(leo_MenuStringB, 85) "..."

            If leo_CompactMenu = 0
               Menu, LeoToolTip, Add, &%leo_Key% - %leo_MenuString%%A_Tab%%leo_MenuStringB%, leo_sub_MenuCall
            Else
               Menu, LeoToolTip, Add, %leo_MenuString% = %leo_MenuStringB%, leo_sub_MenuCall
         }

      }
      Gosub, leo_tim_ToolTipOff
      Menu, LeoToolTip, Add
      If leo_CompactMenu = 0
         Menu, LeoToolTip, Add, &# - %lng_leo_GotoURL%, leo_sub_GotoURL
      Else
         Menu, LeoToolTip, Add, %lng_leo_GotoURLCompact%, leo_sub_GotoURL
      If leo_HistoryFile <>
         FileAppend, %leo_searchOrig%=%leo_MenuString%`r`n`r`n, %leo_HistoryFile%

      Menu, LeoToolTip, Show, %leo_ttX%, %leo_ttY%
      Menu, LeoToolTip, DeleteAll
      Return
   }
   Else
   {
      tooltip, %leo_FinalResultTip%, %leo_ttX%, %leo_ttY%, 7
      ;Clipboard = %leo_FinalResult%
      SetTimer, leo_tim_WatchToolTip, 20
      If (leo_HistoryFile <> "" AND !InStr(leo_FinalResult, lng_leo_NothingFound))
         FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%
   }
Return

leo_sub_MenuCall:
   leo_MenuString := leo_MenuItem[%A_ThisMenuItemPos%]
   ; geschützte Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, " ", "")
   ; Eckige und runde Klammern mit Inhalt entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "(\(|\[).*?(\)|\])", "")
   ; Nach Minus, geschweifter Klammer, senkrechtem Strich oder Tabulator schneiden
   leo_MenuString := RegExReplace(leo_MenuString, "^(.*?)(- |\{|\||,|\t).*", "$1")
   ; Sonderwörter entfernen
   leo_MenuString := RegExReplace(leo_MenuString, leo_RemoveBeforeReplace, "")
   ; überflüssige Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "\s+", " ")
   leo_MenuString := RegExReplace(leo_MenuString, "^\s*", "")
   leo_MenuString := RegExReplace(leo_MenuString, "\s*$", "")
   ; Variablenzeichen und Klammern wieder hinzufügen
   leo_MenuString := RegExReplace(leo_searchOrig, "^(" leo_CleanChars ")?.*?(" leo_CleanChars ")?$", "$1" leo_MenuString "$2")

   If leo_TranslationToClipboard = 1
      Clipboard = %leo_MenuString%
   Else
      SendRaw, %leo_MenuString%
Return

leo_func_URLEncode( leo_url ) {
   SetFormat, integer, hex
   StringReplace, leo_url, leo_url, %A_Space%, `%20
   Loop, 127
   {
      leo_HexCode := A_Index+127
      Transform, leo_HighChar, Chr, %leo_HexCode%
      StringReplace, leo_HexCode, leo_HexCode, 0x,`%
      StringReplace, leo_url, leo_url, %leo_HighChar%, %leo_HexCode%
   }
   SetFormat, integer, dec
   Return %leo_url%
}

leo_tim_ToolTipOff:
   RButton_tip =
   leo_BreakLoop = 1
   SetTimer, leo_tim_ToolTipOff, Off
   tooltip,,,,7
   SetTimer, leo_tim_WatchToolTip, Off
Return

leo_sub_GotoURL:
   If leo_Browser =
      Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   Else
      Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
   If ErrorLevel = ERROR
      func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
Return

leo_tim_WatchToolTip:
   MouseGetPos, leo_X, leo_Y, leo_WinID
   If leo_startX <>
   {
      If (leo_X > leo_StartX+4 OR leo_Y > leo_StartY+4 OR leo_X < leo_StartX-4 OR leo_Y < leo_StartY-4)
      {
         leo_startX =
         SetTimer, leo_tim_ToolTipOff, 2000
      }
   }
   WinGetTitle, leo_TipText, ahk_id %leo_WinID%
   If leo_TipText = %leo_FinalResultTip%
   {
      GetKeyState, leo_LButton, LButton
      GetKeyState, leo_RButton, RButton
      If leo_LButton = D
         Gosub, leo_tim_ToolTipOff
      Else If (leo_RButton = "D" OR RButton_tip = "yes")
      {
         If leo_Browser =
            Run, http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         Else
            Run, %leo_Browser% http://dict.leo.org/?lp=%leo_langStr%&relink=on&sectHdr=off&spellToler=on&search=%leo_searchFor%,, UseErrorLevel
         If ErrorLevel = ERROR
            func_GetErrorMessage( A_LastError, leo_ScriptName, lng_leo_BrowserError  )
         Gosub, leo_tim_ToolTipOff
      }
      Else
      {
         SetTimer, leo_tim_ToolTipOff, 1000
      }
   }
   GetKeyState, leo_ESC, ESC
   If leo_ESC = D
      SetTimer, leo_tim_ToolTipOff, 1
Return

Nach oben
denick (n-l-i)
Gast





BeitragVerfasst am: Fr Nov 23, 2007 9:15 am    Titel: Antworten mit Zitat

Moin,

Du hast es nicht ganz so gemacht. Ab Zeile 528 sollte das Skript so aussehen:
Code:
      Gosub, leo_tim_ToolTipOff
      Menu, LeoToolTip, Add
      If leo_CompactMenu = 0
         Menu, LeoToolTip, Add, &# - %lng_leo_GotoURL%, leo_sub_GotoURL
      Else
         Menu, LeoToolTip, Add, %lng_leo_GotoURLCompact%, leo_sub_GotoURL
;     If leo_HistoryFile <>
;        FileAppend, %leo_searchOrig%=%leo_MenuString%`r`n`r`n, %leo_HistoryFile%

      Menu, LeoToolTip, Show, %leo_ttX%, %leo_ttY%
      Menu, LeoToolTip, DeleteAll
      Return
   }
   Else
   {
      tooltip, %leo_FinalResultTip%, %leo_ttX%, %leo_ttY%, 7
      ;Clipboard = %leo_FinalResult%
      SetTimer, leo_tim_WatchToolTip, 20
;     If (leo_HistoryFile <> "" AND !InStr(leo_FinalResult, lng_leo_NothingFound))
;        FileAppend, %leo_FinalResultTip%`r`n`r`n, %leo_HistoryFile%
   }
Return

leo_sub_MenuCall:
   leo_MenuString := leo_MenuItem[%A_ThisMenuItemPos%]
   ; geschützte Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, " ", "")
   ; Eckige und runde Klammern mit Inhalt entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "(\(|\[).*?(\)|\])", "")
   ; Nach Minus, geschweifter Klammer, senkrechtem Strich oder Tabulator schneiden
   leo_MenuString := RegExReplace(leo_MenuString, "^(.*?)(- |\{|\||,|\t).*", "$1")
   ; Sonderwörter entfernen
   leo_MenuString := RegExReplace(leo_MenuString, leo_RemoveBeforeReplace, "")
   ; überflüssige Leerzeichen entfernen
   leo_MenuString := RegExReplace(leo_MenuString, "\s+", " ")
   leo_MenuString := RegExReplace(leo_MenuString, "^\s*", "")
   leo_MenuString := RegExReplace(leo_MenuString, "\s*$", "")
   ; Variablenzeichen und Klammern wieder hinzufügen
   leo_MenuString := RegExReplace(leo_searchOrig, "^(" leo_CleanChars ")?.*?(" leo_CleanChars ")?$", "$1" leo_MenuString "$2")

   If leo_TranslationToClipboard = 1
      Clipboard = %leo_MenuString%
   Else
      SendRaw, %leo_MenuString%
   If leo_HistoryFile <>
      FileAppend, %leo_searchOrig%=%leo_MenuString%`r`n`r`n, %leo_HistoryFile%

Return
Nach oben
fisch
Gast





BeitragVerfasst am: Fr Nov 23, 2007 10:24 am    Titel: Antworten mit Zitat

Vielen Dank. Das funktiniert schon besser.

Wenn ich jetzt aber bspw. mir "weder" übersetzten lassen.

und den eintrag "weder … noch", dann trägt mit ahk folgendes in meine txt datei ein:

weder=neithernor

die leerzeichen werden verschluckt und es wird die vokabel eingefügt nach der ich gesucht, aber nicht die ich ausgewählt habe.

hoffe ich habe nicht schonn wieder was übersehen
Nach oben
Gast






BeitragVerfasst am: Fr Nov 23, 2007 10:25 am    Titel: Antworten mit Zitat

da gehört natürlich ein auswählen hin:

und den eintrag "weder … noch" auswähle, dann trägt mit ahk folgendes in meine txt datei ein:
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de