summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmviewbase.h
blob: 6cb92b09d030dd5997aa6687962e58e22093b308 (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
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2003 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 PMVIEWBASE_H
#define PMVIEWBASE_H

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

#include <tqwidget.h>
#include <tqstring.h>

class TQDomElement;

/**
 * This class stores the view configuration for one view.
 *
 * Reimplement this class for each view type that has to store
 * additional values.
 *
 * Created, loaded from and saved to the xml config by the corresponding
 * @ref PMViewTypeFactory factory class.
 */
class PMViewOptions
{
public:
   /**
    * Returns a deep copy
    */
   virtual PMViewOptions* copy( ) const = 0;
   /**
    * Returns the identifier for the view type. Has to be equal
    * to @ref PMViewBase::viewType for the corresponding view type.
    */
   virtual TQString viewType( ) const = 0;
   /**
    * Loads the data from the xml element
    */
   virtual void loadData( TQDomElement& e ) = 0;
   /**
    * Saves the data from to xml element
    */
   virtual void saveData( TQDomElement& e ) = 0;
};

/**
 * Base class for configuration widgets for view types
 * for the layout settings dialog page
 */
class PMViewOptionsWidget : public TQWidget
{
   Q_OBJECT
  
public:
   /**
    * Default constructor
    */
   PMViewOptionsWidget( TQWidget* parent, const char* name = 0 )
         : TQWidget( parent, name )
   {
   }

signals:
   /**
    * Emitted when the view type description has changed
    */
   void viewTypeDescriptionChanged( );
};

/**
 * Interface for views.
 *
 * Each view type has to implement this interface. Handles the
 * config loading and saving
 */
class PMViewBase : public TQWidget
{
	Q_OBJECT
  
public:
   /**
    * Default constructor
    */
   PMViewBase( TQWidget* parent, const char* name = 0, WFlags f = 0 )
         : TQWidget( parent, name, f )
   {
   }
   /**
    * Returns the identifier for the view type. Has to be unique
    * for all view types.
    */
   virtual TQString viewType( ) const = 0;
   /**
    * Returns a i18n'ed description
    */
   virtual TQString description( ) const = 0;
   /**
    * Restores the view configuration
    *
    * Reimplement this function if the view type has to
    * restore additional values.
    * @see PMViewOptions
    */
   virtual void restoreViewConfig( PMViewOptions* ) { }
   /**
    * Saves the view configuration
    *
    * Reimplement this function if the view type has to
    * restore additional values.
    * @see PMViewOptions
    */
   virtual void saveViewConfig( PMViewOptions* ) const { }
};

#endif