text: #  ============================================================================
  #
  #  Copyright (C) 2007-2016 Conceptive Engineering bvba.
  #  www.conceptive.be / info@conceptive.be
  #
  #  Redistribution and use in source and binary forms, with or without
  #  modification, are permitted provided that the following conditions are met:
  #      * Redistributions of source code must retain the above copyright
  #        notice, this list of conditions and the following disclaimer.
  #      * Redistributions in binary form must reproduce the above copyright
  #        notice, this list of conditions and the following disclaimer in the
  #        documentation and/or other materials provided with the distribution.
  #      * Neither the name of Conceptive Engineering nor the
  #        names of its contributors may be used to endorse or promote products
  #        derived from this software without specific prior written permission.
  #  
  #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  #  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  #  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  #  DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  #  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  #  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  #  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  #  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  #  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  #  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  #
  #  ============================================================================
  import datetime
  
  import six
  
  from ....core.qt import variant_to_py, Qt, QtCore
  from .customdelegate import CustomDelegate, DocumentationMetaclass
  from camelot.view.controls import editors
  from camelot.core.utils import create_constant_function
  from camelot.view.proxy import ValueLoading
  
  @six.add_metaclass(DocumentationMetaclass)
  class TimeDelegate(CustomDelegate):
     
      editor = editors.TimeEditor
        
      def __init__(self, parent=None, editable=True, **kwargs):
          CustomDelegate.__init__(self, parent, editable)
          locale = QtCore.QLocale()
          self.time_format = locale.timeFormat(locale.ShortFormat)
          
      def paint(self, painter, option, index):
          painter.save()
          self.drawBackground(painter, option, index)
          value = variant_to_py( index.model().data( index, Qt.EditRole ) )
          
          value_str = u''
          if value not in (None, ValueLoading):
              time = QtCore.QTime(value.hour, value.minute, value.second)
              value_str = time.toString(self.time_format)
  
          self.paint_text(painter, option, index, value_str)
          painter.restore()
        
      def setModelData(self, editor, model, index):
          value = editor.time()
          t = datetime.time(hour=value.hour(),
                            minute=value.minute(),
                            second=value.second())
          model.setData(index, create_constant_function(t))
  
  
  
  
  
  