Color-Picker in Scite-Kontext-Menü einbinden

  • Hi zusammen,

    im englischsprachigen Forum hat jemand einen ColorPicker für Scite zur Verfügung gestellt:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Run_Tidy=y
    #Tidy_Parameters=/rel
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/so
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Misc.au3>
    #include <SendMessage.au3>
    Opt("WinTitleMatchMode", 2)
    Global $sDefaultColor = 0
    Global $iMode = 1
    Global Const $WM_COPYDATA = 0x004A
    If $cmdline[0] > 0 Then
    $sDefaultColor = $cmdline[1]
    EndIf
    If StringLeft($sDefaultColor, 2) <> "0x" Then
    $iMode = 0
    $sDefaultColor = "0x" & $sDefaultColor
    EndIf
    $sReturn = _ChooseColor(2, $sDefaultColor, 2)
    If $sReturn = -1 Then Exit (1)
    If Not $iMode Then
    $sReturn = StringMid($sReturn, 3)
    EndIf
    _SciTE_InsertText($sReturn)
    Func _SciTE_InsertText($sString)
    Return _SciTE_Send_Command(0, WinGetHandle("DirectorExtension"), "insert:" & $sString)
    EndFunc ;==>_SciTE_InsertText
    Func _SciTE_Send_Command($hHandle, $hSciTE, $sString)
    Local $ilParam, $tData
    If StringStripWS($sString, 8) = "" Then
    Return SetError(2, 0, 0) ; String is blank.
    EndIf
    $sString = ":" & Dec(StringTrimLeft($hHandle, 2)) & ":" & $sString
    $tData = DllStructCreate("char[" & StringLen($sString) + 1 & "]") ; wchar
    DllStructSetData($tData, 1, $sString)
    $ilParam = DllStructCreate("ptr;dword;ptr") ; ulong_ptr;dword;ptr
    DllStructSetData($ilParam, 1, 1) ; $ilParam, 1, 1
    DllStructSetData($ilParam, 2, DllStructGetSize($tData))
    DllStructSetData($ilParam, 3, DllStructGetPtr($tData))
    _SendMessage($hSciTE, $WM_COPYDATA, $hHandle, DllStructGetPtr($ilParam))
    Return Number(Not @error)
    EndFunc ;==>_SciTE_Send_Command

    [/autoit]

    ..und auch gleich gezeigt, wie man ihn in Scite einbindet (nachdem man die .exe in das entsprechende Verzeichnis kopiert hat). Aktuell ist das Aufrufen an eine Tastenkombination (z.B. STRG+ALT+C) gekoppelt:

    Code
    # 43 Color Chooser
    command.name.43.*=Color Chooser
    command.43.*="$(SciteDefaultHome)\ColorChooser\ColorChooser.exe" $(CurrentSelection)
    command.shortcut.43.*=Ctrl+Alt+C

    Weiß jemand, wie man den Befehl in ein selbst gestricktes Scite-Kontext-Menü integrieren kann?

    Eintrag in den SciTEUser.properites:

    Code
    user.context.menu=||Bookmark an/aus|IDM_BOOKMARK_TOGGLE|Alle Bookmarks löschen|IDM_BOOKMARK_CLEARALL||
    |Hier auf/zuklappen|IDM_EXPAND|>> Alles auf/zuklappen|IDM_TOGGLE_FOLDALL|||Go|303|Compile|301|Stop Executing|304||
    |User-Properties öffnen|IDM_OPENUSERPROPERTIES|Global-Poperties öffnen|IDM_OPENGLOBALPROPERTIES|Scite-Config bearbeiten|1114

    Danke für Hilfe.

    Gruß
    Trainer

    Einmal editiert, zuletzt von ip_trainer (15. Juni 2012 um 13:32) aus folgendem Grund: gelöst

    • Offizieller Beitrag

    Die Integration in das Kontextmenü funktioniert, wie folgt:

    # 43 Color Chooser
    command.name.43.*=Color Chooser
    command.43.*="$(SciteDefaultHome)\ColorChooser\ColorChooser.exe" $(CurrentSelection)
    command.shortcut.43.*=Ctrl+Alt+C

    Ich finde es lesbarer auch in den properties die Menüeinträge untereinander zu schreiben:
    user.context.menu=||\
    Bookmark an/aus|IDM_BOOKMARK_TOGGLE|\
    Alle Bookmarks löschen|IDM_BOOKMARK_CLEARALL|\
    ||\
    Hier auf/zuklappen|IDM_EXPAND|\
    >> Alles auf/zuklappen|IDM_TOGGLE_FOLDALL|\
    ||\
    Go|303|\
    Compile|301|\
    Stop Executing|304|\
    ||\
    User-Properties öffnen|IDM_OPENUSERPROPERTIES|\
    Global-Poperties öffnen|IDM_OPENGLOBALPROPERTIES|\
    Scite-Config bearbeiten|1114|\
    ||\
    Color Chooser|1143|

    Es wird als Kontext-Befehlsnummer immer die "11" und Befehlsnummer aus der command-Anweisung zusammengesetzt, hier also "11" & "43" = 1143

    • Offizieller Beitrag

    Oder steht das etwa doch in der Scite-Hilfe und ich finde es nur nicht?


    Genau so ist es. :D

    Erklärung zum Eintrag
    command.name.number.filepattern
    im Abschnitt "SciTE Dokumentation"

    Zitat

    The command number can be in the range of 0 to 49. Command numbers 0 to 9 are assigned Ctrl+Number shortcuts. Internally these commands use IDs starting from 1100 (IDM_TOOLS) which can be used in user.shortcuts and user.context.menu as:
    user.context.menu=Indent|1100|
    If command.name is empty then no item is added to the Tools menu. This can be used for commands that are only in the context menu or user shortcuts.