From 0febf6ea9cbd1a6e04e41339fc46d2e6b07da5e7 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 3 Jun 2008 14:45:48 +0000 Subject: LUA rocks --- client/widgets/checkbox.cc | 4 ++-- client/widgets/checkbox.h | 2 +- client/widgets/combobox.cc | 4 ++-- client/widgets/combobox.h | 2 +- client/widgets/frame.cc | 4 ++-- client/widgets/frame.h | 2 +- client/widgets/groupbox.cc | 4 ++-- client/widgets/groupbox.h | 2 +- client/widgets/label.cc | 4 ++-- client/widgets/label.h | 2 +- client/widgets/lineedit.cc | 9 +++++++-- client/widgets/lineedit.h | 3 ++- client/widgets/listbox.cc | 4 ++-- client/widgets/listbox.h | 2 +- client/widgets/pushbutton.cc | 4 ++-- client/widgets/pushbutton.h | 2 +- client/widgets/radiobuttons.cc | 4 ++-- client/widgets/radiobuttons.h | 2 +- client/widgets/textedit.cc | 4 ++-- client/widgets/textedit.h | 2 +- client/widgets/widget.cc | 30 +++++++++++++----------------- client/widgets/widget.h | 10 +++++++--- client/widgets/window.cc | 4 ++-- client/widgets/window.h | 2 +- 24 files changed, 59 insertions(+), 53 deletions(-) (limited to 'client/widgets') diff --git a/client/widgets/checkbox.cc b/client/widgets/checkbox.cc index 2ce3802..6b6f0e8 100644 --- a/client/widgets/checkbox.cc +++ b/client/widgets/checkbox.cc @@ -26,8 +26,8 @@ */ #include "checkbox.h" -CheckBox::CheckBox(QDomNode &node) - : QCheckBox(), Widget(node) +CheckBox::CheckBox(QDomNode &node, MacroWindow *macrowindow) + : QCheckBox(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/checkbox.h b/client/widgets/checkbox.h index 228723e..e24792c 100644 --- a/client/widgets/checkbox.h +++ b/client/widgets/checkbox.h @@ -34,7 +34,7 @@ class CheckBox : public QCheckBox, public Widget { public: - CheckBox(QDomNode &node); + CheckBox(QDomNode &node, MacroWindow *macrowindow); bool isValid(); diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index 480cada..aa2d78b 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -27,8 +27,8 @@ #include "combobox.h" #include -ComboBox::ComboBox(QDomNode &node) - : QComboBox(), Widget(node) +ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) + : QComboBox(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/combobox.h b/client/widgets/combobox.h index ab92e64..a79b2aa 100644 --- a/client/widgets/combobox.h +++ b/client/widgets/combobox.h @@ -34,7 +34,7 @@ class ComboBox : public QComboBox, public Widget { public: - ComboBox(QDomNode &node); + ComboBox(QDomNode &node, MacroWindow *macrowindow); public slots: bool isValid(); diff --git a/client/widgets/frame.cc b/client/widgets/frame.cc index e2227cc..2560994 100644 --- a/client/widgets/frame.cc +++ b/client/widgets/frame.cc @@ -28,8 +28,8 @@ #include #include -Frame::Frame(QDomNode &node) - : QFrame(), Widget(node) +Frame::Frame(QDomNode &node, MacroWindow *macrowindow) + : QFrame(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/frame.h b/client/widgets/frame.h index 80aeded..1daf3d4 100644 --- a/client/widgets/frame.h +++ b/client/widgets/frame.h @@ -34,7 +34,7 @@ class Frame : public QFrame, public Widget { public: - Frame(QDomNode &node); + Frame(QDomNode &node, MacroWindow *macrowindow); public slots: QString getValue(); diff --git a/client/widgets/groupbox.cc b/client/widgets/groupbox.cc index dba97cd..8461a1b 100644 --- a/client/widgets/groupbox.cc +++ b/client/widgets/groupbox.cc @@ -28,8 +28,8 @@ #include #include -GroupBox::GroupBox(QDomNode &node) - : QGroupBox(), Widget(node) +GroupBox::GroupBox(QDomNode &node, MacroWindow *macrowindow) + : QGroupBox(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/groupbox.h b/client/widgets/groupbox.h index 0cc1890..567fa3f 100644 --- a/client/widgets/groupbox.h +++ b/client/widgets/groupbox.h @@ -34,7 +34,7 @@ class GroupBox : public QGroupBox, public Widget { public: - GroupBox(QDomNode &node); + GroupBox(QDomNode &node, MacroWindow *macrowindow); public slots: QString getValue(); diff --git a/client/widgets/label.cc b/client/widgets/label.cc index 95d53ac..c495c12 100644 --- a/client/widgets/label.cc +++ b/client/widgets/label.cc @@ -27,8 +27,8 @@ #include "label.h" #include -Label::Label(QDomNode &node) - : QLabel(), Widget(node) +Label::Label(QDomNode &node, MacroWindow *macrowindow) + : QLabel(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/label.h b/client/widgets/label.h index 9c539e7..c1ede43 100644 --- a/client/widgets/label.h +++ b/client/widgets/label.h @@ -36,7 +36,7 @@ class Label : public QLabel, public Widget { Q_OBJECT public: - Label(QDomNode &node); + Label(QDomNode &node, MacroWindow *macrowindow); public slots: QString getValue(); diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc index a6f2e83..7f270e9 100644 --- a/client/widgets/lineedit.cc +++ b/client/widgets/lineedit.cc @@ -27,8 +27,8 @@ #include "lineedit.h" #include -LineEdit::LineEdit(QDomNode &node) - : QLineEdit(), Widget(node) +LineEdit::LineEdit(QDomNode &node, MacroWindow *macrowindow) + : QLineEdit(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); @@ -75,3 +75,8 @@ QString LineEdit::getValue() { return text(); } + +void LineEdit::setValue(QString value) +{ + setText(value); +} diff --git a/client/widgets/lineedit.h b/client/widgets/lineedit.h index faea440..41296a9 100644 --- a/client/widgets/lineedit.h +++ b/client/widgets/lineedit.h @@ -36,11 +36,12 @@ class LineEdit : public QLineEdit, public Widget { Q_OBJECT public: - LineEdit(QDomNode &node); + LineEdit(QDomNode &node, MacroWindow *macrowindow); public slots: void changed(); QString getValue(); + void setValue(QString value); private: bool valid; diff --git a/client/widgets/listbox.cc b/client/widgets/listbox.cc index c7151cc..3021bd9 100644 --- a/client/widgets/listbox.cc +++ b/client/widgets/listbox.cc @@ -27,8 +27,8 @@ #include "listbox.h" #include -ListBox::ListBox(QDomNode &node) - : QListWidget(), Widget(node) +ListBox::ListBox(QDomNode &node, MacroWindow *macrowindow) + : QListWidget(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/listbox.h b/client/widgets/listbox.h index e41838b..b283bcc 100644 --- a/client/widgets/listbox.h +++ b/client/widgets/listbox.h @@ -34,7 +34,7 @@ class ListBox : public QListWidget, public Widget { public: - ListBox(QDomNode &node); + ListBox(QDomNode &node, MacroWindow *macrowindow); public slots: bool isValid(); diff --git a/client/widgets/pushbutton.cc b/client/widgets/pushbutton.cc index d674162..a0540f3 100644 --- a/client/widgets/pushbutton.cc +++ b/client/widgets/pushbutton.cc @@ -27,8 +27,8 @@ #include "pushbutton.h" #include -PushButton::PushButton(QDomNode &node) - : QPushButton(), Widget(node) +PushButton::PushButton(QDomNode &node, MacroWindow *macrowindow) + : QPushButton(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/pushbutton.h b/client/widgets/pushbutton.h index 42e3156..fe75fbf 100644 --- a/client/widgets/pushbutton.h +++ b/client/widgets/pushbutton.h @@ -36,7 +36,7 @@ class PushButton : public QPushButton, public Widget { Q_OBJECT public: - PushButton(QDomNode &node); + PushButton(QDomNode &node, MacroWindow *macrowindow); QString field; public slots: diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc index 8c87a0c..7508974 100644 --- a/client/widgets/radiobuttons.cc +++ b/client/widgets/radiobuttons.cc @@ -30,8 +30,8 @@ #include #include -RadioButtons::RadioButtons(QDomNode &node) - : QFrame(), Widget(node) +RadioButtons::RadioButtons(QDomNode &node, MacroWindow *macrowindow) + : QFrame(), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/radiobuttons.h b/client/widgets/radiobuttons.h index 454d159..67c1cd0 100644 --- a/client/widgets/radiobuttons.h +++ b/client/widgets/radiobuttons.h @@ -37,7 +37,7 @@ class RadioButtons : public QFrame, public Widget { public: - RadioButtons(QDomNode &node); + RadioButtons(QDomNode &node, MacroWindow *macrowindow); public slots: bool isValid(); diff --git a/client/widgets/textedit.cc b/client/widgets/textedit.cc index e217cc6..a284967 100644 --- a/client/widgets/textedit.cc +++ b/client/widgets/textedit.cc @@ -28,8 +28,8 @@ #include #include -TextEdit::TextEdit(QDomNode &node) - : QTextEdit(), Widget(node) +TextEdit::TextEdit(QDomNode &node, MacroWindow *macrowindow) + : QTextEdit(), Widget(node, macrowindow) { //setAutoFillBackground(true); /* Default is false, which disables background // color manipulation.*/ diff --git a/client/widgets/textedit.h b/client/widgets/textedit.h index 466af0f..946e7b9 100644 --- a/client/widgets/textedit.h +++ b/client/widgets/textedit.h @@ -36,7 +36,7 @@ class TextEdit : public QTextEdit, public Widget { Q_OBJECT public: - TextEdit(QDomNode &node); + TextEdit(QDomNode &node, MacroWindow *macrowindow); public slots: void changed(); diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index d17754e..61e2a53 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -26,10 +26,12 @@ */ #include "widget.h" -Widget::Widget(QDomNode &node) +Widget::Widget(QDomNode &node, MacroWindow *macrowindow) { QDomElement elem = node.toElement(); + this->macrowindow = macrowindow; + if(elem.hasAttribute("name")) { widget_name = elem.attribute("name"); } else { @@ -37,11 +39,11 @@ Widget::Widget(QDomNode &node) elem.tagName().toStdString().c_str()); } - if(elem.hasAttribute("lua_validator")) { - lua_validator = elem.attribute("lua_validator"); - hasluavalidator = true; + if(elem.hasAttribute("lua")) { + luaprogram = elem.attribute("lua"); + hasluaprogram = true; } else { - hasluavalidator = false; + hasluaprogram = false; } if(elem.hasAttribute("regexp")) { @@ -63,6 +65,10 @@ QString Widget::getValue() return ""; } +void Widget::setValue(QString) +{ +} + bool Widget::isValid() { return regexpValidator() && luaValidator(); @@ -75,17 +81,7 @@ bool Widget::regexpValidator() bool Widget::luaValidator() { - if(!hasluavalidator) return true; - - Variables v; - v["value"] = getValue().toStdString(); - LUA lua(v); - - std::string program = lua_validator.toStdString(); - - std::string result = lua.run(program); - - // printf("Running [%s] => [%s]\n", program.c_str(), result.c_str()); + if(!hasluaprogram) return true; - return result == "true"; + return macrowindow->lua->run(luaprogram, getValue()); } diff --git a/client/widgets/widget.h b/client/widgets/widget.h index 391f2e9..cba6be9 100644 --- a/client/widgets/widget.h +++ b/client/widgets/widget.h @@ -31,13 +31,15 @@ #include #include +#include "macrowindow.h" #include "lua.h" class Widget { public: - Widget(QDomNode &node); + Widget(QDomNode &node, MacroWindow *macrowindow); virtual ~Widget(){} virtual QString getValue(); + virtual void setValue(QString value); virtual bool isValid(); QString getName(); @@ -51,9 +53,11 @@ private: QRegExp rx; bool hasregexpvalidator; - bool hasluavalidator; + bool hasluaprogram; - QString lua_validator; + QString luaprogram; + LUA *lua; + MacroWindow *macrowindow; }; #endif/*__PRACRO_WIDGET_H__*/ diff --git a/client/widgets/window.cc b/client/widgets/window.cc index 5d15733..b2b4298 100644 --- a/client/widgets/window.cc +++ b/client/widgets/window.cc @@ -28,8 +28,8 @@ #include #include -Window::Window(QDomNode &node) - : QWidget(NULL), Widget(node) +Window::Window(QDomNode &node, MacroWindow *macrowindow) + : QWidget(NULL), Widget(node, macrowindow) { QDomElement elem = node.toElement(); diff --git a/client/widgets/window.h b/client/widgets/window.h index 93c48ab..bd4c77b 100644 --- a/client/widgets/window.h +++ b/client/widgets/window.h @@ -34,7 +34,7 @@ class Window : public QWidget, public Widget { public: - Window(QDomNode &node); + Window(QDomNode &node, MacroWindow *macrowindow); public slots: QString getValue(); -- cgit v1.2.3