summaryrefslogtreecommitdiffstats
path: root/src/gui/pieditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/pieditor.cpp')
-rw-r--r--src/gui/pieditor.cpp294
1 files changed, 294 insertions, 0 deletions
diff --git a/src/gui/pieditor.cpp b/src/gui/pieditor.cpp
new file mode 100644
index 0000000..b7ca0e5
--- /dev/null
+++ b/src/gui/pieditor.cpp
@@ -0,0 +1,294 @@
+/***************************************************************************
+ * Copyright (C) 2003-2004 by David Saxton *
+ * david@bluehaze.org *
+ * *
+ * This program 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; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include "colorcombo.h"
+#include "doublespinbox.h"
+#include "pieditor.h"
+#include "variant.h"
+
+#include <kcombobox.h>
+#include <klineedit.h>
+#include <klocale.h>
+#include <knuminput.h>
+#include <kurlrequester.h>
+#include <qlayout.h>
+
+//BEGIN class PIEditor
+PIEditor::PIEditor(QString id, Variant *data, QWidget *parent, const char *name)
+ : QWidget(parent, name)
+{
+ m_id = id;
+ m_data = data;
+ connect(m_data,SIGNAL(valueChanged(QVariant, QVariant )),this,SLOT(valueChanged(QVariant)));
+ setFocus();
+ update();
+ //show();
+}
+
+PIEditor::~PIEditor()
+{
+}
+
+void PIEditor::valueChanged( QVariant /*variant*/ )
+{
+}
+//END class PIEditor
+
+
+//BEGIN class PIBool
+PIBool::PIBool(QString id, Variant *data, QWidget *parent, const char *name )
+ : PIEditor( id, data, parent, name )
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ m_comboBox = new KComboBox(this);
+ m_comboBox->insertItem( i18n("True"), 0 );
+ m_comboBox->insertItem( i18n("False"), 1 );
+ m_comboBox->setCurrentItem( m_data->value().toBool() ? 0 : 1 );
+
+ connect( m_comboBox, SIGNAL(activated(int )), this, SLOT(selectChanged(int )) );
+}
+
+PIBool::~PIBool()
+{
+}
+
+void PIBool::popup()
+{
+ m_comboBox->popup();
+}
+
+void PIBool::selectChanged( int index )
+{
+ emit editorDataChanged( m_id, QVariant( index == 0 ) );
+}
+
+void PIBool::valueChanged( QVariant /*variant*/ )
+{
+ m_comboBox->setCurrentItem( m_data->value().toBool() ? 0 : 1 );
+}
+//END class PIBool
+
+
+//BEGIN class PIColor
+PIColor::PIColor(QString id, Variant *data, QWidget *parent, const char *name )
+ : PIEditor(id,data,parent, name)
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ m_combo = new ColorCombo( (ColorCombo::ColorScheme)m_data->colorScheme(), this );
+ m_combo->setColor(m_data->value().toColor());
+
+ connect(m_combo,SIGNAL(activated(const QColor&)),this,SLOT(colorChanged(const QColor&)));
+// connect(m_combo,SIGNAL(highlighted(const QColor&)),this,SLOT(colorChanged(const QColor&)));
+}
+
+PIColor::~PIColor()
+{
+}
+
+void PIColor::popup()
+{
+ m_combo->popup();
+}
+
+void PIColor::colorChanged(const QColor &col)
+{
+ emit editorDataChanged(m_id,QVariant(col));
+}
+
+void PIColor::valueChanged( QVariant /*variant*/ )
+{
+ m_combo->setColor(m_data->value().toColor());
+}
+//END class PIColor
+
+
+//BEGIN class PIDouble
+PIDouble::PIDouble(QString id, Variant *data, QWidget *parent, const char *name )
+ : PIEditor(id,data,parent, name)
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ spin = new DoubleSpinBox(m_data->minValue(),m_data->maxValue(),m_data->minAbsValue(),m_data->value().toDouble(),m_data->unit(),this);
+
+ connect(spin,SIGNAL(valueChanged(double)),this,SLOT(spinValueChanged(double)));
+}
+
+PIDouble::~PIDouble()
+{
+}
+
+void PIDouble::spinValueChanged(double value)
+{
+ emit editorDataChanged(m_id,QVariant(value));
+}
+
+void PIDouble::valueChanged( QVariant /*variant*/ )
+{
+ spin->setValue(m_data->value().toDouble());
+}
+//END class PIDouble
+
+
+//BEGIN class PIFileName
+PIFilename::PIFilename(QString id, Variant *data, QWidget *parent, const char *name )
+ : PIEditor(id,data,parent, name)
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ m_combo = 0L;
+ if( m_data->allowed().count() == 0 )
+ {
+ m_combo = new KComboBox(this);
+ m_combo->insertStringList( m_data->allowed() );
+ m_urlreq = new KURLRequester(m_combo, this);
+ }
+ else m_urlreq = new KURLRequester(this);
+
+ m_urlreq->setURL( m_data->value().toString() );
+ m_urlreq->setFilter( m_data->filter() );
+
+ connect(m_urlreq,SIGNAL(urlSelected(const QString&)),this,SLOT(slotURLChanged(const QString&)));
+ //connect(m_urlreq,SIGNAL(openFileDialog(KURLRequester*)),this,SLOT(slotOpenFileDialog(KURLRequester* )));
+}
+
+PIFilename::~PIFilename()
+{
+}
+
+void PIFilename::slotURLChanged(const QString &url)
+{
+ emit editorDataChanged(m_id,QVariant(url));
+}
+
+void PIFilename::valueChanged( QVariant /*variant*/ )
+{
+ if(m_combo) m_combo->setCurrentItem( m_data->value().toString() );
+ m_urlreq->setURL( m_data->value().toString() );
+}
+
+/* //FIXME Reintroduce this code if deciding not to go with dropping cod files
+ onto the PIC componenent ?? */
+//
+// void PIFilename::slotOpenFileDialog(KURLRequester *kurlreq)
+// {
+// // If no file has been selected so far then it seems
+// // to make most sense to open the dialog at the directory
+// // of the current project if open.
+// if(kurlreq->url() == m_data->defaultValue().toString() && !ProjectManager::self()->directory().isEmpty() ) kurlreq->setURL(ProjectManager::self()->directory());
+// }
+//END class PIFileName
+
+
+//BEGIN class PIInt
+PIInt::PIInt( const QString &id, Variant *data, QWidget *parent, const char *name )
+ : PIEditor( id, data, parent, name )
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ spin = new KIntSpinBox( (int)m_data->minValue(), (int)m_data->maxValue(), 1, m_data->value().toInt(), 10, this );
+
+ connect( spin, SIGNAL(valueChanged(int)), this, SLOT(spinValueChanged(int)));
+}
+
+PIInt::~PIInt()
+{
+}
+
+void PIInt::spinValueChanged( int value )
+{
+ emit editorDataChanged( m_id, QVariant(value) );
+}
+
+void PIInt::valueChanged( QVariant /*variant*/ )
+{
+ spin->setValue( m_data->value().toInt() );
+}
+//END class PIInt
+
+
+//BEGIN class PILineEdit
+PILineEdit::PILineEdit(QString id, Variant *data, QWidget *parent, const char *name)
+ : PIEditor( id, data, parent, name)
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+ m_edit = new KLineEdit( m_data->value().toString() , this );
+ connect(m_edit,SIGNAL(textChanged(const QString&)),this,SLOT(slotEditTextChanged()));
+}
+
+
+PILineEdit::~PILineEdit()
+{
+}
+
+void PILineEdit::slotEditTextChanged()
+{
+ emit editorDataChanged(m_id,QVariant(m_edit->text()));
+}
+
+void PILineEdit::valueChanged( QVariant /*variant*/ )
+{
+ m_edit->setText(m_data->value().toString());
+}
+//END class PILineEdit
+
+
+//BEGIN class PIStringCombo
+PIStringCombo::PIStringCombo(QString id, Variant *data, QWidget *parent, const char *name)
+ : PIEditor( id, data, parent, name)
+{
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ m_combo = new KComboBox( this );
+ m_combo->insertStringList(m_data->allowed());
+ m_combo->setCurrentItem(m_data->value().toString());
+ const Variant::Type::Value type = m_data->type();
+ m_combo->setEditable( type == Variant::Type::Combo ||
+ type == Variant::Type::FileName ||
+ type == Variant::Type::VarName );
+
+ connect(m_combo,SIGNAL(highlighted(const QString&)),this,SLOT(slotComboChanged()));
+ connect(m_combo,SIGNAL(activated(const QString&)),this,SLOT(slotComboChanged()));
+}
+
+
+PIStringCombo::~PIStringCombo()
+{
+}
+
+void PIStringCombo::popup()
+{
+ m_combo->popup();
+}
+
+void PIStringCombo::slotComboChanged()
+{
+ emit editorDataChanged(m_id,QVariant(m_combo->currentText()));
+}
+
+void PIStringCombo::valueChanged( QVariant /*variant*/ )
+{
+ m_combo->setCurrentItem(m_data->value().toString());
+}
+//END class PIStringCombo
+
+
+
+
+#include "pieditor.moc"
+