blob: c6bf5d098c0764a99a04fe02b65e34916837e1d7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/***************************************************************************
* metawidget.h
*
* Wed Nov 26 08:51:52 CET 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_METAWIDGET_H__
#define __PRACRO_METAWIDGET_H__
#include "widget.h"
#include <QDomNode>
#include <QListWidget>
#include <QVector>
/***
* Meta Widget
* @extends widget
* @tag metawidget
* @screenshot An example of a metawidget with two inner widgets. The metawidget is not in itself visible.
* <metawidget layout="vbox" name="dims" format="''" storechildren="true">
* <lineedit name="test1" value="test"/>
* <checkbox name="test2" value="ja" truevalue="ja" falsevalue="nej"
* caption="Og svaret er?"/>
* </metawidget>
* @container
* This widget is simply a container compositing its value from the widgets
* within it. The value of the widget cannot be set and its value attribute is
* therefore ignored.
* @example An example of how to use metawidget with two inner widgets:
* <metawidget layout="vbox" name="dims" storechildren="true"
* format="return widget('test1'):value() .. ': ' .. widget('test2'):value()">
* <lineedit name="test1" value="test"/>
* <checkbox name="test2" value="ja" truevalue="ja" falsevalue="nej"
* caption="Og svaret er?"/>
* </metawidget>
* @att layout the layout of the widget. Can be one of 'vbox' or 'hbox'.
* @att storechildren This attribute indicates wether the child widgets should
* be stored on macro commit. It can be either 'true' or 'false'.
* @att format This attribute contains lua code. The return value of the code
* is the resulting value of the meta widget.
* @att layout The layout assigned to the widget. Can be one of 'hbox' or
* 'vbox'.
*/
class QFrame;
class MetaWidget : public Widget
{
Q_OBJECT
public:
MetaWidget(QDomNode &node, MacroWindow *macrowindow);
~MetaWidget();
QString value();
void setValue(QString value, QString source);
bool preValid();
void setWdgValid(bool valid);
bool setKeyboardFocus();
// void reset();
public slots:
void changed();
private:
QListWidget *list;
QVector< Widget* > widgets;
QString format;
QString formatlanguage;
bool storechildren;
QFrame *frame;
};
#endif/*__PRACRO_METAWIDGET_H__*/
|