summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmobjectselect.h
blob: 8130f242e92936110c11760ec51f4bc0c7b2c4ba (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
/*
**************************************************************************
                                 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 <tqlistbox.h>
#include <tqsize.h>
#include <tqvaluelist.h>
#include <tqstringlist.h>
#include "pmobject.h"
#include "pmdeclare.h"

/**
 * TQListBoxItem for @ref PMObject
 */
class PMListBoxObject : public TQListBoxPixmap
{
public:
   /**
    * Constructs a list box item in listbox listbox showing the
    * object obj. The item gets inserted after the item after
    */
   PMListBoxObject( TQListBox* listbox, PMObject* obj, TQListBoxItem* after );
   /**
    * Constructs a list box item in listbox listbox showing the object obj
    */
   PMListBoxObject( TQListBox* 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( TQListBox* listbox, PMObject* obj, const TQString& text,
                    TQListBoxItem* after );
   /**
    * Constructs a list box item in listbox listbox showing the text text
    */
   PMListBoxObject( TQListBox* listbox, PMObject* obj, const TQString& text );
   /**
    * Constructs a list box item showing the text text
    */
   PMListBoxObject( PMObject* obj, const TQString& text );
   /**
    * Deletes the item
    */
   ~PMListBoxObject( );

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

/**
 * A PMObject selection widget
 */
class PMObjectSelect : public KDialogBase
{
   Q_OBJECT
  
public:
   /**
    * Creates a selection widget with parent and name
    */
   PMObjectSelect( TQWidget* 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 TQString& t, PMObject* & obj,
                            TQWidget* parent = 0 );
   static int selectObject( PMObject* link, const TQStringList& t,
                            PMObject* & obj, TQWidget* parent = 0 );
   static int selectDeclare( PMObject* link, const TQString& declareType,
                             PMObject* & obj, TQWidget* parent = 0 );
   static int selectDeclare( PMObject* link, const TQStringList& dt,
                             PMObject* & obj, TQWidget* parent = 0 );
   
protected slots:
   void slotHighlighted( TQListBoxItem* lbi );
   void slotSelected( TQListBoxItem* lbi );
private:
   TQListBox* m_pListBox;
   PMObject* m_pSelectedObject;
   static TQSize s_size;
};

#endif