summaryrefslogtreecommitdiff
path: root/muse2/muse/app.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/app.h')
-rw-r--r--muse2/muse/app.h327
1 files changed, 327 insertions, 0 deletions
diff --git a/muse2/muse/app.h b/muse2/muse/app.h
new file mode 100644
index 00000000..3e0d36a6
--- /dev/null
+++ b/muse2/muse/app.h
@@ -0,0 +1,327 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: app.h,v 1.34.2.14 2009/11/16 11:29:33 lunar_shuttle Exp $
+//
+// (C) Copyright 1999-2004 Werner Schweer (ws@seh.de)
+//=========================================================
+
+#ifndef __APP_H__
+#define __APP_H__
+
+#include "config.h"
+
+#include <q3mainwindow.h>
+#include <qrect.h>
+//Added by qt3to4:
+#include <Qt3Support>
+#include <Q3PopupMenu>
+#include <QFocusEvent>
+#include <QCloseEvent>
+#include "cobject.h"
+#include "tools.h"
+#include <qfileinfo.h>
+
+class Part;
+class PartList;
+class Q3ToolBar;
+class Q3PopupMenu;
+class Transport;
+class BigTime;
+class Arranger;
+class Instrument;
+class Q3ListView;
+class Q3ListViewItem;
+class QPoint;
+class QToolButton;
+class PopupMenu;
+class Track;
+class PrinterConfig;
+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;
+class MidiTrack;
+class MidiInstrument;
+class MidiPort;
+class ShortcutConfig;
+class Appearance;
+class WaveTrack;
+class AudioOutput;
+class EditInstrument;
+
+#define MENU_ADD_SYNTH_ID_BASE 0x1000
+
+//---------------------------------------------------------
+// MusE
+//---------------------------------------------------------
+
+class MusE : public Q3MainWindow
+ {
+ Q_OBJECT
+ enum {CMD_CUT, CMD_COPY, CMD_PASTE, CMD_INSERT, CMD_INSERTMEAS, CMD_PASTE_CLONE,
+ CMD_PASTE_TO_TRACK, CMD_PASTE_CLONE_TO_TRACK, CMD_DELETE,
+ 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
+ };
+
+ //File menu items:
+ enum { CMD_OPEN_RECENT=0, CMD_LOAD_TEMPLATE, CMD_SAVE_AS, CMD_IMPORT_MIDI,
+ CMD_EXPORT_MIDI, CMD_IMPORT_PART, CMD_IMPORT_AUDIO, CMD_QUIT, CMD_OPEN_DRUMS, CMD_OPEN_WAVE,
+ CMD_OPEN_LIST, CMD_OPEN_LIST_MASTER, CMD_GLOBAL_CONFIG,
+ CMD_OPEN_GRAPHIC_MASTER, CMD_OPEN_MIDI_TRANSFORM, CMD_TRANSPOSE,
+ CMD_GLOBAL_CUT, CMD_GLOBAL_INSERT, CMD_GLOBAL_SPLIT, CMD_COPY_RANGE,
+ CMD_CUT_EVENTS, CMD_CONFIG_SHORTCUTS, CMD_CONFIG_METRONOME, CMD_CONFIG_MIDISYNC,
+ CMD_MIDI_FILE_CONFIG, CMD_APPEARANCE_SETTINGS, CMD_CONFIG_MIDI_PORTS, CMD_CONFIG_AUDIO_PORTS,
+ CMD_MIDI_EDIT_INSTRUMENTS, CMD_MIDI_RESET, CMD_MIDI_INIT, CMD_MIDI_LOCAL_OFF,
+ CMD_MIXER_SNAPSHOT, CMD_MIXER_AUTOMATION_CLEAR, CMD_OPEN_HELP, CMD_OPEN_HOMEPAGE,
+ CMD_OPEN_BUG, CMD_START_WHATSTHIS,
+ CMD_AUDIO_BOUNCE_TO_FILE, CMD_AUDIO_BOUNCE_TO_TRACK, CMD_AUDIO_RESTART,
+ CMD_LAST };
+
+ int menu_ids[CMD_LAST];
+ Q3Action *fileSaveAction, *fileOpenAction, *pianoAction, *fileNewAction, /* *markerAction,*/ *testAction;
+ QString appName;
+
+ QFileInfo project;
+ Q3ToolBar *tools;
+ EditToolBar *tools1;
+
+ Transport* transport;
+ BigTime* bigtime;
+ EditInstrument* editInstrument;
+
+ Q3PopupMenu *menu_file, *menuView, *menuSettings, *menu_help;
+ Q3PopupMenu *menuEdit, *menuStructure;
+ Q3PopupMenu* menu_audio, *menuAutomation;
+ Q3PopupMenu* menu_functions, *menuScriptPlugins;
+ Q3PopupMenu* select, *master, *midiEdit, *addTrack;
+
+ // Special 'stay-open' menu for routes.
+ PopupMenu* routingPopupMenu;
+
+ int aid1a, aid1b, aid2, aid3, autoId;
+ int tr_id, bt_id, mr_id;
+ int cc_id;
+ Q3PopupMenu* follow;
+ int fid0, fid1, fid2;
+ Q3PopupMenu* midiInputPlugins;
+ int mpid0, mpid1, mpid2, mpid3, mpid4;
+
+ QWidget* midiPortConfig;
+ QWidget* softSynthesizerConfig;
+ MidiSyncConfig* midiSyncConfig;
+ MRConfig* midiRemoteConfig;
+ RhythmGen* midiRhythmGenerator;
+ MetronomeConfig* metronomeConfig;
+ AudioConf* audioConfig;
+ MidiFileConfig* midiFileConfig;
+ GlobalSettingsConfig* globalSettingsConfig;
+ MidiFilterConfig* midiFilterConfig;
+ MidiInputTransformDialog* midiInputTransform;
+ ShortcutConfig* shortcutConfig;
+ Appearance* appearance;
+ AudioMixerApp* mixer1;
+ AudioMixerApp* mixer2;
+
+ ToplevelList toplevels;
+ ClipListEdit* clipListEdit;
+ MarkerView* markerView;
+ MidiTransformerDialog* midiTransformerDialog;
+ Q3PopupMenu* openRecent;
+
+ bool readMidi(FILE*);
+ void read(Xml& xml, bool skipConfig);
+ void processTrack(MidiTrack* track);
+
+ void write(Xml& xml) const;
+ bool clearSong();
+ bool save(const QString&, bool);
+ void setUntitledProject();
+ void setConfigDefaults();
+
+ void setFollow();
+ void readConfigParts(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);
+ bool checkRegionNotNull();
+ void loadProjectFile1(const QString&, bool songTemplate, bool loadAll);
+ void writeGlobalConfiguration(int level, Xml&) const;
+ void writeConfiguration(int level, Xml&) const;
+ void updateConfiguration();
+
+ virtual void focusInEvent(QFocusEvent*);
+
+ signals:
+ void configChanged();
+
+ private slots:
+ //void runPythonScript();
+ void loadProject();
+ bool save();
+ void configGlobalSettings();
+ void quitDoc();
+ void about();
+ void aboutQt();
+ void startHelpBrowser();
+ void startHomepageBrowser();
+ void startBugBrowser();
+ void launchBrowser(QString &whereTo);
+ void importMidi();
+ void importWave();
+ void importPart();
+ void exportMidi();
+
+ void toggleTransport();
+ void toggleMarker();
+ void toggleBigTime();
+ //void toggleMixer();
+ void toggleMixer1();
+ void toggleMixer2();
+
+ void configMidiPorts();
+ void configMidiSync();
+ void configMidiFile();
+ void configShortCuts();
+ void configMetronome();
+ void configAppearance();
+ void startEditor(PartList*, int);
+ 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 startSongInfo(bool editable=true);
+
+ void startMidiTransformer();
+ void writeGlobalConfiguration() const;
+ void startEditInstrument();
+ void startClipList();
+
+ 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();
+ void resetMidiDevices();
+ void initMidiDevices();
+ void localOff();
+ void switchMixerAutomation();
+ void takeAutomationSnapshot();
+ void clearAutomation();
+ void bigtimeClosed();
+ //void mixerClosed();
+ void mixer1Closed();
+ void mixer2Closed();
+ void markerClosed();
+
+ void execDeliveredScript(int);
+ void execUserScript(int);
+
+ public slots:
+ bool saveAs();
+ void bounceToFile(AudioOutput* ao = 0);
+ void closeEvent(QCloseEvent*e);
+ void loadProjectFile(const QString&);
+ void loadProjectFile(const QString&, bool songTemplate, bool loadAll);
+ void toplevelDeleted(unsigned long tl);
+ void loadTheme(QString);
+ bool seqRestart();
+ void loadTemplate();
+ void showBigtime(bool);
+ //void showMixer(bool);
+ void showMixer1(bool);
+ void showMixer2(bool);
+ void showMarker(bool);
+ void importMidi(const QString &file);
+ void setUsedTool(int);
+ void showDidYouKnowDialog();
+
+ void routingPopupMenuAboutToHide();
+
+ public:
+ MusE(int argc, char** argv);
+ Arranger* arranger;
+ QRect configGeometryMain;
+ bool importMidi(const QString name, bool merge);
+ void kbAccel(int);
+ void changeConfig(bool writeFlag);
+
+ void seqStop();
+ bool seqStart();
+ void setHeartBeat();
+ void importController(int, MidiPort*, int);
+ //QWidget* mixerWindow();
+ QWidget* mixer1Window();
+ QWidget* mixer2Window();
+ QWidget* transportWindow();
+ QWidget* bigtimeWindow();
+ bool importWaveToTrack(QString& name, unsigned tick=0, Track* track=NULL);
+ void importPartToTrack(QString& filename, unsigned tick, Track* track);
+
+ void showTransport(bool flag);
+
+ // Special 'stay-open' menu for routes.
+ PopupMenu* getRoutingPopupMenu();
+ PopupMenu* prepareRoutingPopupMenu(Track* /*track*/, bool /*dst*/);
+ void routingPopupMenuActivated(Track* /*track*/, int /*id*/);
+ void updateRouteMenus(Track* /*track*/, QObject* /*master*/);
+
+#ifdef HAVE_LASH
+ void lash_idle_cb ();
+#endif
+ };
+
+extern void addProject(const QString& name);
+#endif
+