Zitate für das Forum formatieren

  • Hi,

    ich habe gerade mal ein altes Skript rausgesucht und ein wenig aufbereitet (noch nicht ganz, da fehlt noch was), mit dem ich unter anderem die Zitate in meiner Signatur formatiert habe.^^
    [Blockierte Grafik: http://sninfando.magix.net/public/quotesmaker.png/]

    Das ist, denke ich, soweit selbsterklärend. Trotzdem hier nochmal:
    In die Felder Zitat, Autor, Datum und Zeit tragt ihr die jeweiligen Werte eures Zitates ein.
    Bei User muss die Benutzergruppe (User, PU, Mod, Admin, System, Pink) ausgewählt werden (Für die Farbe).

    Dann kann man sich mit BB oder HTML das formatierte Zitat entweder in BBCode oder in HTML + CSS ausgeben lassen.^^

    Update: Jetzt kann man sich das Zitat auch als RTF-Datei bzw. RTF-Code ausgeben lassen. Ich möchte hier mal darauf hinweisen, dass das ganze ohne RTF oder RichEdit-UDF funktioniert, sondern auf meinen eigenen Kenntnissen über das Rich Text Format aufbaut... Deswegen wäre es nett, wenn ihr mal kurz sagen würdet, ob die erzeugte Datei von eurem RTF-Programm verarbeitet werden kann.^^ LibreOffice und Wordpad (Win7-Version) lesen es jedenfalls ohne Probleme, aber ich bin mir da nicht ganz so sicher. :D

    Ach ja: Der SB-Button ist dazu da, um ein Zitat direkt aus der Zwischenablage im SB-Format einzufügen. Als Beispiel:
    In der Zwischenablage liegt das hier:

    Code
    [Heute, 22:41] Marsi: Wir sind doch im Prinzip alle Schokoriegel.


    Das wird dann zu dem hier (Datum ist falsch, das war eigentlich am *Nachschau* 09.08.2012):

    "Wir sind doch im Prinzip alle Schokoriegel."

    Marsi (01.04.2013, 22:41)

    Ich hoffe, es kann der ein oder andere was damit anfangen, eventuell ja auch für seine Signatur...? :P

    Skript
    [autoit]


    #include <EditConstants.au3>

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

    $hGUI = GUICreate("Zitat-Formatierung", 350, 350)
    $cZitatText = GUICtrlCreateEdit("Zitat", 10, 10, 290, 50, $ES_AUTOVSCROLL + $ES_MULTILINE)
    GUICtrlSetLimit(-1, 160)
    GUICtrlCreateLabel("Autor:", 10, 70)
    $cGetSBSyntax = GUICtrlCreateButton("SB", 300, 10, 40, 50)
    $cAuthor = GUICtrlCreateInput("", 50, 70, 290, 20)
    GUICtrlCreateLabel("Datum:", 10, 100)
    $cDate = GUICtrlCreateInput("", 50, 100, 290, 20)
    GUICtrlCreateLabel("Zeit:", 10, 130)
    $cTime = GUICtrlCreateInput("", 50, 130, 290, 20)
    GUICtrlCreateLabel("User:", 10, 160)
    $cUserClass = GUICtrlCreateCombo("", 50, 160, 290, 20, 0x3) ;$CBS_DROPDOWNLIST
    GUICtrlSetData(-1, "User|PU|Mod|Admin|System|Pink", "User")
    $cGenerateBB = GUICtrlCreateButton("BB", 100 - 37.5, 200, 75, 30)
    $cGenerateHTML = GUICtrlCreateButton("HTML", 175 - 37.5, 200, 75, 30)
    $cGenerateRTF = GUICtrlCreateButton("RTF", 175 + 37.5, 200, 75, 30)
    $cCode = GUICtrlCreateEdit("", 10, 240, 330, 100, 0x00200000 + $ES_READONLY) ;WS_VSCROLL
    GUISetState()

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

    $sUserColor = "#606060"
    $sPUColor = "#880011"
    $sModColor = "#00a000"
    $sAdminColor = "#3030a0"
    $sSystemColor = "#2978B4"
    $sPinkColor = "#f000f0"

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

    While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case -3 ;GUI_EVENT_CLOSE
    Exit
    Case $cGenerateBB
    GUICtrlSetData($cCode, _GenerateBBC())
    Case $cGenerateHTML
    GUICtrlSetData($cCode, _GenerateHTML())
    Case $cGenerateRTF
    $sSavePath = FileSaveDialog("Speicherort auswählen", @ScriptDir, "Alle Dateien (*.*)|RTF-Format (*.rtf)")
    If @error Then ContinueLoop
    $sRTF = _GenerateRTF()
    GUICtrlSetData($cCode, $sRTF)
    FileDelete($sSavePath)
    FileWrite($sSavePath, $sRTF)
    Case $cGetSBSyntax
    _ParseSBSyntax(ClipGet())
    EndSwitch
    WEnd

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

    Func _GenerateBBC()
    $sZitat = GUICtrlRead($cZitatText)
    $sAuthor = GUICtrlRead($cAuthor)
    $sDate = GUICtrlRead($cDate)
    $sTime = GUICtrlRead($cTime)
    $sUserClass = GUICtrlRead($cUserClass)
    Switch $sUserClass
    Case "User"
    $sColor = $sUserColor
    Case "PU"
    $sColor = $sPUColor
    Case "Mod"
    $sColor = $sModColor
    Case "Admin"
    $sColor = $sAdminColor
    Case "System"
    $sColor = $sSystemColor
    Case "Pink"
    $sColor = $sPinkColor
    EndSwitch

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

    $sCode = "

    [/autoit]
    [autoit]

    """ & $sZitat & """

    [/autoit]
    [autoit]

    " & @CRLF & "

    [/autoit]
    [autoit]

    [color=" & $sColor & "]" & $sAuthor & "[/color] (" & $sDate & ", " & $sTime & ")

    [/autoit]
    [autoit]

    "
    Return $sCode
    EndFunc ;==>_GenerateBBC

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

    Func _GenerateHTML()
    $sZitat = _Uml(GUICtrlRead($cZitatText))
    $sAuthor = _Uml(GUICtrlRead($cAuthor))
    $sDate = GUICtrlRead($cDate)
    $sTime = GUICtrlRead($cTime)
    $sUserClass = GUICtrlRead($cUserClass)
    Switch $sUserClass
    Case "User"
    $sColor = $sUserColor
    Case "PU"
    $sColor = $sPUColor
    Case "Mod"
    $sColor = $sModColor
    Case "Admin"
    $sColor = $sAdminColor
    Case "System"
    $sColor = $sSystemColor
    Case "Pink"
    $sColor = $sPinkColor
    EndSwitch

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

    $sCode = "<div id=""Zitat"">" & @CRLF & "<div id=""Text"">""" & $sZitat & """</div><span class=""" & $sUserClass & """>" & $sAuthor & "</span> <span class=""Date"">(" & $sDate & ", " & $sTime & ")</span>" & @CRLF & "</div>" & @CRLF & "<br>"
    Return $sCode
    EndFunc ;==>_GenerateHTML

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

    Func _GenerateRTF()
    Local $sCode
    $sZitat = GUICtrlRead($cZitatText)
    $sAuthor = GUICtrlRead($cAuthor)
    $sDate = GUICtrlRead($cDate)
    $sTime = GUICtrlRead($cTime)
    $sUserClass = GUICtrlRead($cUserClass)
    Switch $sUserClass
    Case "User"
    $sColor = $sUserColor
    Case "PU"
    $sColor = $sPUColor
    Case "Mod"
    $sColor = $sModColor
    Case "Admin"
    $sColor = $sAdminColor
    Case "System"
    $sColor = $sSystemColor
    Case "Pink"
    $sColor = $sPinkColor
    EndSwitch

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

    $sCode &= "{\rtf1" & @CRLF
    $sCode &= "{\colortbl;" & @CRLF
    $sCode &= "\red0\green0\blue;" & @CRLF ;Schwarz
    $sCode &= _ColorHTML2RTF($sColor) & @CRLF ;Userfarbe
    $sCode &= "}" & @CRLF
    $sCode &= "{\fonttbl{\f0\fnil\fcharset0 Calibri;}}" & @CRLF ;Font
    $sCode &= "{\*\generator Zitat-Formatierer by chesstiger;}" & @CRLF ;Generator-Info
    $sCode &= "\qc {\f0\cf1\fs24\i """ & $sZitat & """} \par" & @CRLF ;Zitat
    $sCode &= "\qr {\f0\fs16{\b\cf2 " & $sAuthor & "} {\cf1(" & $sDate & ", " & $sTime & ")}} \par" & @CRLF ;Info
    $sCode &= "}" & @CRLF
    $sCode &= Chr(0) ;Dateiende

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

    Return $sCode
    EndFunc ;==>_GenerateRTF

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

    Func _Uml($s_Text)
    $s_Return = StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace($s_Text, "Ä", "&Auml;", 0, 1), "Ü", "&Uuml;", 0, 1), "Ö", "&Ouml;", 0, 1), "ä", "&auml;", 0, 1), "ü", "&uuml;", 0, 1), "ö", "&ouml;", 0, 1)
    Return $s_Return
    EndFunc ;==>_Uml

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

    Func _ParseSBSyntax($sText)
    $aRegEx = StringRegExp($sText, "\[(Heute|Gestern), (\d{2}:\d{2})\] (.*?): (.*)", 3)
    If UBound($aRegEx) <> 4 Then
    MsgBox(0, "Error", "Ungültiger Zwischenablageninhalt!")
    Return
    EndIf

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

    Switch $aRegEx[0] ;Tag
    Case "Heute"
    $sDate = @MDAY & "." & @MON & "." & @YEAR
    Case "Gestern"
    $sDate = @MDAY - 1 & "." & @MON & "." & @YEAR
    EndSwitch

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

    GUICtrlSetData($cDate, $sDate)
    GUICtrlSetData($cTime, $aRegEx[1])
    GUICtrlSetData($cAuthor, $aRegEx[2])
    GUICtrlSetData($cZitatText, $aRegEx[3])
    EndFunc ;==>_ParseSBSyntax

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

    Func _ColorHTML2RTF($sHTMLColor)
    ;chesstiger
    $sRedHex = StringMid($sHTMLColor, 2, 2)
    $sGreenHex = StringMid($sHTMLColor, 4, 2)
    $sBlueHex = StringMid($sHTMLColor, 6, 2)
    Return "\red" & Dec($sRedHex) & "\green" & Dec($sGreenHex) & "\blue" & Dec($sBlueHex) & ";"
    EndFunc ;==>_ColorHTML2RTF

    [/autoit]


    lg

    Edit: Die CSS-Datei fehlt natürlich noch... Muss ich erst suchen. -> Ist als style.css.txt im Anhang. ;)