/*
 * Xailer source code:
 *
 * FontComboBox.prg
 * Clase TFontComboBox()
 *
 * Copyright 2003, 2007 Pedro Gil
 * Copyright 2003, 2007 Xailer.com
 * All rights reserved
 *
 */

#include "Xailer.ch"


//--------------------------------------------------------------------------

CLASS XFontComboBox FROM TComboBox

PUBLISHED:
   PROPERTY nFontType   INIT ftALL VALUES ftDEVICE, ftRASTER, ftTRUETYPE, ftDEVICERASTER, ;
                                          ftDEVICETRUETYPE, ftRASTERTRUETYPE, ftALL
   PROPERTY nCharSet    INIT csDEFAULT VALUES csANSI, csDEFAULT, csSYMBOL, ;
                                              csSHIFTJIS, csGB2312, csHANGEUL, ;
                                              csCHINESEBIG5, csOEM
   PROPERTY nFontHeight INIT 17  EDITOR PE_Scale
   PROPERTY lComboFont  INIT .T.
   PROPERTY lEditBmp    INIT .F.
   PROPERTY lFixedPitch INIT .F.
   PROPERTY cSampleText INIT "AbCdEfGhIj"

PROTECTED:
   DATA nCtlStyle       INIT nOr( WS_CHILD, WS_CLIPSIBLINGS, ;
                                  WS_BORDER, WS_VSCROLL, CBS_HASSTRINGS, ;
                                  CBS_DROPDOWNLIST, CBS_OWNERDRAWFIXED )

   DATA aFonts

PUBLIC:
   PROPERTY nStyle      INIT csDROPDOWNLIST
   PROPERTY aItems
   PROPERTY cText
   PROPERTY lSort
   PROPERTY lAutoHScroll
   PROPERTY nMaxLength
   PROPERTY nClrPane
   PROPERTY nClrText
   PROPERTY oBrush

   METHOD Create( oParent ) CONSTRUCTOR
   METHOD Scale( nScale )

RESERVED:
   METHOD GetFontNames()
   METHOD DrawItem( lpDIS )
   METHOD MeasureItem( lpMIS )

ENDCLASS

//--------------------------------------------------------------------------

METHOD Create( oParent ) CLASS XFontComboBox

   ::Super:Create( oParent )
   ::GetFontNames()

   ASort( ::aFonts,,, { |x,y| x[ 1 ] < y[ 1 ] } )

RETURN Self

//--------------------------------------------------------------------------

METHOD Scale( nScale ) CLASS XFontComboBox

   DEFAULT nScale TO Application:nScale

   IF nScale != 100
      ::Super:Scale( nScale )
      ::nFontHeight := MulDiv( ::nFontHeight, nScale, 100 )
   ENDIF

RETURN Nil

//----------------------------------------------------------------------------
