--- qsampler/trunk/src/qsamplerMainForm.h 2007/11/01 17:49:27 1465 +++ qsampler/trunk/src/qsamplerMainForm.h 2010/01/06 09:52:32 2036 @@ -1,8 +1,8 @@ // qsamplerMainForm.h // /**************************************************************************** - Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved. - Copyright (C) 2007, Christian Schoenebeck + Copyright (C) 2004-2010, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2007, 2008 Christian Schoenebeck This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -23,140 +23,160 @@ #ifndef __qsamplerMainForm_h #define __qsamplerMainForm_h -#include - -#include -#include -#include -#include -#include - #include "ui_qsamplerMainForm.h" -#include "qsamplerChannelStrip.h" -#include "qsamplerMessages.h" -#include "qsamplerInstrumentListForm.h" -#include "qsamplerDeviceForm.h" +#include + +class QProcess; +class QWorkspace; +class QSpinBox; +class QSlider; +class QLabel; namespace QSampler { +class Options; +class Messages; +class Channel; +class ChannelStrip; class DeviceForm; +class InstrumentListForm; + +//------------------------------------------------------------------------- +// QSampler::MainForm -- Main window form implementation. +// + +class MainForm : public QMainWindow +{ + Q_OBJECT -class MainForm : public QMainWindow { -Q_OBJECT public: - MainForm(QWidget* parent = 0); - ~MainForm(); - void setup(qsamplerOptions* pOptions); - void contextMenuEvent(QContextMenuEvent *pEvent); - qsamplerOptions* options(void); - lscp_client_t* client(void); - QString sessionName(const QString& sFilename); - void appendMessages(const QString& s); - void appendMessagesColor(const QString& s, const QString& c); - void appendMessagesText(const QString& s); - void appendMessagesError(const QString& s); - void appendMessagesClient(const QString& s); - ChannelStrip* createChannelStrip(qsamplerChannel *pChannel); - ChannelStrip* activeChannelStrip(void); - ChannelStrip* channelStripAt(int iChannel); - ChannelStrip* channelStrip(int iChannelID); - static MainForm* getInstance(void); + + MainForm(QWidget *pParent = NULL); + ~MainForm(); + + void setup(Options* pOptions); + + Options* options() const; + lscp_client_t* client() const; + + QString sessionName(const QString& sFilename); + + void appendMessages(const QString& s); + void appendMessagesColor(const QString& s, const QString& c); + void appendMessagesText(const QString& s); + void appendMessagesError(const QString& s); + void appendMessagesClient(const QString& s); + + ChannelStrip* createChannelStrip(Channel *pChannel); + void destroyChannelStrip(ChannelStrip* pChannelStrip); + ChannelStrip* activeChannelStrip(); + ChannelStrip* channelStripAt(int iChannel); + ChannelStrip* channelStrip(int iChannelID); + + void contextMenuEvent(QContextMenuEvent *pEvent); + + static MainForm* getInstance(); public slots: - void sessionDirty(void); - void stabilizeForm(void); + + void fileNew(); + void fileOpen(); + void fileOpenRecent(); + void fileSave(); + void fileSaveAs(); + void fileReset(); + void fileRestart(); + void fileExit(); + void editAddChannel(); + void editRemoveChannel(); + void editSetupChannel(); + void editEditChannel(); + void editResetChannel(); + void editResetAllChannels(); + void viewMenubar(bool bOn); + void viewToolbar(bool bOn); + void viewStatusbar(bool bOn); + void viewMessages(bool bOn); + void viewInstruments(); + void viewDevices(); + void viewOptions(); + void channelsArrange(); + void channelsAutoArrange(bool bOn); + void helpAboutQt(); + void helpAbout(); + void volumeChanged(int iVolume); + void channelStripChanged(ChannelStrip *pChannelStrip); + void channelsMenuAboutToShow(); + void channelsMenuActivated(); + void timerSlot(); + void readServerStdout(); + void processServerExit(); + void sessionDirty(); + void stabilizeForm(); + +protected slots: + + void updateRecentFilesMenu(); + + // Channel strip activation/selection. + void activateStrip(QWidget *pWidget); protected: - bool queryClose(void); - void closeEvent(QCloseEvent* pCloseEvent); - bool decodeDragFiles(const QMimeSource* pEvent, QStringList& files); - void dragEnterEvent(QDragEnterEvent *pDragEnterEvent); - void dropEvent(QDropEvent *pDropEvent); - void customEvent(QEvent* pCustomEvent); - bool newSession(void); - bool openSession(void); - bool saveSession(bool bPrompt); - bool closeSession(bool bForce); - bool loadSessionFile(const QString& sFilename); - bool saveSessionFile(const QString& sFilename); - void updateSession(); - void updateRecentFiles(const QString& sFilename); - void updateRecentFilesMenu(void); - void updateInstrumentNames(void); - void updateDisplayFont(void); - void updateDisplayEffect(void); - void updateMaxVolume(void); - void updateMessagesFont(void); - void updateMessagesLimit(void); - void updateMessagesCapture(void); - void startSchedule(int iStartDelay); - void stopSchedule(void); - void startServer(void); - void stopServer(void); - bool startClient(void); - void stopClient(void); + + bool queryClose(); + void closeEvent(QCloseEvent* pCloseEvent); + void dragEnterEvent(QDragEnterEvent *pDragEnterEvent); + void dropEvent(QDropEvent *pDropEvent); + void customEvent(QEvent* pCustomEvent); + bool newSession(); + bool openSession(); + bool saveSession(bool bPrompt); + bool closeSession(bool bForce); + bool loadSessionFile(const QString& sFilename); + bool saveSessionFile(const QString& sFilename); + void updateSession(); + void updateRecentFiles(const QString& sFilename); + void updateInstrumentNames(); + void updateDisplayFont(); + void updateDisplayEffect(); + void updateMaxVolume(); + void updateMessagesFont(); + void updateMessagesLimit(); + void updateMessagesCapture(); + void updateViewMidiDeviceStatusMenu(); + void updateAllChannelStrips(bool bRemoveDeadStrips); + void startSchedule(int iStartDelay); + void stopSchedule(); + void startServer(); + void stopServer(bool bInteractive = false); + bool startClient(); + void stopClient(); private: - Ui::qsamplerMainForm ui; - qsamplerOptions *m_pOptions; - qsamplerMessages *m_pMessages; - QWorkspace *m_pWorkspace; - QString m_sFilename; - int m_iUntitled; - int m_iDirtyCount; - lscp_client_t *m_pClient; - QProcess *m_pServer; - int m_iStartDelay; - int m_iTimerDelay; - int m_iTimerSlot; - QLabel *m_statusItem[5]; - QMenu *m_pRecentFilesMenu; - Q3PtrList m_changedStrips; - InstrumentListForm *m_pInstrumentListForm; - DeviceForm *m_pDeviceForm; - static MainForm *g_pMainForm; - QSlider *m_pVolumeSlider; - QSpinBox *m_pVolumeSpinBox; - int m_iVolumeChanging; - QToolBar* fileToolbar; - QToolBar* editToolbar; - QToolBar* channelsToolbar; - -private slots: - void fileNew(void); - void fileOpen(void); - void fileOpenRecent(int iIndex); - void fileSave(void); - void fileSaveAs(void); - void fileReset(void); - void fileRestart(void); - void fileExit(void); - void editAddChannel(void); - void editRemoveChannel(void); - void editSetupChannel(void); - void editEditChannel(void); - void editResetChannel(void); - void editResetAllChannels(void); - void viewMenubar(bool bOn); - void viewToolbar(bool bOn); - void viewStatusbar(bool bOn); - void viewMessages(bool bOn); - void viewInstruments(void); - void viewDevices(void); - void viewOptions(void); - void channelsArrange(void); - void channelsAutoArrange(bool bOn); - void helpAboutQt(void); - void helpAbout(void); - void volumeChanged(int iVolume); - void channelStripChanged(ChannelStrip *pChannelStrip); - void channelsMenuAboutToShow(); - void channelsMenuActivated(int iChannel); - void timerSlot(void); - void readServerStdout(void); - void processServerExit(void); + Ui::qsamplerMainForm m_ui; + + Options *m_pOptions; + Messages *m_pMessages; + QWorkspace *m_pWorkspace; + QString m_sFilename; + int m_iUntitled; + int m_iDirtyCount; + lscp_client_t *m_pClient; + QProcess *m_pServer; + bool bForceServerStop; + int m_iStartDelay; + int m_iTimerDelay; + int m_iTimerSlot; + QLabel *m_statusItem[5]; + QList m_changedStrips; + InstrumentListForm *m_pInstrumentListForm; + DeviceForm *m_pDeviceForm; + static MainForm *g_pMainForm; + QSlider *m_pVolumeSlider; + QSpinBox *m_pVolumeSpinBox; + int m_iVolumeChanging; }; } // namespace QSampler