summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/client.pro2
-rw-r--r--client/widgets/button.cc18
-rw-r--r--client/widgets/checkbox.cc24
-rw-r--r--client/widgets/combobox.cc29
-rw-r--r--client/widgets/common.cc98
-rw-r--r--client/widgets/common.h36
-rw-r--r--client/widgets/frame.cc17
-rw-r--r--client/widgets/groupbox.cc49
-rw-r--r--client/widgets/label.cc14
-rw-r--r--client/widgets/lineedit.cc26
-rw-r--r--client/widgets/listbox.cc21
-rw-r--r--client/widgets/multilist.cc11
-rw-r--r--client/widgets/radiobutton.cc21
-rw-r--r--client/widgets/radiobuttons.cc30
-rw-r--r--client/widgets/textedit.cc31
-rw-r--r--client/widgets/window.cc34
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);
}