Index: QPropertyEditor/FontEditor.cpp
===================================================================
--- QPropertyEditor/FontEditor.cpp	(revision 0)
+++ QPropertyEditor/FontEditor.cpp	(revision 3)
@@ -0,0 +1,40 @@
+// --------------------------------------
+// Copyright (C) 2007 Petr Vanek <petr@scribus.info>
+//
+//
+// The QPropertyEditor Library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation version 3 of the License 
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+// *************************************************************************************************
+
+#include <QFontDialog>
+
+#include "FontEditor.h"
+
+
+FontEditor::FontEditor( QWidget * parent)
+    : QPushButton(tr("Edit..."), parent),
+     m_font(QFont())
+{
+    connect(this, SIGNAL(clicked()),
+            this, SLOT(openFontDialog()));
+}
+
+void FontEditor::setFont(const QFont & f)
+{
+    m_font = f;
+//     setText(f.rawName());
+}
+
+void FontEditor::openFontDialog()
+{
+    bool ok;
+    QFont f = QFontDialog::getFont(&ok, m_font, this);
+    if (!ok)
+        return;
+    setFont(f);
+}
Index: QPropertyEditor/QVariantDelegate.cpp
===================================================================
--- QPropertyEditor/QVariantDelegate.cpp	(revision 2)
+++ QPropertyEditor/QVariantDelegate.cpp	(revision 3)
@@ -52,6 +52,7 @@
 	case QMetaType::Float:	
 	case QVariant::Double:	
 	case QVariant::UserType:			
+    case QVariant::Font:
 		editor = p->createEditor(parent, option);
 		if (editor)	
 		{
@@ -81,6 +82,7 @@
 	case QMetaType::Float:
 	case QVariant::UserType:
 	case QVariant::Int:
+    case QVariant::Font:
 		if (static_cast<Property*>(index.internalPointer())->setEditorData(editor, data)) // if editor couldn't be recognized use default
 			break; 
 	default:
@@ -100,6 +102,7 @@
 	case QMetaType::Float:				
 	case QVariant::UserType: 
 	case QVariant::Int:
+    case QVariant::Font:
 		{
 			QVariant data = static_cast<Property*>(index.internalPointer())->editorData(editor);
 			if (data.isValid())
Index: QPropertyEditor/FontEditor.h
===================================================================
--- QPropertyEditor/FontEditor.h	(revision 0)
+++ QPropertyEditor/FontEditor.h	(revision 3)
@@ -0,0 +1,35 @@
+// --------------------------------------
+// Copyright (C) 2007 Petr Vanek <petr@scribus.info>
+//
+//
+// The QPropertyEditor Library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation version 3 of the License 
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+// *************************************************************************************************
+#ifndef FONTEDITOR_H
+#define FONTEDITOR_H
+//
+#include <QPushButton>
+//
+class FontEditor : public QPushButton
+{
+    Q_OBJECT
+
+    public:
+        FontEditor(QWidget * parent = 0);
+
+        void setFont(const QFont & f);
+        QFont font() { return m_font; };
+
+    private slots:
+        void openFontDialog();
+
+    private:
+        QFont m_font;
+};
+
+#endif
Index: QPropertyEditor/Property.cpp
===================================================================
--- QPropertyEditor/Property.cpp	(revision 2)
+++ QPropertyEditor/Property.cpp	(revision 3)
@@ -23,6 +23,7 @@
 #include <limits.h>
 #include "Property.h"
 #include "ColorCombo.h"
+#include "FontEditor.h"
 
 #include <QtCore/QMetaProperty>
 #include <QtGui/QSpinBox>
@@ -65,6 +66,9 @@
 	case QVariant::Color:
 		editor = new ColorCombo(parent);
 		break;
+	case QVariant::Font:
+		editor = new FontEditor(parent);
+        break;
 	case QVariant::Int:
 		editor = new QSpinBox(parent);
 		editor->setProperty("minimum", -INT_MAX);
@@ -90,7 +94,10 @@
 	{
 	case QVariant::Color:
 		static_cast<ColorCombo*>(editor)->setColor(data.value<QColor>());
-		return true;;
+		return true;
+	case QVariant::Font:
+		static_cast<FontEditor*>(editor)->setFont(data.value<QFont>());
+		return true;
 	case QVariant::Int:
 		editor->blockSignals(true);
 		static_cast<QSpinBox*>(editor)->setValue(data.toInt());
@@ -114,6 +121,8 @@
 	{
 	case QVariant::Color:
 		return QVariant::fromValue(static_cast<ColorCombo*>(editor)->color());
+	case QVariant::Font:
+		return QVariant::fromValue(static_cast<FontEditor*>(editor)->font());
 	case QVariant::Int:
 		return QVariant(static_cast<QSpinBox*>(editor)->value());
 	case QMetaType::Float:	
Index: QPropertyEditor/QPropertyEditor.pro
===================================================================
--- QPropertyEditor/QPropertyEditor.pro	(revision 2)
+++ QPropertyEditor/QPropertyEditor.pro	(revision 3)
@@ -5,13 +5,15 @@
 		  QPropertyEditorWidget.cpp \
 		  QPropertyModel.cpp \
 		  QVariantDelegate.cpp \
-		  EnumProperty.cpp
+		  EnumProperty.cpp \
+                  FontEditor.cpp
 
 HEADERS=ColorCombo.h \
 	    Property.h \
         QPropertyEditorWidget.h \
         QPropertyModel.h \
         QVariantDelegate.h \
-        EnumProperty.h
+        EnumProperty.h \
+        FontEditor.h
 
 DESTDIR = ../lib

