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

Diff of /qsampler/trunk/src/qsamplerMainForm.ui.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 479 by capela, Sat Mar 19 12:10:41 2005 UTC revision 753 by capela, Wed Aug 24 17:44:59 2005 UTC
# Line 45  Line 45 
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
51    
52    #ifdef CONFIG_LIBGIG
53    #include <gig.h>
54    #endif
55    
56  // Timer constant stuff.  // Timer constant stuff.
57  #define QSAMPLER_TIMER_MSECS    200  #define QSAMPLER_TIMER_MSECS    200
58    
# Line 218  void qsamplerMainForm::setup ( qsamplerO Line 220  void qsamplerMainForm::setup ( qsamplerO
220      // Some child forms are to be created right now.      // Some child forms are to be created right now.
221      m_pMessages = new qsamplerMessages(this);      m_pMessages = new qsamplerMessages(this);
222      m_pDeviceForm = new qsamplerDeviceForm(this, 0, wflags);      m_pDeviceForm = new qsamplerDeviceForm(this, 0, wflags);
223        m_pDeviceForm->setMainForm(this); // An important life immutable!
224      // Set message defaults...      // Set message defaults...
225      updateMessagesFont();      updateMessagesFont();
226      updateMessagesLimit();      updateMessagesLimit();
# Line 287  bool qsamplerMainForm::queryClose (void) Line 290  bool qsamplerMainForm::queryClose (void)
290              ostr << *this;              ostr << *this;
291              m_pOptions->settings().writeEntry("/Layout/DockWindows", sDockables);              m_pOptions->settings().writeEntry("/Layout/DockWindows", sDockables);
292              // And the children, and the main windows state,.              // And the children, and the main windows state,.
293                  m_pOptions->saveWidgetGeometry(m_pDeviceForm);                          m_pOptions->saveWidgetGeometry(m_pDeviceForm);
294              m_pOptions->saveWidgetGeometry(this);                          m_pOptions->saveWidgetGeometry(this);
295                  // Close popup widgets.                          // Close popup widgets.
296                  if (m_pDeviceForm)                          if (m_pDeviceForm)
297                      m_pDeviceForm->close();                                  m_pDeviceForm->close();
298              // Stop client and/or server, gracefully.              // Stop client and/or server, gracefully.
299              stopServer();              stopServer();
300          }          }
# Line 344  void qsamplerMainForm::dropEvent ( QDrop Line 347  void qsamplerMainForm::dropEvent ( QDrop
347      if (!decodeDragFiles(pDropEvent, files))      if (!decodeDragFiles(pDropEvent, files))
348          return;          return;
349    
350      for (QStringList::Iterator iter = files.begin(); iter != files.end(); iter++) {          for (QStringList::Iterator iter = files.begin(); iter != files.end(); iter++) {
351                  const QString& sPath = *iter;                  const QString& sPath = *iter;
352                  if (qsamplerChannel::isInstrumentFile(sPath)) {                  if (qsamplerChannel::isInstrumentFile(sPath)) {
353                          // Try to create a new channel from instrument file...                          // Try to create a new channel from instrument file...
354                      qsamplerChannel *pChannel = new qsamplerChannel(this);                          qsamplerChannel *pChannel = new qsamplerChannel(this);
355                      if (pChannel == NULL)                          if (pChannel == NULL)
356                          return;                                  return;
357                          // Start setting the instrument filename...                          // Start setting the instrument filename...
358                          pChannel->setInstrument(sPath, 0);                          pChannel->setInstrument(sPath, 0);
359                      // Before we show it up, may be we'll                          // Before we show it up, may be we'll
360                      // better ask for some initial values?                          // better ask for some initial values?
361                      if (!pChannel->channelSetup(this)) {                          if (!pChannel->channelSetup(this)) {
362                          delete pChannel;                                  delete pChannel;
363                          return;                                  return;
364                      }                          }
365                      // Finally, give it to a new channel strip...                          // Finally, give it to a new channel strip...
366                          if (!createChannelStrip(pChannel)) {                          if (!createChannelStrip(pChannel)) {
367                          delete pChannel;                                  delete pChannel;
368                          return;                                  return;
369                          }                          }
370                      // Make that an overall update.                          // Make that an overall update.
371                      m_iDirtyCount++;                          m_iDirtyCount++;
372                      stabilizeForm();                          stabilizeForm();
373                  }   // Otherwise, load an usual session file (LSCP script)...                  }   // Otherwise, load an usual session file (LSCP script)...
374                  else if (closeSession(true))                  else if (closeSession(true))
375                          loadSessionFile(sPath);                          loadSessionFile(sPath);
# Line 382  void qsamplerMainForm::customEvent ( QCu Line 385  void qsamplerMainForm::customEvent ( QCu
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;
388          appendMessagesColor(tr("Notify event: %1 data: %2")                  if (pEvent->event() == LSCP_EVENT_CHANNEL_INFO) {
389              .arg(::lscp_event_to_text(pEvent->event()))                          int iChannelID = pEvent->data().toInt();
390              .arg(pEvent->data()), "#996699");                          qsamplerChannelStrip *pChannelStrip = channelStrip(iChannelID);
391                            if (pChannelStrip)
392                                    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  }  }
400    
# Line 393  void qsamplerMainForm::customEvent ( QCu Line 403  void qsamplerMainForm::customEvent ( QCu
403  void qsamplerMainForm::contextMenuEvent( QContextMenuEvent *pEvent )  void qsamplerMainForm::contextMenuEvent( QContextMenuEvent *pEvent )
404  {  {
405      stabilizeForm();      stabilizeForm();
406        
407      editMenu->exec(pEvent->globalPos());      editMenu->exec(pEvent->globalPos());
408  }  }
409    
# Line 623  bool qsamplerMainForm::loadSessionFile ( Line 633  bool qsamplerMainForm::loadSessionFile (
633      m_sFilename = sFilename;      m_sFilename = sFilename;
634      updateRecentFiles(sFilename);      updateRecentFiles(sFilename);
635      appendMessages(tr("Open session: \"%1\".").arg(sessionName(m_sFilename)));      appendMessages(tr("Open session: \"%1\".").arg(sessionName(m_sFilename)));
636        
637      // Make that an overall update.      // Make that an overall update.
638      stabilizeForm();      stabilizeForm();
639      return true;      return true;
# Line 666  bool qsamplerMainForm::saveSessionFile ( Line 676  bool qsamplerMainForm::saveSessionFile (
676          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
677          for (iDevice = 0; piDeviceIDs && piDeviceIDs[iDevice] >= 0; iDevice++) {          for (iDevice = 0; piDeviceIDs && piDeviceIDs[iDevice] >= 0; iDevice++) {
678                  ts << endl;                  ts << endl;
679                  qsamplerDevice device(m_pClient, qsamplerDevice::Audio, piDeviceIDs[iDevice]);                  qsamplerDevice device(this, qsamplerDevice::Audio, piDeviceIDs[iDevice]);
680                  // Audio device specification...                  // Audio device specification...
681                  ts << "# " << device.deviceTypeName() << " " << device.driverName()                  ts << "# " << device.deviceTypeName() << " " << device.driverName()
682                     << " " << tr("Device") << " " << iDevice << endl;                          << " " << tr("Device") << " " << iDevice << endl;
683                  ts << "CREATE AUDIO_OUTPUT_DEVICE " << device.driverName();                  ts << "CREATE AUDIO_OUTPUT_DEVICE " << device.driverName();
684                  qsamplerDeviceParamMap::ConstIterator deviceParam;                  qsamplerDeviceParamMap::ConstIterator deviceParam;
685                  for (deviceParam = device.params().begin();                  for (deviceParam = device.params().begin();
# Line 692  bool qsamplerMainForm::saveSessionFile ( Line 702  bool qsamplerMainForm::saveSessionFile (
702                                  const qsamplerDeviceParam& param = portParam.data();                                  const qsamplerDeviceParam& param = portParam.data();
703                                  if (param.fix || param.value.isEmpty()) ts << "# ";                                  if (param.fix || param.value.isEmpty()) ts << "# ";
704                                  ts << "SET AUDIO_OUTPUT_CHANNEL_PARAMETER " << iDevice                                  ts << "SET AUDIO_OUTPUT_CHANNEL_PARAMETER " << iDevice
705                                     << " " << iPort << " " << portParam.key()                                          << " " << iPort << " " << portParam.key()
706                                     << "='" << param.value << "'" << endl;                                          << "='" << param.value << "'" << endl;
707                          }                          }
708                  }                  }
709                  // Audio device index/id mapping.                  // Audio device index/id mapping.
# Line 706  bool qsamplerMainForm::saveSessionFile ( Line 716  bool qsamplerMainForm::saveSessionFile (
716          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
717          for (iDevice = 0; piDeviceIDs && piDeviceIDs[iDevice] >= 0; iDevice++) {          for (iDevice = 0; piDeviceIDs && piDeviceIDs[iDevice] >= 0; iDevice++) {
718                  ts << endl;                  ts << endl;
719                  qsamplerDevice device(m_pClient, qsamplerDevice::Midi, piDeviceIDs[iDevice]);                  qsamplerDevice device(this, qsamplerDevice::Midi, piDeviceIDs[iDevice]);
720                  // MIDI device specification...                  // MIDI device specification...
721          ts << "# " << device.deviceTypeName() << " " << device.driverName()                  ts << "# " << device.deviceTypeName() << " " << device.driverName()
722                     << " " << tr("Device") << " " << iDevice << endl;                          << " " << tr("Device") << " " << iDevice << endl;
723                  ts << "CREATE MIDI_INPUT_DEVICE " << device.driverName();                  ts << "CREATE MIDI_INPUT_DEVICE " << device.driverName();
724                  qsamplerDeviceParamMap::ConstIterator deviceParam;                  qsamplerDeviceParamMap::ConstIterator deviceParam;
725                  for (deviceParam = device.params().begin();                  for (deviceParam = device.params().begin();
# Line 751  bool qsamplerMainForm::saveSessionFile ( Line 761  bool qsamplerMainForm::saveSessionFile (
761              if (pChannel) {              if (pChannel) {
762                  ts << "# " << tr("Channel") << " " << iChannel << endl;                  ts << "# " << tr("Channel") << " " << iChannel << endl;
763                  ts << "ADD CHANNEL" << endl;                  ts << "ADD CHANNEL" << endl;
764                  if (audioDeviceMap.isEmpty()) {                                  if (audioDeviceMap.isEmpty()) {
765                          ts << "SET CHANNEL AUDIO_OUTPUT_TYPE " << iChannel                                          ts << "SET CHANNEL AUDIO_OUTPUT_TYPE " << iChannel
766                                              << " " << pChannel->audioDriver() << endl;                                                  << " " << pChannel->audioDriver() << endl;
767                              } else {                                  } else {
768                          ts << "SET CHANNEL AUDIO_OUTPUT_DEVICE " << iChannel                                          ts << "SET CHANNEL AUDIO_OUTPUT_DEVICE " << iChannel
769                                             << " " << audioDeviceMap[pChannel->audioDevice()] << endl;                                                  << " " << audioDeviceMap[pChannel->audioDevice()] << endl;
770                                  }                                  }
771                  if (midiDeviceMap.isEmpty()) {                                  if (midiDeviceMap.isEmpty()) {
772                          ts << "SET CHANNEL MIDI_INPUT_TYPE " << iChannel                                          ts << "SET CHANNEL MIDI_INPUT_TYPE " << iChannel
773                                         << " " << pChannel->midiDriver() << endl;                                                  << " " << pChannel->midiDriver() << endl;
774                              } else {                                  } else {
775                          ts << "SET CHANNEL MIDI_INPUT_DEVICE " << iChannel                                          ts << "SET CHANNEL MIDI_INPUT_DEVICE " << iChannel
776                                             << " " << midiDeviceMap[pChannel->midiDevice()] << endl;                                                  << " " << midiDeviceMap[pChannel->midiDevice()] << endl;
777                              }                                  }
778                  ts << "SET CHANNEL MIDI_INPUT_PORT " << iChannel                                  ts << "SET CHANNEL MIDI_INPUT_PORT " << iChannel
779                                 << " " << pChannel->midiPort() << endl;                                          << " " << pChannel->midiPort() << endl;
780                  ts << "SET CHANNEL MIDI_INPUT_CHANNEL " << iChannel << " ";                  ts << "SET CHANNEL MIDI_INPUT_CHANNEL " << iChannel << " ";
781                  if (pChannel->midiChannel() == LSCP_MIDI_CHANNEL_ALL)                  if (pChannel->midiChannel() == LSCP_MIDI_CHANNEL_ALL)
782                      ts << "ALL";                      ts << "ALL";
# Line 776  bool qsamplerMainForm::saveSessionFile ( Line 786  bool qsamplerMainForm::saveSessionFile (
786                  ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannel << endl;                  ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannel << endl;
787                  ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannel << endl;                  ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannel << endl;
788                  ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl;                  ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl;
789                    if (pChannel->channelMute())
790                            ts << "SET CHANNEL MUTE " << iChannel << " 1" << endl;
791                    if (pChannel->channelSolo())
792                            ts << "SET CHANNEL SOLO " << iChannel << " 1" << endl;
793                  ts << endl;                  ts << endl;
794              }              }
795          }          }
# Line 871  void qsamplerMainForm::fileReset (void) Line 885  void qsamplerMainForm::fileReset (void)
885          tr("Resetting the sampler instance will close\n"          tr("Resetting the sampler instance will close\n"
886             "all device and channel configurations.\n\n"             "all device and channel configurations.\n\n"
887             "Please note that this operation may cause\n"             "Please note that this operation may cause\n"
888             "temporary MIDI and Audio disruption\n\n"             "temporary MIDI and Audio disruption.\n\n"
889             "Do you want to reset the sampler engine now?"),             "Do you want to reset the sampler engine now?"),
890          tr("Reset"), tr("Cancel")) > 0)          tr("Reset"), tr("Cancel")) > 0)
891          return;          return;
# Line 896  void qsamplerMainForm::fileRestart (void Line 910  void qsamplerMainForm::fileRestart (void
910  {  {
911      if (m_pOptions == NULL)      if (m_pOptions == NULL)
912          return;          return;
913            
914      bool bRestart = true;      bool bRestart = true;
915        
916      // Ask user whether he/she want's a complete restart...      // Ask user whether he/she want's a complete restart...
917      // (if we're currently up and running)      // (if we're currently up and running)
918      if (bRestart && m_pClient) {      if (bRestart && m_pClient) {
# Line 906  void qsamplerMainForm::fileRestart (void Line 920  void qsamplerMainForm::fileRestart (void
920              tr("New settings will be effective after\n"              tr("New settings will be effective after\n"
921                 "restarting the client/server connection.\n\n"                 "restarting the client/server connection.\n\n"
922                 "Please note that this operation may cause\n"                 "Please note that this operation may cause\n"
923                 "temporary MIDI and Audio disruption\n\n"                 "temporary MIDI and Audio disruption.\n\n"
924                 "Do you want to restart the connection now?"),                 "Do you want to restart the connection now?"),
925              tr("Restart"), tr("Cancel")) == 0);              tr("Restart"), tr("Cancel")) == 0);
926      }      }
# Line 949  void qsamplerMainForm::editAddChannel (v Line 963  void qsamplerMainForm::editAddChannel (v
963          delete pChannel;          delete pChannel;
964          return;          return;
965      }      }
966        
967      // And give it to the strip (will own the channel instance, if successful).      // And give it to the strip (will own the channel instance, if successful).
968      if (!createChannelStrip(pChannel)) {      if (!createChannelStrip(pChannel)) {
969          delete pChannel;          delete pChannel;
# Line 971  void qsamplerMainForm::editRemoveChannel Line 985  void qsamplerMainForm::editRemoveChannel
985      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
986      if (pChannelStrip == NULL)      if (pChannelStrip == NULL)
987          return;          return;
988            
989      qsamplerChannel *pChannel = pChannelStrip->channel();      qsamplerChannel *pChannel = pChannelStrip->channel();
990      if (pChannel == NULL)      if (pChannel == NULL)
991          return;          return;
# Line 993  void qsamplerMainForm::editRemoveChannel Line 1007  void qsamplerMainForm::editRemoveChannel
1007    
1008      // Just delete the channel strip.      // Just delete the channel strip.
1009      delete pChannelStrip;      delete pChannelStrip;
1010        
1011      // Do we auto-arrange?      // Do we auto-arrange?
1012      if (m_pOptions && m_pOptions->bAutoArrange)      if (m_pOptions && m_pOptions->bAutoArrange)
1013          channelsArrange();          channelsArrange();
# Line 1037  void qsamplerMainForm::editResetChannel Line 1051  void qsamplerMainForm::editResetChannel
1051  // Reset all sampler channels.  // Reset all sampler channels.
1052  void qsamplerMainForm::editResetAllChannels (void)  void qsamplerMainForm::editResetAllChannels (void)
1053  {  {
1054      if (m_pClient == NULL)          if (m_pClient == NULL)
1055          return;                  return;
1056    
1057      // Invoque the channel strip procedure,          // Invoque the channel strip procedure,
1058          // for all channels out there...          // for all channels out there...
1059      m_pWorkspace->setUpdatesEnabled(false);          m_pWorkspace->setUpdatesEnabled(false);
1060      QWidgetList wlist = m_pWorkspace->windowList();          QWidgetList wlist = m_pWorkspace->windowList();
1061      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1062          qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1063          if (pChannelStrip)                  if (pChannelStrip)
1064                  pChannelStrip->channelReset();                          pChannelStrip->channelReset();
1065      }          }
1066      m_pWorkspace->setUpdatesEnabled(true);          m_pWorkspace->setUpdatesEnabled(true);
1067  }  }
1068    
1069    
# Line 1104  void qsamplerMainForm::viewMessages ( bo Line 1118  void qsamplerMainForm::viewMessages ( bo
1118  // Show/hide the device configurator form.  // Show/hide the device configurator form.
1119  void qsamplerMainForm::viewDevices (void)  void qsamplerMainForm::viewDevices (void)
1120  {  {
1121      if (m_pOptions == NULL)          if (m_pOptions == NULL)
1122          return;                  return;
1123    
1124      if (m_pDeviceForm) {          if (m_pDeviceForm) {
1125          m_pOptions->saveWidgetGeometry(m_pDeviceForm);                  m_pOptions->saveWidgetGeometry(m_pDeviceForm);
1126                  m_pDeviceForm->setClient(m_pClient);                  m_pDeviceForm->setClient(m_pClient);
1127          if (m_pDeviceForm->isVisible()) {                  if (m_pDeviceForm->isVisible()) {
1128              m_pDeviceForm->hide();                          m_pDeviceForm->hide();
1129          } else {                  } else {
1130              m_pDeviceForm->show();                          m_pDeviceForm->show();
1131              m_pDeviceForm->raise();                          m_pDeviceForm->raise();
1132              m_pDeviceForm->setActiveWindow();                          m_pDeviceForm->setActiveWindow();
1133          }                  }
1134      }          }
1135  }  }
1136    
1137    
# Line 1235  void qsamplerMainForm::channelsArrange ( Line 1249  void qsamplerMainForm::channelsArrange (
1249          y += iHeight;          y += iHeight;
1250      }      }
1251      m_pWorkspace->setUpdatesEnabled(true);      m_pWorkspace->setUpdatesEnabled(true);
1252        
1253      stabilizeForm();      stabilizeForm();
1254  }  }
1255    
# Line 1289  void qsamplerMainForm::helpAbout (void) Line 1303  void qsamplerMainForm::helpAbout (void)
1303      sText += tr("LSCP (liblscp) instrument_name support disabled.");      sText += tr("LSCP (liblscp) instrument_name support disabled.");
1304      sText += "</font></small><br />";      sText += "</font></small><br />";
1305  #endif  #endif
1306    #ifndef CONFIG_MUTE_SOLO
1307        sText += "<small><font color=\"red\">";
1308        sText += tr("Sampler channel Mute/Solo support disabled.");
1309        sText += "</font></small><br />";
1310    #endif
1311      sText += "<br />\n";      sText += "<br />\n";
1312      sText += tr("Using") + ": ";      sText += tr("Using") + ": ";
1313      sText += ::lscp_client_package();      sText += ::lscp_client_package();
1314      sText += " ";      sText += " ";
1315      sText += ::lscp_client_version();      sText += ::lscp_client_version();
1316    #ifdef CONFIG_LIBGIG
1317        sText += ", ";
1318        sText += gig::libraryName().c_str();
1319        sText += " ";
1320        sText += gig::libraryVersion().c_str();
1321    #endif
1322      sText += "<br />\n";      sText += "<br />\n";
1323      sText += "<br />\n";      sText += "<br />\n";
1324      sText += tr("Website") + ": <a href=\"" QSAMPLER_WEBSITE "\">" QSAMPLER_WEBSITE "</a><br />\n";      sText += tr("Website") + ": <a href=\"" QSAMPLER_WEBSITE "\">" QSAMPLER_WEBSITE "</a><br />\n";
# Line 1373  void qsamplerMainForm::stabilizeForm (vo Line 1398  void qsamplerMainForm::stabilizeForm (vo
1398  void qsamplerMainForm::channelStripChanged( qsamplerChannelStrip *pChannelStrip )  void qsamplerMainForm::channelStripChanged( qsamplerChannelStrip *pChannelStrip )
1399  {  {
1400          // Add this strip to the changed list...          // Add this strip to the changed list...
1401          if (m_changedStrips.containsRef(pChannelStrip) == 0)          if (m_changedStrips.containsRef(pChannelStrip) == 0) {
1402                  m_changedStrips.append(pChannelStrip);                  m_changedStrips.append(pChannelStrip);
1403                    pChannelStrip->resetErrorCount();
1404            }
1405    
1406      // Just mark the dirty form.      // Just mark the dirty form.
1407      m_iDirtyCount++;      m_iDirtyCount++;
# Line 1620  void qsamplerMainForm::updateMessagesLim Line 1647  void qsamplerMainForm::updateMessagesLim
1647          if (m_pOptions->bMessagesLimit)          if (m_pOptions->bMessagesLimit)
1648              m_pMessages->setMessagesLimit(m_pOptions->iMessagesLimitLines);              m_pMessages->setMessagesLimit(m_pOptions->iMessagesLimitLines);
1649          else          else
1650              m_pMessages->setMessagesLimit(0);              m_pMessages->setMessagesLimit(-1);
1651      }      }
1652  }  }
1653    
# Line 1664  qsamplerChannelStrip *qsamplerMainForm:: Line 1691  qsamplerChannelStrip *qsamplerMainForm::
1691      pChannelStrip = new qsamplerChannelStrip(m_pWorkspace, 0, wflags);      pChannelStrip = new qsamplerChannelStrip(m_pWorkspace, 0, wflags);
1692      if (pChannelStrip == NULL)      if (pChannelStrip == NULL)
1693          return NULL;          return NULL;
1694            
1695      // Actual channel strip setup...      // Actual channel strip setup...
1696      pChannelStrip->setup(pChannel);      pChannelStrip->setup(pChannel);
1697      QObject::connect(pChannelStrip, SIGNAL(channelChanged(qsamplerChannelStrip *)), this, SLOT(channelStripChanged(qsamplerChannelStrip *)));      QObject::connect(pChannelStrip, SIGNAL(channelChanged(qsamplerChannelStrip *)), this, SLOT(channelStripChanged(qsamplerChannelStrip *)));
# Line 1722  qsamplerChannelStrip *qsamplerMainForm:: Line 1749  qsamplerChannelStrip *qsamplerMainForm::
1749          QWidgetList wlist = m_pWorkspace->windowList();          QWidgetList wlist = m_pWorkspace->windowList();
1750          if (wlist.isEmpty())          if (wlist.isEmpty())
1751                  return NULL;                  return NULL;
1752            
1753          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1754                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1755                  if (pChannelStrip) {                  if (pChannelStrip) {
# Line 1803  void qsamplerMainForm::timerSlot (void) Line 1830  void qsamplerMainForm::timerSlot (void)
1830              }              }
1831          }          }
1832      }      }
1833        
1834          // Refresh each channel usage, on each period...          if (m_pClient) {
1835      if (m_pClient && (m_changedStrips.count() > 0 || m_pOptions->bAutoRefresh)) {                  // Update the channel information for each pending strip...
1836          m_iTimerSlot += QSAMPLER_TIMER_MSECS;                  if (m_changedStrips.count() > 0) {
1837          if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime && m_pWorkspace->isUpdatesEnabled())  {                          for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first();
1838              m_iTimerSlot = 0;                                          pChannelStrip; pChannelStrip = m_changedStrips.next()) {
             // Update the channel information for each pending strip...  
             for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first();  
                     pChannelStrip;  
                                                 pChannelStrip = m_changedStrips.next()) {  
1839                                  // If successfull, remove from pending list...                                  // If successfull, remove from pending list...
1840                                  if (pChannelStrip->updateChannelInfo())                                  if (pChannelStrip->updateChannelInfo())
1841                      m_changedStrips.remove(pChannelStrip);                                          m_changedStrips.remove(pChannelStrip);
1842                          }                          }
1843              // Update the channel stream usage for each strip...                  }
1844              QWidgetList wlist = m_pWorkspace->windowList();                  // Refresh each channel usage, on each period...
1845              for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {                  if (m_pOptions->bAutoRefresh) {
1846                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);                          m_iTimerSlot += QSAMPLER_TIMER_MSECS;
1847                  if (pChannelStrip && pChannelStrip->isVisible())                          if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime)  {
1848                      pChannelStrip->updateChannelUsage();                                  m_iTimerSlot = 0;
1849              }                                  // Update the channel stream usage for each strip...
1850          }                                  QWidgetList wlist = m_pWorkspace->windowList();
1851      }                                  for (int iChannel = 0;
1852                                                    iChannel < (int) wlist.count(); iChannel++) {
1853                                            qsamplerChannelStrip *pChannelStrip
1854                                                    = (qsamplerChannelStrip *) wlist.at(iChannel);
1855                                            if (pChannelStrip && pChannelStrip->isVisible())
1856                                                    pChannelStrip->updateChannelUsage();
1857                                    }
1858                            }
1859                    }
1860            }
1861    
1862      // Register the next timer slot.      // Register the next timer slot.
1863      QTimer::singleShot(QSAMPLER_TIMER_MSECS, this, SLOT(timerSlot()));      QTimer::singleShot(QSAMPLER_TIMER_MSECS, this, SLOT(timerSlot()));
# Line 2006  bool qsamplerMainForm::startClient (void Line 2038  bool qsamplerMainForm::startClient (void
2038      ::lscp_client_set_timeout(m_pClient, m_pOptions->iServerTimeout);      ::lscp_client_set_timeout(m_pClient, m_pOptions->iServerTimeout);
2039      appendMessages(tr("Client receive timeout is set to %1 msec.").arg(::lscp_client_get_timeout(m_pClient)));      appendMessages(tr("Client receive timeout is set to %1 msec.").arg(::lscp_client_get_timeout(m_pClient)));
2040    
2041            // Subscribe to channel info change notifications...
2042            if (::lscp_client_subscribe(m_pClient, LSCP_EVENT_CHANNEL_INFO) != LSCP_OK)
2043                    appendMessagesClient("lscp_client_subscribe");
2044    
2045      // We may stop scheduling around.      // We may stop scheduling around.
2046      stopSchedule();      stopSchedule();
2047    
# Line 2019  bool qsamplerMainForm::startClient (void Line 2055  bool qsamplerMainForm::startClient (void
2055          // if visible, that we're ready...          // if visible, that we're ready...
2056          if (m_pDeviceForm && m_pDeviceForm->isVisible())          if (m_pDeviceForm && m_pDeviceForm->isVisible())
2057              m_pDeviceForm->setClient(m_pClient);              m_pDeviceForm->setClient(m_pClient);
2058                
2059      // Is any session pending to be loaded?      // Is any session pending to be loaded?
2060      if (!m_pOptions->sSessionFile.isEmpty()) {      if (!m_pOptions->sSessionFile.isEmpty()) {
2061          // Just load the prabably startup session...          // Just load the prabably startup session...
# Line 2059  void qsamplerMainForm::stopClient (void) Line 2095  void qsamplerMainForm::stopClient (void)
2095      // channels from the back-end server.      // channels from the back-end server.
2096      m_iDirtyCount = 0;      m_iDirtyCount = 0;
2097      closeSession(false);      closeSession(false);
2098        
2099      // Close us as a client...      // Close us as a client...
2100      lscp_client_destroy(m_pClient);          ::lscp_client_unsubscribe(m_pClient, LSCP_EVENT_CHANNEL_INFO);
2101        ::lscp_client_destroy(m_pClient);
2102      m_pClient = NULL;      m_pClient = NULL;
2103    
2104      // Log final here.      // Log final here.

Legend:
Removed from v.479  
changed lines
  Added in v.753

  ViewVC Help
Powered by ViewVC