diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/client.pro | 2 | ||||
| -rw-r--r-- | client/widgets/button.cc | 18 | ||||
| -rw-r--r-- | client/widgets/checkbox.cc | 24 | ||||
| -rw-r--r-- | client/widgets/combobox.cc | 29 | ||||
| -rw-r--r-- | client/widgets/common.cc | 98 | ||||
| -rw-r--r-- | client/widgets/common.h | 36 | ||||
| -rw-r--r-- | client/widgets/frame.cc | 17 | ||||
| -rw-r--r-- | client/widgets/groupbox.cc | 49 | ||||
| -rw-r--r-- | client/widgets/label.cc | 14 | ||||
| -rw-r--r-- | client/widgets/lineedit.cc | 26 | ||||
| -rw-r--r-- | client/widgets/listbox.cc | 21 | ||||
| -rw-r--r-- | client/widgets/multilist.cc | 11 | ||||
| -rw-r--r-- | client/widgets/radiobutton.cc | 21 | ||||
| -rw-r--r-- | client/widgets/radiobuttons.cc | 30 | ||||
| -rw-r--r-- | client/widgets/textedit.cc | 31 | ||||
| -rw-r--r-- | client/widgets/window.cc | 34 | 
16 files changed, 191 insertions, 270 deletions
diff --git a/client/client.pro b/client/client.pro index e6d5be8..ae1f8e7 100644 --- a/client/client.pro +++ b/client/client.pro @@ -28,6 +28,7 @@ HEADERS += \  	netcom.h \          widgetbuilder.h \          widgets.h \ +	widgets/common.h \  	widgets/widget.h \  	widgets/label.h \  	widgets/lineedit.h \ @@ -51,6 +52,7 @@ SOURCES += \          macrowindow.cc \  	netcom.cc \          widgetbuilder.cc \ +	widgets/common.cc \          widgets/widget.cc \          widgets/label.cc \          widgets/lineedit.cc \ diff --git a/client/widgets/button.cc b/client/widgets/button.cc index 0f9df2f..2eee811 100644 --- a/client/widgets/button.cc +++ b/client/widgets/button.cc @@ -27,24 +27,14 @@  #include "button.h"  #include <stdio.h> +#include "common.h" +  Button::Button(QDomNode &node, MacroWindow *macrowindow)    : QPushButton(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("width")) { -    //resize(elem.attribute("width").toInt(), height()); -    setMinimumWidth(elem.attribute("width").toInt()); -  } +  setCommonAttributes(this, node); -  if(elem.hasAttribute("height")) { -    //resize(width(), elem.attribute("height").toInt()); -    setMinimumHeight(elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  QDomElement elem = node.toElement();    if(elem.hasAttribute("field")) {      field = elem.attribute("field"); diff --git a/client/widgets/checkbox.cc b/client/widgets/checkbox.cc index 1f089bb..f2af188 100644 --- a/client/widgets/checkbox.cc +++ b/client/widgets/checkbox.cc @@ -26,36 +26,20 @@   */  #include "checkbox.h" +#include "common.h" +  CheckBox::CheckBox(QDomNode &node, MacroWindow *macrowindow)    : QCheckBox(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); +  setCommonAttributes(this, node); -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } +  QDomElement elem = node.toElement(); -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } -      if(elem.hasAttribute("caption")) {      setText(elem.attribute("caption"));    } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  }    connect(this, SIGNAL(stateChanged(int)), this, SLOT(state_change())); - -  /* // This is done later -  if(elem.hasAttribute("value")) { -    setValue(elem.attribute("value")); -  } else { -    setValue("false"); -  } -  */  }  QString CheckBox::getValue() diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index caa7683..12c1f26 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -30,33 +30,18 @@  #include <QRegExpValidator>  #include <QRegExp> +#include "common.h" +  ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow)    : QComboBox(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); +  setCommonAttributes(this, node);    setInsertPolicy(QComboBox::InsertAlphabetically); -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setWhatsThis(elem.attribute("help")); -  } -  if(elem.hasAttribute("help")) { -    //  setToolTip(elem.attribute("help")); -  } -    QDomNodeList children = node.childNodes();    QStringList itemlist; -  setCurrentIndex(-1); // -1 is default for none selected -    for (int i=0; i<children.count();i++) {      QDomNode child = children.at(i);      QDomElement combo_elem = child.toElement(); @@ -68,14 +53,10 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow)      }    } -  // Hack to force currentIndexChanged event. +  // Make empty default selection.    setCurrentIndex(-1); -  /* // This is done later -  if(elem.hasAttribute("value")) { -    setValue(elem.attribute("value")); -  }  -  */ +  QDomElement elem = node.toElement();    combotype = SELECT;    if(elem.hasAttribute("type")) { diff --git a/client/widgets/common.cc b/client/widgets/common.cc new file mode 100644 index 0000000..362767e --- /dev/null +++ b/client/widgets/common.cc @@ -0,0 +1,98 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            common.cc + * + *  Thu Aug 28 15:31:52 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 "common.h" + +#include <QVBoxLayout> +#include <QHBoxLayout> +#include <QDomElement> +#include <QString> + +//#define LINEWIDTH 80 + +static QString reformatHelpString(QString help) +{ +  QString output; + +  //  int lastnl = 0; +  for(int i = 0; i < help.size(); i++) { +    if(i < help.size() - 1 && help[i] == '\\' && help[i+1] == 'n') { +      //lastnl = 0; +      output += '\n'; +      output += '\n'; +      i++; +    } else { +      //if(lastnl > LINEWIDTH && help[i] == ' ') { +      //  output += '\n'; +      //  lastnl = 0; +      //} else { +      output += help[i]; +      //lastnl++; +      //} +    } +  } +  return output; +} + +void setCommonAttributes(QWidget *widget, QDomNode &node) +{ +  QDomElement elem = node.toElement(); + +  if(elem.hasAttribute("width")) { +    widget->setMinimumWidth(elem.attribute("width").toInt()); +  } + +  if(elem.hasAttribute("height")) { +    widget->setMinimumHeight(elem.attribute("height").toInt()); +  } + +  if(elem.hasAttribute("help")) { +    QString helptext = reformatHelpString(elem.attribute("help")); +    widget->setWhatsThis(helptext); +    widget->setToolTip(helptext); +  } +} + +void setCommonLayout(QWidget *widget, QDomNode &node) +{ +  QDomElement elem = node.toElement(); + +  if(elem.hasAttribute("layout")) { +    if(elem.attribute("layout") == "hbox") { +      QHBoxLayout *layout = new QHBoxLayout(); +      widget->setLayout(layout); +    } else if (elem.attribute("layout") == "vbox") { +      QVBoxLayout *layout = new QVBoxLayout(); +      widget->setLayout(layout); +    } +  } else { +    QHBoxLayout *layout = new QHBoxLayout(); +    widget->setLayout(layout); +  } + +  widget->setContentsMargins(0,0,0,0); +  //widget->layout()->setContentsMargins(0,0,0,0); +} diff --git a/client/widgets/common.h b/client/widgets/common.h new file mode 100644 index 0000000..11ce317 --- /dev/null +++ b/client/widgets/common.h @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            common.h + * + *  Thu Aug 28 15:31:52 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_COMMON_H__ +#define __PRACRO_COMMON_H__ + +#include <QWidget> +#include <QDomNode> + +void setCommonAttributes(QWidget *widget, QDomNode &node); +void setCommonLayout(QWidget *widget, QDomNode &node); + +#endif/*__PRACRO_COMMON_H__*/ diff --git a/client/widgets/frame.cc b/client/widgets/frame.cc index 1c0955e..872c3fc 100644 --- a/client/widgets/frame.cc +++ b/client/widgets/frame.cc @@ -28,23 +28,14 @@  #include <QVBoxLayout>  #include <QHBoxLayout> +#include "common.h" +  Frame::Frame(QDomNode &node, MacroWindow *macrowindow)    : QFrame(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); +  setCommonAttributes(this, node); +  setCommonLayout(this, node); -  if(elem.hasAttribute("layout")) { -    if(elem.attribute("layout") == "hbox") { -      QHBoxLayout *layout = new QHBoxLayout(); -      setLayout(layout); -    } else if (elem.attribute("layout") == "vbox") { -      QVBoxLayout *layout = new QVBoxLayout(); -      setLayout(layout);       -    } -  } -  setLineWidth(0); -  setMidLineWidth(0); -  setContentsMargins(0,0,0,0);    layout()->setContentsMargins(0,0,0,0);  } diff --git a/client/widgets/groupbox.cc b/client/widgets/groupbox.cc index 4d40dca..2bf696f 100644 --- a/client/widgets/groupbox.cc +++ b/client/widgets/groupbox.cc @@ -30,56 +30,17 @@  #include <string.h> +#include "common.h" +  GroupBox::GroupBox(QDomNode &node, MacroWindow *macrowindow)    : QGroupBox(), Widget(node, macrowindow)  { +  setCommonAttributes(this, node); +  setCommonLayout(this, node); +    QDomElement elem = node.toElement();    if(elem.hasAttribute("caption")) {      setTitle(elem.attribute("caption"));    } - -  if(elem.hasAttribute("help")) { -    setWhatsThis(elem.attribute("help")); -  } -  if(elem.hasAttribute("help")) { -    QString helptext = elem.attribute("help"); - -    int idx = 0; -    while(idx < helptext.length() - 1) { -      if(helptext[idx] == '\\' && helptext[idx+1] == 'n') { -        helptext[idx] = '\n'; -        helptext[idx+1] = '\n'; -      } -      idx++; -    } - -    idx = 60; -    while(idx < helptext.length()) { -      while(idx < helptext.length() && helptext[idx] != ' ') { -        idx++; -      } -      helptext[idx] = '\n'; - -      idx += 60; -    } -    setToolTip(helptext); -  } - -  if(elem.hasAttribute("layout")) { -    if(elem.attribute("layout") == "hbox") { -      QHBoxLayout *layout = new QHBoxLayout(); -      setLayout(layout); -    } else if (elem.attribute("layout") == "vbox") { -      QVBoxLayout *layout = new QVBoxLayout(); -      setLayout(layout); -    } -  } else { -    QHBoxLayout *layout = new QHBoxLayout(); -    setLayout(layout); -  } - -  //  setLineWidth(0); -  //  setMidLineWidth(0); -  setContentsMargins(0,10,0,0);  } diff --git a/client/widgets/label.cc b/client/widgets/label.cc index 1d58665..61b60c5 100644 --- a/client/widgets/label.cc +++ b/client/widgets/label.cc @@ -27,22 +27,14 @@  #include "label.h"  #include <stdio.h> +#include "common.h" +  Label::Label(QDomNode &node, MacroWindow *macrowindow)    : QLabel(), Widget(node, macrowindow)  {    QDomElement elem = node.toElement(); -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } -   -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  setCommonAttributes(this, node);    if(elem.hasAttribute("caption")) {      setText(elem.attribute("caption")); diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc index 977c5a2..29ea06c 100644 --- a/client/widgets/lineedit.cc +++ b/client/widgets/lineedit.cc @@ -27,22 +27,14 @@  #include "lineedit.h"  #include <stdio.h> +#include "common.h" +  LineEdit::LineEdit(QDomNode &node, MacroWindow *macrowindow)    : QLineEdit(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } +  setCommonAttributes(this, node); -  if(elem.hasAttribute("help")) { -    setWhatsThis(elem.attribute("help")); -  } +  QDomElement elem = node.toElement();    if(elem.hasAttribute("readonly")) {      if(elem.attribute("readonly") == "true" || elem.attribute("readonly") == "1") { @@ -55,16 +47,6 @@ LineEdit::LineEdit(QDomNode &node, MacroWindow *macrowindow)    }    connect(this, SIGNAL(textChanged(QString)), this, SLOT(changed())); - -  /* // This is done later -  if(elem.hasAttribute("value")) { -    setText(elem.attribute("value")); -  } else { -    // This is a hack to force correct background color according to regexp -    setText(" "); -    setText(""); -  } -  */  }  void LineEdit::changed() diff --git a/client/widgets/listbox.cc b/client/widgets/listbox.cc index 5215c18..88a5cd2 100644 --- a/client/widgets/listbox.cc +++ b/client/widgets/listbox.cc @@ -27,6 +27,7 @@  #include "listbox.h"  #include <QListWidgetItem> +#include "common.h"  static QListWidgetItem *createItem(QDomElement &elem)  { @@ -70,19 +71,7 @@ static QListWidgetItem *createItem(QDomElement &elem)  ListBox::ListBox(QDomNode &node, MacroWindow *macrowindow)    : QListWidget(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  setCommonAttributes(this, node);    QDomNodeList children = node.childNodes(); @@ -91,12 +80,6 @@ ListBox::ListBox(QDomNode &node, MacroWindow *macrowindow)      QDomElement list_elem = child.toElement();      addItem(createItem(list_elem));    } -   -  /* // This is done later -  if(elem.hasAttribute("value")) { -    setValue(elem.attribute("value")); -  } -  */  }  bool ListBox::isValid() diff --git a/client/widgets/multilist.cc b/client/widgets/multilist.cc index cbda305..a33c054 100644 --- a/client/widgets/multilist.cc +++ b/client/widgets/multilist.cc @@ -34,9 +34,13 @@  #include "widgetbuilder.h"  #include "formatparser.h" +#include "common.h" +  MultiList::MultiList(QDomNode &node, MacroWindow *macrowindow)    : QFrame(), Widget(node, macrowindow)  { +  setCommonAttributes(this, node); +    QGridLayout *layout = new QGridLayout();    setLayout(layout); @@ -58,10 +62,6 @@ MultiList::MultiList(QDomNode &node, MacroWindow *macrowindow)      inputbox->setLayout(layout);    } -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } -    inputbox->layout()->setContentsMargins(0,0,0,0);    QDomNodeList children = node.childNodes(); @@ -155,6 +155,9 @@ QString MultiList::getValue()  void MultiList::setValue(QString values)  {    QString value; + +  list->clear(); +    int idx = 0;    do {      value = values.section('\n', idx, idx); diff --git a/client/widgets/radiobutton.cc b/client/widgets/radiobutton.cc index 9e04e07..6646f59 100644 --- a/client/widgets/radiobutton.cc +++ b/client/widgets/radiobutton.cc @@ -27,34 +27,21 @@  #include "radiobutton.h"  #include <QRadioButton> +#include "common.h" +  RadioButton::RadioButton(QDomNode &node)    : QRadioButton()  { -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("width")) { -    resize(elem.attribute("width").toInt(), height()); -  } +  setCommonAttributes(this, node); -  if(elem.hasAttribute("height")) { -    resize(width(), elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  QDomElement elem = node.toElement();    if(elem.hasAttribute("caption")) {      setText(elem.attribute("caption")); -  } else { -    setText("");    }    if(elem.hasAttribute("value")) {      value = elem.attribute("value"); -  } else { -    printf("XML ERROR!!! Radiobutton item has no value\n"); -    value = "none";    }  } diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc index f0c9e8c..1987459 100644 --- a/client/widgets/radiobuttons.cc +++ b/client/widgets/radiobuttons.cc @@ -30,34 +30,13 @@  #include <QHBoxLayout>  #include <QVBoxLayout> +#include "common.h" +  RadioButtons::RadioButtons(QDomNode &node, MacroWindow *macrowindow)    : QFrame(), Widget(node, macrowindow)  { -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("layout")) { -    if(elem.attribute("layout") == "hbox") { -      QHBoxLayout *layout = new QHBoxLayout(); -      setLayout(layout); -    } else if (elem.attribute("layout") == "vbox") { -      QVBoxLayout *layout = new QVBoxLayout(); -      setLayout(layout);       -    } -  } - -  if(elem.hasAttribute("width")) { -    //resize(elem.attribute("width").toInt(), height()); -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    //resize(width(), elem.attribute("height").toInt()); -    setMinimumHeight(elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  setCommonAttributes(this, node); +  setCommonLayout(this, node);    QDomNodeList children = node.childNodes(); @@ -72,7 +51,6 @@ RadioButtons::RadioButtons(QDomNode &node, MacroWindow *macrowindow)    }    layout()->setContentsMargins(0,0,0,0); -  }  bool RadioButtons::isValid() diff --git a/client/widgets/textedit.cc b/client/widgets/textedit.cc index 0cd2d4f..8b18a3d 100644 --- a/client/widgets/textedit.cc +++ b/client/widgets/textedit.cc @@ -25,39 +25,18 @@   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.   */  #include "textedit.h" -#include <stdio.h>  #include <QPalette> +#include <stdio.h> + +#include "common.h" +  TextEdit::TextEdit(QDomNode &node, MacroWindow *macrowindow)    : QTextEdit(), Widget(node, macrowindow)  { -  //setAutoFillBackground(true); /* Default is false, which disables background -  //                              color manipulation.*/ - -  QDomElement elem = node.toElement(); -   -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -  } - -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -  } -   -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  setCommonAttributes(this, node);    connect(this, SIGNAL(textChanged()), this, SLOT(changed())); - -  /* // This is done later -  if(elem.hasAttribute("value")) { -    setValue(elem.attribute("value")); -  } else { -    setValue(" "); -    setValue(""); -  } -  */  }  void TextEdit::changed() diff --git a/client/widgets/window.cc b/client/widgets/window.cc index c385d04..84e370c 100644 --- a/client/widgets/window.cc +++ b/client/widgets/window.cc @@ -25,29 +25,17 @@   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.   */  #include "window.h" -#include <QVBoxLayout> -#include <QHBoxLayout> +#include "common.h"  Window::Window(QDomNode &node, MacroWindow *macrowindow)    : QWidget(NULL), Widget(node, macrowindow)  {    setWindowFlags(Qt::WindowContextHelpButtonHint | Qt::WindowSystemMenuHint); -  QDomElement elem = node.toElement(); - -  if(elem.hasAttribute("width")) { -    setMinimumWidth(elem.attribute("width").toInt()); -    resize(elem.attribute("width").toInt(), height()); -  } +  setCommonAttributes(this, node); +  setCommonLayout(this, node); -  if(elem.hasAttribute("height")) { -    setMinimumHeight(elem.attribute("height").toInt()); -    resize(width(), elem.attribute("height").toInt()); -  } - -  if(elem.hasAttribute("help")) { -    setToolTip(elem.attribute("help")); -  } +  QDomElement elem = node.toElement();    if(elem.hasAttribute("fixed")) {      if(elem.attribute("fixed") == "true") { @@ -57,19 +45,5 @@ Window::Window(QDomNode &node, MacroWindow *macrowindow)    if(elem.hasAttribute("caption")) {      setWindowTitle(elem.attribute("caption")); -  } else { -    setWindowTitle(elem.attribute(""));    } - -  if(elem.hasAttribute("layout")) { -    if(elem.attribute("layout") == "hbox") { -      QHBoxLayout *layout = new QHBoxLayout(); -      setLayout(layout); -    } else if (elem.attribute("layout") == "vbox") { -      QVBoxLayout *layout = new QVBoxLayout(); -      setLayout(layout);       -    } -  } - -  setContentsMargins(0,0,0,0);  }  | 
