Scintilla Lib für PB 4 (Update, ist jetzt ein echtes Gadget)

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

Scintilla Lib für PB 4 (Update, ist jetzt ein echtes Gadget)

Beitrag von ts-soft »

Lib stimmt noch nicht ganz, da TailBite es noch nicht rafft, aber wenn es
soweit ist, soll die Lib in die PBOSL aufgenommen werden.

Im moment sind es also nur Sources, die man als Include verwenden
kann. Für die Konstanten- und Structuredefinition wurden die
Header-Dateien des Scintilla-Sources Version 1.6.8 verwendet.

Die Lib ist OOP-Mässig aufgebaut, weil dies meiner Meinung nach in diesem
Falle sinnvoll ist.

Als Beispiel ist ein fast vollwertiger Notepad-Ersatz dabei, der auf Wunsch
auch Zeilennummern anzeigt. Dieser kann natürlich für eigenen Zwecke
ausgeschlachtet oder erweitert werden :wink:

Über Wünsche, Kritik usw. würde ich mich freuen.

Der Download wurde in das Example Paket zur CreateGadget.pbi gepackt.
siehe hier: http://www.purebasic.fr/german/viewtopic.php?t=8071
Zuletzt geändert von ts-soft am 26.04.2006 12:36, insgesamt 2-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
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Scintilla Lib für PB 4

Beitrag von Kiffi »

> Das Download-Paket umfasst auch die aktueller SciLexer.dll, sowie Doku
> dazu.

Goil! Super Arbeit, Thomas :allright:

Danke & Grüße ... Kiffi
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Tschuldige, wenn ich das grad noch nicht ganz raffe, aber: Ist das jetzt eine Lib, mit der ich meine EditorGadgets() aus meinem Programm verbannenund dafür dein NotepadEditor() einsetzen kann?

Ich kann mir die Datei nämlich von hier aus nicht anschauen, dazu muss ich an meinen Computer.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
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 »

AND51 hat geschrieben:Tschuldige, wenn ich das grad noch nicht ganz raffe, aber: Ist das jetzt eine Lib, mit der ich meine EditorGadgets() aus meinem Programm verbannenund dafür dein NotepadEditor() einsetzen kann?
Du kannst das Scintilla als Ersatz für EditorGadget verwenden. Darüber
hinaus ist diese DLL dafür optimiert Syntaxhighlight, Falten usw. für div.
Programmiersprachen zu ermöglichen. Ein ähnlicher Wrapper wurde für
jaPBe verwendet. Meiner untersützt jetzt aber OOP-ähnliche Syntax, die
neueste Version der DLL und PB4. Die mitgelieferte DLL unterscheidet sich zu
der Version, die mit der IDE mitgeliefert wird, darin, das alle Lexer für
verschiedenen Sprachen enthalten sind, ist deshalb auch etwas grösser.

Wer mit dem EditorGadget kein Wordpad schreiben kann, wird mit Scintilla
auch nicht viel weiter kommen :wink:

