summaryrefslogtreecommitdiffstats
path: root/quanta/components/csseditor/specialsb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'quanta/components/csseditor/specialsb.cpp')
-rw-r--r--quanta/components/csseditor/specialsb.cpp127
1 files changed, 127 insertions, 0 deletions
diff --git a/quanta/components/csseditor/specialsb.cpp b/quanta/components/csseditor/specialsb.cpp
new file mode 100644
index 00000000..eb26e05f
--- /dev/null
+++ b/quanta/components/csseditor/specialsb.cpp
@@ -0,0 +1,127 @@
+/***************************************************************************
+ specialsb.cpp - description
+ -------------------
+ begin : dom ago 3 2003
+ copyright : (C) 2003 by gulmini luciano
+ email : gulmini.luciano@student.unife.it
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 "specialsb.h"
+#include "propertysetter.h"
+#include "csseditor_globals.h"
+
+#include <klineedit.h>
+
+specialSB::specialSB(QWidget *parent, const char *name, bool useLineEdit ) : miniEditor(parent,name) {
+ if (useLineEdit)
+ {
+ m_lineEdit = new KLineEdit(this);
+ m_sb = 0L;
+ connect(m_lineEdit, SIGNAL(textChanged ( const QString & )), this, SLOT(lineEditValueSlot ( const QString & )));
+ }
+ else
+ {
+ m_sb=new mySpinBox(this);
+ connect(m_sb, SIGNAL(valueChanged ( const QString & )), this, SLOT(sbValueSlot(const QString&)));
+ m_lineEdit = 0L;
+ }
+ m_cb = new QComboBox(this);
+ connect(m_cb, SIGNAL(activated ( const QString & )), this, SLOT(cbValueSlot(const QString&)));
+}
+
+specialSB::~specialSB(){
+ delete m_cb;
+ delete m_sb;
+ delete m_lineEdit;
+}
+
+void specialSB::connectToPropertySetter(propertySetter* p){
+ connect(this, SIGNAL(valueChanged(const QString&)), p,SIGNAL(valueChanged(const QString&)));
+}
+
+
+void specialSB::cbValueSlot(const QString& s){
+ if (m_sb)
+ emit valueChanged( m_sb->text() +s );
+ else
+ emit valueChanged( m_lineEdit->text() +s );
+}
+
+void specialSB::sbValueSlot(const QString& s){
+ emit valueChanged( s + m_cb->currentText());
+}
+
+void specialSB::lineEditValueSlot(const QString& s){
+ emit valueChanged( s + m_cb->currentText());
+}
+
+void specialSB::setInitialValue(const QString& s){
+
+ QRegExp pattern("\\d("+ cbValueList().join("|")+")");
+
+ if (pattern.search(s) != -1) {
+ QString temp(s.stripWhiteSpace());
+ QString cbValue = pattern.cap(1);
+
+ if (m_sb)
+ m_sb->setValue(temp.remove(cbValue).toInt());
+ else
+ m_lineEdit->setText(temp.remove(cbValue));
+ m_cb->setCurrentText(cbValue);
+ }
+ else return;
+}
+
+QStringList specialSB::cbValueList(){
+ QStringList l;
+ for(int i=0; i<m_cb->count();i++) l.append(m_cb->text(i));
+ return l;
+}
+
+frequencyEditor::frequencyEditor(QWidget *parent, const char *name ) : specialSB(parent,name) {
+ m_cb->insertItem("Hz");
+ m_cb->insertItem("kHz");
+ m_sb->setMaxValue(9999);
+}
+
+angleEditor::angleEditor(QWidget *parent, const char *name) : specialSB(parent,name){
+ m_cb->insertItem("deg");
+ m_cb->insertItem("grad");
+ m_cb->insertItem("rad");
+ m_sb->setMaxValue(-400);
+ m_sb->setMaxValue(400);
+}
+
+timeEditor::timeEditor(QWidget *parent, const char *name ) : specialSB(parent,name) {
+ m_cb->insertItem("ms");
+ m_cb->insertItem("s");
+ m_sb->setMaxValue(99999);
+}
+
+lengthEditor::lengthEditor(QWidget *parent, const char *name ) : specialSB(parent,name, true) {
+ m_cb->insertItem("px");
+ m_cb->insertItem("em");
+ m_cb->insertItem("ex");
+ m_cb->insertItem("in");
+ m_cb->insertItem("cm");
+ m_cb->insertItem("mm");
+ m_cb->insertItem("pt");
+ m_cb->insertItem("pc");
+ if (m_sb)
+ m_sb->setMaxValue(99999);
+}
+
+
+
+
+
+#include "specialsb.moc"