SyntaxHighlighting mit PB4?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

SyntaxHighlighting mit PB4?

Beitrag 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?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

ts-soft hat geschrieben:Du nutzt den Source der Lib oder Du
TailBitest Dir eine PB4 taugliche Version
Wie, TailBiten?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Du kannst doch einfach den source nehmen. Der war ja dabei.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SyntaxHighlighting mit PB4?

Beitrag 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
a²+b²=mc²
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag 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
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Dann ist doch alles Okay und Du kannst loslegen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag 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?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

@Kiffi: Mein Problem ist aber nicht Scintilla sondern SyntaxHighlighting mit Scintilla.

Das ScintillaGadget funktioniert astrein.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Antworten