summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmobjectselect.h
blob: c69af315c08df89d79c00ab30dae016fbbef980d (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//-*-C++-*-
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2000-2002 by Andreas Zehender
    email                : zehender@kde.org
**************************************************************************

**************************************************************************
*                                                                        *
*  This program 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.                                   *
*                                                                        *
**************************************************************************/

#ifndef PMOBJECTSELECT_H
#define PMOBJECTSELECT_H

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <kdialogbase.h>
#include <qlistbox.h>
#include <qsize.h>
#include <qvaluelist.h>
#include <qstringlist.h>
#include "pmobject.h"
#include "pmdeclare.h"

/**
 * QListBoxItem for @ref PMObject
 */
class PMListBoxObject : public QListBoxPixmap
{
public:
   /**
    * Constructs a list box item in listbox listbox showing the
    * object obj. The item gets inserted after the item after
    */
   PMListBoxObject( QListBox* listbox, PMObject* obj, QListBoxItem* after );
   /**
    * Constructs a list box item in listbox listbox showing the object obj
    */
   PMListBoxObject( QListBox* listbox, PMObject* obj );
   /**
    * Constructs a list box item showing the object obj
    */
   PMListBoxObject( PMObject* obj );
   /**
    * Constructs a list box item in listbox listbox showing the
    * text text. The item gets inserted after the item after
    */
   PMListBoxObject( QListBox* listbox, PMObject* obj, const QString& text,
                    QListBoxItem* after );
   /**
    * Constructs a list box item in listbox listbox showing the text text
    */
   PMListBoxObject( QListBox* listbox, PMObject* obj, const QString& text );
   /**
    * Constructs a list box item showing the text text
    */
   PMListBoxObject( PMObject* obj, const QString& text );
   /**
    * Deletes the item
    */
   ~PMListBoxObject( );

   /**
    * Returns a pointer to the object
    */
   PMObject* object( ) const { return m_pObject; }
private:
   static QString checkName( const QString& text );
   PMObject* m_pObject;
};

/**
 * A PMObject selection widget
 */
class PMObjectSelect : public KDialogBase
{
   Q_OBJECT
public:
   /**
    * Creates a selection widget with parent and name
    */
   PMObjectSelect( QWidget* parent = 0, const char* name = 0,
                   bool modal = true );
   /**
    * Deletes the dialog
    */
   ~PMObjectSelect( );

   /**
    * Appends the object to the list of choosable objects
    */
   void addObject( PMObject* obj );
   
   /**
    * Returns the currently selected object
    */
   PMObject* selectedObject( ) const { return m_pSelectedObject; }
   
   /**
    * Create a modal dialog and let the user choose an declare object
    * of type t.
    *
    * Only objects above the object link  are listed.
    */
   static int selectObject( PMObject* link, const QString& t, PMObject* & obj,
                            QWidget* parent = 0 );
   static int selectObject( PMObject* link, const QStringList& t,
                            PMObject* & obj, QWidget* parent = 0 );
   static int selectDeclare( PMObject* link, const QString& declareType,
                             PMObject* & obj, QWidget* parent = 0 );
   static int selectDeclare( PMObject* link, const QStringList& dt,
                             PMObject* & obj, QWidget* parent = 0 );
   
protected slots:
   void slotHighlighted( QListBoxItem* lbi );
   void slotSelected( QListBoxItem* lbi );
private:
   QListBox* m_pListBox;
   PMObject* m_pSelectedObject;
   static QSize s_size;
};

#endif