Scite : Eigene Calltips und Syntax Highlights

  • huhu,
    ich hab mir mal gedacht, weil ich gerne auch Syntax Highlighting + Calltips für meine eigenen Funktinen/UDFs haben möchte, dass ich dazu ein Programm schreibe.
    Man kann damit eigene Calltips und Syntax-Highlights erstellen.
    Der Vorteil ist, dass man z.B. seine eigenen UDFs von den Standard-UDFs unterscheiden kann
    (Ich kann z.B. eine Funktion so darstellen, als wäre es eine ganz normale AutoIt-Funktion.)

    Viel Spaß damit !
    Feedback ist natürlich erwünscht ! ;)

    mfg Alcros

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>
    Opt("GUIOnEventMode", 1)
    Global $idG, $idGListView, $idGSpeichernB, $idGLogL, $idGNameI, $idGParameterI, $idGBeschreibungI, $idGTypC, $idGLoeschenB, $idGAendernB, $idGNeuB, $idGAboutL
    Global $aTexte[6] = [0,"au3.CalltipsUndSyntax.functions=", "au3.CalltipsUndSyntax.keywords=", "au3.CalltipsUndSyntax.macros=", "au3.CalltipsUndSyntax.preprocessor=", "au3.CalltipsUndSyntax.udfs="]
    Global $bSaved = True
    if (@OSVersion = "WIN_XP") Then
    Global $sPath = @MyDocumentsDir
    Else
    Global $sPath = @UserProfileDir
    EndIf

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

    _StartCheck()
    _GUI()
    _GetList()
    GUISetState(@SW_SHOW)
    _SetLog("Programm erfolgreich geladen.", "green")

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

    While 1
    Sleep(100)
    WEnd

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

    #region Funktionen
    Func _GetList()
    Local $sFile = FileRead($sPath&"\au3.CalltipsUndSyntax.api")
    Local $aSplit = StringSplit($sFile, @CRLF,1)
    if @error And $sFile="" Then Return
    Local $iZaehler
    For $iZaehler = 1 To UBound($aSplit)-1
    Local $aTemp = StringRegExp($aSplit[$iZaehler], "(.+?) \((.*?)\) (.+?):(.+)",3)
    GUICtrlCreateListViewItem($aTemp[0]&"|"&$aTemp[1]&"|"&$aTemp[2]&"|"&$aTemp[3], $idGListView)
    Next
    EndFunc
    Func _StartCheck()
    Local $sFile = FileRead($sPath & "\SciTEUser.properties")
    if @error Then
    $sPath = FileOpenDialog("Bitte Verzeichnis zur SCiTEUser.properties angeben.",$sPath, "SCiTE Profil (*.properties)")
    if @error Then Exit MsgBox(16,"","Die Datei SciTEUser konnte nicht geöffnet werden."&@CRLF&"Skript wird beendet.",10000)
    $sPath = StringTrimRight($sPath,StringLen($sPath) - StringInStr($sPath, "\", 0, -1) + 1)
    EndIf
    Local $sPattern = "import au3.CalltipsUndSyntax"
    if Not StringRegExp($sFile, $sPattern) Then
    Local $iMsgBoxAnswer = MsgBox(292, "Skript installieren ?", "Einträge in SciteUser eintragen ?")
    If ($iMsgBoxAnswer = 7) Then
    MsgBox(0,"Ende","Skript wird beendet.",5000)
    Exit
    EndIf
    Local $sText
    if (StringRight($sFile,2)<>@CRLF) Then $sText &= @CRLF
    $sText &= "import au3.CalltipsUndSyntax"&@CRLF&"import au3.CalltipsUndSyntax.api"&@CRLF&"keywords8.$(au3)=$(au3.keywords.udfs) $(au3.keywords.user.udfs) $(au3.CalltipsUndSyntax.udfs)"&@CRLF&"api.$(au3)=$(SciteDefaultHome)\api\au3.api;$(SciteDefaultHome)\api\au3.autoit3wrapper.api;$(SciteUserHome)\au3.user.calltips.api;$(SciteUserHome)\au3.CalltipsUndSyntax.api"&@CRLF&"keywords.$(au3)=$(au3.keywords.keywords) $(au3.CalltipsUndSyntax.keywords)"&@CRLF&"keywords2.$(au3)=$(au3.keywords.functions) $(au3.CalltipsUndSyntax.functions)"&@CRLF&"keywords3.$(au3)=$(au3.keywords.macros) $(au3.CalltipsUndSyntax.macros)"&@CRLF&"keywords5.$(au3)=$(au3.keywords.preprocessor) $(au3.CalltipsUndSyntax.preprocessor)"
    FileWrite($sPath&"\SciTEUser.properties",$sText)
    EndIf
    EndFunc
    Func _OEidGSpeichernB()
    Local $aTexteFile = $aTexte
    Local $iZaehler
    For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
    Local $aItemText = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
    if ($aItemText[3] = "Funktion") Then $aTexteFile[1] &= StringLower($aItemText[1] & " ")
    if ($aItemText[3] = "Schlüsselwort") Then $aTexteFile[2] &= StringLower($aItemText[1] & " ")
    if ($aItemText[3] = "Makro") Then $aTexteFile[3] &= StringLower($aItemText[1] & " ")
    if ($aItemText[3] = "Präprozessor") Then $aTexteFile[4] &= StringLower($aItemText[1] & " ")
    if ($aItemText[3] = "UDFs") Then $aTexteFile[5] &= StringLower($aItemText[1] & " ")
    Next
    Local $sWriteToFile
    For $iZaehler=1 To UBound($aTexteFile)-1
    $sWriteToFile &= $aTexteFile[$iZaehler] & @CRLF
    Next
    $sWriteToFile = StringTrimRight($sWriteToFile,2)

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

    Local $hFile = FileOpen($sPath & "\au3.CalltipsUndSyntax.properties",2)
    FileWrite($hFile, $sWriteToFile)
    FileClose($hFile)

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

    Local $sWriteToFile = ""
    For $iZaehler=0 To _GUICtrlListView_GetItemCount($idGListView) - 1
    Local $aItemText = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
    $sWriteToFile &= $aItemText[1] & " (" & $aItemText[2] &") " & $aItemText[3] & ":" & $aItemText[4] & @CRLF
    Next
    $sWriteToFile = StringTrimRight($sWriteToFile,2)

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

    Local $hFile = FileOpen($sPath & "\au3.CalltipsUndSyntax.api",2)
    FileWrite($hFile, $sWriteToFile)
    FileClose($hFile)

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

    _SetLog("Funktionen wurden gespeichert.","green")
    $bSaved = True
    EndFunc ;==>_OEidGSpeichernB
    Func _OEidGNeuB()
    Local $sName = GUICtrlRead($idGNameI)
    Local $sParam = GUICtrlRead($idGParameterI)
    Local $sTyp = GUICtrlRead($idGTypC)
    Local $sBeschreibung = GUICtrlRead($idGBeschreibungI)
    If ($sName = "" Or $sTyp = "" Or $sBeschreibung = "") Then
    _SetLog("Sie müssen alle Felder ausfüllen", "red")
    GUICtrlSetState($idGNameI, $GUI_FOCUS)
    Return 0
    EndIf
    Local $iZaehler
    For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
    Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
    If ($sName = $aName[1]) Then ExitLoop
    Next
    If ($iZaehler <= _GUICtrlListView_GetItemCount($idGListView) - 1) Then
    _SetLog("Eine Funktion mit diesem Namen existiert bereits.", "red")
    GUICtrlSetState($idGNameI, $GUI_FOCUS)
    Return 0
    EndIf
    GUICtrlCreateListViewItem($sName & "|" & $sParam & "|" & $sTyp & "|" & $sBeschreibung, $idGListView)
    _SetLog("Funktion " & $sName & " wurde erfolgreich hinzugefügt. Drücken Sie Speichern.", "green")
    $bSaved = False
    EndFunc ;==>_OEidGNeuB
    Func _OEidGAendernB()
    Local $sName = GUICtrlRead($idGNameI)
    Local $sParam = GUICtrlRead($idGParameterI)
    Local $sTyp = GUICtrlRead($idGTypC)
    Local $sBeschreibung = GUICtrlRead($idGBeschreibungI)
    If ($sName = "" Or $sTyp = "" Or $sBeschreibung = "") Then
    _SetLog("Sie müssen alle Felder ausfüllen", "red")
    GUICtrlSetState($idGNameI, $GUI_FOCUS)
    Return 0
    EndIf
    Local $iZaehler
    For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
    Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
    If ($sName = $aName[1]) Then ExitLoop
    Next
    If ($iZaehler <= _GUICtrlListView_GetItemCount($idGListView) - 1) Then
    _SetLog("Eine Funktion mit diesem Namen existiert bereits.", "red")
    GUICtrlSetState($idGNameI, $GUI_FOCUS)
    Return 0
    EndIf
    Local $iSelected = _GUICtrlListView_GetSelectedIndices($idGListView)
    If ($iSelected = "") Then Return _SetLog("Sie müssen erst eine Funktion auswählen.", "red")
    _GUICtrlListView_SetItemText($idGListView, $iSelected, $sName, 0)
    _GUICtrlListView_SetItemText($idGListView, $iSelected, $sParam, 1)
    _GUICtrlListView_SetItemText($idGListView, $iSelected, $sTyp, 2)
    _GUICtrlListView_SetItemText($idGListView, $iSelected, $sBeschreibung, 3)
    _SetLog("Funktion " & $sName & " wurde erfolgreich geändert.Drücken sie Speichern.", "green")
    $bSaved = False
    EndFunc ;==>_OEidGAendernB
    Func _OEidGLoeschenB()
    Local $iSelected = _GUICtrlListView_GetSelectedIndices($idGListView)
    If ($iSelected = "") Then Return _SetLog("Sie müssen erst eine Funktion auswählen.", "red")
    Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iSelected - 1)
    _GUICtrlListView_DeleteItem($idGListView, $iSelected)
    _SetLog("Funktion " & $aName[1] & " wurde erfolgreich gelöscht.Drücken sie Speichern.", "green")
    $bSaved = False
    EndFunc ;==>_OEidGLoeschenB
    Func _exit()
    If Not $bSaved Then
    Local $iMsgBoxAnswer = MsgBox(292, "Wirklich beenden ?", "Es wurden noch nicht alle Änderungen gespeichert." & @CRLF & "Wollen sie wirklich beenden")
    If ($iMsgBoxAnswer = 7) Then Return 0
    EndIf
    Exit
    EndFunc ;==>_exit
    Func _SetLog($sText, $sColour = "white")
    If ($sColour = "white") Then $sColour = 0xFFFFFF
    If ($sColour = "red") Then $sColour = 0xFF0000
    If ($sColour = "green") Then $sColour = 0x00FF00
    GUICtrlSetData($idGLogL, $sText)
    GUICtrlSetBkColor($idGLogL, $sColour)
    Return 0
    EndFunc ;==>_SetLog
    Func _GUI() ; Erstellung der GUI
    #region ### START Koda GUI section ### Form=d:\programmieren\programm\koda_1.7.0.1\forms\calltips ush.kxf
    $idG = GUICreate("Calltips und Syntax-Highlighting", 1125, 482, 189, 109)
    $idGListView = GUICtrlCreateListView("Name|Parameter|Typ|Beschreibung", 8, 64, 1113, 385)
    GUICtrlSendMsg(-1, 0x101E, 0, 150)
    GUICtrlSendMsg(-1, 0x101E, 1, 200)
    GUICtrlSendMsg(-1, 0x101E, 2, 100)
    GUICtrlSendMsg(-1, 0x101E, 3, 650)
    $idGLogL = GUICtrlCreateLabel("idGLogL", 8, 456, 940, 17)
    $idGNameI = GUICtrlCreateInput("Name", 8, 40, 217, 21)
    $idGParameterI = GUICtrlCreateInput("z.B. Nummer, Zahl", 232, 40, 201, 21)
    $idGTypC = GUICtrlCreateCombo("", 440, 40, 89, 25, 3) ; $CBS_DROPDOWNLIST
    GUICtrlSetData(-1, "Funktion|Schlüsselwort|Makro|Präprozessor|UDFs")
    GUICtrlSetData(-1, "UDFs")
    $idGBeschreibungI = GUICtrlCreateInput("Beschreibung", 536, 40, 585, 21)
    $idGNeuB = GUICtrlCreateButton("Neu", 648, 4, 113, 25, 0)
    $idGAendernB = GUICtrlCreateButton("Ändern", 768, 4, 113, 25, 0)
    $idGLoeschenB = GUICtrlCreateButton("Löschen", 888, 4, 113, 25, 0)
    $idGSpeichernB = GUICtrlCreateButton("Speichern", 1008, 4, 113, 25, 0)
    $idGAboutL = GUICtrlCreateLabel("© Made by Alcros (http://www.autoit.de)", 952, 456, 166, 17)
    #endregion ### END Koda GUI section ###
    GUISetOnEvent(-3, "_exit") ; $GUI_EVENT_CLOSE
    GUICtrlSetOnEvent($idGNeuB, "_OEidGNeuB")
    GUICtrlSetOnEvent($idGAendernB, "_OEidGAendernB")
    GUICtrlSetOnEvent($idGLoeschenB, "_OEidGLoeschenB")
    GUICtrlSetOnEvent($idGSpeichernB, "_OEidGSpeichernB")
    EndFunc ;==>_GUI
    #endregion Funktionen

    [/autoit]
  • Zitat von einem User dieses Forums


    Die Standard-Standart eines Flamingos ist einbeinig.

    ;)

    Aber sonst echt gut :)

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    • Offizieller Beitrag

    Bitte poste keine EXE-Dateien, nur die au3-Datei gehört hierher.
    Hab mich schon gewundert, was das für ein riesen Skript sein soll mit 400 KB - dabei ist dein Skript tatsächlich nur 3 KB groß. Den Rest bringt die kompilierte Datei.

    Also 200 Zeilen Code kannst du auch getrost im Spoiler anzeigen lassen, dann braucht man nicht extra downloaden um sich das anzusehen.