diff options
| -rw-r--r-- | client/client.pro | 2 | ||||
| -rw-r--r-- | client/macrowindow.cc | 4 | ||||
| -rw-r--r-- | client/widgetbuilder.cc | 57 | ||||
| -rw-r--r-- | client/widgetbuilder.h | 39 | ||||
| -rw-r--r-- | client/widgets/altcombobox.cc | 1 | ||||
| -rw-r--r-- | client/widgets/metawidget.cc | 1 | ||||
| -rw-r--r-- | client/widgets/multilist.cc | 1 | ||||
| -rw-r--r-- | client/widgets/widget.cc | 37 | ||||
| -rw-r--r-- | client/widgets/widget.h | 9 | 
9 files changed, 35 insertions, 116 deletions
| diff --git a/client/client.pro b/client/client.pro index 9f2780d..8b2a130 100644 --- a/client/client.pro +++ b/client/client.pro @@ -45,7 +45,6 @@ HEADERS += \  	resumewidget.h \  	sessions.h \  	viewer.h \ -	widgetbuilder.h \  	widgets.h \  	widgets/common.h \  	widgets/widget.h \ @@ -82,7 +81,6 @@ SOURCES += \  	resumewidget.cc \  	sessions.cc \  	viewer.cc \ -	widgetbuilder.cc \  	widgets/common.cc \  	widgets/widget.cc \  	widgets/label.cc \ diff --git a/client/macrowindow.cc b/client/macrowindow.cc index c439497..649f323 100644 --- a/client/macrowindow.cc +++ b/client/macrowindow.cc @@ -34,7 +34,6 @@  #include "messagebox.h"  #include "widgets/widget.h"  #include "widgets/window.h" -#include "widgetbuilder.h"  #include "lua.h"  #include "resumewidget.h" @@ -118,6 +117,8 @@ void MacroWindow::initMacro(QDomNode &node)      clear();      mainwidget = window; +    mainwidget->setValues(); +    /*      QDomNodeList children = node.childNodes();      // Insert their values (this must be done last for scripts to work properly) @@ -125,6 +126,7 @@ void MacroWindow::initMacro(QDomNode &node)        QDomNode child = children.at(i);        setValues(child, mainwidget);      } +    */      if(waschanged == true) macroChanged(); diff --git a/client/widgetbuilder.cc b/client/widgetbuilder.cc deleted file mode 100644 index e61ecd5..0000000 --- a/client/widgetbuilder.cc +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            widgetbuilder.cc - * - *  Wed Jun 18 08:03:04 CEST 2008 - *  Copyright 2008 Bent Bisballe Nyeng - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  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. - */ -#include "widgetbuilder.h" - -#include <QLayout> -#include <QObject> - -#include "widgets.h" -#include "macrowindow.h" - -void setValues(QDomNode &xml_node, Widget *rootwidget) -{ -  QDomElement xml_elem = xml_node.toElement(); - -  if(xml_elem.tagName() == "item" || -     xml_elem.tagName() == "radiobutton") return; - -  if(xml_elem.hasAttribute("name") && xml_elem.hasAttribute("value")) { -    Widget *widget = rootwidget->findWidget(xml_elem.attribute("name"), true); -    if(widget && widget->hasInitialValue() == false) { -      // Don't set the value if it is already set indirectly (altcombobox) -      widget->setValue(xml_elem.attribute("value"), -                       xml_elem.attribute("prefilled", "")); -    } -  } - -  QDomNodeList children = xml_node.childNodes(); - -  for (int i=0; i<children.count();i++) { -    QDomNode child = children.at(i); -    setValues(child, rootwidget); -  } -} diff --git a/client/widgetbuilder.h b/client/widgetbuilder.h deleted file mode 100644 index 7622aec..0000000 --- a/client/widgetbuilder.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            widgetbuilder.h - * - *  Wed Jun 18 08:03:04 CEST 2008 - *  Copyright 2008 Bent Bisballe Nyeng - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  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_WIDGETBUILDER_H__ -#define __PRACRO_WIDGETBUILDER_H__ - -#include <QVector> -#include <QDomNode> -#include "widgets/widget.h" - -//class MacroWindow; -//void widgetBuilder(QDomNode xml_node, Widget *parent, MacroWindow *macrowindow); - -void setValues(QDomNode &xml_node, Widget *rootwidget); - -#endif/*__PRACRO_WIDGETBUILDER_H__*/ diff --git a/client/widgets/altcombobox.cc b/client/widgets/altcombobox.cc index a4f5e76..88ce376 100644 --- a/client/widgets/altcombobox.cc +++ b/client/widgets/altcombobox.cc @@ -32,7 +32,6 @@  #include <QComboBox>  #include "common.h" -#include "widgetbuilder.h"  #include "multilist.h"  #include "macrowindow.h" diff --git a/client/widgets/metawidget.cc b/client/widgets/metawidget.cc index ff359f4..55a8bd4 100644 --- a/client/widgets/metawidget.cc +++ b/client/widgets/metawidget.cc @@ -31,7 +31,6 @@  #include <QFrame>  #include "messagebox.h" -#include "widgetbuilder.h"  #include "formatparser.h"  #include "macrowindow.h"  #include "common.h" diff --git a/client/widgets/multilist.cc b/client/widgets/multilist.cc index cccad5a..0160440 100644 --- a/client/widgets/multilist.cc +++ b/client/widgets/multilist.cc @@ -36,7 +36,6 @@  #include <QKeyEvent>  #include "messagebox.h" -#include "widgetbuilder.h"  #include "common.h"  #include "macrowindow.h" diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index 93deb31..f3247a0 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -55,8 +55,9 @@ Widget::Widget(QDomNode &node, MacroWindow *macrowindow)      prefilled = elem.attribute("prefilled");    } -  has_initial_value = false; -  initial_value = ""; +  has_initial_value = elem.hasAttribute("name") && elem.hasAttribute("value"); +  lazy_value = elem.attribute("value", ""); +  lazy_source = elem.attribute("prefilled", "");    if((hasOnChangeEvent = elem.hasAttribute("onChange"))) {      onChangeEventScript = elem.attribute("onChange"); @@ -90,15 +91,6 @@ Widget::~Widget()    }  } -void Widget::addChildren(QDomNode &node, QLayout *layout) -{ -  QDomNodeList children = node.childNodes(); -  for (int i=0; i<children.count();i++) { -    QDomNode child = children.at(i); -    widgetBuilder(child, layout); -  } -} -  QString Widget::name()  {    return widget_name; @@ -236,10 +228,29 @@ void Widget::addChild(Widget *widget)    connect(widget, SIGNAL(wasChanged()), this, SLOT(childWasChanged()));  } -void Widget::widgetBuilder(QDomNode &xml_node, QLayout *layout) +void Widget::addChildren(QDomNode &node, QLayout *layout)  { -  QDomElement xml_elem = xml_node.toElement(); +  QDomNodeList children = node.childNodes(); +  for (int i=0; i<children.count();i++) { +    QDomNode child = children.at(i); +    createWidget(child, layout); +  } +} + +void Widget::setValues() +{ +  if(has_lazy) setValue(lazy_value, lazy_source); + +  QVector< Widget* >::iterator i = children.begin(); +  while(i != children.end()) { +    if(*i) (*i)->setValues(); +    i++; +  } +} +void Widget::createWidget(QDomNode &xml_node, QLayout *layout) +{ +  QDomElement xml_elem = xml_node.toElement();    // TODO: Why do we do this??    if(xml_elem.hasAttribute("prefilled") && diff --git a/client/widgets/widget.h b/client/widgets/widget.h index 960dca9..2a95294 100644 --- a/client/widgets/widget.h +++ b/client/widgets/widget.h @@ -80,6 +80,7 @@ public:    Widget *findWidget(QString name, bool deep = false);    QVector< Widget* > widgetList(bool deep = false);    void addChild(Widget *widget); +  void setValues();  signals:    void wasChanged(); @@ -96,11 +97,16 @@ protected:    QWidget *widget;    bool hideChildren; -  void widgetBuilder(QDomNode &xml_node, QLayout *layout);    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; @@ -114,6 +120,7 @@ private:    QString onChangeEventScript;    QString initial_value; +  QString initial_source;    bool has_initial_value;    QString prefilled; | 
