/[svn]/qsampler/trunk/src/qsamplerMainForm.h
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerMainForm.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4070 - (hide annotations) (download) (as text)
Wed Jan 3 15:38:52 2024 UTC (3 months, 2 weeks ago) by capela
File MIME type: text/x-c++hdr
File size: 5409 byte(s)
- Updated copyright headers into the New Year (2024).
1 capela 1464 // qsamplerMainForm.h
2     //
3     /****************************************************************************
4 capela 4070 Copyright (C) 2004-2024, rncbc aka Rui Nuno Capela. All rights reserved.
5 capela 3681 Copyright (C) 2007-2019 Christian Schoenebeck
6 schoenebeck 1461
7 capela 1464 This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     as published by the Free Software Foundation; either version 2
10     of the License, or (at your option) any later version.
11    
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License along
18     with this program; if not, write to the Free Software Foundation, Inc.,
19     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20    
21     *****************************************************************************/
22    
23     #ifndef __qsamplerMainForm_h
24     #define __qsamplerMainForm_h
25    
26 schoenebeck 1461 #include "ui_qsamplerMainForm.h"
27    
28 capela 1513 #include <lscp/client.h>
29 schoenebeck 1461
30 capela 1513 class QProcess;
31 capela 2387 class QMdiSubWindow;
32 capela 2112 class QSocketNotifier;
33 capela 1513 class QSpinBox;
34     class QSlider;
35     class QLabel;
36 capela 1499
37 schoenebeck 1461 namespace QSampler {
38    
39 capela 2979 class Workspace;
40 capela 1558 class Options;
41     class Messages;
42     class Channel;
43 capela 1513 class ChannelStrip;
44 schoenebeck 1461 class DeviceForm;
45 capela 1513 class InstrumentListForm;
46 schoenebeck 1461
47 capela 1558 //-------------------------------------------------------------------------
48     // QSampler::MainForm -- Main window form implementation.
49     //
50 capela 1513
51 capela 1509 class MainForm : public QMainWindow
52     {
53     Q_OBJECT
54    
55 schoenebeck 1461 public:
56    
57 capela 3555 MainForm(QWidget *pParent = nullptr);
58 capela 1509 ~MainForm();
59    
60 capela 2979 void setup(Options *pOptions);
61 capela 1509
62 capela 2979 Options *options() const;
63     lscp_client_t *client() const;
64 capela 1509
65     QString sessionName(const QString& sFilename);
66    
67 capela 3788 void appendMessages(const QString& s);
68     void appendMessagesColor(const QString& s, const QColor& rgb);
69     void appendMessagesText(const QString& s);
70     void appendMessagesError(const QString& s);
71     void appendMessagesClient(const QString& s);
72 capela 1509
73 capela 2387 ChannelStrip *createChannelStrip(Channel *pChannel);
74     void destroyChannelStrip(ChannelStrip *pChannelStrip);
75     ChannelStrip *activeChannelStrip();
76     ChannelStrip *channelStripAt(int iChannel);
77     ChannelStrip *channelStrip(int iChannelID);
78 capela 1509
79 capela 2979 void channelsArrangeAuto();
80 capela 1509 void contextMenuEvent(QContextMenuEvent *pEvent);
81 capela 2979 void sessionDirty();
82 capela 1509
83 capela 2979 static MainForm *getInstance();
84 capela 1509
85 schoenebeck 1461 public slots:
86    
87 capela 1509 void fileNew();
88     void fileOpen();
89     void fileOpenRecent();
90     void fileSave();
91     void fileSaveAs();
92     void fileReset();
93     void fileRestart();
94     void fileExit();
95     void editAddChannel();
96     void editRemoveChannel();
97     void editSetupChannel();
98     void editEditChannel();
99     void editResetChannel();
100     void editResetAllChannels();
101     void viewMenubar(bool bOn);
102     void viewToolbar(bool bOn);
103     void viewStatusbar(bool bOn);
104     void viewMessages(bool bOn);
105     void viewInstruments();
106     void viewDevices();
107     void viewOptions();
108     void channelsArrange();
109     void channelsAutoArrange(bool bOn);
110     void helpAboutQt();
111     void helpAbout();
112 capela 2979
113     void stabilizeForm();
114    
115     protected slots:
116    
117     void updateRecentFilesMenu();
118    
119 capela 1509 void volumeChanged(int iVolume);
120     void channelStripChanged(ChannelStrip *pChannelStrip);
121     void channelsMenuAboutToShow();
122     void channelsMenuActivated();
123     void timerSlot();
124     void readServerStdout();
125     void processServerExit();
126 capela 3681 void autoReconnectClient();
127 capela 1509
128 capela 2112 void handle_sigusr1();
129 capela 3508 void handle_sigterm();
130 capela 2112
131 capela 1514 // Channel strip activation/selection.
132 capela 2387 void activateStrip(QMdiSubWindow *pMdiSubWindow);
133 capela 1514
134 capela 2681 // Channel toolbar orientation change.
135     void channelsToolbarOrientation(Qt::Orientation orientation);
136    
137 schoenebeck 1461 protected:
138    
139 capela 2978 void addChannelStrip();
140     void removeChannelStrip();
141    
142 capela 1509 bool queryClose();
143     void closeEvent(QCloseEvent* pCloseEvent);
144     void dragEnterEvent(QDragEnterEvent *pDragEnterEvent);
145     void dropEvent(QDropEvent *pDropEvent);
146 capela 2978 void customEvent(QEvent *pCustomEvent);
147 capela 1509 bool newSession();
148     bool openSession();
149     bool saveSession(bool bPrompt);
150     bool closeSession(bool bForce);
151     bool loadSessionFile(const QString& sFilename);
152     bool saveSessionFile(const QString& sFilename);
153     void updateSession();
154     void updateRecentFiles(const QString& sFilename);
155     void updateInstrumentNames();
156     void updateDisplayFont();
157     void updateDisplayEffect();
158     void updateMaxVolume();
159     void updateMessagesFont();
160     void updateMessagesLimit();
161     void updateMessagesCapture();
162 schoenebeck 1698 void updateViewMidiDeviceStatusMenu();
163 schoenebeck 1702 void updateAllChannelStrips(bool bRemoveDeadStrips);
164 capela 2979
165 capela 1509 void startSchedule(int iStartDelay);
166     void stopSchedule();
167     void startServer();
168 schoenebeck 1626 void stopServer(bool bInteractive = false);
169 schoenebeck 3668 bool startClient(bool bReconnectOnly = false);
170 capela 1509 void stopClient();
171 schoenebeck 3668 void startAutoReconnectClient();
172 capela 1509
173 schoenebeck 1461 private:
174    
175 capela 1509 Ui::qsamplerMainForm m_ui;
176 schoenebeck 1461
177 capela 1558 Options *m_pOptions;
178     Messages *m_pMessages;
179 capela 2979 Workspace *m_pWorkspace;
180 capela 3508 QSocketNotifier *m_pSigusr1Notifier;
181     QSocketNotifier *m_pSigtermNotifier;
182 capela 1509 QString m_sFilename;
183     int m_iUntitled;
184 capela 2978 int m_iDirtySetup;
185 capela 1509 int m_iDirtyCount;
186     lscp_client_t *m_pClient;
187     QProcess *m_pServer;
188 capela 3128 bool m_bForceServerStop;
189 capela 1509 int m_iStartDelay;
190     int m_iTimerDelay;
191     int m_iTimerSlot;
192     QLabel *m_statusItem[5];
193     QList<ChannelStrip *> m_changedStrips;
194     InstrumentListForm *m_pInstrumentListForm;
195     DeviceForm *m_pDeviceForm;
196     static MainForm *g_pMainForm;
197     QSlider *m_pVolumeSlider;
198     QSpinBox *m_pVolumeSpinBox;
199     int m_iVolumeChanging;
200 schoenebeck 1461 };
201    
202     } // namespace QSampler
203    
204 capela 1464 #endif // __qsamplerMainForm_h
205    
206    
207 capela 1465 // end of qsamplerMainForm.h

  ViewVC Help
Powered by ViewVC