/*************************************************************************** * Copyright (C) 1997-2000 by Dimitri van Heesch * * dimitri@stack.nl * * Copyright (C) 2001 by Bernd Gehrmann * * bernd@kdevelop.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. * * * ***************************************************************************/ #ifndef _INPUT_H #define _INPUT_H #include #include class TQComboBox; class TQLabel; class KLineEdit; class TQListBox; class TQPushButton; class TQSpinBox; class IInput { public: virtual void init() = 0; virtual void setEnabled(bool) = 0; virtual TQObject *qobject() = 0; }; class InputBool : public TQWidget, public IInput { Q_OBJECT public: InputBool(const TQCString &key, const TQString &text, TQWidget *parent, bool &flag); ~InputBool(); void init(); virtual void setEnabled(bool b); virtual TQObject *qobject() { return TQT_TQOBJECT(this); } virtual bool getState() const { return state; } signals: void changed(); void toggle(const TQString &, bool); private slots: void valueChanged(bool); private: bool &state; TQCString key; TQCheckBox *cb; }; class InputInt : public TQWidget, public IInput { Q_OBJECT public: InputInt(const TQString &text, TQWidget *parent, int &val, int minVal, int maxVal); ~InputInt(); void init(); virtual void setEnabled(bool); TQObject *qobject() { return TQT_TQOBJECT(this); } signals: void changed(); private slots: void valueChanged(int val); private: TQLabel *lab; TQSpinBox *sp; int &m_val; int m_minVal; int m_maxVal; }; class InputString : public TQWidget, public IInput { Q_OBJECT public: enum StringMode { StringFree=0, StringFile=1, StringDir=2, StringFixed=3 }; InputString(const TQString &text, TQWidget *parent, TQCString &s, StringMode m=StringFree); ~InputString(); void init(); void addValue(const char *s); void setEnabled(bool); TQObject *qobject() { return TQT_TQOBJECT(this); } signals: void changed(); private slots: void textChanged(const TQString&); void browse(); void clear(); private: TQLabel *lab; KLineEdit *le; TQPushButton *br; TQComboBox *com; TQCString &str; StringMode sm; TQDict *m_values; int m_index; }; class InputStrList : public TQWidget, public IInput { Q_OBJECT public: enum ListMode { ListString=0, ListFile=1, ListDir=2, ListFileDir=ListFile|ListDir }; InputStrList(const TQString &text, TQWidget *parent, TQStrList &sl, ListMode v=ListString); ~InputStrList(); void init(); void setEnabled(bool); TQObject *qobject() { return TQT_TQOBJECT(this); } signals: void changed(); private slots: void addString(); void delString(); void updateString(); void selectText(const TQString &s); void browseFiles(); void browseDir(); private: TQLabel *lab; KLineEdit *le; TQPushButton *add; TQPushButton *del; TQPushButton *upd; TQPushButton *brFile; TQPushButton *brDir; TQListBox *lb; TQStrList &strList; }; #endif