Page 1 of 1

Eclipse Color Themes To PB

Posted: Mon Mar 28, 2016 8:18 am
by Opcode
This converts the Eclipse Color Theme XML files over to PureBasic .prefs files.

You replace the theme ID in the main function...

Code: Select all

Procedure Main()
  
  Protected.s XML
  Protected.l Theme = 21, File
...with the ID found in the address bar of your browser while on the eclipse color theme website.
It will dump a .pref file in the same folder as the source that you can import into the PB IDE to try new color themes.
Note: You will have to tweak the NewTheme map to fit your liking.

Code: Select all

; --------------------------------------------------
;   Eclipse 2 PB By Opcode
; --------------------------------------------------

InitNetwork()

Procedure.s RGBString(Color.s)
  
  Protected Value.l
  
  Color = ReplaceString(Color, "#", "$")
  Value = Val(Color)
  
  ProcedureReturn "RGB(" + Blue(Value) + "," + Green(Value) + "," + Red(Value) + ")"
  
EndProcedure

Procedure.s GetThemeXML(ID)
  
  Protected.l Request
  Protected.s Result
  
  Request = HTTPRequestMemory(#PB_HTTP_Get, "http://www.eclipsecolorthemes.org/?view=empty&action=download&theme=" + Str(ID) + "&type=xml")
  If Request
    Result = HTTPInfo(Request, #PB_HTTP_Response)
  EndIf
  FinishHTTP(Request)
  
  ProcedureReturn Result
  
EndProcedure

Procedure Main()
  
  Protected.s XML
  Protected.l Theme = 21, File
  Protected NewMap ThemeData.s()
  
  XML = GetThemeXML(Theme)
  
  If ParseXML(0, XML) And XMLStatus(0) = #PB_XML_Success
    
    Node = MainXMLNode(0)
    Node = ChildXMLNode(Node)
    
    While Node
      ThemeData(GetXMLNodeName(Node)) = GetXMLAttribute(Node, "color")
      Node = NextXMLNode(Node)
    Wend
    
    Protected NewMap NewTheme.s()
    
    NewTheme("ASMKeywordColor")               = RGBString(ThemeData("commentTaskTag"))
    NewTheme("BackgroundColor")               = RGBString(ThemeData("background"))
    NewTheme("BasicKeywordColor")             = RGBString(ThemeData("keyword"))
    NewTheme("CommentColor")                  = RGBString(ThemeData("singleLineComment"))
    NewTheme("ConstantColor")                 = RGBString(ThemeData("constant"))
    NewTheme("LabelColor")                    = RGBString(ThemeData("methodDeclaration"))
    NewTheme("NormalTextColor")               = RGBString(ThemeData("localVariable"))
    NewTheme("NumberColor")                   = RGBString(ThemeData("number"))
    NewTheme("OperatorColor")                 = RGBString(ThemeData("operator"))
    NewTheme("PointerColor")                  = RGBString(ThemeData("methodDeclaration"))
    NewTheme("PureKeywordColor")              = RGBString(ThemeData("class"))
    NewTheme("SeparatorColor")                = RGBString(ThemeData("bracket"))
    NewTheme("StringColor")                   = RGBString(ThemeData("string"))
    NewTheme("StructureColor")                = RGBString(ThemeData("enum"))
    NewTheme("LineNumberColor")               = RGBString(ThemeData("lineNumber"))
    NewTheme("LineNumberBackColor")           = RGBString(ThemeData("background"))
    NewTheme("MarkerColor")                   = RGBString(ThemeData("annotation"))
    NewTheme("CurrentLineColor")              = RGBString(ThemeData("currentLine"))
    NewTheme("SelectionColor")                = RGBString(ThemeData("selectionBackground"))
    NewTheme("SelectionFrontColor")           = RGBString(ThemeData("selectionForeground"))
    NewTheme("CursorColor")                   = RGBString(ThemeData("foreground"))
    NewTheme("Debugger_LineColor")            = RGBString(ThemeData(""))
    NewTheme("Debugger_LineSymbolColor")      = RGBString(ThemeData(""))
    NewTheme("Debugger_ErrorColor")           = RGBString(ThemeData(""))
    NewTheme("Debugger_ErrorSymbolColor")     = RGBString(ThemeData(""))
    NewTheme("Debugger_BreakPointColor")      = RGBString(ThemeData(""))
    NewTheme("Debugger_BreakpoinSymbolColor") = RGBString(ThemeData(""))
    NewTheme("DisabledBackColor")             = RGBString(ThemeData("background"))
    NewTheme("GoodBraceColor")                = RGBString(ThemeData("bracket"))
    NewTheme("BadBraceColor")                 = RGBString(ThemeData("bracket"))
    NewTheme("ProcedureBackColor")            = RGBString(ThemeData("background"))
    NewTheme("CustomKeywordColor")            = RGBString(ThemeData("keyword"))
    NewTheme("Debugger_WarningColor")         = RGBString(ThemeData(""))
    NewTheme("Debugger_WarningSymbolColor")   = RGBString(ThemeData(""))
    NewTheme("IndentColor")                   = RGBString(ThemeData("background"))
    NewTheme("ModuleColor")                   = RGBString(ThemeData("methodDeclaration"))
    NewTheme("SelectionRepeatColor")          = RGBString(ThemeData("occurrenceIndication"))
    NewTheme("PlainBackground")               = RGBString(ThemeData("background"))
    NewTheme("ToolsPanel_FrontColor")         = RGBString(ThemeData("foreground"))
    NewTheme("ToolsPanel_BackColor")          = RGBString(ThemeData("background"))
    
    If CreateFile(0, Str(Theme) + ".prefs")
      WriteStringN(0, "[Sections]")
      WriteStringN(0, "IncludeColors = 1" + #CRLF$)
      WriteStringN(0, "[Colors]")
      
      ForEach NewTheme()
        WriteStringN(0, MapKey(NewTheme()) + " = " + NewTheme())
        WriteStringN(0, MapKey(NewTheme()) + "_Used = 1")
      Next
      FlushFileBuffers(0)
      CloseFile(0)
    EndIf
    
    FreeXML(0)
    
  EndIf
  
EndProcedure

Main()