RaEditGadget Userlib

Anwendungen, Tools, Userlibs und anderes nützliches.
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

RaEditGadget Userlib

Beitrag 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
Zuletzt geändert von ts-soft am 24.04.2008 23:56, insgesamt 1-mal geändert.
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
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Warum erkennt der Editor ";" immer als Kommentar? Wird der Standard PureBasic-Lexer verwendet? Sollte man deaktivieren können.
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 »

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.
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
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag 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:
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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
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 »

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
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
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Sieht gut aus :allright:

Kann ich gut gebrauchen...
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 »

Update:

kleine Fehler im Unicode-Modus behoben
RaEditGetCurrentWord repariert.
Hilfe aktualisiert.
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
D.J.Peters
Beiträge: 87
Registriert: 28.11.2010 13:07
Computerausstattung: P4 2x3.2GKz.1GB WIXP 32Bit NVIDEA GT240 1GB DDR3, AMD XP 1.8GHz Linux 32Bit NVIDEA GT240 TIi3200
Wohnort: Germany
Kontaktdaten:

Re: RaEditGadget Userlib

Beitrag 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
PS. meine vielen Fehler der Rechtschreibung auf dem Forum könnt Ihr gerne ignorieren.
Antworten