#2014-09-05 added setcolor
#hint: use configure(entry_anchor='e') to display numbers to the right

from PmwContribD.DisplayField import DisplayField as me

import Pmw

def colorPositiveAmountsToRed(v):
    if float(v) > 0:
        return 'red'
        #return ('entry_fg','red')
    else:
        return 'black'
    
class DisplayField(me):
    def __init__(self, parent, **kw):
        optiondefs = (
            ('setcolor', None, None), #Pmw.INITOPT), #removed 20200325 so it can be configured later too
        )
        self.defineoptions(kw, optiondefs)
        me.__init__(self, parent, **kw)
        self.initialiseoptions()
        
    def setvalue(self, value ):
        w =self.component('entry')
        w.configure(text=value, fg='black')
        if self['setcolor'] and callable(self['setcolor']):
            w.configure( fg = self['setcolor'](value) )
        
    def getvalue(self ):
        #2013-02-18
        return self.component('entry').cget('text')




class ModDisplayField(me):
    "display changed values in blue"
    def setvalue(self, value ):
        
        w =self.component('entry')
        old_value = w.cget('text')
        w.configure(text=value, fg='black')
        if old_value <> value:
            w.configure( fg = 'blue' )
        else:
            w.configure(fg='black')
        
    def getvalue(self ):
        #2013-02-18
        return self.component('entry').cget('text')