summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/muse/plugingui.h
blob: e54e683a37dccc8d91146f90e7443f975e98090b (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
//=============================================================================
//  MusE
//  Linux Music Editor
//  $Id:$
//
//  Copyright (C) 2002-2006 by Werner Schweer and others
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License version 2.
//
//  This program 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 this program; if not, write to the Free Software
//  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//=============================================================================

#ifndef __PLUGINGUI_H__
#define __PLUGINGUI_H__

namespace Awl {
      class FloatEntry;
      };
using Awl::FloatEntry;

class Plugin;
class PluginI;

//---------------------------------------------------------
//   GuiParam
//---------------------------------------------------------

struct GuiParam {
      enum {
            GUI_SLIDER, GUI_SWITCH
            };
      int type;
      FloatEntry* label;
      QWidget* actuator;  // Slider or Toggle Button (SWITCH)
      };

//---------------------------------------------------------
//   GuiWidget
//---------------------------------------------------------

struct GuiWidget {
      enum {
            SLIDER, FLOAT_ENTRY, CHECKBOX, COMBOBOX
            } type;
      QWidget* widget;
      int parameter;
      };

//---------------------------------------------------------
//   PluginGui
//---------------------------------------------------------

class PluginGui : public QMainWindow {
      Q_OBJECT

      PluginI* plugin;        // plugin instance
      std::vector<GuiWidget> gw;

      QAction* onOff;
      void connectPrebuiltGui(QWidget* wContainer);

   private slots:
      void load();
      void save();
      void bypassToggled(bool);

      void setController(double, int);
      void autoChanged();

   public:
      PluginGui(PluginI*);
      ~PluginGui();
      void setOn(bool);
      void updateValue(int, double);
      void updateValues();

   public slots:
      void controllerChanged(int id);
      };

//---------------------------------------------------------
//   PluginDialog
//---------------------------------------------------------

enum { SEL_SM, SEL_S, SEL_M, SEL_ALL };

class PluginDialog : public QDialog {
      QTreeWidget* pList;
      QRadioButton* allPlug;
      QRadioButton* onlyM;
      QRadioButton* onlyS;
      QRadioButton* onlySM;

      Q_OBJECT

   public:
      PluginDialog(QWidget* parent=0);
      static Plugin* getPlugin(QWidget* parent);
      Plugin* value();
      void accept();

  public slots:
      void fillPlugs(QAbstractButton*);
      void fillPlugs(int i);
      void fillPlugs(const QString& sortValue);

  private:
	QComboBox *sortBox;
	static int selectedPlugType;
	static QStringList sortItems;
      };

#endif