~ubuntu-branches/ubuntu/gutsy/muse/gutsy

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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
//=========================================================
//  MusE
//  Linux Music Editor
//  $Id: app.h,v 1.3 2003/10/30 12:11:50 wschweer Exp $
//
//  (C) Copyright 1999-2002 Werner Schweer (ws@seh.de)
//=========================================================

#ifndef __APP_H__
#define __APP_H__

#include "config.h"

#include <qmainwindow.h>
#include <qrect.h>
#include "cobject.h"
#include "tools.h"
#include <qfileinfo.h>

class Part;
class PartList;
class QToolBar;
class QPopupMenu;
class Transport;
class BigTime;
class Arranger;
class Instrument;
class QListView;
class QListViewItem;
class QPoint;
class QToolButton;
class Track;
class PrinterConfig;
class Mixer;
class MidiSyncConfig;
class MRConfig;
class MetronomeConfig;
class AudioConf;
class Xml;
class AudioMixerApp;
class ClipListEdit;
class AudioRecord;
class MidiFileConfig;
class MidiFilterConfig;
class MarkerView;
class GlobalSettingsConfig;
class MidiControllerEditDialog;
class MidiInputTransformDialog;
class MidiTransformerDialog;
class SynthI;
class RhythmGen;

extern void configMidiController();

//---------------------------------------------------------
//   MusE
//---------------------------------------------------------

class MusE : public QMainWindow
      {
      Q_OBJECT
      enum {CMD_CUT, CMD_COPY, CMD_PASTE, CMD_DELETE, CMD_ADD_TRACK,
            CMD_SELECT_ALL, CMD_SELECT_NONE, CMD_SELECT_INVERT,
            CMD_SELECT_ILOOP, CMD_SELECT_OLOOP, CMD_SELECT_PARTS,
            CMD_FOLLOW_NO, CMD_FOLLOW_JUMP, CMD_FOLLOW_CONTINUOUS ,
            CMD_DELETE_TRACK
            };

      QString appName;

      QString configName;
      QString _currentTheme;
      QString configTheme;
      QColor configActivityColor;
      int configActivityMode;

      QFileInfo project;

      QToolBar *tools;
      Transport* transport;
      BigTime* bigtime;
      QPopupMenu *menu_file, *menu_display, *menu_config, *menu_help;
      QPopupMenu *menuEdit, *menuStructure;
      QPopupMenu* menu_audio;
      QPopupMenu* menu_functions;
      int aid1, aid2, aid3, midid1;
      int tr_id, bt_id;
      QPopupMenu* follow;
      int fid0, fid1, fid2;
      QPopupMenu* midiInputPlugins;
      int mpid0, mpid1, mpid2, mpid3, mpid4;
      Arranger* arranger;

      QWidget* midiPortConfig;
      QWidget* softSynthesizerConfig;
      MidiSyncConfig* midiSyncConfig;
      MRConfig* midiRemoteConfig;
      RhythmGen* midiRhythmGenerator;
      MetronomeConfig* metronomeConfig;
      AudioConf* audioConfig;
      MidiFileConfig* midiFileConfig;
      GlobalSettingsConfig* globalSettingsConfig;
      MidiFilterConfig* midiFilterConfig;
      MidiInputTransformDialog* midiInputTransform;

      PrinterConfig* printerConfig;
      QRect configGeometryTransport;
      QRect configGeometryBigTime;
      bool configTransportVisible;
      bool configBigTimeVisible;
      QColor configTransportHandleColor;
      QColor configBigTimeForegroundColor;
      QColor configBigTimeBackgroundColor;

      ToplevelList toplevels;
      Mixer* midiMixer;
      ClipListEdit* clipListEdit;
      bool newSongFlag;
      MarkerView* markerView;
      MidiTransformerDialog* midiTransformerDialog;
      QPopupMenu* openRecent;

      bool readMidi(FILE*);
      void read(Xml& xml);
      void write(Xml& xml) const;
      bool clearSong();
      void load();
      bool save(const QString&, bool);
      void setFollow();
      void readConfigTransport(Xml& xml);
      void readConfigBigTime(Xml& xml);
      void readConfigParts(Xml& xml);
      void readConfigPrinter(Xml& xml);
      void readMidiport(Xml& xml);
      void readMidichannel(Xml& xml, int port);
      void readCtrl(Xml& xml, int port, int channel);
      void readToplevels(Xml& xml);
      PartList* getMidiPartsToEdit();
      Part* readPart(Xml& xml);
      void writeSoftSynth(int, Xml&) const;
      void readSoftSynth(Xml&);
      void loadProjectFile1(const QString&);

   private slots:
      void newSong();
      void loadProject();
      bool save();
      void configPrinter();
      void configGlobalSettings();
      void quitDoc();
      void about();
      void aboutQt();
      void startHelpBrowser();
      void importMidi();
      void importWave();
      bool importWave(const QString&);
      void exportMidi();

      void toggleTransport();
      void toggleBigTime();

      void configMidiPorts();
      void configAudioPorts();
      void configMidiSync();
      void configMidiFile();
      void configMetronome();
      void configAppearance();
      void startEditor(PartList*, int);
      void startScoreEditor();
      void startScoreEditor(PartList*);
      void startMasterEditor();
      void startLMasterEditor();
      void startListEditor();
      void startListEditor(PartList*);
      void startDrumEditor();
      void startDrumEditor(PartList*);
      void startEditor(Track*);
      void startPianoroll();
      void startPianoroll(PartList* pl);
      void startWaveEditor();
      void startWaveEditor(PartList*);
      void startMidiTransformer();
      bool readConfiguration();
      void readConfiguration(Xml&);
      void writeConfiguration() const;
      void writeConfiguration(int level, Xml&) const;
      void startMidiMixer();
      void startDefineController();
      void startClipList();
      void startMarkerView();

      void openRecentMenu();
      void selectProject(int id);
      void cmd(int);
      void clipboardChanged();
      void selectionChanged();
      void transpose();
      void modifyGateTime();
      void modifyVelocity();
      void crescendo();
      void thinOut();
      void eraseEvent();
      void noteShift();
      void moveClock();
      void copyMeasure();
      void eraseMeasure();
      void deleteMeasure();
      void createMeasure();
      void mixTrack();
      void startMidiInputPlugin(int);
      void hideMitPluginTranspose();
      void hideMidiInputTransform();
      void hideMidiFilterConfig();
      void hideMidiRemoteConfig();
      void hideMidiRhythmGenerator();
      void globalCut();
      void globalInsert();
      void globalSplit();
      void copyRange();
      void cutEvents();
      void bounceToTrack();

   public slots:
      bool saveAs();
      void bounceToFile();
      void closeEvent(QCloseEvent*e);
      void ctrlChanged();
      void loadProjectFile(const QString&);
      void startAudioMixer();
      void toplevelDeleted(int tl);
      void loadTheme(QString);
      void setTransportHandleColor(QColor);
      void setBigTimeForegroundColor(QColor);
      void setBigTimeBackgroundColor(QColor);
      void setBigTimeChecked(bool);

   public:
      MusE(int argc, char** argv);
      ~MusE();
      QRect configGeometryMain;
      bool importMidi(const QString);
      void kbAccel(int);
      QString currentTheme() const { return _currentTheme; }
      QColor getTransportHandleColor();
      QColor getBigTimeForegroundColor();
      QColor getBigTimeBackgroundColor();
      void configChanged();
      void enableAudio(bool);
#ifdef HAVE_LADCCA
      void cca_idle_cb ();
#endif
      };

#endif