HTML - Editor mit "Show-Funktion"

  • Hallo Alle,
    ich habe einen HTML-Editor gebastelt, der es einem ermöglicht sein Script auch gleich als Site darstellen zu lassen. Außerdem gibt es noch weitere Hilfen,
    Farbcode Tabellen und auch eine To-Do Liste die leicht aufgerufen werden können. Vielleicht kann das ja jemand gebrauchen.
    Werde da auch weitermachen und den immer erweitern und verbessern. Kritik und Verbesserungsvorschläge sind erwünscht :D

    Da ich selber oft etwas mit HTML mache, hab ich das mal gebastelt. Bietet alle möglichen Funktionen wie Drucken, etc.

    Viel Spaß damit, vielleicht kann es ja jemand brauchen!
    Braucht dringend den angehängten Ordner!

    Code:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <GuiToolbar.au3>
    #include <StaticConstants.au3>
    #include <ToolbarConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GuiEdit.au3>
    #include <IE.au3>
    #include <INet.au3>
    #include <GuiRichEdit.au3>

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

    HotKeySet("^{a}", "allesmark")
    HotKeySet("^{p}", "print")
    HotKeySet("^!{c}", "check")
    HotKeySet("{F1}", "hilfe")
    HotKeySet("^{s}", "speichern")
    HotKeySet("^{z}", "undo")

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

    $ie = _IECreateEmbedded()
    $savefile = 0
    Dim $eingabetodo[100]
    $counteingabetotdo = 0

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

    $form = GUICreate("Cody-der HTML-Editor", 1346, 691, 0, 10)
    GUISetBkColor(0x0066CC)
    $Logo = GUICtrlCreatePic(@ScriptDir & "\data\logo.jpg", 16, 15, 300, 150)
    $Datei = GUICtrlCreateMenu("Datei")
    $Oeffnen = GUICtrlCreateMenuItem("Öffnen", $Datei)
    $Speichern = GUICtrlCreateMenuItem("Speichern", $Datei)
    $SpeichernUnter = GUICtrlCreateMenuItem("Speichern Unter", $Datei)
    $DruckenCode = GUICtrlCreateMenuItem("Code-Drucken", $Datei)
    $DruckenSeite = GUICtrlCreateMenuItem("Seite-Drucken", $Datei)
    $Beenden = GUICtrlCreateMenuItem("Beenden", $Datei)
    $Bearbeiten = GUICtrlCreateMenu("Bearbeiten")
    $Rueckgaengig = GUICtrlCreateMenuItem("Rückgängig", $Bearbeiten)
    $Kopieren = GUICtrlCreateMenuItem("Kopieren", $Bearbeiten)
    $Einfuegen = GUICtrlCreateMenuItem("Einfügen", $Bearbeiten)
    $Ausschneiden = GUICtrlCreateMenuItem("Ausschneiden", $Bearbeiten)
    $AllesMarkieren = GUICtrlCreateMenuItem("Alles markieren", $Bearbeiten)
    $Tools = GUICtrlCreateMenu("Tools")
    $HtmlFarben = GUICtrlCreateMenuItem("Html-Farben", $Tools)
    $HtmlHilfe = GUICtrlCreateMenuItem("Html-Hilfe", $Tools)
    $Quelltext = GUICtrlCreateMenuItem("Quelltextausleser", $Tools)
    $ToDoList = GUICtrlCreateMenu("To-Do Liste")
    $ToDoListeAufruf = GUICtrlCreateMenuItem("To-Do Liste aufrufen", $ToDoList)
    $ToDoListeEingabe = GUICtrlCreateMenuItem("To-Do Liste/Punkte hinzufügen", $ToDoList)
    $ToDoListeLoeschen = GUICtrlCreateMenuItem("To-Do Liste löschen", $ToDoList)
    $Hilfe = GUICtrlCreateMenu("Hilfe")
    $Hilfe1 = GUICtrlCreateMenuItem("Hilfe...", $Hilfe)
    $explorer = GUICtrlCreateObj($ie, 16, 168, 625, 472)
    $check = GUICtrlCreateButton("Zeige Code als Seite", 335, 60, 129, 33)
    $Exitbutton = GUICtrlCreateButton("Exit", 485, 60, 129, 33)
    $statusbar = _GUICtrlStatusBar_Create($form)
    $Label1 = GUICtrlCreateLabel("HTML-FENSTER", 380, 130, 336, 36)
    GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("CODE-FENSTER", 913, 7, 190, 36)
    GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
    _GUICtrlStatusBar_SetText($statusbar, "Cody-der HTML-Editor")
    $main = GUICtrlCreateEdit("", 680, 40, 625, 600)
    GUICtrlSetFont(-1, 10, 200, Default)
    GUICtrlSetData(-1, "")
    GUISetState(@SW_SHOW)
    _IENavigate($ie, @ScriptDir & "\data\tools\start.htm")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    exitf()

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

    Case $check
    check()

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

    Case $Exitbutton
    exitf()

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

    Case $Oeffnen
    $openfile = FileOpenDialog("Wähle die Datei die geöffnet werden soll", @ProgramFilesDir, "Websites (*.html; *.htm)")
    $openfileread = FileRead($openfile)
    GUICtrlSetData($main, "")
    GUICtrlSetData($main, $openfileread)

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

    Case $Speichern
    speichern()

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

    Case $SpeichernUnter
    $savefile = FileSaveDialog("Bitte wähle das Speicherziel aus!", @ProgramFilesDir, "Website (*.html; *htm)")
    FileWrite($savefile & ".html", GUICtrlRead($main))

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

    Case $DruckenCode
    print()

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

    Case $DruckenSeite
    printpage()

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

    Case $Beenden
    exitf()

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

    Case $Rueckgaengig
    undo()

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

    Case $Kopieren
    ControlSend("Cody-der HTML-Editor", "", $main, "^{c}")

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

    Case $Einfuegen
    ControlSend("Cody-der HTML-Editor", "", $main, "^{v}")

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

    Case $Ausschneiden
    ControlSend("Cody-der HTML-Editor", "", $main, "^{x}")

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

    Case $AllesMarkieren
    allesmark()

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

    Case $Hilfe1
    _IENavigate($ie, @ScriptDir & "\data\tools\start.htm")

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

    Case $Quelltext
    quelltext()

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

    Case $HtmlFarben
    _IENavigate($ie, @ScriptDir & "\data\tools\farben.html")

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

    Case $HtmlHilfe
    _IENavigate($ie, @ScriptDir & "\data\tools\hilfen.html")

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

    Case $ToDoListeAufruf
    todolisteaufruf()

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

    Case $ToDoListeEingabe
    todolisteeingabe()

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

    Case $ToDoListeLoeschen
    todolisteloeschen()

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

    EndSwitch

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

    WEnd

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

    Func hilfe()
    _IENavigate($ie, @ScriptDir & "\data\tools\start.htm")

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

    EndFunc ;==>hilfe

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

    Func exitf()
    _GUICtrlStatusBar_SetText($statusbar, "Beenden?")
    $exitsavedialog = MsgBox(3, "Exit", "Willst du vor dem Beenden nicht lieber Speichern? Die ToDo-Liste, falls benutzt, wurde automatisch gespeichert!")
    If $exitsavedialog = 2 Then
    ElseIf $exitsavedialog = 7 Then
    Exit
    ElseIf $exitsavedialog = 6 Then
    If Not $savefile = 0 Then
    FileDelete($savefile)
    FileWrite($savefile & ".html", GUICtrlRead($main))
    MsgBox(0, "Erfolgreich", "Erfolgreich gespeichert! Auf Wiedersehen!")
    Exit
    Else
    $savefile = FileSaveDialog("Bitte wähle das Speicherziel aus!", @ProgramFilesDir, "Website (*.html; *htm)")
    FileWrite($savefile & ".html", GUICtrlRead($main))
    Exit

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

    EndIf

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

    EndIf

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

    _GUICtrlStatusBar_SetText($statusbar, "Cody-der HTML-Editor")
    EndFunc ;==>exitf

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

    Func print()
    If WinActive("Cody-der HTML-Editor") Then
    _GUICtrlStatusBar_SetText($statusbar, "Code drucken")
    FileDelete(@DocumentsCommonDir & "\htmleditorprint.txt")
    FileWrite(@DocumentsCommonDir & "\htmleditorprint.txt", GUICtrlRead($main))
    Sleep(1000)
    _FilePrint(@DocumentsCommonDir & "\htmleditorprint.txt", @SW_SHOW)
    Sleep(2000)
    MsgBox(0, "Drucken", "Code wird gedruckt!")
    EndIf
    _GUICtrlStatusBar_SetText($statusbar, "Cody-der HTML-Editor")
    EndFunc ;==>print

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

    Func printpage()

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

    _GUICtrlStatusBar_SetText($statusbar, "Seite drucken")
    FileDelete(@DocumentsCommonDir & "\htmleditorquicksave.html")
    FileWrite(@DocumentsCommonDir & "\htmleditorquicksave.html", GUICtrlRead($main))
    _IENavigate($ie, @DocumentsCommonDir & "\htmleditorquicksave.html")
    _IEAction($ie, "Print")
    Sleep(2000)
    MsgBox(0, "Drucken", "Seite wird gedruckt!")

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

    _GUICtrlStatusBar_SetText($statusbar,
    "Cody-der HTML-Editor")
    EndFunc ;==>printpage

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

    Func allesmark()
    _GUICtrlEdit_SetSel($main, 0, -1)

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

    EndFunc ;==>allesmark

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

    Func check()
    FileDelete(@DocumentsCommonDir & "\htmleditorquicksave.html")
    FileWrite(@DocumentsCommonDir & "\htmleditorquicksave.html", GUICtrlRead($main))
    _IENavigate($ie, @DocumentsCommonDir & "\htmleditorquicksave.html")
    ControlClick("", "", $main)

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

    EndFunc ;==>check

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

    Func quelltext()
    $urlquelltext = InputBox("URl", "Gib die URL-Adresse der Website ein, deren Quelltext du auslesen möchtest! Der Quelltext überschreibt den aktuellen Code im linken Fenster!")
    $urlquelltext = "http://" & StringReplace($urlquelltext, "http://", "")
    ConsoleWrite("QuellText: " & $urlquelltext & @CRLF)
    $quelltextsource = _INetGetSource($urlquelltext)
    GUICtrlSetData($main, $quelltextsource)
    EndFunc ;==>quelltext

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

    Func todolisteeingabe()
    MsgBox(0, "Punkte hinzufügen", "Gib bitte in den folgenden Boxen die Punkte ein, die du der Liste hinzufügen möchtest! Hast du alle Punkte eingegeben, drücke auf Cancel!")
    If Not FileReadLine(@ScriptDir & "\data\tools\todo.html", 1) = "To-Do Liste </br> </br>" Then
    FileWrite(@ScriptDir & "\data\tools\todo.html", "To-Do Liste </br> </br>")
    EndIf

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

    While 1

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

    $eingabetodo[$counteingabetotdo] = InputBox("Eingabe", "Gib einen Todo-Punkt ein!")
    If Not @error = 1 Then
    FileWrite(@ScriptDir & "\data\tools\todo.html", $eingabetodo[$counteingabetotdo] & "</br>")
    _IENavigate($ie, @ScriptDir & "\data\tools\todo.html")
    $counteingabetotdo = $counteingabetotdo + 1
    Else
    ExitLoop
    EndIf
    WEnd
    EndFunc ;==>todolisteeingabe

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

    Func todolisteaufruf()
    If FileExists(@ScriptDir & "\data\tools\todo.html") Then
    _IENavigate($ie, @ScriptDir & "\data\tools\todo.html")
    Else
    MsgBox(14, "Nicht vorhanden", "Du hast noch keine To-Do Liste angelegt!")
    EndIf

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

    EndFunc ;==>todolisteaufruf

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

    Func todolisteloeschen()
    $choicetodelete = MsgBox(4, "Bestätigen", "Möchtest du die To-Do Liste wirklich löschen?")
    If $choicetodelete = 6 Then

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

    If FileExists(@ScriptDir & "\data\tools\todo.html") Then
    FileDelete(@ScriptDir & "\data\tools\todo.html")
    MsgBox(0, "Erfolgreich gelöscht", "Die To-Do Liste wurde erfolgreich gelöscht!")
    _IENavigate($ie, "about:blank")
    Else
    MsgBox(14, "Nicht vorhanden", "Du hast noch keine To-Do Liste angelegt!")
    EndIf
    Else

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

    EndIf

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

    EndFunc ;==>todolisteloeschen

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

    Func speichern()
    If Not $savefile = 0 Then
    FileDelete($savefile)
    FileWrite($savefile & ".html", GUICtrlRead($main))
    Else
    $savefile = FileSaveDialog("Bitte wähle das Speicherziel aus!", @ProgramFilesDir, "Website (*.html; *htm)")
    FileWrite($savefile & ".html", GUICtrlRead($main))
    EndIf

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

    EndFunc ;==>speichern

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

    Func undo()
    _GUICtrlEdit_Undo($main)

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

    EndFunc ;==>undo

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


    #Edit 1: Weitere Hotkeys hinzugefügt, Send durch ConrtolSend ersetzt!

    #Edit 2: Wieder neue Version! Neues Bild eingefügt (erstellt von "Reaker"), dank "AutoBert" den "Quelltextausleser" verbessert, bzw. korrigiert und noch mehr Hotkeys!

    #Edit3: Wieder neue Version hochgeladen, diesmal Printfuntkion berichtigt (dank "Ahnungslos")

  • Sehr schön gemacht :thumbup:

    Nützliche funktionen gute kurze umsetzungen = Schönes Programm


    mfg Ubuntu

  • Statt bei kopieren STRG+C zu verwenden, würde ich Clipput() benutzen. Ist schöner und bei einfügen vl Clipget() und ControlSetText, oder GuiCtrlSetData, da es ja dein eigenes Control ist :D
    und falls du trotzdem mit Send arbeiten möchtest, nimm lieber ControlSend ;)
    ansonsten, sehr schönes Programm, wirklich top !

    Hotkeys wären vielleicht noch ganz praktisch ;)

  • Statt bei kopieren STRG+C zu verwenden, würde ich Clipput() benutzen. Ist schöner und bei einfügen vl Clipget() und ControlSetText, oder GuiCtrlSetData, da es ja dein eigenes Control ist :D
    und falls du trotzdem mit Send arbeiten möchtest, nimm lieber ControlSend ;)

    jap da hast du recht, nur ich hab keine Ahnung wie ich einen markierten Teil abfragen soll... Control Send werd ich auf alle Fälle mal einbauen


    Hotkeys: Für das wichtigste hats die ja... für was könnte man noch welche brauchen? Bau ich dann ein.

    #Edit: So das wär erledigt siehe Post Nr. 1

  • hey ich hab mir grad mal dein skript heruntergeladen .. und da ist mir erstmal dieses hässliche Logo aufgefallen (nichts gegen dich oder so aber des ist echt net so schön)

    hatte gerade langeweile und für dich mal ein kleines Logo gemacht .. vlt gefällts dir ja^^

    skript ist auch net schlecht ;)

  • Mit Gimp kann man aber auch so was machen (ich dachte das bis vor kurzem auch nicht)

    mfg Ubuntu

  • Hallo stayawayknight,

    aufgefallen bei meinem kurzen Test ist mir folgendes

    • wenn ich eine URL kopiere und dan einfüge funktioniert es nicht. Abhilfe:

      Spoiler anzeigen
      [autoit]

      Func quelltext()
      $urlquelltext = InputBox("URl", "Gib die URL-Adresse der Website ein, deren Quelltext du auslesen möchtest! Der Quelltext überschreibt den aktuellen Code im linken Fenster!")
      $urlquelltext = "http://" & StringReplace($urlquelltext,"http://","") ;sonst ist es doppelt wenn der Anwender es mit eingibt
      ConsoleWrite("QuellText: " & $urlquelltext & @CRLF)
      $quelltextsource = _INetGetSource($urlquelltext)
      GUICtrlSetData($main, $quelltextsource)
      EndFunc ;==>quelltext

      [/autoit]
    • die Seite die ich mit Quelltext auslesen wieder anzeigen lasse enthält falsch codierde Zeichen siehe:
      Zitat

      Hallo Alle,
      ich habe einen HTML-Editor gebastelt, der es einem erm�glicht sein Script auch gleich als Site darstellen zu lassen. Au�erdem gibt es noch weitere Hilfen

      Abhilfe ? FireFox [Edit]und auch mein Embedded Web control[/Edit]zeigen mir die abgespeicherte Seite danach korrekt an [Edit] getestet habe ich es mit der Linkadresse deines Eröffnngspostes[/Edit]


    du solltest evtl. Tabs einfügen, damit man beides komplett sieht. Auch eine Formatierungsleiste wäre nicht schlecht,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (25. Mai 2010 um 02:29)

  • wenn ich eine URL kopiere und dan einfüge funktioniert es nicht. Abhilfe:

    Danke werd ich gleich einbauen... eine Frage hätte ich dazu noch, wie sieht es mit https-Seiten aus?
    Werd ich gleich auch noch testen

    Zitat

    Abhilfe ? FireFox [Edit]und auch mein Embedded Web control[/Edit]zeigen mir die abgespeicherte Seite danach korrekt an [Edit] getestet habe ich es mit der Linkadresse deines Eröffnngspostes[/Edit]

    Ja sitmmt ist bei ä, ö, ü und ß so... müsste dann umbauen in Firefox oder dein Embedded WebControl nur hab ich momentan trotz Ferien nicht so viel Zeit, mal sehen...

    Zitat

    du solltest evtl. Tabs einfügen, damit man beides komplett sieht.

    Ja scürhon, nur dann wird (finde ich) mein Konzept in den Schatten gestellt, mir ging´s darum, das man ohne umschalten zu müssen (natürlicth ein Klick ist nicht viel, nervt aber trotzdem) einfach das direkt neben einem sieht. Bei der Farbtabelle das gle iche, du musst umschalten, wieder nachgucken, und so weiter... Wollte das eigentlich anders lösen :S

    Zitat

    Auch eine Formatierungsleiste wäre nicht schlecht,

    Ähm, ich versteh grad leider nicht ganz was du damit meinst, sorry, eine Progressbar oder was?

    Danke für's Testen etc.


    #Edit: Neue Version gemacht und hochgeladen siehe Post Nr.1

  • Zitat von stayawayknight

    Ähm, ich versteh grad leider nicht ganz was du damit meinst, sorry, eine Progressbar oder was?


    eine Werkzeugmenuleiste speziell für Formatbefehle, sorry einfügen des Bildes klappt nicht (also nur im Anhang)

    vielleicht auch so: [Blockierte Grafik: http://www.autoit.de/index.php?page=Attachment&amp;attachmentID=9873&amp;h=80e6d8825e0429053c20b0627f0b5cb20e3d5b15]

    mfg (Auto)Bert