PBObsidian-Theme (Farbschema für PureBasic)
Re: PBObsidian-Theme (Farbschema für PureBasic)
Hallo edel,
wenn du es heruntergeladen hast, dann hast du neben der Einrichtungsanwendung eine Preference-Datei mit den einzelnen RGB-Farben. (PB-Exportierungsdatei)
Falls die Datei im Archiv nicht vorhanden ist, dann könnte es am Cache liegen. Einfach nochmal herunterladen und ggf. vorher Cache leeren.
wenn du es heruntergeladen hast, dann hast du neben der Einrichtungsanwendung eine Preference-Datei mit den einzelnen RGB-Farben. (PB-Exportierungsdatei)
Falls die Datei im Archiv nicht vorhanden ist, dann könnte es am Cache liegen. Einfach nochmal herunterladen und ggf. vorher Cache leeren.
Re: PBObsidian-Theme (Farbschema für PureBasic)
Gibt es inzwischen eigentlich noch ein paar andere Farbschemen?
Ich bin nicht so der Typ fürs ewig rumprobieren.
Ich bin nicht so der Typ fürs ewig rumprobieren.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Re: PBObsidian-Theme (Farbschema für PureBasic)
Naja, PB bietet standardmäßig 8 Design-Vorlagen an. (Siehe Einstellungen unter Editor\Farben)
Hier im Forum wurden auch einige Farbschemen veröffentlicht. Da musst du mal die Boardsuche benutzen. Am besten die Google-Suche mit "site:purebasic.fr", um auch im französischen und englischen Forum suchen zu können. Ob die jeweiligen Downloadlinks noch funktionieren, weiß ich nicht.
Hier im Forum wurden auch einige Farbschemen veröffentlicht. Da musst du mal die Boardsuche benutzen. Am besten die Google-Suche mit "site:purebasic.fr", um auch im französischen und englischen Forum suchen zu können. Ob die jeweiligen Downloadlinks noch funktionieren, weiß ich nicht.
Re: PBObsidian-Theme (Farbschema für PureBasic)
Hier mal ein kleines Programm, welches die Farbeinstellungen von Eclipse umwandelt.
Die Themen gibt es auf eclipsecolorthemes.org. Einfach ein Theme auswaehlen und die ID aus der Url als Parameter uebergeben.
Das Programm laed die XML in den Speicher und erstellt danach eine Datei, die ueber die PB-IDE importiert werden kann.
http://eclipsecolorthemes.org/?view=theme&id=21 <- ID = 21
Die Themen gibt es auf eclipsecolorthemes.org. Einfach ein Theme auswaehlen und die ID aus der Url als Parameter uebergeben.
Das Programm laed die XML in den Speicher und erstellt danach eine Datei, die ueber die PB-IDE importiert werden kann.
http://eclipsecolorthemes.org/?view=theme&id=21 <- ID = 21
Code: Alles auswählen
InitNetwork()
#TIMEOUT = 4000
#CHUNKSIZE = 512
Structure Theme
Color.s
Used.l
Reverse.l
EndStructure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s GetThemeName(xml)
Protected name.s = ""
Protected node.i
If xml
node = MainXMLNode(xml)
If node
name = GetXMLAttribute(node, "name")
EndIf
EndIf
ProcedureReturn name
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s RGBString(color.s, reverse=0)
Protected r.a, g.a, b.a
Protected value.i
color = ReplaceString(color, "#", "$")
value = Val(color)
r = Red(value)
g = Green(value)
b = Blue(value)
If reverse = 1
r = Abs(255-r)
g = Abs(255-g)
b = Abs(255-b)
EndIf
ProcedureReturn "RGB("+b+","+g+","+r+")"
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s TransformTheme(xml)
Protected result.s
Protected node.i
Protected color.s
Protected NewMap Theme.Theme()
Theme("ModuleColor")\Color = "-1"
Theme("ASMKeywordColor")\Color = "-1"
Theme("BackgroundColor")\Color = "-1"
Theme("BasicKeywordColor")\Color = "-1"
Theme("CommentColor")\Color = "-1"
Theme("ConstantColor")\Color = "-1"
Theme("LabelColor")\Color = "-1"
Theme("NormalTextColor")\Color = "-1"
Theme("NumberColor")\Color = "-1"
Theme("OperatorColor")\Color = "-1"
Theme("PointerColor")\Color = "-1"
Theme("PureKeywordColor")\Color = "-1"
Theme("SeparatorColor")\Color = "-1"
Theme("StringColor")\Color = "-1"
Theme("StructureColor")\Color = "-1"
Theme("LineNumberColor")\Color = "-1"
Theme("LineNumberBackColor")\Color = "-1"
Theme("MarkerColor")\Color = "-1"
Theme("CurrentLineColor")\Color = "-1"
Theme("SelectionColor")\Color = "-1"
Theme("SelectionFrontColor")\Color = "-1"
Theme("CursorColor")\Color = "-1"
Theme("Debugger_LineColor")\Color = "-1"
Theme("Debugger_LineSymbolColor")\Color = "-1"
Theme("Debugger_ErrorColor")\Color = "-1"
Theme("Debugger_ErrorSymbolColor")\Color = "-1"
Theme("Debugger_BreakPointColor")\Color = "-1"
Theme("Debugger_BreakpoinSymbolColor")\Color = "-1"
Theme("DisabledBackColor")\Color = "-1"
Theme("GoodBraceColor")\Color = "-1"
Theme("BadBraceColor")\Color = "-1"
Theme("ProcedureBackColor")\Color = "-1"
Theme("CustomKeywordColor")\Color = "-1"
Theme("Debugger_WarningColor")\Color = "-1"
Theme("Debugger_WarningSymbolColor")\Color = "-1"
Theme("IndentColor")\Color = "-1"
Theme("ToolsPanel_FrontColor")\Color = "0"
Theme("ToolsPanel_BackColor")\Color = "0"
node = MainXMLNode(xml)
node = ChildXMLNode(node)
result = "[Sections]"+ #LF$
result + "IncludeColors = 1" + #LF$
result + "[Colors]" + #LF$
While node
color = GetXMLAttribute(node, "color")
Select GetXMLNodeName(node)
Case "singleLineComment"
Theme("CommentColor")\Color = color
Case "background"
Theme("BackgroundColor")\Color = color
Theme("LineNumberBackColor")\Color = color
Theme("ProcedureBackColor")\Color = color
Theme("ToolsPanel_BackColor")\Color = color
Case "foreground"
Theme("NormalTextColor")\Color = color
Theme("SeparatorColor")\Color = color
Theme("ToolsPanel_FrontColor")\Color = color
Theme("CursorColor")\Color = color
Theme("CursorColor")\Color = color
Case "constant"
Theme("ConstantColor")\Color = color
Case "string"
Theme("StringColor")\Color = color
Case "lineNumber"
Theme("LineNumberColor")\Color = color
Case "number"
Theme("NumberColor")\Color = color
Case "keyword"
Theme("BasicKeywordColor")\Color = color
Theme("CustomKeywordColor")\Color = color
Case "currentLine"
Theme("CurrentLineColor")\Color = color
Theme("Debugger_BreakPointColor")\Color = color
Case "operator"
Theme("OperatorColor")\Color = color
Case "selectionBackground"
Theme("SelectionColor")\Color = color
Theme("SelectionFrontColor")\Color = color
Theme("SelectionFrontColor")\reverse = #True
Case "class"
Theme("PureKeywordColor")\Color = color
EndSelect
node = NextXMLNode(node)
Wend
ForEach Theme()
If Theme()\Color = "-1"
result + MapKey(Theme()) + " = " + RGBString("#000000") + #LF$
result + MapKey(Theme()) + "_Used = 0" + #LF$
Else
result + MapKey(Theme()) + " = " + RGBString(Theme()\Color, Theme()\reverse) + #LF$
result + MapKey(Theme()) + "_Used = 1" + #LF$
EndIf
Next
ProcedureReturn result
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s GetThemeXML(id)
Protected cid.i
Protected header.s
Protected headend.l
Protected timeout.l
Protected buflen.i
Protected buffer.s = ""
Protected result.s = ""
cid = OpenNetworkConnection("eclipsecolorthemes.org", 80)
If cid
header = "GET /?action=download&theme="+id+"&type=xml HTTP/1.1" + #CRLF$
header + "Host: eclipsecolorthemes.org" + #CRLF$
header + "Connection: close" + #CRLF$
header + #CRLF$
SendNetworkString(cid, header)
timeout = ElapsedMilliseconds()
Repeat
If NetworkClientEvent(cid) = #PB_NetworkEvent_Data
Repeat
buffer = Space(#CHUNKSIZE)
buflen = ReceiveNetworkData(cid, @buffer, #CHUNKSIZE)
result + PeekS(@buffer, buflen, #PB_UTF8)
Until buflen = 0
result = StringField(result, 2, #CRLF$ + #CRLF$)
Break
EndIf
Until ElapsedMilliseconds() - timeout > #TIMEOUT
CloseNetworkConnection(cid)
EndIf
ProcedureReturn result
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure Main()
Protected theme.l = 0
Protected xml.i
Protected file.i
Protected result.s
OpenConsole()
theme = Val(ProgramParameter())
result = GetThemeXML(theme)
xml = CatchXML(#PB_Any, @result, Len(result) * SizeOf(Character), 0, #PB_UTF8)
If xml
result = TransformTheme(xml)
file = CreateFile(#PB_Any, "" + theme + "_" + GetThemeName(xml)+ ".prefs")
If file
WriteString(file, result)
CloseFile(file)
EndIf
FreeXML(xml)
EndIf
EndProcedure : End Main()
Re: PBObsidian-Theme (Farbschema für PureBasic)
Ich habs noch nicht getestet, aber wenn die Color-Template-Konvertierung mit Hilfe deines Codes super funktioniert, dann ist das echt eine feine Sache. Damit kann man ein Sammelpaket für Farbschemen erstellen und bereitstellen.
Danke für dein Code.
Danke für dein Code.
Re: PBObsidian-Theme (Farbschema für PureBasic)
Danke an edel - scheint ganz gut zu funktionieren. Ich bin jedoch der Meinung, dass bspw. Prozeduren eine andere Farbe bekommen sollten. Hat einer von euch schon probiert die neuen Module-Schlüsselwörter (und ggf. weitere) richtig einzubinden?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: PBObsidian-Theme (Farbschema für PureBasic)
Das wollte ich schon lange machen, weil mir das öfters auffiel. Es steht aber schon in meiner "irgendwann, wenn ich mal Zeit habe"-ToDo-Liste.
Re: PBObsidian-Theme (Farbschema für PureBasic)
Gut, danke für die Info. Bei mir übrigens auch...RSBasic hat geschrieben:Es steht aber schon in meiner "irgendwann, wenn ich mal Zeit habe"-ToDo-Liste.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: PBObsidian-Theme (Farbschema für PureBasic)
So, ich habe edels Code mal ein wenig angepasst:
Die größte Änderung ist wohl, dass nun Label und Pointer die (inhaltlich nicht richtige) enum- und Strukturen die field-Farbe bekommen. Außerdem habe ich die neue SelectionRepeatColor-Farbe eingebaut.
Code: Alles auswählen
InitNetwork()
#TIMEOUT = 4000
#CHUNKSIZE = 512
Structure Theme
Color.s
Used.l
Reverse.l
EndStructure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s GetThemeName(xml)
Protected name.s = ""
Protected node.i
If xml
node = MainXMLNode(xml)
If node
name = GetXMLAttribute(node, "name")
EndIf
EndIf
ProcedureReturn name
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s RGBString(color.s, reverse=0)
Protected r.a, g.a, b.a
Protected value.i
color = ReplaceString(color, "#", "$")
value = Val(color)
r = Red(value)
g = Green(value)
b = Blue(value)
If reverse = 1
r = Abs(255-r)
g = Abs(255-g)
b = Abs(255-b)
EndIf
ProcedureReturn "RGB("+b+","+g+","+r+")"
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s TransformTheme(xml)
Protected result.s
Protected node.i
Protected color.s
Protected NewMap Theme.Theme()
Theme("ASMKeywordColor")\Color = "-1"
Theme("BackgroundColor")\Color = "-1"
Theme("BadBraceColor")\Color = "-1"
Theme("BasicKeywordColor")\Color = "-1"
Theme("CommentColor")\Color = "-1"
Theme("ConstantColor")\Color = "-1"
Theme("CurrentLineColor")\Color = "-1"
Theme("CursorColor")\Color = "-1"
Theme("CustomKeywordColor")\Color = "-1"
Theme("Debugger_BreakPointColor")\Color = "-1"
Theme("Debugger_BreakpoinSymbolColor")\Color = "-1"
Theme("Debugger_ErrorColor")\Color = "-1"
Theme("Debugger_ErrorSymbolColor")\Color = "-1"
Theme("Debugger_LineColor")\Color = "-1"
Theme("Debugger_LineSymbolColor")\Color = "-1"
Theme("Debugger_WarningColor")\Color = "-1"
Theme("Debugger_WarningSymbolColor")\Color = "-1"
Theme("DisabledBackColor")\Color = "-1"
Theme("GoodBraceColor")\Color = "-1"
Theme("IndentColor")\Color = "-1"
Theme("LabelColor")\Color = "-1"
Theme("LineNumberBackColor")\Color = "-1"
Theme("LineNumberColor")\Color = "-1"
Theme("MarkerColor")\Color = "-1"
Theme("ModuleColor")\Color = "-1" ; PB5.20
Theme("NormalTextColor")\Color = "-1"
Theme("NumberColor")\Color = "-1"
Theme("OperatorColor")\Color = "-1"
Theme("PlainBackground")\Color = "-1"
Theme("PointerColor")\Color = "-1"
Theme("ProcedureBackColor")\Color = "-1"
Theme("PureKeywordColor")\Color = "-1"
Theme("SelectionColor")\Color = "-1"
Theme("SelectionFrontColor")\Color = "-1"
Theme("SelectionRepeatColor")\Color = "-1" ; PB5.30
Theme("SeparatorColor")\Color = "-1"
Theme("StringColor")\Color = "-1"
Theme("StructureColor")\Color = "-1"
Theme("ToolsPanel_BackColor")\Color = "0"
Theme("ToolsPanel_FrontColor")\Color = "0"
node = MainXMLNode(xml)
node = ChildXMLNode(node)
result = "[Sections]"+ #LF$
result + "IncludeColors = 1" + #LF$
result + "[Colors]" + #LF$
While node
color = GetXMLAttribute(node, "color")
Select GetXMLNodeName(node)
Case "background"
Theme("BackgroundColor")\Color = color
;Theme("DisabledBackColor")\Color = color
;Theme("IndentColor")\Color = color
Theme("LineNumberBackColor")\Color = color
Theme("PlainBackground")\Color = color
Theme("ProcedureBackColor")\Color = color
Theme("ToolsPanel_BackColor")\Color = color
Case "bracket"
;Theme("BadBraceColor")\Color = color
Theme("GoodBraceColor")\Color = color
Theme("SeparatorColor")\Color = color
Case "class" ;"method"
Theme("ASMKeywordColor")\Color = color
Theme("ModuleColor")\Color = color
Theme("PureKeywordColor")\Color = color
Case "constant"
Theme("ConstantColor")\Color = color
Case "currentLine"
Theme("CurrentLineColor")\Color = color
Theme("Debugger_BreakPointColor")\Color = color
Case "enum" ; TODO
Theme("LabelColor")\Color = color
Theme("PointerColor")\Color = color
Case "field" ; TODO
Theme("StructureColor")\Color = color
Case "foreground"
Theme("CursorColor")\Color = color
;Theme("MarkerColor")\Color = color
Theme("NormalTextColor")\Color = color
Theme("ToolsPanel_FrontColor")\Color = color
Case "keyword"
Theme("BasicKeywordColor")\Color = color
Theme("CustomKeywordColor")\Color = color
Case "lineNumber"
Theme("LineNumberColor")\Color = color
Case "number"
Theme("NumberColor")\Color = color
Case "findScope"
Theme("SelectionRepeatColor")\Color = color
Case "operator"
Theme("OperatorColor")\Color = color
Case "selectionBackground"
Theme("SelectionColor")\Color = color
Case "selectionForeground"
Theme("SelectionFrontColor")\Color = color
Case "singleLineComment"
Theme("CommentColor")\Color = color
Case "string"
Theme("StringColor")\Color = color
EndSelect
node = NextXMLNode(node)
Wend
ForEach Theme()
If Theme()\Color = "-1"
result + MapKey(Theme()) + " = " + RGBString("#000000") + #LF$
result + MapKey(Theme()) + "_Used = 0" + #LF$
Else
result + MapKey(Theme()) + " = " + RGBString(Theme()\Color, Theme()\reverse) + #LF$
result + MapKey(Theme()) + "_Used = 1" + #LF$
EndIf
Next
ProcedureReturn result
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure.s GetThemeXML(id)
Protected cid.i
Protected header.s
Protected headend.l
Protected timeout.l
Protected buflen.i
Protected buffer.s = ""
Protected result.s = ""
cid = OpenNetworkConnection("eclipsecolorthemes.org", 80)
If cid
header = "GET /?action=download&theme="+id+"&type=xml HTTP/1.1" + #CRLF$
header + "Host: eclipsecolorthemes.org" + #CRLF$
header + "Connection: close" + #CRLF$
header + #CRLF$
SendNetworkString(cid, header)
timeout = ElapsedMilliseconds()
Repeat
If NetworkClientEvent(cid) = #PB_NetworkEvent_Data
Repeat
buffer = Space(#CHUNKSIZE)
buflen = ReceiveNetworkData(cid, @buffer, #CHUNKSIZE)
result + PeekS(@buffer, buflen, #PB_UTF8)
Until buflen = 0
result = StringField(result, 2, #CRLF$ + #CRLF$)
Break
EndIf
Until ElapsedMilliseconds() - timeout > #TIMEOUT
CloseNetworkConnection(cid)
EndIf
ProcedureReturn result
EndProcedure
;/////////////////////////////////////////////////////////
;//
;//
;/////////////////////////////////////////////////////////
Procedure Main()
Protected theme.l = 0
Protected xml.i
Protected file.i
Protected result.s
OpenConsole()
theme = Val(ProgramParameter()) ; Theme ID
result = GetThemeXML(theme)
xml = CatchXML(#PB_Any, @result, Len(result) * SizeOf(Character), 0, #PB_UTF8)
If xml
result = TransformTheme(xml)
file = CreateFile(#PB_Any, GetHomeDirectory() + theme + "_" + GetThemeName(xml)+ ".prefs")
If file
WriteString(file, result)
CloseFile(file)
EndIf
FreeXML(xml)
EndIf
EndProcedure : End Main()
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld