You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/lib/widgets/flagboxes.h

284 lines
7.1 KiB

/* This file is part of the KDE project
Copyright (C) 2000-2001 Bernd Gehrmann <bernd@kdevelop.org>
Copyright (C) 2003 Alexander Dymo <cloudtemple@mksat.net>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef _FLAGBOXES_H_
#define _FLAGBOXES_H_
#include <kfile.h>
/**
@file flagboxes.h
Support classes for compiler plugins.
*/
#include <qlistview.h>
#include <qcheckbox.h>
#include <qradiobutton.h>
#include <qptrlist.h>
#include <qstringlist.h>
class QSpinBox;
class FlagListBox;
class FlagListToolTip;
class FlagCheckBoxController;
class FlagRadioButtonController;
class FlagPathEditController;
class FlagEditController;
class KLineEdit;
class QPushButton;
class KURLRequester;
/**List item holding a compiler flag.*/
class FlagListItem : public QCheckListItem
{
public:
FlagListItem(FlagListBox *parent, const QString &flagstr,
const QString &description);
FlagListItem(FlagListBox *parent, const QString &flagstr,
const QString &description, const QString &offstr);
~FlagListItem()
{}
private:
QString flag;
QString off;
QString desc;
friend class FlagListToolTip;
friend class FlagListBox;
};
/**List box item holding a compiler flag.*/
class FlagListBox : public QListView
{
Q_OBJECT
public:
FlagListBox( QWidget *parent=0, const char *name=0 );
~FlagListBox()
{}
void readFlags(QStringList *list);
void writeFlags(QStringList *list);
};
/**Check box item holding a compiler flag.*/
class FlagCheckBox : public QCheckBox
{
Q_OBJECT
public:
FlagCheckBox(QWidget *parent, FlagCheckBoxController *controller,
const QString &flagstr, const QString &description);
FlagCheckBox(QWidget *parent, FlagCheckBoxController *controller,
const QString &flagstr, const QString &description,
const QString &offstr);
FlagCheckBox(QWidget *parent, FlagCheckBoxController *controller,
const QString &flagstr, const QString &description,
const QString &offstr, const QString &defstr);
~FlagCheckBox()
{}
private:
QString flag;
QString off;
QString def;
bool includeOff;
bool useDef;
bool defSet;
friend class FlagCheckBoxController;
};
/**Radiobutton item holding an option of a compiler flag.*/
class FlagRadioButton : public QRadioButton
{
Q_OBJECT
public:
FlagRadioButton(QWidget *parent, FlagRadioButtonController *controller,
const QString &flagstr, const QString &description);
~FlagRadioButton()
{}
private:
QString flag;
friend class FlagRadioButtonController;
};
/**Path editor if path is a compiler flag.*/
class FlagPathEdit: public QWidget
{
Q_OBJECT
public:
/**If the pathDelimiter is not empty then path edit can contain a list of paths*/
FlagPathEdit(QWidget *parent, QString pathDelimiter, FlagPathEditController *controller,
const QString &flagstr, const QString &description, KFile::Mode mode = KFile::Directory);
~FlagPathEdit() {}
void setText(const QString text);
bool isEmpty();
QString text();
private slots:
void showPathDetails();
private:
KLineEdit *edit;
QPushButton *details;
KURLRequester *url;
QString delimiter;
QString flag;
QString m_description;
friend class FlagPathEditController;
};
/**List editor if list is a compiler flag.*/
class FlagListEdit: public QWidget
{
Q_OBJECT
public:
/**If the listDelimiter is not empty then list edit can contain a list of entries*/
FlagListEdit(QWidget *parent, QString listDelimiter, FlagEditController *controller,
const QString &flagstr, const QString &description);
~FlagListEdit() {}
void setText(const QString text);
void appendText(const QString text);
bool isEmpty();
QString text();
QStringList flags();
private slots:
void showListDetails();
private:
KLineEdit *edit;
QPushButton *details;
QString delimiter;
QString flag;
QString m_description;
friend class FlagEditController;
};
/**Spin editor of a compiler flag.*/
class FlagSpinEdit: public QWidget
{
public:
FlagSpinEdit(QWidget *parent, int minVal, int maxVal, int incr, int defaultVal, FlagEditController *controller,
const QString &flagstr, const QString &description);
~FlagSpinEdit() {}
void setText(const QString text);
QString text();
bool isDefault();
QString flags();
private:
int m_defaultVal;
QString flag;
QSpinBox *spb;
friend class FlagEditController;
};
/**Controller for path editors.*/
class FlagPathEditController
{
public:
FlagPathEditController();
~FlagPathEditController();
void readFlags(QStringList *list);
void writeFlags(QStringList *list);
private:
void addPathEdit(FlagPathEdit *item);
QPtrList<FlagPathEdit> plist;
friend class FlagPathEdit;
};
/**Controller for flag editors.*/
class FlagEditController
{
public:
FlagEditController();
~FlagEditController();
void readFlags(QStringList *list);
void writeFlags(QStringList *list);
private:
void addListEdit(FlagListEdit *item);
void addSpinBox(FlagSpinEdit *item);
QPtrList<FlagListEdit> plist;
QPtrList<FlagSpinEdit> slist;
friend class FlagListEdit;
friend class FlagSpinEdit;
};
/**Controller for check box editors.*/
class FlagCheckBoxController
{
public:
/**"multi key" is a list of options like -vxyz (-vx -vy -vz)
multiKeys must contain a list of option names like {-v}
in the above example.
*/
FlagCheckBoxController(QStringList multiKeys = QStringList());
~FlagCheckBoxController()
{}
void readFlags(QStringList *list);
void writeFlags(QStringList *list);
void addCheckBox(FlagCheckBox *item);
private:
QPtrList<FlagCheckBox> cblist;
QStringList m_multiKeys;
};
/**Controller for radiobutton editors.*/
class FlagRadioButtonController
{
public:
/**multiKeys is a list of options like -vxyz (-vx -vy -vz)
multiKeys must contain a list of option names like {-v}
in the above example.
*/
FlagRadioButtonController(QStringList multiKeys = QStringList());
~FlagRadioButtonController()
{}
void readFlags(QStringList *list);
void writeFlags(QStringList *list);
void addRadioButton(FlagRadioButton *item);
private:
QPtrList<FlagRadioButton> cblist;
QStringList m_multiKeys;
};
#endif