Seite 1 von 4

SyntaxHighlighting mit PB4?

Verfasst: 05.06.2007 11:25
von PureBasic4.0
Hi, Leute

Ich möchte die UserLib SyntaxHighlighting benutzen. Habe die Lib auch schon ins UserLibaries Verzeichnis kopiert, aber jedes mal, wenn ich diesen Code benutze,

Code: Alles auswählen

SyntaxHighlightingAll(0,"Procedure,EndProcedure",",",RGB(0,255,0),RGB(0,0,0),10,"Courier New",#CFM_BOLD)
bekomme ich folgende Fehlermeldung

Bild

Wo bekomme ich die GadgetExtension UserLib her?

Verfasst: 05.06.2007 11:30
von ts-soft
>> Wo bekomme ich die GadgetExtension UserLib her?
Entweder Du nutzt PB3.94 oder Du nutzt den Source der Lib oder Du
TailBitest Dir eine PB4 taugliche Version

Verfasst: 05.06.2007 11:32
von PureBasic4.0
ts-soft hat geschrieben:Du nutzt den Source der Lib oder Du
TailBitest Dir eine PB4 taugliche Version
Wie, TailBiten?

Verfasst: 05.06.2007 11:35
von DarkDragon
Du kannst doch einfach den source nehmen. Der war ja dabei.

Re: SyntaxHighlighting mit PB4?

Verfasst: 05.06.2007 11:39
von Kiffi
PureBasic4.0 hat geschrieben:Wo bekomme ich die GadgetExtension UserLib her?
Kurzes Gedächtnis? ;-)

http://www.purebasic.fr/german/viewtopic.php?t=12809

Grüße ... Kiffi

Verfasst: 05.06.2007 11:40
von PureBasic4.0
habe jetzt den source genommen und durch TailBite gezogen. Bloß wo ist jetzt eine kompilierte UserLib?

Code: Alles auswählen

TailBite "C:\Dokumente und Einstellungen\Admin\Desktop\SyntaxHighlighting.pb"
@Kiffi: Ist mir klar, dass ich da schon mal einen Thread aufgemacht hatte. Ist sogar das gleiche Bild

//edit: in der PureLibrariesMaker.log steht sogar folgendes drin:

Code: Alles auswählen

---------------- SyntaxHighlighting ------------------------
ClearHighlightingAll: no debugger routine
ClearHighlightingLine: no debugger routine
SyntaxHighlightingLine: no debugger routine
SyntaxHighlightingAll: no debugger routine
CorrectWordsLine: no debugger routine
CorrectWordsAll: no debugger routine
GetCurrentWritingWord: no debugger routine
Bei mir geht der GUI TailBite Manager gar nicht auf

Verfasst: 05.06.2007 11:50
von ts-soft
Dann ist doch alles Okay und Du kannst loslegen :mrgreen:

Verfasst: 05.06.2007 11:52
von PureBasic4.0
Danke. Es hat funktioniert.

Wie kann ich es dann proggen, dass Procedure und EndProcedure geHighlightet wird?

Hier der Code:

Code: Alles auswählen



XIncludeFile "Scintilla.pbi"

Enumeration ; Menuitems
  #mnuFileNew
  #mnuFileOpen
  #mnuFileSave
  #mnuFileQuit
  #mnuEditUndo
  #mnuEditCut
  #mnuEditCopy
  #mnuEditPaste
  #mnuEditDelete
  #mnuEditAll
  #mnuFormatWrapMode
  #mnuFormatLineNumbers
  #mnuFormatFont
  #mnuHelpHelp
  #mnuHelpAbout
EndEnumeration

Define.Scintilla *Edit ; Objectvariable für OOP-Interface definieren
Define.s File, MyFontName
Define.l Font, MyFontSize, MyColor

MyFontName = "Courier New"
MyFontSize = 10

File = ProgramParameter()

