/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * widget.h * * Tue Jul 17 12:15:59 CEST 2007 * Copyright 2007 Bent Bisballe Nyeng and Lars Bisballe Jensen * deva@aasimon.org and elsenator@gmail.com ****************************************************************************/ /* * This file is part of Pracro. * * Pracro 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. * * Pracro 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Pracro; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef __PRACRO_WIDGET_H__ #define __PRACRO_WIDGET_H__ #include #include #include #include #include #include "lua.h" class QLayout; class MacroWindow; class LUA; class Widget; class Widget : public QObject { Q_OBJECT public: Widget(QDomNode &node, MacroWindow *macrowindow); virtual ~Widget(); QString name(); QString type(); bool local(); virtual QString value() = 0; virtual void setValue(QString value, QString source) = 0; bool valid(); void setValid(bool valid); // Implement in subclasses to contribute to the validation. virtual bool preValid() { return true; } // Implement in subclasses to change widget according to validation status. virtual void setWdgValid(bool valid) = 0; virtual void setEnabled(bool enabled); virtual bool enabled(); virtual void setVisible(bool visible); virtual bool visible(); virtual bool setKeyboardFocus(); void setInitialValue(QString value); bool hasInitialValue(); virtual void reset(); QWidget *qwidget() { return widget; } // Set deep to true to find widgets inside altcombobox, multilist and // metawidgets. Widget *findWidget(QString name, bool deep = false); QVector< Widget* > widgetList(bool deep = false); void addChild(Widget *widget); void setValues(); signals: void wasChanged(); public slots: void childWasChanged(); protected: /* * LUA scripting events: */ void eventOnChange(); QWidget *widget; bool hideChildren; void addChildren(QDomNode &xml_node, QLayout *layout); private: QVector< Widget* > children; void createWidget(QDomNode &xml_node, QLayout *layout); // Store value in constructor to be set later. bool has_lazy; QString lazy_value; QString lazy_source; bool is_valid; QString widget_name; QString widget_type; bool widget_local; LUA *lua; MacroWindow *macrowindow; bool hasOnChangeEvent; QString onChangeEventScript; QString initial_value; QString initial_source; bool has_initial_value; QString prefilled; }; #endif/*__PRACRO_WIDGET_H__*/