diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/client.pro | 2 | ||||
| -rw-r--r-- | client/widgets.h | 1 | ||||
| -rw-r--r-- | client/widgets/checkgroupbox.cc | 139 | ||||
| -rw-r--r-- | client/widgets/checkgroupbox.h | 62 | ||||
| -rw-r--r-- | client/widgets/widget.cc | 5 | 
5 files changed, 209 insertions, 0 deletions
| diff --git a/client/client.pro b/client/client.pro index d53c69a..9f4de5f 100644 --- a/client/client.pro +++ b/client/client.pro @@ -66,6 +66,7 @@ HEADERS += \  	widgets/radiobutton.h \  	widgets/radiobuttons.h \  	widgets/checkbox.h \ +	widgets/checkgroupbox.h \  	widgets/window.h \  	widgets/altcombobox.h \  	widgets/metawidget.h @@ -102,6 +103,7 @@ SOURCES += \  	widgets/radiobutton.cc \  	widgets/radiobuttons.cc \  	widgets/checkbox.cc \ +	widgets/checkgroupbox.cc \  	widgets/window.cc \  	widgets/altcombobox.cc \  	widgets/metawidget.cc diff --git a/client/widgets.h b/client/widgets.h index f705a07..cd0d594 100644 --- a/client/widgets.h +++ b/client/widgets.h @@ -41,6 +41,7 @@  #include "widgets/radiobuttons.h"  #include "widgets/radiobutton.h"  #include "widgets/checkbox.h" +#include "widgets/checkgroupbox.h"  #include "widgets/window.h"  #include "widgets/altcombobox.h"  #include "widgets/metawidget.h" diff --git a/client/widgets/checkgroupbox.cc b/client/widgets/checkgroupbox.cc new file mode 100644 index 0000000..becb151 --- /dev/null +++ b/client/widgets/checkgroupbox.cc @@ -0,0 +1,139 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + *            checkgroupbox.cc + * + *  Thu Mar 10 10:51:10 CET 2011 + *  Copyright 2011 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 "checkgroupbox.h" + +#include <QGroupBox> + +#include "common.h" + +CheckGroupBox::CheckGroupBox(QDomNode &node, MacroWindow *macrowindow) +  : Widget(node, macrowindow) +{ +  // +  // From GroupBox +  // +  groupbox = new QGroupBox(); +  groupbox->setCheckable(true); +  widget = groupbox; + +  setCommonAttributes(groupbox, node); +  setCommonLayout(groupbox, node); + +  QDomElement elem = node.toElement(); + +  if(elem.hasAttribute("caption")) { +    groupbox->setTitle(elem.attribute("caption")); +  } + +  addChildren(node, groupbox->layout()); + +  // +  // From CheckBox +  // +  changedByUser = true; +   +  if(elem.hasAttribute("truevalue")) { +    truevalue = elem.attribute("truevalue"); +  } else { +    truevalue = "true"; +  } + +  if(elem.hasAttribute("falsevalue")) { +    falsevalue = elem.attribute("falsevalue"); +  } else { +    falsevalue = "false"; +  } +   +  connect(groupbox, SIGNAL(stateChanged(int)), this, SLOT(state_change(int))); +} + +CheckGroupBox::~CheckGroupBox() +{ +  //  delete groupbox; +} + +QString CheckGroupBox::value() +{ +  if(groupbox->isChecked()) return truevalue; +  return falsevalue; +} + +void CheckGroupBox::setValue(QString value, QString source) +{ +  if(isUserSource(source)) emit wasChanged(); + +  changedByUser = false; + +  bool old = groupbox->isChecked(); + +  if(value == truevalue) { +    groupbox->setChecked(true); +  } else if(value == falsevalue) { +    groupbox->setChecked(false); +  } else { +    printf("Unknown checkbox value: %s\n", value.toStdString().c_str()); +  } + +  // If set operation did not change the value we must invocate the code manually. +  if(old == groupbox->isChecked()) state_change(0); + +  //  setInitialValue(value); + +  changedByUser = true; +} + +void CheckGroupBox::state_change(int) +{ +  emit eventOnChange(); +  if(changedByUser) emit wasChanged(); +} + +bool CheckGroupBox::checked() +{ +  return value() == truevalue; +} + +void CheckGroupBox::setChecked(bool checked) +{ +  setValue(checked ? truevalue : falsevalue); +} + +void CheckGroupBox::setWdgValid(bool valid) +{ +  QPalette palette; + +  if(valid) { +    // valid string +    palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255))); +  } else { +    // invalid string +    palette.setBrush(QPalette::Base, QBrush(QColor(230, 200, 200))); +  } + +  groupbox->setPalette(palette); +} diff --git a/client/widgets/checkgroupbox.h b/client/widgets/checkgroupbox.h new file mode 100644 index 0000000..db6a063 --- /dev/null +++ b/client/widgets/checkgroupbox.h @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + *            checkgroupbox.h + * + *  Thu Mar 10 10:51:10 CET 2011 + *  Copyright 2011 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_CHECKGROUPBOX_H__ +#define __PRACRO_CHECKGROUPBOX_H__ + +#include "widget.h" +#include <QDomNode> + +class QGroupBox; +class CheckGroupBox : public Widget +{ +Q_OBJECT +public: +  CheckGroupBox(QDomNode &node, MacroWindow *macrowindow); +  ~CheckGroupBox(); + +  QString value(); +  void setValue(QString value, QString source = ""); + +  void setWdgValid(bool valid); + +  bool checked(); +  void setChecked(bool checked); + +public slots: +  void state_change(int); + +private: +  QString truevalue; +  QString falsevalue; + +  bool changedByUser; +   +  QGroupBox *groupbox; +}; + +#endif/*__PRACRO_CHECKGROUPBOX_H__*/ diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index dbce00c..1fefae8 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -319,6 +319,11 @@ void Widget::createWidget(QDomNode &xml_node, QLayout *layout)        widget = frame;      } +  } else if(xml_elem.tagName() == "checkgroupbox") { + +    CheckGroupBox *chkgrpbox = new CheckGroupBox(xml_elem, macrowindow); +    widget = chkgrpbox; +    } else if(xml_elem.tagName() == "label") {      Label *label = new Label(xml_elem, macrowindow); | 