Das Beispiel ist ein unvollständiger Notepadclone, um die Funktionsweise
aufzuzeigen.
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
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

 define key.s = "procedure endprocedure procedurereturn"
  
  *Edit\SciMsg(#SCI_SETLEXER       , #SCLEX_PUREBASIC) 
  *Edit\SciMsg(#SCI_SETSTYLEBITS   , 7 )
  *Edit\SciMsg(#SCI_STYLECLEARALL) 
  *Edit\SciMsg(#SCI_SETKEYWORDS    , 0       , @key)
  
  *Edit\SciMsg(#SCI_STYLESETFORE ,#SCE_B_COMMENT  , $0080FF )
  *Edit\SciMsg(#SCI_STYLESETBACK ,#SCE_B_COMMENT  , $FFFFFF )
  
  *Edit\SciMsg(#SCI_STYLESETFORE ,#SCE_B_STRING  , $0000FF )
  *Edit\SciMsg(#SCI_STYLESETBACK ,#SCE_B_STRING  , $FFFFFF )
  
  *Edit\SciMsg(#SCI_STYLESETFORE ,#SCE_B_NUMBER  , $0000FF )
  *Edit\SciMsg(#SCI_STYLESETBACK ,#SCE_B_NUMBER  , $FFFFFF )
  
  *Edit\SciMsg(#SCI_STYLESETFORE ,#SCE_B_KEYWORD  , $FF0000 )
  *Edit\SciMsg(#SCI_STYLESETBACK ,#SCE_B_KEYWORD  , $FFFFFF )
  
  
  
  *Edit\SciMsg(#SCI_SETPROPERTY, @"fold", @"1")
  *Edit\SciMsg(#SCI_SETPROPERTY, @"fold.compact", @"1")
  
  *Edit\SciMsg(#SCI_SETMARGINTYPEN,  1, #SC_MARGIN_SYMBOL)
  *Edit\SciMsg(#SCI_SETMARGINMASKN,  1, #SC_MASK_FOLDERS)
  *Edit\SciMsg(#SCI_SETMARGINWIDTHN, 1, 15)
  
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDEROPEN   , #SC_MARK_CIRCLEMINUS)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDER       , #SC_MARK_CIRCLEPLUS)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDERSUB    , #SC_MARK_VLINE)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDERTAIL   , #SC_MARK_LCORNERCURVE)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDEREND    , #SC_MARK_CIRCLEPLUSCONNECTED)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDEROPENMID, #SC_MARK_CIRCLEMINUSCONNECTED)
  *Edit\SciMsg(#SCI_MARKERDEFINE, #SC_MARKNUM_FOLDERMIDTAIL, #SC_MARK_TCORNERCURVE)  
  
  define text.s
  
  text = "Procedure bla(val.s = " +chr(34)+"blub"+ chr(34)+ ")" + chr(10)
  text + "  ProcedureReturn 0"+ chr(10)
  text + "EndProcedure"+ chr(10)
  
  *Edit\SciMsg(#SCI_SETTEXT,0,@text)

Klappt super :-)
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 »

@hallodri
danke für Dein Snippet.
Kommt auch in Kürze zum Einsatz, werde den SimpleEditor mal um
Syntaxhighlightning für PB erweitern. Das sollte dann wohl etwas mehr
Interesse wecken :wink:
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
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Dann erweitere aber auch den Lexer , der versteht nur pb 3 folding.


Waere auch sinnvoll soetwas gleich mit einzubauen . dann braucht man nicht alles 2 mal schreiben .

Code: Alles auswählen

PROCEDURE Scintilla_SetStyle(style.l,fore.l,back.l,size.l=0,fontname.s = "")
  Protected *this.Scintilla
  !mov [p.p_this],ebp
  
  *this\SciMsg(#SCI_STYLESETFORE , style , fore) 
  *this\SciMsg(#SCI_STYLESETBACK , style , back)
  
  IF size > 0
    *this\SciMsg(#SCI_STYLESETSIZE , style , size)
  ENDIF 
  
  IF fontname <> "" 
    *this\SciMsg(#SCI_STYLESETFONT , style , @fontname)
  ENDIF 
  
ENDPROCEDURE 
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 erweitere aber auch den Lexer , der versteht nur pb 3 folding.
Muß mal gucken. Hab immer Probleme die DLL zu erzeugen, der macht
immer die Dekorationen an die Funktion, kenne mich mit VC6 nicht aus :oops:
Werde mir noch was überlegen, vielleicht hilft da ja auch jemand?

SetStyle wurde integriert! Dowload geupdated.

Weitere Vorschläge erwünscht :wink:
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
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Danke für die Erklärung!

Wenn Vorschläge gewünscht, bitte sehr: Wie wäre es, wenn das Programm Einrückungen für die nächste Zeile übernimmt? Soll heißen, wenn ich TAB drücke, Code schreibe und ENTER drücke, dann soll der Editor auch einmal autom. TAB drücken.
Find ich intreressant und das erleichtert das übersichtliche notieren des Quellcode oder anderer Texte ungemein!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

@ts
Ich kann die DLL nur mit VS 2005 kompilieren , aber danach klappt z.b.
settext nicht mehr , keine Ahnung warum (unicode ?).

@AND51
>>dann soll der Editor auch einmal autom. TAB drücken
Genau das sollte ein Editor koennen , nicht aber ein Control ;-)
Antworten