From 3eebecacd576c35605aff01324ec66ad9825b0d7 Mon Sep 17 00:00:00 2001 From: deva Date: Wed, 20 Aug 2008 10:28:35 +0000 Subject: Fixed various small bugs. --- client/lua.cc | 2 +- client/macrowindow.cc | 3 +++ client/widgets/button.cc | 4 ++++ client/widgets/checkbox.cc | 6 ++++-- client/widgets/combobox.cc | 25 ++++++++++++++++--------- client/widgets/combobox.h | 7 +++++++ client/widgets/groupbox.cc | 31 +++++++++++++++++++++++++++++-- client/widgets/label.cc | 4 ++++ client/widgets/lineedit.cc | 4 ++++ client/widgets/listbox.cc | 4 ++++ client/widgets/multilist.cc | 37 +++++++++++++++++++++++++++++++++---- client/widgets/multilist.h | 3 +++ client/widgets/radiobutton.cc | 4 ++++ client/widgets/radiobuttons.cc | 11 +++++------ client/widgets/textedit.cc | 4 ++++ client/widgets/widget.cc | 4 ++-- client/widgets/window.cc | 6 ++++++ 17 files changed, 133 insertions(+), 26 deletions(-) diff --git a/client/lua.cc b/client/lua.cc index 65d0188..9494ee2 100644 --- a/client/lua.cc +++ b/client/lua.cc @@ -209,7 +209,7 @@ bool LUA::run(QString program, QString name, QString value) if(macrowindow->luaprograms.contains(program) == false) return false; - printf("%s\n", macrowindow->luaprograms.value(program).toStdString().c_str()); + // printf("%s\n", macrowindow->luaprograms.value(program).toStdString().c_str()); lua_pushstring(L, value.toStdString().c_str()); lua_setglobal(L, "value"); diff --git a/client/macrowindow.cc b/client/macrowindow.cc index abd615c..ddaf905 100644 --- a/client/macrowindow.cc +++ b/client/macrowindow.cc @@ -211,5 +211,8 @@ Widget *MacroWindow::getWidget(QString name) if(name == w->getName()) return w; i++; } + + printf("WARNING: Widget %s not found\n", name.toStdString().c_str()); + return NULL; } diff --git a/client/widgets/button.cc b/client/widgets/button.cc index f40b0ec..0f9df2f 100644 --- a/client/widgets/button.cc +++ b/client/widgets/button.cc @@ -42,6 +42,10 @@ Button::Button(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + if(elem.hasAttribute("field")) { field = elem.attribute("field"); } diff --git a/client/widgets/checkbox.cc b/client/widgets/checkbox.cc index 95f5a53..1f089bb 100644 --- a/client/widgets/checkbox.cc +++ b/client/widgets/checkbox.cc @@ -41,8 +41,10 @@ CheckBox::CheckBox(QDomNode &node, MacroWindow *macrowindow) if(elem.hasAttribute("caption")) { setText(elem.attribute("caption")); - } else { - setText(""); + } + + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); } connect(this, SIGNAL(stateChanged(int)), this, SLOT(state_change())); diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index d6d6483..39a957b 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -30,12 +30,6 @@ #include #include -typedef enum { - SELECT, - EDIT, - SEARCH -} types_t; - ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) : QComboBox(), Widget(node, macrowindow) { @@ -51,6 +45,13 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) 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; @@ -73,7 +74,7 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) } */ - types_t combotype = SELECT; + combotype = SELECT; if(elem.hasAttribute("type")) { if(elem.attribute("type") == "select") combotype = SELECT; if(elem.attribute("type") == "edit") combotype = EDIT; @@ -83,7 +84,7 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) switch(combotype) { case SELECT: setEditable(false); - //connect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(changed())); + connect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(changed())); break; case EDIT: @@ -136,14 +137,20 @@ void ComboBox::setValue(QString value) bool ComboBox::isValid() { + if(combotype == SELECT) return true; return rx.exactMatch(currentText()); } void ComboBox::changed() { + if(combotype == SELECT) { + luaValidator(); + return; + } + QPalette palette; - if(isValid()) { + if(isValid() && luaValidator()) { // valid string palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255))); } else { diff --git a/client/widgets/combobox.h b/client/widgets/combobox.h index 0a5724f..f072bea 100644 --- a/client/widgets/combobox.h +++ b/client/widgets/combobox.h @@ -32,6 +32,12 @@ #include #include +typedef enum { + SELECT, + EDIT, + SEARCH +} types_t; + class ComboBox : public QComboBox, public Widget { Q_OBJECT @@ -52,6 +58,7 @@ public slots: private: QRegExp rx; QString combo_value; + types_t combotype; }; #endif/*__PRACRO_COMBOBOX_H__*/ diff --git a/client/widgets/groupbox.cc b/client/widgets/groupbox.cc index 9dc36ec..4d40dca 100644 --- a/client/widgets/groupbox.cc +++ b/client/widgets/groupbox.cc @@ -28,6 +28,8 @@ #include #include +#include + GroupBox::GroupBox(QDomNode &node, MacroWindow *macrowindow) : QGroupBox(), Widget(node, macrowindow) { @@ -35,8 +37,33 @@ GroupBox::GroupBox(QDomNode &node, MacroWindow *macrowindow) if(elem.hasAttribute("caption")) { setTitle(elem.attribute("caption")); - } else { - setTitle(elem.attribute("")); + } + + 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")) { diff --git a/client/widgets/label.cc b/client/widgets/label.cc index 47a709e..1d58665 100644 --- a/client/widgets/label.cc +++ b/client/widgets/label.cc @@ -40,6 +40,10 @@ Label::Label(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + if(elem.hasAttribute("caption")) { setText(elem.attribute("caption")); } else { diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc index 6decbab..89ac276 100644 --- a/client/widgets/lineedit.cc +++ b/client/widgets/lineedit.cc @@ -40,6 +40,10 @@ LineEdit::LineEdit(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setWhatsThis(elem.attribute("help")); + } + if(elem.hasAttribute("readonly")) { if(elem.attribute("readonly") == "true" || elem.attribute("readonly") == "1") { setReadOnly(true); diff --git a/client/widgets/listbox.cc b/client/widgets/listbox.cc index a47812a..5215c18 100644 --- a/client/widgets/listbox.cc +++ b/client/widgets/listbox.cc @@ -80,6 +80,10 @@ ListBox::ListBox(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + QDomNodeList children = node.childNodes(); for (int i=0; i < children.count(); i++) { diff --git a/client/widgets/multilist.cc b/client/widgets/multilist.cc index b2ba2a2..5f795b3 100644 --- a/client/widgets/multilist.cc +++ b/client/widgets/multilist.cc @@ -58,6 +58,10 @@ 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(); @@ -73,16 +77,16 @@ MultiList::MultiList(QDomNode &node, MacroWindow *macrowindow) // layout->addWidget(add, 0, 1, Qt::AlignTop); layout->addWidget(add, 1, 0, 1, 1, Qt::AlignTop); - list = new QListWidget(this); - // layout->addWidget(list, 1, 0, Qt::AlignTop); - layout->addWidget(list, 2, 0, 1, 2, Qt::AlignTop); - QPushButton *rem = new QPushButton(this); connect(rem, SIGNAL(clicked()), this, SLOT(remove())); rem->setText("Fjern"); // layout->addWidget(rem, 1, 1, Qt::AlignTop); layout->addWidget(rem, 1, 1, 1, 1, Qt::AlignTop); + list = new QListWidget(this); + // layout->addWidget(list, 1, 0, Qt::AlignTop); + layout->addWidget(list, 2, 0, 1, 2, Qt::AlignTop); + /* // This is done later if(elem.hasAttribute("value")) { setValue(elem.attribute("value")); @@ -101,6 +105,21 @@ MultiList::MultiList(QDomNode &node, MacroWindow *macrowindow) } } + /* + QVector< Widget* >::iterator i = widgets.begin(); + while (i != widgets.end()) { + for (int j = 0; j < children.count(); j++) { + QDomNode child = children.at(j); + QDomElement elem = child.toElement(); + if(elem.attribute("name") == (*i)->getName()) { + printf("Set\n"); + (*i)->setValue(elem.attribute("value")); + } + } + i++; + } + */ + if(elem.hasAttribute("width")) { setMinimumWidth(elem.attribute("width").toInt()); } @@ -157,3 +176,13 @@ void MultiList::add() } list->addItem(format_parser(format, widgets)); } + +void MultiList::enable() +{ + setEnabled(true); +} + +void MultiList::disable() +{ + setEnabled(false); +} diff --git a/client/widgets/multilist.h b/client/widgets/multilist.h index cee6ccb..276c1b1 100644 --- a/client/widgets/multilist.h +++ b/client/widgets/multilist.h @@ -48,6 +48,9 @@ public slots: void remove(); void add(); + void enable(); + void disable(); + private: QListWidget *list; QVector< Widget* > widgets; diff --git a/client/widgets/radiobutton.cc b/client/widgets/radiobutton.cc index b757828..9e04e07 100644 --- a/client/widgets/radiobutton.cc +++ b/client/widgets/radiobutton.cc @@ -40,6 +40,10 @@ RadioButton::RadioButton(QDomNode &node) resize(width(), elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + if(elem.hasAttribute("caption")) { setText(elem.attribute("caption")); } else { diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc index 0c3892c..f0c9e8c 100644 --- a/client/widgets/radiobuttons.cc +++ b/client/widgets/radiobuttons.cc @@ -55,6 +55,10 @@ RadioButtons::RadioButtons(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + QDomNodeList children = node.childNodes(); for (int i=0; iaddWidget(radiobutton); radiobutton_list.push_back(radiobutton); } - - /* // This is done later - if(elem.hasAttribute("value")) { - setValue(elem.attribute("value")); - } - */ + layout()->setContentsMargins(0,0,0,0); } diff --git a/client/widgets/textedit.cc b/client/widgets/textedit.cc index dbc9e25..0cd2d4f 100644 --- a/client/widgets/textedit.cc +++ b/client/widgets/textedit.cc @@ -44,6 +44,10 @@ TextEdit::TextEdit(QDomNode &node, MacroWindow *macrowindow) setMinimumHeight(elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + connect(this, SIGNAL(textChanged()), this, SLOT(changed())); /* // This is done later diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index efba31c..de49968 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -39,8 +39,8 @@ Widget::Widget(QDomNode &node, MacroWindow *macrowindow) elem.tagName().toStdString().c_str()); } - if(elem.hasAttribute("lua")) { - luaprogram = elem.attribute("lua"); + if(elem.hasAttribute("script")) { + luaprogram = elem.attribute("script"); hasluaprogram = true; } else { hasluaprogram = false; diff --git a/client/widgets/window.cc b/client/widgets/window.cc index bda3667..c385d04 100644 --- a/client/widgets/window.cc +++ b/client/widgets/window.cc @@ -31,6 +31,8 @@ Window::Window(QDomNode &node, MacroWindow *macrowindow) : QWidget(NULL), Widget(node, macrowindow) { + setWindowFlags(Qt::WindowContextHelpButtonHint | Qt::WindowSystemMenuHint); + QDomElement elem = node.toElement(); if(elem.hasAttribute("width")) { @@ -43,6 +45,10 @@ Window::Window(QDomNode &node, MacroWindow *macrowindow) resize(width(), elem.attribute("height").toInt()); } + if(elem.hasAttribute("help")) { + setToolTip(elem.attribute("help")); + } + if(elem.hasAttribute("fixed")) { if(elem.attribute("fixed") == "true") { setFixedSize(width(), height()); -- cgit v1.2.3