Seite 1 von 2

scintilla_helper

Verfasst: 28.03.2009 22:22
von ts-soft
scintilla_helper ist eine kleine UserLib, die sich noch in der Entwicklung
befindet. Sie ergänzt die vorhandene Scintilla Lib um PB-Typische Befehle,
die gerade dem Einsteiger die Verwendung des Scintilla-Gadgets
vereinfachen sollen.

Diese erste Version unterstützt nur 32-Bit Windows, das wird sich aber
ändern, wenn die Lib aus der Testphase raus ist, dann werden 64-Bit und
Linux unterstützt, desweiteren wird es dann auch eine Hilfe geben.

Die Lib unterstützt ASCII, Unicode und Threadsafe. Für das Scintilla werden
folgende Codepages unterstützt:
#SC_CP_UTF8 = UTF-8, 65001 = Unicode sowie 0 = ASCII

Folgende Funktionen wurden implementiert:

Code: Alles auswählen

PB Art Funktionen:
SCI_AddGadgetItem(ID, pos, Text.s)
SCI_CountGadgetItems(ID)
SCI_GetGadgetItemText(ID, pos)
SCI_RemoveGadgetItem(ID, pos)
SCI_ClearGadgetItems(ID)
SCI_SetGadgetItemText(ID, pos, Text.s)
SCI_GetGadgetText(ID)
SCI_SetGadgetText(ID, Text.s)
SCI_GetGadgetAttribute(ID, Attribute)
	#PB_Editor_ReadOnly
SCI_SetGadgetAttribute(ID, Attribute, Value)
	#PB_Editor_ReadOnly
SCI_GetGadgetColor(ID, Type)
	#PB_Gadget_FrontColor
	#PB_Gadget_BackColor
SCI_SetGadgetColor(ID, Type, Color)
	#PB_Gadget_FrontColor
	#PB_Gadget_BackColor
SCI_SetGadgetFont(ID, FontName.s, Size)

Extra Funktionen:
SCI_GetTextFormat(ID)
Ermittelt anhand der eingestellten Codepage das Textformat im Gadget,
mögliche Ergebnisse: #PB_Ascii, #PB_UTF8, #PB_Unicode

SCI_GetCurrentSelection(ID)
Aktuell selektierter Text wird zurückgegeben.

SCI_GetCurrentWord(ID)
Das Word, in dem sich der Cursor befindet, wird zurückgegeben.

SCI_LoadFile(ID, FileName.s)
Es wird die angegebene Datei schnell ins Gadget geladen,
die CodePage des Gadget wird, wenn BOM vorhanden, an das FileFormat angepaßt.

SCI_SaveFile(ID, FileName.s)
Der aktuelle Inhalt des Gadgets wird, unter Berücksichtigung
der Codepage, schnell gespeichert.

ScintillaGadgetPB(ID, x, y, w, h , SyntaxHilightingDLL.s)
Dieses Gadget aktiviert SyntaxHilighting für PureBasic, 
hierfür ist die SyntaxHilighting.dll aus dem SDK von PureBasic
erforderlich. Farben werden von der PB-IDE übernommen, wenn vorhanden,
ansonsten standard PB-Farben.
Ich bitte euch um gründliches Testen, sowie Vorschläge für Erweiterungen.
Bitte keine Lexxer-spezifischen Wünsche, da läßt sich nicht viel
vereinfachen.

Download

PS: Ihr könnt auch Snippets posten, die ich dann evtl. übertrage

Gruß

Thomas

Verfasst: 29.03.2009 03:46
von ts-soft
Interesse scheint nicht so gross, naja.
( oder schlafen die alle am Samstag so früh ? )

Update:
ScintillaGadgetPB hinzugefügt.
Erzeugt ein Scintilla das bereits für SyntaxHighlighting für PB konfiguriert ist.
Hierfür ist lediglich die SyntaxHilighting.dll aus dem SDK von PureBasic
erforderlich.

Verfasst: 29.03.2009 10:55
von man-in-black
cool! :allright:
habs zwar noch nicht getestet, aber werde es vllt heut nachmittag machen...


(ich habs immer wieder gelassen mich mit dem ScintillaGadget zu befassen, weil es mir doch ein wenig zu hoch vorkam. :oops: )


MFG,
MIB

Verfasst: 29.03.2009 12:14
von milan1612
Super! Ich steig beim Scintilla immer nie wirklich durch, das kommt wie gerufen!
Koenntest du vielleicht mal versuchen die gesamte Syntax Highlighting Konfiguration
zu vereinfachen, also mit Styles und den Keywords usw? Waere super :allright:

Verfasst: 29.03.2009 15:38
von Andesdaf
Danke! Immer wieder wollte ich mir Scintilla mal genauer anschauen,
bin aber immer in den ScintillaSendMessages drin stecken geblieben
:allright: :allright: :allright:

Verfasst: 29.03.2009 16:32
von ts-soft
> bin aber immer in den ScintillaSendMessages drin stecken geblieben
daran wird sich nicht viel ändern, die einfachen Messages werde ich nicht
wrappen, macht keinen Sinn. Nur dort, wo man 3, 4 oder mehr Messages
kombinieren muß um ein Ergebnis zu erzielen.
z.B. GetCurrentWord()

Desweiteren natürlich alle Funktionen, die auch das EditorGadget hat, das ist
ja schon erledigt, aber noch nicht besonders getested. (wird wohl noch der
eine oder andere Bug auftauchen)

Bei den Lexxern kann ich nicht viel optimieren, höchsten Proceduren mit
mehreren Parametern, die immer zusammengehören, so das man sich
ein paar ScintillaSendMessage sparen kann.

Beispiele könnte ich hinzufügen, für Standardlexxer der SciLexxer.dll.

Verfasst: 30.03.2009 04:05
von ts-soft
Update

Komplette Hilfe hinzugefügt
"dokumentierten" Source hinzugefügt (eignet sich auch als Include-Datei)

Beispiele hab ich keine erstellt. Das ganze Wochenende 7 downloads, dat
lohnt die Mühe nicht. Wenn jemand noch Beispiele hat, werde ich sie gerne
hinzufügen.

PS: Das ScintillaGadgetPB funktioniert unter x64 noch nicht richtig, muß ich
noch mal checken wo der Wurm da steckt.

Ich hoffe es ist nützlich und man kann daraus lernen.

Gruß
Thomas

Verfasst: 31.03.2009 16:29
von Andesdaf
danke. die Hilfe wollte ich auch so mal aus Spaß machen, hatte dann aber
doch keine Lust :mrgreen:

Verfasst: 31.03.2009 16:34
von ts-soft
Andesdaf hat geschrieben:danke. die Hilfe wollte ich auch so mal aus Spaß machen, hatte dann aber
doch keine Lust :mrgreen:
Hätteste mal gemacht, dann wären nicht soviele falsche öffnende Klammern darin :mrgreen:

fixed

Verfasst: 21.04.2009 16:22
von Thorsten1867
Gibt es auch eine Alternative zum automatischen Zeilenumbruch?

Code: Alles auswählen

eg = EditorGadget(#Gadget,240,63,355,110)
SendMessage_(eg, #EM_SETTARGETDEVICE, 0, 0)