#PB_Window_Flags = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget
If OpenWindow(0, #PB_Ignore, 0, 640, 480, "Simple Editor", #PB_Window_Flags) = #False : End : EndIf

SmartWindowRefresh(0, #True)

RemoveKeyboardShortcut(0, #PB_Shortcut_All) ; Ansonsten funktioniert TAB nicht!

If CreateGadgetList(WindowID(0))
  If CreateMenu(0, WindowID(0))
    MenuTitle("&Datei")
      MenuItem(#mnuFileNew, "Neu")
      MenuBar()
      MenuItem(#mnuFileOpen, "Öffnen")
      MenuItem(#mnuFileSave, "Speichern")
      MenuBar()
      MenuItem(#mnuFileQuit, "Beenden")
    MenuTitle("&Bearbeiten")
      MenuItem(#mnuEditUndo, "Rückgängig")
      MenuBar()
      MenuItem(#mnuEditCut, "Ausschneiden")
      MenuItem(#mnuEditCopy, "Kopieren")
      MenuItem(#mnuEditPaste, "Einfügen")
      MenuItem(#mnuEditDelete, "Löschen")
      MenuBar()
      MenuItem(#mnuEditAll, "Alles markieren")
    MenuTitle("&Format")
      MenuItem(#mnuFormatWrapMode, "Zeilenumbruch")
      MenuItem(#mnuFormatLineNumbers, "Zeilennummer")
      MenuBar()
      MenuItem(#mnuFormatFont, "Schriftart ...")
    MenuTitle("&?")
      MenuItem(#mnuHelpHelp, "Hilfe")
      MenuItem(#mnuHelpAbout, "Über")
  EndIf

  ScintillaGadget(0, 0, 0, 0, 0)

  ; wir verwenden das Interface
  *Edit = GetGadgetAttribute(0, #PB_SCINTILA_INTERFACE)
  *Edit\SCI_USEPOPUP(#True); Popupmenü aktivieren (engl.)
  *Edit\SCI_SETMARGINTYPEN(1, #STYLE_LINENUMBER) ; Margin 1 für Zeilennummern
  *Edit\SCI_STYLESETFONT(0, @MyFontName) ; Standardfont
  *Edit\SCI_STYLESETSIZE(0, MyFontSize) ; Standardgröße
  If File And FileSize(File) > 0 ; wurde Datei übergeben und Existiert?
    *Edit\Load(File)
    SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
  EndIf
EndIf
Repeat
  SyntaxHighlightingAll(0,"Procedure,EndProcedure",",",RGB(0,255,0),RGB(0,0,0),13,"Courier New",#CFM_BOLD)
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_SizeWindow
      ResizeGadget(0, 0, 0, WindowWidth(0), WindowHeight(0) - MenuHeight())
    Case #PB_Event_Menu
      Select EventMenu()
        Case #mnuFileNew
          ; Abfrage Speichern usw. fehlt hier!
          *Edit\SCI_CLEARALL()
          *Edit\SCI_EMPTYUNDOBUFFER()
          *Edit\SCI_SETSAVEPOINT()
          SetWindowTitle(0, "Simple Editor")

        Case #mnuFileOpen
          ; Abfrage Speichern usw. fehlt hier!
          File = OpenFileRequester("Textdatei öffnen", "*.txt", "Text (*.txt)|*.txt", 0)
          If File
            *Edit\Load(File)
            *Edit\SCI_EMPTYUNDOBUFFER()
            *Edit\SCI_SETSAVEPOINT()
            SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
          EndIf
        Case #mnuFileSave
          File = SaveFileRequester("Textdatei speichern", "*.txt", "Text (*.txt)|*.txt", 0)
          If File
            *Edit\Save(File)
            *Edit\SCI_SETSAVEPOINT()
            SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
          EndIf
        Case #mnuFileQuit
          ; Abfrage Speichern usw. fehlt hier!
          Break
        Case #mnuEditUndo
          *Edit\SCI_UNDO()
        Case #mnuEditCut
          *Edit\SCI_CUT()
        Case #mnuEditCopy
          *Edit\SCI_COPY()
        Case #mnuEditPaste
          *Edit\SCI_PASTE()
        Case #mnuEditDelete
          *Edit\SCI_CLEAR()
        Case #mnuEditAll
          *Edit\SCI_SELECTALL()
        Case #mnuFormatWrapMode
          If GetMenuItemState(0, #mnuFormatWrapMode)
            SetMenuItemState(0, #mnuFormatWrapMode, #False)
            *Edit\SCI_SETWRAPMODE(#False)
          Else
            SetMenuItemState(0, #mnuFormatWrapMode, #True)
            *Edit\SCI_SETWRAPMODE(#True)
          EndIf
        Case #mnuFormatLineNumbers
          If GetMenuItemState(0, #mnuFormatLineNumbers)
            SetMenuItemState(0, #mnuFormatLineNumbers, #False)
            *Edit\SCI_SETMARGINWIDTHN(1, 0)
          Else
            SetMenuItemState(0, #mnuFormatLineNumbers, #True)
            *Edit\SCI_SETMARGINWIDTHN(1, 75)
          EndIf
        Case #mnuFormatFont
          Font = FontRequester(MyFontName, MyFontSize, #PB_FontRequester_Effects, MyColor)
          If Font
            MyFontName = SelectedFontName()
            MyFontSize = SelectedFontSize()
            MyColor    = SelectedFontColor()
            *Edit\SetStyle(0, SelectedFontColor(), $FFFFFF, MyFontSize, MyFontName)
            If SelectedFontStyle() & #PB_Font_Bold
              *Edit\SCI_STYLESETBOLD(0, #True)
            EndIf
            If SelectedFontStyle() & #PB_Font_Italic
              *Edit\SCI_STYLESETITALIC(0, #True)
            EndIf
            If SelectedFontStyle() & #PB_Font_Underline
              *Edit\SCI_STYLESETUNDERLINE(0, #True)
            EndIf
          EndIf
        Case #mnuHelpHelp
          MessageRequester("Hilfe", "Aktuelles Wort: " + *Edit\GetCurrentWord())
          SetActiveGadget(0)
        Case #mnuHelpAbout
          MessageRequester("Über SimpleEditor", "Demo der Scintilla Lib!" + #LF$ + "© 2006 by TS-Soft")
          SetActiveGadget(0)
      EndSelect
  EndSelect
ForEver
Der code hier funktioniert aber noch nicht mit SyntaxHighlighting. Woran kann das liegen?

Verfasst: 05.06.2007 11:57
von Kiffi
PureBasic4.0 hat geschrieben:@Kiffi: Ist mir klar, dass ich da schon mal einen Thread aufgemacht hatte. Ist sogar das gleiche Bild
na, dann stelle ich mir aber die Frage, warum Du die gleiche Frage noch
einmal stellst. Hast anscheinend die Antworten im anderen Thread nicht
richtig gelesen, oder?

Grüße ... Kiffi

Verfasst: 05.06.2007 12:00
von PureBasic4.0
@Kiffi: Mein Problem ist aber nicht Scintilla sondern SyntaxHighlighting mit Scintilla.

Das ScintillaGadget funktioniert astrein.