00001
00002
00003 #include "Iguana/GLBrowsers/interface/Ig3DStringControl.h"
00004 #include "Iguana/Studio/interface/IgQtLineEdit.h"
00005 #include "Iguana/GLBrowsers/interface/IgControlCategory.h"
00006 #include <classlib/utils/DebugAids.h>
00007 #include <qlineedit.h>
00008 #include <qlabel.h>
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 Ig3DStringControl::Ig3DStringControl (IgControlCategory *pane, QString label)
00021 : Ig3DFieldControl (pane)
00022 {
00023 ASSERT (pane);
00024 ASSERT (pane->bodyArea ());
00025 ASSERT (pane->bodyLayout ());
00026
00027 QWidget *area = pane->bodyArea ();
00028 int row = gridRows ();
00029
00030 ASSERT (row >= 0);
00031
00032
00033 QWidget *vlab = makeIndentedLabel (label, area);
00034 addGridWidget (vlab, row, 0);
00035
00036
00037 m_value = new IgQtLineEdit (area);
00038 addGridWidget (makeSpacedBox (area, m_value), row, 1);
00039
00040 connect (m_value, SIGNAL (valueChanged (const QString&)),
00041 this, SLOT (textChanged (const QString&)));
00042 connect (this, SIGNAL (editable (bool)),
00043 m_value, SLOT (setEnabled (bool)));
00044 connect (this, SIGNAL (editable (bool)),
00045 vlab, SLOT (setEnabled (bool)));
00046 }
00047
00049 SoSFString *
00050 Ig3DStringControl::field (void) const
00051 { return static_cast<SoSFString *> (Ig3DFieldControl::field ()); }
00052
00053 void
00054 Ig3DStringControl::setField (SoSFString *field)
00055 { Ig3DFieldControl::setField (field); }
00056
00057 SbString
00058 Ig3DStringControl::fieldValue (void) const
00059 { ASSERT (field ()); return field ()->getValue (); }
00060
00061 IgQtLineEdit*
00062 Ig3DStringControl::widget (void) const
00063 { return m_value; }
00064
00066 SbString
00067 Ig3DStringControl::value (void) const
00068 { return SbString (m_value->text ().latin1 ()); }
00069
00070 void
00071 Ig3DStringControl::setValue (const SbString& newval)
00072 { m_value->setText (newval.getString ()); setDirty (); }
00073
00074 void
00075 Ig3DStringControl::textChanged (const QString& )
00076 { setDirty (); }
00077
00078 void
00079 Ig3DStringControl::updateValue (void)
00080 { setValue (fieldValue ()); }
00081
00082 void
00083 Ig3DStringControl::applyValue (void)
00084 { field ()->setValue (value ()); }