Seite 1 von 2

RaEditGadget Userlib

Verfasst: 22.04.2008 18:45
von ts-soft
Dies ist eine einfach zu nutzende Editorlib mit support für Highlightning, Folding usw.

Diese erste Beta-Version dient dazu, noch vorhandene Bugs zu finden und
hoffentlich auszumerzen. Die eigentlich Lib basiert auf einer ASM Library von
Ketilo (http://www.radasm.com/)

Vorschau:
Bild

Also bitte fleissig testen (Hilfe ist bei) und Bugs melden

Download
Das geladene Archiv über eure PB-Installation entpacken.
PB 4.xx erforderlich

Gruß
Thomas

// edit
Jetzt als Include, siehe hier: http://purebasic.fr/german/viewtopic.ph ... 117#196117

Verfasst: 22.04.2008 19:01
von X0r
Warum erkennt der Editor ";" immer als Kommentar? Wird der Standard PureBasic-Lexer verwendet? Sollte man deaktivieren können.

Verfasst: 22.04.2008 19:19
von ts-soft
X0r hat geschrieben:Warum erkennt der Editor ";" immer als Kommentar? Wird der Standard PureBasic-Lexer verwendet? Sollte man deaktivieren können.
Das ist der default-wert für Kommentare. Es wird kein Lexer verwendet.
Sowas gibts dafür nicht.
Aber wie gesagt, erste Beta, muß erst noch alles getestet werden, da die
documentation (wenn man davon überhaupt sprechen kann) zur RaEdit.lib
doch spärlich ist.

Verfasst: 22.04.2008 19:24
von X0r
Das ist der default-wert für Kommentare. Es wird kein Lexer verwendet.
Sowas gibts dafür nicht.
Oh je, jetzt hab ich das mit Scintilla durcheinander gebracht. :mrgreen:

Verfasst: 22.04.2008 19:52
von edel
Du kannst mit REM_SETCHARTAB einem Zeichen eine andere Funktion zuweisen

Code: Alles auswählen

RaEditSendMessage(#RaEdit, #REM_SETCHARTAB, '-', #CT_CMNTCHAR)
Hier wird das Zeichen - zusaetzlich zum Einleiten des Kommantares benutzt.

Verfasst: 24.04.2008 21:18
von edel
Ein kleines Update. Die Userlib wurde entfernt, dafuer gibt es jetzt den ganzen Code als einzelne Include.

Link bleibt der gleiche :
http://www.realsource.de/downloads/doc_ ... editgadget

Verfasst: 25.04.2008 00:27
von ts-soft
Hier nochmal der Source der Vorschau im ersten Posting:

Code: Alles auswählen

XIncludeFile "raedit.pb"

EnableExplicit

Enumeration ; windows
  #frmMain
  ; ...
EndEnumeration

Enumeration ; gadgets
  #RaEdit
  ; ...
EndEnumeration

Enumeration ; menu / toolbar
  #mnuMain
  #mnuFileNew
  ; ...
EndEnumeration

Enumeration ; font
  #fntCourier
EndEnumeration

Procedure.s GetExePath()
  Protected ExePath.s = GetPathPart(ProgramFilename())
  If LCase(ExePath) = LCase(GetTemporaryDirectory()) : ExePath = GetCurrentDirectory() : EndIf
  ProcedureReturn ExePath
EndProcedure

#WINFLAGS = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget

Define.s Text = "", tmpText
Define.l Format

If OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 640, 480, "RAEdit Example",  #WINFLAGS)

  SmartWindowRefresh(#frmMain, #True)
  AddKeyboardShortcut(#frmMain, #PB_Shortcut_Control | #PB_Shortcut_N, #mnuFileNew)

  If CreateMenu(#mnuMain, WindowID(#frmMain))
    MenuTitle("File")
    MenuItem(#mnuFileNew, "New" + #TAB$ + "Ctrl+N")
    ; ...
  EndIf

  If CreateToolBar(#mnuMain, WindowID(#frmMain))
    ToolBarStandardButton(#mnuFileNew, #PB_ToolBarIcon_New)
    ; ...
  EndIf

  If CreateGadgetList(WindowID(#frmMain))
    RaEditGadget(#RaEdit, 0, ToolBarHeight(#mnuMain), 0, 0)
    
    SetGadgetColor(#RaEdit, #RaEdit_BackColor, #White)
    SetGadgetAttribute(#RaEdit, #RaEdit_HilightLine, #True)
    SetGadgetAttribute(#RaEdit, #RaEdit_LineNumberBar, #True)
    SetGadgetAttribute(#RaEdit, #RaEdit_NoLockButton, #True)
    
    RaEditAddDefBlock(#RaEdit,"enumeration", "endenumeration", #BD_INCLUDELAST | #BD_DIVIDERLINE)
    RaEditAddDefBlock(#RaEdit,"datasection", "enddatasection", #BD_INCLUDELAST | #BD_DIVIDERLINE)
    SendMessage_(GadgetID(#RaEdit), #REM_SETCHARTAB, '.', #CT_OPER)
    RaEditAddDefBlock(#RaEdit,"procedure", "endprocedure", #BD_INCLUDELAST | #BD_DIVIDERLINE)
    RaEditAddDefBlock(#RaEdit,"if !endif", "endif", #BD_INCLUDELAST)
    RaEditAddDefBlock(#RaEdit,"while !wend", "wend", #BD_INCLUDELAST)
    RaEditAddDefBlock(#RaEdit,"repeat !until", "until", #BD_INCLUDELAST)
    RaEditAddDefBlock(#RaEdit,"repeat", "forever", #BD_INCLUDELAST)
    RaEditAddDefBlock(#RaEdit,"select", "endselect", #BD_INCLUDELAST)
    SendMessage_(GadgetID(#RaEdit), #REM_SETCHARTAB, '#', #CT_NONE)
    
    RaEditSetHiliteWords(#RaEdit, $006500, "sendmessage_")
    
    Restore KeyWordRed
    Text = ""
    Repeat
      Read tmpText
      If tmpText
        Text + tmpText + Space(1)
      EndIf
    Until tmpText = ""
    RaEditSetHiliteWords(0, #Red, Text)
    
    Restore KeyWordBlue
    Text = ""
    Repeat
      Read tmpText
      If tmpText
        Text + tmpText + Space(1)
      EndIf
    Until tmpText = ""
    RaEditSetHiliteWords(0, #Blue, Text)
    
    SetGadgetFont(#RaEdit, LoadFont(#fntCourier, "Courier New", 10))

    Text = "" : Format.l = #PB_Ascii
    If ReadFile(0, GetExePath() + "example2.pb")
      Format = ReadStringFormat(0)
      While Not Eof(0)
        Text + ReadString(0, Format) + #CRLF$
      Wend
      CloseFile(0)
      SetGadgetText(#RaEdit, Text)
    EndIf


    ; ...
  EndIf

  Repeat

    Select WaitWindowEvent()

      Case #PB_Event_CloseWindow
        Break

      Case #PB_Event_SizeWindow
        ResizeGadget(#RaEdit, #PB_Ignore, #PB_Ignore, WindowWidth(#frmMain), WindowHeight(#frmMain) - MenuHeight() - ToolBarHeight(#mnuMain))
        SetActiveGadget(#RaEdit)
      Case #PB_Event_Menu
        Select EventMenu()

          Case #mnuFileNew
            SetGadgetText(#RaEdit, "")

        EndSelect
    EndSelect

  ForEver

EndIf

DataSection
KeyWordRed:
  Data.s "enableexplicit"
  Data.s "enumeration"
  Data.s "endenumeration"
  Data.s "procedure"
  Data.s "endprocedure"
  Data.s "define"
  Data.s "if"
  Data.s "endif"
  Data.s "read"
  Data.s "restore"
  Data.s "repeat"
  Data.s "until"
  Data.s "forever"
  Data.s "case"
  Data.s "default"
  Data.s "while"
  Data.s "wend"
  Data.s "select"
  Data.s "endselect"
  Data.s "datasection"
  Data.s "enddatasection"
  Data.s "break"
  Data.s "protected"
  Data.s "global"
  Data.s "not"
  Data.s "procedurereturn"
  Data.s ""
KeyWordBlue:
  Data.s "openwindow"
  Data.s "smartwindowrefresh"
  Data.s "addkeyboardshortcut"
  Data.s "createmenu"
  Data.s "menutitle"
  Data.s "menuitem"
  Data.s "createtoolbar"
  Data.s "toolbarstandardbutton"
  Data.s "creategadgetlist"
  Data.s "setgadgetfont"
  Data.s "setgadgettext"
  Data.s "readfile"
  Data.s "readstring"
  Data.s "closefile"
  Data.s "setactivegadget"
  Data.s "readstringformat"
  Data.s "waitwindowevent"
  Data.s "windowevent"
  Data.s "eventmenu"
  Data.s "eventgadget"
  Data.s "resizegadget"
  Data.s "lcase"
  Data.s "ucase"
  Data.s "raeditgadget"
  Data.s "raeditadddefblock"
  Data.s "raeditsendmessage"
  Data.s "getcurrentdirectory"
  Data.s "gettemporarydirectory"
  Data.s "getpathpart"
  Data.s "programfilename"
  Data.s "toolbarheight"
  Data.s "loadfont"
  Data.s "space"
  Data.s "windowwidth"
  Data.s "windowheight"
  Data.s "menuheight"
  Data.s "windowid"
  Data.s "xincludefile"
  Data.s "raeditsethilitewords"
  Data.s ""
EndDataSection

Verfasst: 25.04.2008 00:32
von Andreas_S
Sieht gut aus :allright:

Kann ich gut gebrauchen...

Verfasst: 25.04.2008 14:00
von ts-soft
Update:

kleine Fehler im Unicode-Modus behoben
RaEditGetCurrentWord repariert.
Hilfe aktualisiert.

Re: RaEditGadget Userlib

Verfasst: 12.12.2011 07:49
von D.J.Peters
Hallo Tom,
tolle Arbeit kannste mal bitte ein 4.6 kompatibles Beispiel posten. DANKE

Ich hatte den callback dem declare angepast (.l)
und da wo mit Read String gelesen wird (.s )
aber jetzt meckert er weiter.

Das Gadget an sich sieht echt nützlich aus, gibt es den Sourcecode?
Unter welcher Lizens kann man das Gadget benutzen

Grüße DJ