Hilfe Übersetzungs Tool - Beta 2

    • Offizieller Beitrag

    Hallo

    Habe mich mal dran gesetzt und ein kleines Tool geschrieben, was das Übersetzen ein bisschen vereinfachen soll
    und villeicht bei dem ein oder anderen mehr Interesse weckt.

    Momentan hab ich das noch nicht auf anderen Rechnern ausprobiert (einfach zu spät um jemanden fragen zu können :P)
    aber es könnte z.B. sein das es mit IE7 nicht funktioniert.

    Wäre also super wenn ihr mir Rückmeldung geben könntet ob alles Funktioniert hat.

    Wenn das Listview komplett geladen hat, könnt ihr einfach Doppelklick auf die Datei machen, die ihr Übersetzen/Reviewen/anschauen wollt.

    Skript:

    Spoiler anzeigen
    [autoit]

    #include <string.au3>
    #include <GuiListView.au3>
    #include <ie.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $oIE, $aNum[1][3], $ExploreActive = False, $sOldSeRe, $iStart = 0,$iDumEnd = 0,$iDumSt = 0
    Global $sUsername = RegRead("HKEY_CURRENT_USER\Software\SpiderTech\Translate", "sUser")
    Global $sPassword = _StringEncrypt(0, RegRead("HKEY_CURRENT_USER\Software\SpiderTech\Translate", "sMainLoc"), 'SpidTechTransl$!', 2)

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreateEmbedded()

    [/autoit] [autoit][/autoit] [autoit]

    $guiExplore = GUICreate("AutoIt Hilfe - Explorer", 940, 790, -1, -1, $WS_MAXIMIZEBOX + $WS_SIZEBOX)
    GUISetBkColor(0)
    GUICtrlCreateObj($oIE, 8, 8, 940 - 16, 765 - 16)
    GUICtrlSetResizing(-1, 1)
    _IENavigate($oIE, 'http://johannes.autoit.de/translation/index.php')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $guiuserpw = GUICreate("AutoIt Hilfe übersetzen", 137, 135, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetBkColor(0)

    [/autoit] [autoit][/autoit] [autoit]

    $inpUser = GUICtrlCreateInput($sUsername, 8, 24, 121, 21)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0x010101)
    GUICtrlCreateLabel("Username:", 8, 8, 55, 15)
    GUICtrlSetColor(-1, 0xFF0000)
    $inpPw = GUICtrlCreateInput($sPassword, 8, 64, 121, 21, BitOR($ES_PASSWORD, $ES_AUTOHSCROLL))
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0x010101)
    GUICtrlCreateLabel("Passwort:", 8, 48, 55, 15)
    GUICtrlSetColor(-1, 0xFF0000)
    $chkNote = GUICtrlCreateCheckbox("Login merken", 8, 86, 121, 15)
    GUICtrlSetColor(-1, 0xFF0000)
    If StringLen($sUsername) Or StringLen($sPassword) Then GUICtrlSetState(-1, $GUI_CHECKED)
    $butLogin = GUICtrlCreateButton("Login", 8, 106, 121, -1, $BS_DEFPUSHBUTTON)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0x0)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $guiuserpw)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $butLogin
    GUICtrlSetState($inpPw, $GUI_DISABLE)
    GUICtrlSetState($inpUser, $GUI_DISABLE)
    GUICtrlSetData($butLogin, "...Login...")
    _IELoadWait($oIE)
    $Username = GUICtrlRead($inpUser)
    $Password = GUICtrlRead($inpPw)
    _Login($Username, $Password)
    If Not @error Then ExitLoop
    GUICtrlSetData($butLogin, "Error")
    MsgBox(48, "", "Sie haben ein falschen Benutzername/Userpasswort eingegeben")
    GUICtrlSetState($inpPw, $GUI_ENABLE)
    GUICtrlSetState($inpUser, $GUI_ENABLE)
    GUICtrlSetData($inpPw, '')
    GUICtrlSetData($butLogin, "Login")
    EndSwitch
    WEnd
    TrayTip("Passwort korrekt", "Willkommen " & $Username, 3)
    GUICtrlSetData($butLogin, "Lese Daten...")
    If GUICtrlRead($chkNote) = $GUI_CHECKED Then
    RegWrite("HKEY_CURRENT_USER\Software\SpiderTech\Translate", "sUser", "REG_SZ", GUICtrlRead($inpUser))
    RegWrite("HKEY_CURRENT_USER\Software\SpiderTech\Translate", "sMainLoc", "REG_SZ", _StringEncrypt(1, GUICtrlRead($inpPw), 'SpidTechTransl$!', 2))
    Else
    RegDelete("HKEY_CURRENT_USER\Software\SpiderTech\Translate")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _GetTRD()
    $aStat = _GetStatus()
    GUISetState(@SW_HIDE, $guiuserpw)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $guiMain = GUICreate("Eingeloggt als " & StringUpper(StringLeft($Username, 1)) & StringTrimLeft($Username, 1), 425, 360)
    GUISetBkColor(0)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Suche",217+16+8,8,170,15)
    GUICtrlSetColor(-1,0xff0000)
    $inpSearch = GUICtrlCreateInput("", 217 + 16 + 8, 28, 170, 20)
    $comSearch = GUICtrlCreateCombo("Alle Anzeigen", 217 + 16 + 8, 56, 170)
    GUICtrlSetData(-1, "Nur Übersetzte|Nur noch zu Reviewende|Nur noch zu Übersetzende")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $lstv = GUICtrlCreateListView("Name", 8, 8, 217, 300, BitOR($LVS_NOCOLUMNHEADER, $WS_VSCROLL, $LVS_SINGLESEL), $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg(-1, 0x101E, 0, 200)

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aStat) Then
    GUICtrlCreateLabel("Status:", 8, 320, 217, 15)
    GUICtrlSetBkColor(-1, -2)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlCreateGraphic(8, 335, 407, 13)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0x00ff00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 0, 0, $aStat[0][0], 13)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xffff00, 0xffff00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, $aStat[0][0], 0, $aStat[1][0], 13)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, $aStat[0][0] + $aStat[1][0], 0, $aStat[2][0], 13)
    GUICtrlCreateLabel($aStat[0][1], 8, 335)
    GUICtrlSetBkColor(-1, -2)
    GUICtrlCreateLabel($aStat[1][1], $aStat[0][0] + 8, 335)
    GUICtrlSetBkColor(-1, -2)
    GUICtrlCreateLabel($aStat[2][1], $aStat[0][0] + $aStat[1][0] + 8, 335)
    GUICtrlSetBkColor(-1, -2)
    Else
    WinMove($guiMain, "", Default, Default, Default, 340)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _SetListView("a")

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg(0x004E, "_DoubleClickOnListView")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    If $ExploreActive Then
    GUISetState(@SW_HIDE, $guiExplore)
    GUISetState(@SW_SHOW, $guiMain)
    $ExploreActive = False
    Else
    Exit
    EndIf

    Case $comSearch
    Switch GUICtrlRead($comSearch)
    Case "Nur Übersetzte"
    _SetListView("d")
    Case "Nur noch zu Reviewende"
    _SetListView("r")
    Case "Nur noch zu Übersetzende"
    _SetListView("t")
    Case Else
    _SetListView("a")
    EndSwitch

    EndSwitch
    $sSeRe = GUICtrlRead($inpSearch)
    If $sSeRe <> $sOldSeRe Then _Search($sSeRe)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetListView($sNum)
    For $i = $iDumSt to $iDumEnd
    GUICtrlDelete($i)
    Next
    $iDumSt = GUICtrlCreateDummy()
    Local $iBKColor
    If $sNum = "t" Or $sNum = "r" Or $sNum = "d" Then
    If $sNum = "t" Then $iBKColor = 0xff0000
    If $sNum = "r" Then $iBKColor = 0xffff00
    If $sNum = "d" Then $iBKColor = 0x00ff00
    For $i = 1 To $aNum[0][0]
    If $aNum[$i][2] <> $sNum Then ContinueLoop
    GUICtrlCreateListViewItem($aNum[$i][1], $lstv)
    GUICtrlSetBkColor(-1, $iBKColor)
    Next
    Else
    For $i = 1 To $aNum[0][0]
    If $aNum[$i][2] = "t" Then $iBKColor = 0xff0000
    If $aNum[$i][2] = "r" Then $iBKColor = 0xffff00
    If $aNum[$i][2] = "d" Then $iBKColor = 0x00ff00
    GUICtrlCreateListViewItem($aNum[$i][1], $lstv)
    GUICtrlSetBkColor(-1, $iBKColor)
    Next
    EndIf
    $iDumEnd = GUICtrlCreateDummy()
    EndFunc ;==>_SetListView

    [/autoit] [autoit][/autoit] [autoit]

    Func _Search($sSeRe)
    $sOldSeRe = $sSeRe
    $iInd = _GUICtrlListView_FindInText($lstv, $sSeRe)
    If $iInd = -1 Then Return
    _GUICtrlListView_EnsureVisible($lstv, $iInd)
    _GUICtrlListView_SetItemSelected($lstv, $iInd)
    $cpos = _GUICtrlListView_GetItemPosition($lstv, $iInd)
    $wpos = WinGetPos($guiMain)
    MouseMove($wpos[0] + $cpos[0] + 8 + Random(0, 40, 1), $wpos[1] + $cpos[1] + 34, 1)
    EndFunc ;==>_Search

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Login($sUsername, $sPassword)
    Local $oPost, $oUsName, $oUsPw, $oLogBut, $aTranslate, $aReview
    $oPost = _IEFormGetObjByName($oIE, 0)
    $oUsName = _IEFormElementGetObjByName($oPost, 'username')
    $oUsPw = _IEFormElementGetObjByName($oPost, 'userpass')
    $oLogBut = _IEFormElementGetObjByName($oPost, 'login')
    _IEFormElementSetValue($oUsName, $sUsername)
    _IEFormElementSetValue($oUsPw, $sPassword)
    _IEAction($oLogBut, "click")
    _IELoadWait($oLogBut)
    If StringInStr(_IEBodyReadText($oIE), 'Eingeloggt als ') Then Return 1
    Return SetError(1, 0, 0)
    EndFunc ;==>_Login

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetStatus()
    _IENavigate($oIE, 'http://johannes.autoit.de/translation/statusbar.php')
    Local $body = StringReplace(_IEBodyReadHTML($oIE), "/SPAN", "/SPAN" & @CRLF), $aTmp, $aRet[3][2]
    $aTmp = StringRegExp($body, '<SPAN title=".*">(.*)</SPAN', 3)
    If UBound($aTmp) <> 3 Then Return SetError(1, 0, 0)
    $aRet[0][0] = Floor(407 * $aTmp[0] / ($aTmp[0] + $aTmp[1] + $aTmp[2]))
    $aRet[0][1] = $aTmp[0]
    $aRet[1][0] = Floor(407 * $aTmp[1] / ($aTmp[0] + $aTmp[1] + $aTmp[2]))
    $aRet[1][1] = $aTmp[1]
    $aRet[2][0] = Floor(407 * $aTmp[2] / ($aTmp[0] + $aTmp[1] + $aTmp[2]))
    $aRet[2][1] = $aTmp[2]
    Return $aRet

    EndFunc ;==>_GetStatus

    [/autoit] [autoit][/autoit] [autoit]

    Func _TRD()
    Local $sRead = StringTrimRight(GUICtrlRead(GUICtrlRead($lstv)), 1), $iInd
    If $sRead = '' Then Return SetError(MsgBox(48, "", "Bitte wählen Sie ein eintrag in dem Listview aus!"), 0, 0)
    $iInd = _GetFromName($sRead)
    If @error Then Return SetError(MsgBox(48, "", "Error, eintrag wurde in der Datenbank nicht gefunden.") + 1, 0, 0)
    _IENavigate($oIE, "about:blank")
    _IENavigate($oIE, 'http://johannes.autoit.de/translation/show.php?id=' & $aNum[$iInd][0], 0)
    $ExploreActive = True
    GUISetState(@SW_SHOW, $guiExplore)
    GUISetState(@SW_HIDE, $guiMain)
    Return
    ;~ RunWait('"' & @ComSpec & '" /c start http://johannes.autoit.de/translation/show.php?id='&$aNum[$iInd][0], '', @SW_HIDE)
    EndFunc ;==>_TRD

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetFromName($sName)
    For $i = 1 To $aNum[0][0]
    If $aNum[$i][1] = $sName Then Return $i
    Next
    Return SetError(1, 0, 0)
    EndFunc ;==>_GetFromName
    Func _GetTRD()
    _IENavigate($oIE, 'http://johannes.autoit.de/translation/status.php')
    Local $body = _IEBodyReadHTML($oIE), $aTmp, $aTranslate, $aReview
    $tim = TimerInit()
    $aTmp = StringRegExp($body, 'show.php.id=(.*)"><B>(.*)</B>', 3)
    For $i = 0 To UBound($aTmp) - 1
    If Mod($i, 2) Then
    $aNum[UBound($aNum) - 1][1] = $aTmp[$i]
    Else
    ReDim $aNum[UBound($aNum) + 1][3]
    $aNum[UBound($aNum) - 1][0] = $aTmp[$i]
    $aNum[UBound($aNum) - 1][2] = "d"
    EndIf
    Next
    $aNum[0][0] = UBound($aNum) - 1
    $aTmp = ''
    $aTranslate = StringRegExp($body, '<A href="translate.php.id=(.*)"', 3)
    $aReview = StringRegExp($body, '<A href="review.php.id=(.*)"', 3)
    For $i = 1 To $aNum[0][0]
    For $x = 0 To UBound($aTranslate) - 1
    If $aNum[$i][0] = $aTranslate[$x] Then $aNum[$i][2] = "t"
    Next
    Next
    For $i = 1 To $aNum[0][0]
    For $x = 0 To UBound($aReview) - 1
    If $aNum[$i][0] = $aReview[$x] Then $aNum[$i][2] = "r"
    Next
    Next
    EndFunc ;==>_GetTRD

    [/autoit] [autoit][/autoit] [autoit]

    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $lstv Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    _TRD()
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    Wenn Interesse dadran besteht, bin ich bereit es auch auszuweiten..

    Mfg Spider

    P.S. Im Anhang exe und au3

    Edit: Da ja anscheinend doch interesse besteht, hab ich das Skript mal erweitert. (Suche eingebaut, Automatisches Login, Embedded Ie Control und noch paar andere sachen)
    Falls jemand noch ideen hat was rechts rein Soll (sieht noch etw schwarz aus^^) sagt mir bescheid ;)

  • Hi,
    super Tool, funktioniert einwandfrei mit dem IE7.

    Hoffe auch, dass dadruch mehr Interesse am übersetzen geweckt wird :D