2
* psiwidgets.cpp - plugin for loading Psi's custom widgets into Qt Designer
3
* Copyright (C) 2003-2005 Michail Pishchagin
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2.1 of the License, or (at your option) any later version.
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
15
* You should have received a copy of the GNU Lesser General Public
16
* License along with this library; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
#include "psiwidgets.h"
23
#include "busywidget.h"
24
#include "fancylabel.h"
25
#include "iconwidget.h"
26
#include "iconlabel.h"
27
#include "iconbutton.h"
28
#include "iconsetselect.h"
29
#include "iconsetdisplay.h"
30
#include "icontoolbutton.h"
32
#include "psitextview.h"
34
static const char *psiwidget_data[] = {
58
//----------------------------------------------------------------------------
59
// PsiWidgetPlugin - base plugin class to avoid code duplication
60
//----------------------------------------------------------------------------
62
PsiWidgetPlugin::PsiWidgetPlugin( QObject *parent )
68
QWidget *PsiWidgetPlugin::createWidget(QWidget */* parent */)
73
QString PsiWidgetPlugin::name() const
78
QString PsiWidgetPlugin::group() const
83
QString PsiWidgetPlugin::toolTip() const
88
QString PsiWidgetPlugin::whatsThis() const
93
QString PsiWidgetPlugin::includeFile() const
98
QString PsiWidgetPlugin::codeTemplate() const
103
QString PsiWidgetPlugin::domXml() const
108
QIcon PsiWidgetPlugin::icon() const
110
return QIconSet( QPixmap( (const char **)psiwidget_data ) );
113
bool PsiWidgetPlugin::isContainer() const
118
void PsiWidgetPlugin::initialize( QDesignerFormEditorInterface * )
126
bool PsiWidgetPlugin::isInitialized() const
131
//----------------------------------------------------------------------------
133
//----------------------------------------------------------------------------
135
class BusyWidgetPlugin : public PsiWidgetPlugin
139
BusyWidgetPlugin( QObject *parent = 0 )
140
: PsiWidgetPlugin( parent )
145
QWidget *createWidget(QWidget *parent)
147
return new BusyWidget( parent );
155
QString domXml() const
157
return "<widget class=\"BusyWidget\" name=\"busyWidget\">\n"
161
QString whatsThis() const
163
return "Widget for indicating that program is doing something.";
166
QString includeFile() const
168
return "busywidget.h";
173
//----------------------------------------------------------------------------
175
//----------------------------------------------------------------------------
177
class IconLabelPlugin : public PsiWidgetPlugin
181
IconLabelPlugin( QObject *parent = 0 )
182
: PsiWidgetPlugin( parent )
187
QWidget *createWidget(QWidget *parent)
189
return new IconLabel( parent );
197
QString domXml() const
199
return "<widget class=\"IconLabel\" name=\"iconLabel\">\n"
200
" <property name=\"geometry\">\n"
204
" <width>100</width>\n"
205
" <height>100</height>\n"
211
QString whatsThis() const
213
return "Label that can contain animated PsiIcon.";
216
QString includeFile() const
218
return "iconlabel.h";
222
//----------------------------------------------------------------------------
224
//----------------------------------------------------------------------------
226
class FancyLabelPlugin : public PsiWidgetPlugin
230
FancyLabelPlugin( QObject *parent = 0 )
231
: PsiWidgetPlugin( parent )
236
QWidget *createWidget(QWidget *parent)
238
return new FancyLabel( parent );
246
QString domXml() const
248
return "<widget class=\"FancyLabel\" name=\"fancyLabel\">\n"
249
" <property name=\"geometry\">\n"
253
" <width>100</width>\n"
254
" <height>100</height>\n"
260
QString whatsThis() const
262
return "Just a Fancy Label. Use it for decoration of dialogs. ;-)";
265
QString includeFile() const
267
return "fancylabel.h";
271
//----------------------------------------------------------------------------
272
// IconsetSelectPlugin
273
//----------------------------------------------------------------------------
275
class IconsetSelectPlugin : public PsiWidgetPlugin
279
IconsetSelectPlugin( QObject *parent = 0 )
280
: PsiWidgetPlugin( parent )
285
QWidget *createWidget(QWidget *parent)
287
return new IconsetSelect( parent );
292
return "IconsetSelect";
295
QString domXml() const
297
return "<widget class=\"IconsetSelect\" name=\"iconsetSelect\">\n"
301
QString whatsThis() const
303
return "Widget for Iconset selection.";
306
QString includeFile() const
308
return "iconsetselect.h";
312
//----------------------------------------------------------------------------
313
// IconsetDisplayPlugin
314
//----------------------------------------------------------------------------
316
class IconsetDisplayPlugin : public PsiWidgetPlugin
320
IconsetDisplayPlugin( QObject *parent = 0 )
321
: PsiWidgetPlugin( parent )
326
QWidget *createWidget(QWidget *parent)
328
return new IconsetDisplay( parent );
333
return "IconsetDisplay";
336
QString domXml() const
338
return "<widget class=\"IconsetDisplay\" name=\"iconsetDisplay\">\n"
342
QString whatsThis() const
344
return "Displays all icons in Iconset.";
347
QString includeFile() const
349
return "iconsetdisplay.h";
353
//----------------------------------------------------------------------------
355
//----------------------------------------------------------------------------
357
class IconButtonPlugin : public PsiWidgetPlugin
361
IconButtonPlugin( QObject *parent = 0 )
362
: PsiWidgetPlugin( parent )
367
QWidget *createWidget(QWidget *parent)
369
return new IconButton( parent );
377
QString domXml() const
379
return "<widget class=\"IconButton\" name=\"iconButton\">\n"
383
QString whatsThis() const
385
return "PushButton that can contain animated PsiIcon.";
388
QString includeFile() const
390
return "iconbutton.h";
394
//----------------------------------------------------------------------------
395
// IconToolButtonPlugin
396
//----------------------------------------------------------------------------
398
class IconToolButtonPlugin : public PsiWidgetPlugin
402
IconToolButtonPlugin( QObject *parent = 0 )
403
: PsiWidgetPlugin( parent )
408
QWidget *createWidget(QWidget *parent)
410
return new IconToolButton( parent );
415
return "IconToolButton";
418
QString domXml() const
420
return "<widget class=\"IconToolButton\" name=\"iconToolButton\">\n"
424
QString whatsThis() const
426
return "ToolButton that can contain animated PsiIcon.";
429
QString includeFile() const
431
return "icontoolbutton.h";
435
//----------------------------------------------------------------------------
437
//----------------------------------------------------------------------------
439
class PsiTextViewPlugin : public PsiWidgetPlugin
443
PsiTextViewPlugin( QObject *parent = 0 )
444
: PsiWidgetPlugin( parent )
449
QWidget *createWidget(QWidget *parent)
451
return new PsiTextView( parent );
456
return "PsiTextView";
459
QString domXml() const
461
return "<widget class=\"PsiTextView\" name=\"PsiTextView\">\n"
465
QString whatsThis() const
467
return "Widget for displaying rich-text data, with inline Icons.";
470
QString includeFile() const
472
return "psitextview.h";
477
//----------------------------------------------------------------------------
479
//----------------------------------------------------------------------------
481
class URLLabelPlugin : public PsiWidgetPlugin
485
URLLabelPlugin( QObject *parent = 0 )
486
: PsiWidgetPlugin( parent )
491
QWidget *createWidget(QWidget *parent)
493
return new URLLabel( parent );
501
QString domXml() const
503
return "<widget class=\"URLLabel\" name=\"URLLabel\">\n"
504
" <property name=\"url\">\n"
505
" <string>http://host</string>\n"
507
" <property name=\"title\">\n"
508
" <string>The Title</string>\n"
513
QString whatsThis() const
515
return "Widget for displaying clickable URLs.";
518
QString includeFile() const
524
//----------------------------------------------------------------------------
525
// AllPsiWidgetsPlugin
526
//----------------------------------------------------------------------------
528
class AllPsiWidgetsPlugin : public QObject, public QDesignerCustomWidgetCollectionInterface
531
Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)
533
AllPsiWidgetsPlugin(QObject *parent = 0)
536
plugins.append( new BusyWidgetPlugin( this ) );
537
plugins.append( new IconLabelPlugin( this ) );
538
plugins.append( new FancyLabelPlugin( this ) );
539
plugins.append( new IconsetSelectPlugin( this ) );
540
plugins.append( new IconsetDisplayPlugin( this ) );
541
plugins.append( new IconButtonPlugin( this ) );
542
plugins.append( new IconToolButtonPlugin( this ) );
543
plugins.append( new PsiTextViewPlugin( this ) );
544
plugins.append( new URLLabelPlugin( this ) );
547
virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const
553
QList<QDesignerCustomWidgetInterface*> plugins;
556
Q_EXPORT_PLUGIN( AllPsiWidgetsPlugin );
558
#include "psiwidgets.moc"