diff --git a/gui/builtinPreferenceViews/pyfaGaugePreferences.py b/gui/builtinPreferenceViews/pyfaGaugePreferences.py new file mode 100644 index 000000000..dfa11b0c9 --- /dev/null +++ b/gui/builtinPreferenceViews/pyfaGaugePreferences.py @@ -0,0 +1,395 @@ +# -*- coding: utf-8 -*- + +########################################################################### +## Python code generated with wxFormBuilder (version May 4 2010) +## http://www.wxformbuilder.org/ +## +## PLEASE DO "NOT" EDIT THIS FILE! +########################################################################### + +import wx +import copy + +########################################################################### +## Class PFGaugePref +########################################################################### + +class PFGaugePreview(wx.Window): + def __init__ (self, parent, id = wx.ID_ANY, value = 0, pos = wx.DefaultPosition, size = wx.DefaultSize, style = 0): + wx.Window.__init__(self, parent, id, pos = pos, size = size, style = style) + + self.value = float(value) + self.oldValue = self.value + self.animate = True + + self.colorS = wx.Colour(0,0,0) + self.colorE = wx.Colour(0,0,0) + + self.bkColor = wx.Colour(0,0,0) + self.SetMinSize((100,-1)) + + self.timerID = wx.NewId() + self.timer = wx.Timer(self, self.timerID) + self.timerInterval = 20 + + self.Bind(wx.EVT_PAINT, self.OnPaint) + self.Bind(wx.EVT_ENTER_WINDOW, self.OnWindowEnter) + self.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) + self.Bind(wx.EVT_TIMER, self.OnTimer) + self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBk) + + def OnEraseBk(self, event): + pass + + def OnTimer(self, event): + if event.GetId() == self.timerID: + self.value += 1 + if self.value > 100: + self.value = 0 + self.Refresh() + + def OnWindowEnter(self, event): + if not self.animate: + return + self.oldValue = self.value + if self.timer.IsRunning(): + self.timer.Stop() + self.timer.Start(self.timerInterval) + event.Skip() + + def OnWindowLeave(self, event): + if not self.animate: + return + if self.timer.IsRunning(): + self.timer.Stop() + self.value = self.oldValue + self.Refresh() + event.Skip() + + def CanAnimate(self, anim = True): + self.animate = anim + if self.timer.IsRunning(): + self.timer.Stop() + self.value = self.oldValue + self.Refresh() + + def SetColour(self, colorS, colorE): + self.colorS = colorS + self.colorE = colorE + + self.Refresh() + + def SetValue(self, value): + self.value = min(max(value,0),100) + self.Refresh() + + def CalculateGColor(self, color, delta): + bkR ,bkG , bkB = color + scale = delta + + r = bkR + scale + g = bkG + scale + b = bkB + scale + + r = min(max(r,0),255) + b = min(max(b,0),255) + g = min(max(g,0),255) + + return wx.Colour(r,g,b,255) + + def CalculateTransitionColor(self, startColor, endColor, delta): + sR,sG,sB = startColor + eR,eG,eB = endColor + + tR = sR + (eR - sR) * delta + tG = sG + (eG - sG) * delta + tB = sB + (eB - sB) * delta + + return (tR, tG, tB) + + def OnPaint(self, event): + rect = self.GetClientRect() + dc = wx.BufferedPaintDC(self) + dc.SetBackground(wx.Brush(self.bkColor)) + dc.Clear() + + value = self.value + if value > 100: + w = rect.width + else: + w = rect.width * (float(value) / 100) + r = copy.copy(rect) + r.width = w + r.height = r.height/2+1 + + color = self.CalculateTransitionColor(self.colorS, self.colorE, float(value)/100) + gcolor = self.CalculateGColor(color, -31) + dc.GradientFillLinear(r, gcolor, color, wx.SOUTH) + r.top = r.height + dc.GradientFillLinear(r, gcolor, color, wx.NORTH) + +class PFGaugePref ( wx.Dialog): + + def __init__( self ): + wx.Dialog.__init__ ( self, None, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,261 ), style = wx.DEFAULT_DIALOG_STYLE ) + + self.SetTitle("Pyfa's Gauges colors editor") + self.InitDefaultColours() + + mainSizer = wx.BoxSizer( wx.VERTICAL ) + + gSizer1 = wx.BoxSizer( wx.HORIZONTAL ) + + self.st0100 = wx.StaticText( self, wx.ID_ANY, u"0 - 100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT ) + self.st0100.Wrap( -1 ) + gSizer1.Add( self.st0100, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp0100S = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer1.Add( self.cp0100S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp0100E = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer1.Add( self.cp0100E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.gauge0100S = PFGaugePreview( self, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer1.Add( self.gauge0100S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge0100M = PFGaugePreview( self, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer1.Add( self.gauge0100M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge0100E = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer1.Add( self.gauge0100E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 ) + + mainSizer.Add( gSizer1, 0, wx.EXPAND, 5 ) + + gSizer2 = wx.BoxSizer( wx.HORIZONTAL ) + + self.st100101 = wx.StaticText( self, wx.ID_ANY, u"100 - 101", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT ) + self.st100101.Wrap( -1 ) + gSizer2.Add( self.st100101, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp100101S = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer2.Add( self.cp100101S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp100101E = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer2.Add( self.cp100101E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.gauge100101S = PFGaugePreview( self, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer2.Add( self.gauge100101S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge100101M = PFGaugePreview( self, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer2.Add( self.gauge100101M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge100101E = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer2.Add( self.gauge100101E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 ) + + mainSizer.Add( gSizer2, 0, wx.EXPAND, 5 ) + + gSizer3 = wx.BoxSizer( wx.HORIZONTAL ) + + self.st101103 = wx.StaticText( self, wx.ID_ANY, u"101 - 103", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT ) + self.st101103.Wrap( -1 ) + gSizer3.Add( self.st101103, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp101103S = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer3.Add( self.cp101103S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp101103E = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer3.Add( self.cp101103E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.gauge101103S = PFGaugePreview( self, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer3.Add( self.gauge101103S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge101103M = PFGaugePreview( self, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer3.Add( self.gauge101103M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge101103E = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer3.Add( self.gauge101103E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 ) + + mainSizer.Add( gSizer3, 0, wx.EXPAND, 5 ) + + gSizer4 = wx.BoxSizer( wx.HORIZONTAL ) + + self.st103105 = wx.StaticText( self, wx.ID_ANY, u"103 - 105", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT ) + self.st103105.Wrap( -1 ) + gSizer4.Add( self.st103105, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp103105S = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer4.Add( self.cp103105S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.cp103105E = wx.ColourPickerCtrl( self, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE ) + gSizer4.Add( self.cp103105E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.gauge103105S = PFGaugePreview( self, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer4.Add( self.gauge103105S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge103105M = PFGaugePreview( self, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer4.Add( self.gauge103105M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.gauge103105E = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER ) + gSizer4.Add( self.gauge103105E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 ) + + mainSizer.Add( gSizer4, 0, wx.EXPAND, 5 ) + + footerSizer = wx.BoxSizer( wx.VERTICAL ) + + self.sl1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) + footerSizer.Add( self.sl1, 0, wx.EXPAND |wx.ALL, 5 ) + + previewSizer = wx.BoxSizer( wx.HORIZONTAL ) + + self.wndPreview0100 = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0) + previewSizer.Add( self.wndPreview0100, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.wndPreview100101 = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0) + previewSizer.Add( self.wndPreview100101, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.wndPreview101103 = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0) + previewSizer.Add( self.wndPreview101103, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) + + self.wndPreview103105 = PFGaugePreview( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0) + previewSizer.Add( self.wndPreview103105, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) + + footerSizer.Add( previewSizer, 1, wx.EXPAND | wx.ALL, 5 ) + + buttonsSizer = wx.BoxSizer( wx.HORIZONTAL ) + + self.btnRestore = wx.Button( self, wx.ID_ANY, u"Restore Defaults", wx.DefaultPosition, wx.DefaultSize, 0 ) + buttonsSizer.Add( self.btnRestore, 0, wx.ALL, 5 ) + + self.btnDump = wx.Button( self, wx.ID_ANY, u"Dump Colors", wx.DefaultPosition, wx.DefaultSize, 0 ) + buttonsSizer.Add( self.btnDump, 0, wx.ALL, 5 ) + + self.btnOk = wx.Button( self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0 ) + buttonsSizer.Add( self.btnOk, 0, wx.ALL|wx.ALIGN_RIGHT, 5 ) + + footerSizer.Add( buttonsSizer, 1, wx.ALIGN_RIGHT, 5 ) + mainSizer.Add( footerSizer, 0, wx.EXPAND, 5 ) + + self.SetSizer( mainSizer ) + + self.SetColours() + + self.Fit() + self.Layout() + + self.btnRestore.Bind(wx.EVT_BUTTON, self.RestoreDefaults) + self.btnDump.Bind(wx.EVT_BUTTON, self.DumpColours) + self.btnOk.Bind(wx.EVT_BUTTON, self.OnOk) + + self.cp0100S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + self.cp0100E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + + self.cp100101S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + self.cp100101E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + + self.cp101103S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + self.cp101103E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + + self.cp103105S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + self.cp103105E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged ) + + + def InitDefaultColours(self): + self.c0100S = wx.Colour(153,153,153) + self.c0100E = wx.Colour(153,185,56) + + self.c100101S = wx.Colour(153,185,56) + self.c100101E = wx.Colour(163,206,53) + + self.c101103S = wx.Colour(163,206,53) + self.c101103E = wx.Colour(223,146,53) + + self.c103105S = wx.Colour(223,146,53) + self.c103105E = wx.Colour(243,86,53) + + def SetColours(self): + self.cp0100S.SetColour(self.c0100S) + self.cp0100E.SetColour(self.c0100E) + self.gauge0100S.SetColour(self.c0100S, self.c0100E) + self.gauge0100M.SetColour(self.c0100S, self.c0100E) + self.gauge0100E.SetColour(self.c0100S, self.c0100E) + + + self.cp100101S.SetColour(self.c100101S) + self.cp100101E.SetColour(self.c100101E) + self.gauge100101S.SetColour(self.c100101S, self.c100101E) + self.gauge100101M.SetColour(self.c100101S, self.c100101E) + self.gauge100101E.SetColour(self.c100101S, self.c100101E) + + + + self.cp101103S.SetColour(self.c101103S) + self.cp101103E.SetColour(self.c101103E) + self.gauge101103S.SetColour(self.c101103S, self.c101103E) + self.gauge101103M.SetColour(self.c101103S, self.c101103E) + self.gauge101103E.SetColour(self.c101103S, self.c101103E) + + + self.cp103105S.SetColour(self.c103105S) + self.cp103105E.SetColour(self.c103105E) + self.gauge103105S.SetColour(self.c103105S, self.c103105E) + self.gauge103105M.SetColour(self.c103105S, self.c103105E) + self.gauge103105E.SetColour(self.c103105S, self.c103105E) + + + self.wndPreview0100.SetColour(self.c0100S, self.c0100E) + self.wndPreview100101.SetColour(self.c100101S, self.c100101E) + self.wndPreview101103.SetColour(self.c101103S, self.c101103E) + self.wndPreview103105.SetColour(self.c103105S, self.c103105E) + + def OnOk(self, event): + self.Close() + event.Skip() + + def DumpColours(self, event): + print " 0 <-> 100 Start: ", self.c0100S, " End: ", self.c0100E + print "100 <-> 101 Start: ", self.c100101S, " End: ", self.c100101E + print "101 <-> 103 Start: ", self.c101103S, " End: ", self.c101103E + print "103 <-> 105 Start: ", self.c103105S, " End: ", self.c103105E + + event.Skip() + + def RestoreDefaults(self, event): + self.InitDefaultColours() + self.SetColours() + + event.Skip() + + def OnColourChanged(self, event): + + color = event.EventObject.GetColour() + cpObj = event.EventObject + + if cpObj == self.cp0100S: + self.c0100S = color + + if cpObj == self.cp0100E: + self.c0100E = color + + if cpObj == self.cp100101S: + self.c100101S = color + + if cpObj == self.cp100101E: + self.c100101E = color + + if cpObj == self.cp101103S: + self.c101103S = color + + if cpObj == self.cp101103E: + self.c101103E = color + + if cpObj == self.cp103105S: + self.c103105S = color + + if cpObj == self.cp103105E: + self.c103105E = color + + self.SetColours() + event.Skip() + + def __del__( self ): + pass + +if __name__ == '__main__': + app = wx.PySimpleApp() + PFGaugePref().ShowModal()