summaryrefslogtreecommitdiffstats
path: root/addon/doxywizard/inputstring.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'addon/doxywizard/inputstring.cpp')
-rw-r--r--addon/doxywizard/inputstring.cpp184
1 files changed, 184 insertions, 0 deletions
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
new file mode 100644
index 0000000..2895a18
--- /dev/null
+++ b/addon/doxywizard/inputstring.cpp
@@ -0,0 +1,184 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 2000 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ */
+
+#include "inputstring.h"
+#include "pagewidget.h"
+#include "pixmaps.h"
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qwindowsstyle.h>
+#include <qcstring.h>
+#include <qpushbutton.h>
+#include <qfiledialog.h>
+#include <qcombobox.h>
+#include <qtooltip.h>
+
+
+InputString::InputString( const QString & label,
+ PageWidget *parent, QCString &s, StringMode m )
+ : QWidget( parent->getLayout() ), str(s), sm(m), m_values(0), m_index(0)
+{
+ if (m==StringFixed)
+ {
+ QHBoxLayout *layout = new QHBoxLayout( this, 5);
+ lab = new QLabel( label, this );
+ lab->setMinimumSize( lab->sizeHint() );
+ layout->addWidget( lab );
+ com = new QComboBox( this );
+ layout->addWidget( com );
+ layout->addStretch( 1 );
+ le=0;
+ br=0;
+ layout->activate();
+ setMinimumSize( sizeHint() );
+ }
+ else
+ {
+ QGridLayout *layout = new QGridLayout( this, 1, m==StringFree ? 1 : 3, 5 );
+ lab = new QLabel( label, this );
+ lab->setMinimumSize( lab->sizeHint() );
+ layout->addWidget( lab,0,0 );
+ le = new QLineEdit( this );
+ le->setMinimumSize( le->sizeHint() );
+ le->setText( s );
+ layout->addWidget( le,0,1 );
+ if (m==StringFile || m==StringDir)
+ {
+ QPixmap pixmap = QPixmap(m==StringFile ?
+ file_xpm :
+ folder_xpm );
+ br = new QPushButton( this );
+ br->setPixmap(pixmap);
+ br->setMinimumSize( br->sizeHint() );
+ if (m==StringFile)
+ QToolTip::add(br,"Browse to a file");
+ else
+ QToolTip::add(br,"Browse to a folder");
+ layout->addWidget( br,0,2 );
+ }
+ else
+ {
+ br=0;
+ }
+ com=0;
+ layout->activate();
+ setMinimumSize( sizeHint() );
+ }
+
+ if (le) connect( le, SIGNAL(textChanged(const QString&)),
+ this, SLOT(textChanged(const QString&)) );
+ if (br) connect( br, SIGNAL(clicked()), this, SLOT(browse()) );
+ if (com) connect( com, SIGNAL(activated(const QString &)),
+ this, SLOT(textChanged(const QString &)) );
+
+ parent->addWidget(this);
+}
+
+InputString::~InputString()
+{
+ if (m_values) delete m_values;
+}
+
+
+void InputString::textChanged(const QString &s)
+{
+ if (str!=(const char *)s)
+ {
+ str = s;
+ emit changed();
+ }
+}
+
+void InputString::setEnabled(bool state)
+{
+ lab->setEnabled(state);
+ if (le) le->setEnabled(state);
+ if (br) br->setEnabled(state);
+ if (com) com->setEnabled(state);
+}
+
+void InputString::browse()
+{
+ if (sm==StringFile)
+ {
+ QString fileName = QFileDialog::getOpenFileName();
+
+ if (!fileName.isNull())
+ {
+ le->setText( fileName );
+ if (str!=(const char *)le->text())
+ {
+ str = le->text();
+ emit changed();
+ }
+ }
+ }
+ else // sm==StringDir
+ {
+ QString dirName = QFileDialog::getExistingDirectory();
+
+ if (!dirName.isNull())
+ {
+ le->setText( dirName );
+ if (str!=(const char *)le->text())
+ {
+ str = le->text();
+ emit changed();
+ }
+ }
+ }
+}
+
+void InputString::clear()
+{
+ le->setText("");
+ if (!str.isEmpty())
+ {
+ emit changed();
+ str = "";
+ }
+}
+
+void InputString::addValue(const char *s)
+{
+ if (sm==StringFixed)
+ {
+ if (m_values==0) m_values = new QDict<int>;
+ m_values->setAutoDelete(TRUE);
+ m_values->insert(s,new int(m_index++));
+ com->insertItem(s);
+ }
+}
+
+void InputString::init()
+{
+ if (sm==StringFixed)
+ {
+ int *itemIndex = m_values->find(str);
+ if (itemIndex)
+ {
+ com->setCurrentItem(*itemIndex);
+ }
+ else
+ {
+ com->setCurrentItem(0);
+ }
+ }
+ else
+ {
+ le->setText(str);
+ }
+}