45 |
#include "qsamplerDeviceForm.h" |
#include "qsamplerDeviceForm.h" |
46 |
#include "qsamplerOptionsForm.h" |
#include "qsamplerOptionsForm.h" |
47 |
|
|
|
#include "config.h" |
|
|
|
|
48 |
#ifdef HAVE_SIGNAL_H |
#ifdef HAVE_SIGNAL_H |
49 |
#include <signal.h> |
#include <signal.h> |
50 |
#endif |
#endif |
385 |
// For the time being, just pump it to messages. |
// For the time being, just pump it to messages. |
386 |
if (pCustomEvent->type() == QSAMPLER_CUSTOM_EVENT) { |
if (pCustomEvent->type() == QSAMPLER_CUSTOM_EVENT) { |
387 |
qsamplerCustomEvent *pEvent = (qsamplerCustomEvent *) pCustomEvent; |
qsamplerCustomEvent *pEvent = (qsamplerCustomEvent *) pCustomEvent; |
|
appendMessagesColor(tr("Notify event: %1 data: %2") |
|
|
.arg(::lscp_event_to_text(pEvent->event())) |
|
|
.arg(pEvent->data()), "#996699"); |
|
388 |
if (pEvent->event() == LSCP_EVENT_CHANNEL_INFO) { |
if (pEvent->event() == LSCP_EVENT_CHANNEL_INFO) { |
389 |
int iChannelID = pEvent->data().toInt(); |
int iChannelID = pEvent->data().toInt(); |
390 |
qsamplerChannelStrip *pChannelStrip = channelStrip(iChannelID); |
qsamplerChannelStrip *pChannelStrip = channelStrip(iChannelID); |
391 |
if (pChannelStrip) |
if (pChannelStrip) |
392 |
channelStripChanged(pChannelStrip); |
channelStripChanged(pChannelStrip); |
393 |
|
} else { |
394 |
|
appendMessagesColor(tr("Notify event: %1 data: %2") |
395 |
|
.arg(::lscp_event_to_text(pEvent->event())) |
396 |
|
.arg(pEvent->data()), "#996699"); |
397 |
} |
} |
398 |
} |
} |
399 |
} |
} |
471 |
|
|
472 |
// Ask for the filename to open... |
// Ask for the filename to open... |
473 |
QString sFilename = QFileDialog::getOpenFileName( |
QString sFilename = QFileDialog::getOpenFileName( |
474 |
m_pOptions->sSessionDir, // Start here. |
m_pOptions->sSessionDir, // Start here. |
475 |
tr("LSCP Session files") + " (*.lscp)", // Filter (LSCP files) |
tr("LSCP Session files") + " (*.lscp)", // Filter (LSCP files) |
476 |
this, 0, // Parent and name (none) |
this, 0, // Parent and name (none) |
477 |
tr("Open Session") // Caption. |
QSAMPLER_TITLE ": " + tr("Open Session") // Caption. |
478 |
); |
); |
479 |
|
|
480 |
// Have we cancelled? |
// Have we cancelled? |
505 |
sFilename = m_pOptions->sSessionDir; |
sFilename = m_pOptions->sSessionDir; |
506 |
// Prompt the guy... |
// Prompt the guy... |
507 |
sFilename = QFileDialog::getSaveFileName( |
sFilename = QFileDialog::getSaveFileName( |
508 |
sFilename, // Start here. |
sFilename, // Start here. |
509 |
tr("LSCP Session files") + " (*.lscp)", // Filter (LSCP files) |
tr("LSCP Session files") + " (*.lscp)", // Filter (LSCP files) |
510 |
this, 0, // Parent and name (none) |
this, 0, // Parent and name (none) |
511 |
tr("Save Session") // Caption. |
QSAMPLER_TITLE ": " + tr("Save Session") // Caption. |
512 |
); |
); |
513 |
// Have we cancelled it? |
// Have we cancelled it? |
514 |
if (sFilename.isEmpty()) |
if (sFilename.isEmpty()) |
518 |
sFilename += ".lscp"; |
sFilename += ".lscp"; |
519 |
// Check if already exists... |
// Check if already exists... |
520 |
if (sFilename != m_sFilename && QFileInfo(sFilename).exists()) { |
if (sFilename != m_sFilename && QFileInfo(sFilename).exists()) { |
521 |
if (QMessageBox::warning(this, tr("Warning"), |
if (QMessageBox::warning(this, |
522 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
523 |
tr("The file already exists:\n\n" |
tr("The file already exists:\n\n" |
524 |
"\"%1\"\n\n" |
"\"%1\"\n\n" |
525 |
"Do you want to replace it?") |
"Do you want to replace it?") |
541 |
|
|
542 |
// Are we dirty enough to prompt it? |
// Are we dirty enough to prompt it? |
543 |
if (m_iDirtyCount > 0) { |
if (m_iDirtyCount > 0) { |
544 |
switch (QMessageBox::warning(this, tr("Warning"), |
switch (QMessageBox::warning(this, |
545 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
546 |
tr("The current session has been changed:\n\n" |
tr("The current session has been changed:\n\n" |
547 |
"\"%1\"\n\n" |
"\"%1\"\n\n" |
548 |
"Do you want to save the changes?") |
"Do you want to save the changes?") |
788 |
ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannel << endl; |
ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannel << endl; |
789 |
ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannel << endl; |
ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannel << endl; |
790 |
ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl; |
ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl; |
791 |
|
if (pChannel->channelMute()) |
792 |
|
ts << "SET CHANNEL MUTE " << iChannel << " 1" << endl; |
793 |
|
if (pChannel->channelSolo()) |
794 |
|
ts << "SET CHANNEL SOLO " << iChannel << " 1" << endl; |
795 |
ts << endl; |
ts << endl; |
796 |
} |
} |
797 |
} |
} |
883 |
return; |
return; |
884 |
|
|
885 |
// Ask user whether he/she want's an internal sampler reset... |
// Ask user whether he/she want's an internal sampler reset... |
886 |
if (QMessageBox::warning(this, tr("Warning"), |
if (QMessageBox::warning(this, |
887 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
888 |
tr("Resetting the sampler instance will close\n" |
tr("Resetting the sampler instance will close\n" |
889 |
"all device and channel configurations.\n\n" |
"all device and channel configurations.\n\n" |
890 |
"Please note that this operation may cause\n" |
"Please note that this operation may cause\n" |
919 |
// Ask user whether he/she want's a complete restart... |
// Ask user whether he/she want's a complete restart... |
920 |
// (if we're currently up and running) |
// (if we're currently up and running) |
921 |
if (bRestart && m_pClient) { |
if (bRestart && m_pClient) { |
922 |
bRestart = (QMessageBox::warning(this, tr("Warning"), |
bRestart = (QMessageBox::warning(this, |
923 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
924 |
tr("New settings will be effective after\n" |
tr("New settings will be effective after\n" |
925 |
"restarting the client/server connection.\n\n" |
"restarting the client/server connection.\n\n" |
926 |
"Please note that this operation may cause\n" |
"Please note that this operation may cause\n" |
996 |
|
|
997 |
// Prompt user if he/she's sure about this... |
// Prompt user if he/she's sure about this... |
998 |
if (m_pOptions && m_pOptions->bConfirmRemove) { |
if (m_pOptions && m_pOptions->bConfirmRemove) { |
999 |
if (QMessageBox::warning(this, tr("Warning"), |
if (QMessageBox::warning(this, |
1000 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
1001 |
tr("About to remove channel:\n\n" |
tr("About to remove channel:\n\n" |
1002 |
"%1\n\n" |
"%1\n\n" |
1003 |
"Are you sure?") |
"Are you sure?") |
1180 |
(!bOldStdoutCapture && m_pOptions->bStdoutCapture) || |
(!bOldStdoutCapture && m_pOptions->bStdoutCapture) || |
1181 |
( bOldKeepOnTop && !m_pOptions->bKeepOnTop) || |
( bOldKeepOnTop && !m_pOptions->bKeepOnTop) || |
1182 |
(!bOldKeepOnTop && m_pOptions->bKeepOnTop)) { |
(!bOldKeepOnTop && m_pOptions->bKeepOnTop)) { |
1183 |
QMessageBox::information(this, tr("Information"), |
QMessageBox::information(this, |
1184 |
|
QSAMPLER_TITLE ": " + tr("Information"), |
1185 |
tr("Some settings may be only effective\n" |
tr("Some settings may be only effective\n" |
1186 |
"next time you start this program."), tr("OK")); |
"next time you start this program."), tr("OK")); |
1187 |
updateMessagesCapture(); |
updateMessagesCapture(); |
1309 |
sText += tr("LSCP (liblscp) instrument_name support disabled."); |
sText += tr("LSCP (liblscp) instrument_name support disabled."); |
1310 |
sText += "</font></small><br />"; |
sText += "</font></small><br />"; |
1311 |
#endif |
#endif |
1312 |
|
#ifndef CONFIG_MUTE_SOLO |
1313 |
|
sText += "<small><font color=\"red\">"; |
1314 |
|
sText += tr("Sampler channel Mute/Solo support disabled."); |
1315 |
|
sText += "</font></small><br />"; |
1316 |
|
#endif |
1317 |
sText += "<br />\n"; |
sText += "<br />\n"; |
1318 |
sText += tr("Using") + ": "; |
sText += tr("Using") + ": "; |
1319 |
sText += ::lscp_client_package(); |
sText += ::lscp_client_package(); |
1321 |
sText += ::lscp_client_version(); |
sText += ::lscp_client_version(); |
1322 |
#ifdef CONFIG_LIBGIG |
#ifdef CONFIG_LIBGIG |
1323 |
sText += ", "; |
sText += ", "; |
1324 |
sText += gig::libraryName(); |
sText += gig::libraryName().c_str(); |
1325 |
sText += " "; |
sText += " "; |
1326 |
sText += gig::libraryVersion(); |
sText += gig::libraryVersion().c_str(); |
1327 |
#endif |
#endif |
1328 |
sText += "<br />\n"; |
sText += "<br />\n"; |
1329 |
sText += "<br />\n"; |
sText += "<br />\n"; |
1613 |
|
|
1614 |
appendMessagesColor(s.simplifyWhiteSpace(), "#ff0000"); |
appendMessagesColor(s.simplifyWhiteSpace(), "#ff0000"); |
1615 |
|
|
1616 |
QMessageBox::critical(this, tr("Error"), s, tr("Cancel")); |
QMessageBox::critical(this, |
1617 |
|
QSAMPLER_TITLE ": " + tr("Error"), s, tr("Cancel")); |
1618 |
} |
} |
1619 |
|
|
1620 |
|
|
1838 |
} |
} |
1839 |
} |
} |
1840 |
|
|
1841 |
// Refresh each channel usage, on each period... |
if (m_pClient) { |
1842 |
if (m_pClient && (m_changedStrips.count() > 0 || m_pOptions->bAutoRefresh)) { |
// Update the channel information for each pending strip... |
1843 |
m_iTimerSlot += QSAMPLER_TIMER_MSECS; |
if (m_changedStrips.count() > 0) { |
|
if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime && m_pWorkspace->isUpdatesEnabled()) { |
|
|
m_iTimerSlot = 0; |
|
|
// Update the channel information for each pending strip... |
|
1844 |
for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first(); |
for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first(); |
1845 |
pChannelStrip; |
pChannelStrip; pChannelStrip = m_changedStrips.next()) { |
|
pChannelStrip = m_changedStrips.next()) { |
|
1846 |
// If successfull, remove from pending list... |
// If successfull, remove from pending list... |
1847 |
if (pChannelStrip->updateChannelInfo()) |
if (pChannelStrip->updateChannelInfo()) |
1848 |
m_changedStrips.remove(pChannelStrip); |
m_changedStrips.remove(pChannelStrip); |
1849 |
} |
} |
1850 |
// Update the channel stream usage for each strip... |
} |
1851 |
QWidgetList wlist = m_pWorkspace->windowList(); |
// Refresh each channel usage, on each period... |
1852 |
for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) { |
if (m_pOptions->bAutoRefresh) { |
1853 |
qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel); |
m_iTimerSlot += QSAMPLER_TIMER_MSECS; |
1854 |
if (pChannelStrip && pChannelStrip->isVisible()) |
if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime) { |
1855 |
pChannelStrip->updateChannelUsage(); |
m_iTimerSlot = 0; |
1856 |
|
// Update the channel stream usage for each strip... |
1857 |
|
QWidgetList wlist = m_pWorkspace->windowList(); |
1858 |
|
for (int iChannel = 0; |
1859 |
|
iChannel < (int) wlist.count(); iChannel++) { |
1860 |
|
qsamplerChannelStrip *pChannelStrip |
1861 |
|
= (qsamplerChannelStrip *) wlist.at(iChannel); |
1862 |
|
if (pChannelStrip && pChannelStrip->isVisible()) |
1863 |
|
pChannelStrip->updateChannelUsage(); |
1864 |
|
} |
1865 |
} |
} |
1866 |
} |
} |
1867 |
} |
} |
1886 |
|
|
1887 |
// Is the server process instance still here? |
// Is the server process instance still here? |
1888 |
if (m_pServer) { |
if (m_pServer) { |
1889 |
switch (QMessageBox::warning(this, tr("Warning"), |
switch (QMessageBox::warning(this, |
1890 |
|
QSAMPLER_TITLE ": " + tr("Warning"), |
1891 |
tr("Could not start the LinuxSampler server.\n\n" |
tr("Could not start the LinuxSampler server.\n\n" |
1892 |
"Maybe it ss already started."), |
"Maybe it ss already started."), |
1893 |
tr("Stop"), tr("Kill"), tr("Cancel"))) { |
tr("Stop"), tr("Kill"), tr("Cancel"))) { |