/[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 176 by capela, Tue Jul 6 10:54:45 2004 UTC revision 302 by capela, Wed Nov 17 17:17:18 2004 UTC
# Line 36  Line 36 
36    
37  #include "qsamplerAbout.h"  #include "qsamplerAbout.h"
38  #include "qsamplerOptions.h"  #include "qsamplerOptions.h"
39    #include "qsamplerChannel.h"
40  #include "qsamplerMessages.h"  #include "qsamplerMessages.h"
41    
42  #include "qsamplerChannelStrip.h"  #include "qsamplerChannelStrip.h"
# Line 103  void qsamplerMainForm::init (void) Line 104  void qsamplerMainForm::init (void)
104      m_pMessages = NULL;      m_pMessages = NULL;
105    
106      // We'll start clean.      // We'll start clean.
107      m_iUntitled = 0;      m_iUntitled    = 0;
108      m_iDirtyCount = 0;      m_iDirtyCount  = 0;
109        m_iChangeCount = 0;
110    
111      m_pServer = NULL;      m_pServer = NULL;
112      m_pClient = NULL;      m_pClient = NULL;
# Line 483  bool qsamplerMainForm::closeSession ( bo Line 485  bool qsamplerMainForm::closeSession ( bo
485          m_pWorkspace->setUpdatesEnabled(false);          m_pWorkspace->setUpdatesEnabled(false);
486          QWidgetList wlist = m_pWorkspace->windowList();          QWidgetList wlist = m_pWorkspace->windowList();
487          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
488              qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);              qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
489              if (bForce && ::lscp_remove_channel(m_pClient, pChannel->channelID()) != LSCP_OK)              if (pChannelStrip) {
490                  appendMessagesClient("lscp_remove_channel");                  qsamplerChannel *pChannel = pChannelStrip->channel();
491              delete pChannel;                  if (bForce && pChannel)
492                        pChannel->removeChannel();
493                    delete pChannelStrip;
494                }
495          }          }
496          m_pWorkspace->setUpdatesEnabled(true);          m_pWorkspace->setUpdatesEnabled(true);
497          // We're now clean, for sure.          // We're now clean, for sure.
# Line 548  bool qsamplerMainForm::loadSessionFile ( Line 553  bool qsamplerMainForm::loadSessionFile (
553      // Try to (re)create each channel.      // Try to (re)create each channel.
554      m_pWorkspace->setUpdatesEnabled(false);      m_pWorkspace->setUpdatesEnabled(false);
555      for (int iChannelID = 0; iChannelID < iChannels; iChannelID++) {      for (int iChannelID = 0; iChannelID < iChannels; iChannelID++) {
556          createChannel(iChannelID, false);          createChannelStrip(iChannelID);
557          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);
558      }      }
559      m_pWorkspace->setUpdatesEnabled(true);      m_pWorkspace->setUpdatesEnabled(true);
# Line 562  bool qsamplerMainForm::loadSessionFile ( Line 567  bool qsamplerMainForm::loadSessionFile (
567      m_sFilename = sFilename;      m_sFilename = sFilename;
568      updateRecentFiles(sFilename);      updateRecentFiles(sFilename);
569      appendMessages(tr("Open session: \"%1\".").arg(sessionName(m_sFilename)));      appendMessages(tr("Open session: \"%1\".").arg(sessionName(m_sFilename)));
570        
571        // Make that an overall update.
572        m_iChangeCount++;
573      stabilizeForm();      stabilizeForm();
574      return true;      return true;
575  }  }
# Line 595  bool qsamplerMainForm::saveSessionFile ( Line 603  bool qsamplerMainForm::saveSessionFile (
603      ts << endl;      ts << endl;
604      QWidgetList wlist = m_pWorkspace->windowList();      QWidgetList wlist = m_pWorkspace->windowList();
605      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
606          qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);          qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
607          int iChannelID = pChannel->channelID();          if (pChannelStrip) {
608          ts << "# " << pChannel->caption() << endl;              qsamplerChannel *pChannel = pChannelStrip->channel();
609          ts << "ADD CHANNEL" << endl;              if (pChannel) {
610          ts << "SET CHANNEL AUDIO_OUTPUT_TYPE " << iChannelID << " " << pChannel->audioDriver() << endl;                  int iChannelID = pChannel->channelID();
611          ts << "SET CHANNEL MIDI_INPUT_TYPE " << iChannelID << " " << pChannel->midiDriver() << endl;                  ts << "# " << pChannelStrip->caption() << endl;
612          ts << "SET CHANNEL MIDI_INPUT_PORT " << iChannelID << " " << pChannel->midiPort() << endl;                  ts << "ADD CHANNEL" << endl;
613          ts << "SET CHANNEL MIDI_INPUT_CHANNEL " << iChannelID << " " << pChannel->midiChannel() << endl;                  ts << "SET CHANNEL AUDIO_OUTPUT_TYPE " << iChannelID << " " << pChannel->audioDriver() << endl;
614          ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannelID << endl;                  ts << "SET CHANNEL MIDI_INPUT_TYPE " << iChannelID << " " << pChannel->midiDriver() << endl;
615          ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannelID << endl;                  ts << "SET CHANNEL MIDI_INPUT_PORT " << iChannelID << " " << pChannel->midiPort() << endl;
616          ts << "SET CHANNEL VOLUME " << iChannelID << " " << pChannel->volume() << endl;                  ts << "SET CHANNEL MIDI_INPUT_CHANNEL " << iChannelID << " ";
617          ts << endl;                  if (pChannel->midiChannel() > 0)
618                        ts << pChannel->midiChannel();
619                     else
620                        ts << "ALL";
621                    ts << endl;
622                    ts << "LOAD ENGINE " << pChannel->engineName() << " " << iChannelID << endl;
623                    ts << "LOAD INSTRUMENT NON_MODAL '" << pChannel->instrumentFile() << "' " << pChannel->instrumentNr() << " " << iChannelID << endl;
624                    ts << "SET CHANNEL VOLUME " << iChannelID << " " << pChannel->volume() << endl;
625                    ts << endl;
626                }
627            }
628          // Try to keep it snappy :)          // Try to keep it snappy :)
629          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);
630      }      }
# Line 678  void qsamplerMainForm::fileSaveAs (void) Line 696  void qsamplerMainForm::fileSaveAs (void)
696  }  }
697    
698    
699    // Reset the sampler instance.
700    void qsamplerMainForm::fileReset (void)
701    {
702        if (m_pClient == NULL)
703            return;
704    
705        // Ask user whether he/she want's an internal sampler reset...
706        if (QMessageBox::warning(this, tr("Warning"),
707            tr("Resetting the sampler instance will close\n"
708               "all device and channel configurations.\n\n"
709               "Please note that this operation may cause\n"
710               "temporary MIDI and Audio disruption\n\n"
711               "Do you want to reset the sampler engine now?"),
712            tr("Reset"), tr("Cancel")) > 0)
713            return;
714    
715        // Just do the reset, after closing down current session...
716        if (closeSession(true) && ::lscp_reset_sampler(m_pClient) != LSCP_OK) {
717            appendMessagesClient("lscp_reset_sampler");
718            appendMessagesError(tr("Could not reset sampler instance.\n\nSorry."));
719            return;
720        }
721    
722        // Log this.
723        appendMessages(tr("Sampler reset."));
724    }
725    
726    
727  // Restart the client/server instance.  // Restart the client/server instance.
728  void qsamplerMainForm::fileRestart (void)  void qsamplerMainForm::fileRestart (void)
729  {  {
# Line 725  void qsamplerMainForm::editAddChannel (v Line 771  void qsamplerMainForm::editAddChannel (v
771      if (m_pClient == NULL)      if (m_pClient == NULL)
772          return;          return;
773    
774      // Create the new sampler channel.      // Just create the channel strip,
775      int iChannelID = ::lscp_add_channel(m_pClient);      // by giving an invalid channel id.
776      if (iChannelID < 0) {      createChannelStrip(-1);
         appendMessagesClient("lscp_add_channel");  
         appendMessagesError(tr("Could not create the new channel.\n\nSorry."));  
         return;  
     }  
   
     // Log this happening.  
     appendMessages(tr("Channel %1 created.").arg(iChannelID));  
   
     // Just create the channel strip with given id.  
     createChannel(iChannelID, true);  
   
     // We'll be dirty, for sure...  
     m_iDirtyCount++;  
     // Stabilize form anyway.  
     stabilizeForm();  
777  }  }
778    
779    
# Line 752  void qsamplerMainForm::editRemoveChannel Line 783  void qsamplerMainForm::editRemoveChannel
783      if (m_pClient == NULL)      if (m_pClient == NULL)
784          return;          return;
785    
786      qsamplerChannelStrip *pChannel = activeChannel();      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
787        if (pChannelStrip == NULL)
788            return;
789            
790        qsamplerChannel *pChannel = pChannelStrip->channel();
791      if (pChannel == NULL)      if (pChannel == NULL)
792          return;          return;
793    
# Line 762  void qsamplerMainForm::editRemoveChannel Line 797  void qsamplerMainForm::editRemoveChannel
797              tr("About to remove channel:\n\n"              tr("About to remove channel:\n\n"
798                 "%1\n\n"                 "%1\n\n"
799                 "Are you sure?")                 "Are you sure?")
800                 .arg(pChannel->caption()),                 .arg(pChannelStrip->caption()),
801              tr("OK"), tr("Cancel")) > 0)              tr("OK"), tr("Cancel")) > 0)
802              return;              return;
803      }      }
804    
805      // Remove the existing sampler channel.      // Remove the existing sampler channel.
806      if (::lscp_remove_channel(m_pClient, pChannel->channelID()) != LSCP_OK) {      if (!pChannel->removeChannel())
         appendMessagesClient("lscp_remove_channel");  
         appendMessagesError(tr("Could not remove channel.\n\nSorry."));  
807          return;          return;
     }  
808    
     // Log this happening.  
     appendMessages(tr("Channel %1 removed.").arg(pChannel->channelID()));  
       
809      // Just delete the channel strip.      // Just delete the channel strip.
810      delete pChannel;      delete pChannelStrip;
811        
812      // Do we auto-arrange?      // Do we auto-arrange?
813      if (m_pOptions && m_pOptions->bAutoArrange)      if (m_pOptions && m_pOptions->bAutoArrange)
814          channelsArrange();          channelsArrange();
# Line 795  void qsamplerMainForm::editSetupChannel Line 825  void qsamplerMainForm::editSetupChannel
825      if (m_pClient == NULL)      if (m_pClient == NULL)
826          return;          return;
827    
828      qsamplerChannelStrip *pChannel = activeChannel();      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
829      if (pChannel == NULL)      if (pChannelStrip == NULL)
830          return;          return;
831    
832      // Just invoque the channel strip procedure.      // Just invoque the channel strip procedure.
833      pChannel->channelSetup(false);      pChannelStrip->channelSetup();
834  }  }
835    
836    
# Line 810  void qsamplerMainForm::editResetChannel Line 840  void qsamplerMainForm::editResetChannel
840      if (m_pClient == NULL)      if (m_pClient == NULL)
841          return;          return;
842    
843      qsamplerChannelStrip *pChannel = activeChannel();      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
844      if (pChannel == NULL)      if (pChannelStrip == NULL)
845          return;          return;
846    
847      // Remove the existing sampler channel.      qsamplerChannel *pChannel = pChannelStrip->channel();
848      if (::lscp_reset_channel(m_pClient, pChannel->channelID()) != LSCP_OK) {      if (pChannel == NULL)
         appendMessagesClient("lscp_reset_channel");  
         appendMessagesError(tr("Could not reset channel.\n\nSorry."));  
849          return;          return;
     }  
850    
851      // Log this.      // Reset the existing sampler channel.
852      appendMessages(tr("Channel %1 reset.").arg(pChannel->channelID()));      pChannel->resetChannel();
853    
854      // Refresh channel strip info.      // And force a deferred update.
855      pChannel->updateChannelInfo();      m_iChangeCount++;
856  }  }
857    
858    
# Line 886  void qsamplerMainForm::viewOptions (void Line 913  void qsamplerMainForm::viewOptions (void
913      qsamplerOptionsForm *pOptionsForm = new qsamplerOptionsForm(this);      qsamplerOptionsForm *pOptionsForm = new qsamplerOptionsForm(this);
914      if (pOptionsForm) {      if (pOptionsForm) {
915          // Check out some initial nullities(tm)...          // Check out some initial nullities(tm)...
916          qsamplerChannelStrip *pChannel = activeChannel();          qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
917          if (m_pOptions->sDisplayFont.isEmpty() && pChannel)          if (m_pOptions->sDisplayFont.isEmpty() && pChannelStrip)
918              m_pOptions->sDisplayFont = pChannel->displayFont().toString();              m_pOptions->sDisplayFont = pChannelStrip->displayFont().toString();
919          if (m_pOptions->sMessagesFont.isEmpty() && m_pMessages)          if (m_pOptions->sMessagesFont.isEmpty() && m_pMessages)
920              m_pOptions->sMessagesFont = m_pMessages->messagesFont().toString();              m_pOptions->sMessagesFont = m_pMessages->messagesFont().toString();
921          // To track down deferred or immediate changes.          // To track down deferred or immediate changes.
# Line 898  void qsamplerMainForm::viewOptions (void Line 925  void qsamplerMainForm::viewOptions (void
925          bool    bOldServerStart     = m_pOptions->bServerStart;          bool    bOldServerStart     = m_pOptions->bServerStart;
926          QString sOldServerCmdLine   = m_pOptions->sServerCmdLine;          QString sOldServerCmdLine   = m_pOptions->sServerCmdLine;
927          QString sOldDisplayFont     = m_pOptions->sDisplayFont;          QString sOldDisplayFont     = m_pOptions->sDisplayFont;
928            bool    bOldDisplayEffect   = m_pOptions->bDisplayEffect;
929          int     iOldMaxVolume       = m_pOptions->iMaxVolume;          int     iOldMaxVolume       = m_pOptions->iMaxVolume;
930          QString sOldMessagesFont    = m_pOptions->sMessagesFont;          QString sOldMessagesFont    = m_pOptions->sMessagesFont;
931          bool    bOldStdoutCapture   = m_pOptions->bStdoutCapture;          bool    bOldStdoutCapture   = m_pOptions->bStdoutCapture;
# Line 922  void qsamplerMainForm::viewOptions (void Line 950  void qsamplerMainForm::viewOptions (void
950                  (!bOldCompletePath &&  m_pOptions->bCompletePath) ||                  (!bOldCompletePath &&  m_pOptions->bCompletePath) ||
951                  (iOldMaxRecentFiles != m_pOptions->iMaxRecentFiles))                  (iOldMaxRecentFiles != m_pOptions->iMaxRecentFiles))
952                  updateRecentFilesMenu();                  updateRecentFilesMenu();
953                if (( bOldDisplayEffect && !m_pOptions->bDisplayEffect) ||
954                    (!bOldDisplayEffect &&  m_pOptions->bDisplayEffect))
955                    updateDisplayEffect();
956              if (sOldDisplayFont != m_pOptions->sDisplayFont)              if (sOldDisplayFont != m_pOptions->sDisplayFont)
957                  updateDisplayFont();                  updateDisplayFont();
958              if (iOldMaxVolume != m_pOptions->iMaxVolume)              if (iOldMaxVolume != m_pOptions->iMaxVolume)
# Line 964  void qsamplerMainForm::channelsArrange ( Line 995  void qsamplerMainForm::channelsArrange (
995      m_pWorkspace->setUpdatesEnabled(false);      m_pWorkspace->setUpdatesEnabled(false);
996      int y = 0;      int y = 0;
997      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
998          qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);          qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
999      /*  if (pChannel->testWState(WState_Maximized | WState_Minimized)) {      /*  if (pChannelStrip->testWState(WState_Maximized | WState_Minimized)) {
1000              // Prevent flicker...              // Prevent flicker...
1001              pChannel->hide();              pChannelStrip->hide();
1002              pChannel->showNormal();              pChannelStrip->showNormal();
1003          }   */          }   */
1004          pChannel->adjustSize();          pChannelStrip->adjustSize();
1005          int iWidth  = m_pWorkspace->width();          int iWidth  = m_pWorkspace->width();
1006          if (iWidth < pChannel->width())          if (iWidth < pChannelStrip->width())
1007              iWidth = pChannel->width();              iWidth = pChannelStrip->width();
1008      //  int iHeight = pChannel->height() + pChannel->parentWidget()->baseSize().height();      //  int iHeight = pChannelStrip->height() + pChannelStrip->parentWidget()->baseSize().height();
1009          int iHeight = pChannel->parentWidget()->frameGeometry().height();          int iHeight = pChannelStrip->parentWidget()->frameGeometry().height();
1010          pChannel->parentWidget()->setGeometry(0, y, iWidth, iHeight);          pChannelStrip->parentWidget()->setGeometry(0, y, iWidth, iHeight);
1011          y += iHeight;          y += iHeight;
1012      }      }
1013      m_pWorkspace->setUpdatesEnabled(true);      m_pWorkspace->setUpdatesEnabled(true);
# Line 1062  void qsamplerMainForm::stabilizeForm (vo Line 1093  void qsamplerMainForm::stabilizeForm (vo
1093      setCaption(tr(QSAMPLER_TITLE " - [%1]").arg(sSessioName));      setCaption(tr(QSAMPLER_TITLE " - [%1]").arg(sSessioName));
1094    
1095      // Update the main menu state...      // Update the main menu state...
1096      qsamplerChannelStrip *pChannel = activeChannel();      qsamplerChannelStrip *pChannelStrip = activeChannelStrip();
1097      bool bHasClient  = (m_pOptions != NULL && m_pClient != NULL);      bool bHasClient  = (m_pOptions != NULL && m_pClient != NULL);
1098      bool bHasChannel = (bHasClient && pChannel != NULL);      bool bHasChannel = (bHasClient && pChannelStrip != NULL);
1099      fileNewAction->setEnabled(bHasClient);      fileNewAction->setEnabled(bHasClient);
1100      fileOpenAction->setEnabled(bHasClient);      fileOpenAction->setEnabled(bHasClient);
1101      fileSaveAction->setEnabled(bHasClient && m_iDirtyCount > 0);      fileSaveAction->setEnabled(bHasClient && m_iDirtyCount > 0);
1102      fileSaveAsAction->setEnabled(bHasClient);      fileSaveAsAction->setEnabled(bHasClient);
1103        fileResetAction->setEnabled(bHasClient);
1104      fileRestartAction->setEnabled(bHasClient || m_pServer == NULL);      fileRestartAction->setEnabled(bHasClient || m_pServer == NULL);
1105      editAddChannelAction->setEnabled(bHasClient);      editAddChannelAction->setEnabled(bHasClient);
1106      editRemoveChannelAction->setEnabled(bHasChannel);      editRemoveChannelAction->setEnabled(bHasChannel);
# Line 1087  void qsamplerMainForm::stabilizeForm (vo Line 1119  void qsamplerMainForm::stabilizeForm (vo
1119      }      }
1120      // Channel status...      // Channel status...
1121      if (bHasChannel)      if (bHasChannel)
1122          m_status[QSAMPLER_STATUS_CHANNEL]->setText(pChannel->caption());          m_status[QSAMPLER_STATUS_CHANNEL]->setText(pChannelStrip->caption());
1123      else      else
1124          m_status[QSAMPLER_STATUS_CHANNEL]->clear();          m_status[QSAMPLER_STATUS_CHANNEL]->clear();
1125      // Session status...      // Session status...
# Line 1106  void qsamplerMainForm::stabilizeForm (vo Line 1138  void qsamplerMainForm::stabilizeForm (vo
1138    
1139    
1140  // Channel change receiver slot.  // Channel change receiver slot.
1141  void qsamplerMainForm::channelChanged( qsamplerChannelStrip * )  void qsamplerMainForm::channelStripChanged( qsamplerChannelStrip * )
1142  {  {
1143        // Flag that we're update those channel strips.
1144        m_iChangeCount++;
1145      // Just mark the dirty form.      // Just mark the dirty form.
1146      m_iDirtyCount++;      m_iDirtyCount++;
1147      // and update the form status...      // and update the form status...
# Line 1180  void qsamplerMainForm::updateDisplayFont Line 1214  void qsamplerMainForm::updateDisplayFont
1214    
1215      m_pWorkspace->setUpdatesEnabled(false);      m_pWorkspace->setUpdatesEnabled(false);
1216      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1217          qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);          qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1218          pChannel->setDisplayFont(font);          if (pChannelStrip)
1219                pChannelStrip->setDisplayFont(font);
1220        }
1221        m_pWorkspace->setUpdatesEnabled(true);
1222    }
1223    
1224    
1225    // Update channel strips background effect.
1226    void qsamplerMainForm::updateDisplayEffect (void)
1227    {
1228       QPixmap pm;
1229        if (m_pOptions->bDisplayEffect)
1230            pm = QPixmap::fromMimeSource("displaybg1.png");
1231    
1232        // Full channel list update...
1233        QWidgetList wlist = m_pWorkspace->windowList();
1234        if (wlist.isEmpty())
1235            return;
1236    
1237        m_pWorkspace->setUpdatesEnabled(false);
1238        for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1239            qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1240            if (pChannelStrip)
1241                pChannelStrip->setDisplayBackground(pm);
1242      }      }
1243      m_pWorkspace->setUpdatesEnabled(true);      m_pWorkspace->setUpdatesEnabled(true);
1244  }  }
# Line 1200  void qsamplerMainForm::updateMaxVolume ( Line 1257  void qsamplerMainForm::updateMaxVolume (
1257    
1258      m_pWorkspace->setUpdatesEnabled(false);      m_pWorkspace->setUpdatesEnabled(false);
1259      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {      for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1260          qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);          qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1261          pChannel->setMaxVolume(m_pOptions->iMaxVolume);          if (pChannelStrip)
1262                pChannelStrip->setMaxVolume(m_pOptions->iMaxVolume);
1263      }      }
1264      m_pWorkspace->setUpdatesEnabled(true);      m_pWorkspace->setUpdatesEnabled(true);
1265  }  }
# Line 1300  void qsamplerMainForm::updateMessagesCap Line 1358  void qsamplerMainForm::updateMessagesCap
1358  // qsamplerMainForm -- MDI channel strip management.  // qsamplerMainForm -- MDI channel strip management.
1359    
1360  // The channel strip creation executive.  // The channel strip creation executive.
1361  void qsamplerMainForm::createChannel ( int iChannelID, bool bPrompt )  qsamplerChannelStrip *qsamplerMainForm::createChannelStrip ( int iChannelID )
1362  {  {
1363      if (m_pClient == NULL)      if (m_pClient == NULL)
1364          return;          return NULL;
1365    
1366      // Prepare for auto-arrange?      // Prepare for auto-arrange?
1367      qsamplerChannelStrip *pChannel = NULL;      qsamplerChannelStrip *pChannelStrip = NULL;
1368      int y = 0;      int y = 0;
1369      if (m_pOptions && m_pOptions->bAutoArrange) {      if (m_pOptions && m_pOptions->bAutoArrange) {
1370          QWidgetList wlist = m_pWorkspace->windowList();          QWidgetList wlist = m_pWorkspace->windowList();
1371          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1372              pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);              pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1373          //  y += pChannel->height() + pChannel->parentWidget()->baseSize().height();          //  y += pChannelStrip->height() + pChannelStrip->parentWidget()->baseSize().height();
1374              y += pChannel->parentWidget()->frameGeometry().height();              y += pChannelStrip->parentWidget()->frameGeometry().height();
1375          }          }
1376      }      }
1377    
1378      // Add a new channel itema...      // Add a new channel itema...
1379      WFlags wflags = Qt::WStyle_Customize | Qt::WStyle_Tool | Qt::WStyle_Title | Qt::WStyle_NoBorder;      WFlags wflags = Qt::WStyle_Customize | Qt::WStyle_Tool | Qt::WStyle_Title | Qt::WStyle_NoBorder;
1380      pChannel = new qsamplerChannelStrip(m_pWorkspace, 0, wflags);      pChannelStrip = new qsamplerChannelStrip(m_pWorkspace, 0, wflags);
1381      pChannel->setMaxVolume(m_pOptions->iMaxVolume);      // Actual channel setup.
1382      pChannel->setup(this, iChannelID);      pChannelStrip->setup(this, iChannelID);
1383      // We'll need a display font.      QObject::connect(pChannelStrip, SIGNAL(channelChanged(qsamplerChannelStrip *)), this, SLOT(channelStripChanged(qsamplerChannelStrip *)));
     QFont font;  
     if (m_pOptions && font.fromString(m_pOptions->sDisplayFont))  
         pChannel->setDisplayFont(font);  
     // Track channel setup changes.  
     QObject::connect(pChannel, SIGNAL(channelChanged(qsamplerChannelStrip *)), this, SLOT(channelChanged(qsamplerChannelStrip *)));  
1384      // Before we show it up, may be we'll      // Before we show it up, may be we'll
1385      // better ask for some initial values?      // better ask for some initial values?
1386      if (bPrompt)      if (iChannelID < 0 && !pChannelStrip->channelSetup()) {
1387          pChannel->channelSetup(true);          // No luck, bail out...
1388            delete pChannelStrip;
1389            return NULL;
1390        }
1391    
1392        // Set some initial aesthetic options...
1393        if (m_pOptions) {
1394            // Background display effect...
1395            pChannelStrip->setDisplayEffect(m_pOptions->bDisplayEffect);
1396            // We'll need a display font.
1397            QFont font;
1398            if (font.fromString(m_pOptions->sDisplayFont))
1399                pChannelStrip->setDisplayFont(font);
1400            // Maximum allowed volume setting.
1401            pChannelStrip->setMaxVolume(m_pOptions->iMaxVolume);
1402        }
1403    
1404      // Now we show up us to the world.      // Now we show up us to the world.
1405      pChannel->show();      pChannelStrip->show();
1406      // Only then, we'll auto-arrange...      // Only then, we'll auto-arrange...
1407      if (m_pOptions && m_pOptions->bAutoArrange) {      if (m_pOptions && m_pOptions->bAutoArrange) {
1408          int iWidth  = m_pWorkspace->width();          int iWidth  = m_pWorkspace->width();
1409      //  int iHeight = pChannel->height() + pChannel->parentWidget()->baseSize().height();      //  int iHeight = pChannel->height() + pChannel->parentWidget()->baseSize().height();
1410          int iHeight = pChannel->parentWidget()->frameGeometry().height();          int iHeight = pChannelStrip->parentWidget()->frameGeometry().height();
1411          pChannel->parentWidget()->setGeometry(0, y, iWidth, iHeight);          pChannelStrip->parentWidget()->setGeometry(0, y, iWidth, iHeight);
1412      }      }
1413        
1414        // Return our successful reference...
1415        return pChannelStrip;
1416  }  }
1417    
1418    
1419  // Retrieve the active channel strip.  // Retrieve the active channel strip.
1420  qsamplerChannelStrip *qsamplerMainForm::activeChannel (void)  qsamplerChannelStrip *qsamplerMainForm::activeChannelStrip (void)
1421  {  {
1422      return (qsamplerChannelStrip *) m_pWorkspace->activeWindow();      return (qsamplerChannelStrip *) m_pWorkspace->activeWindow();
1423  }  }
1424    
1425    
1426  // Retrieve a channel strip by index.  // Retrieve a channel strip by index.
1427  qsamplerChannelStrip *qsamplerMainForm::channelAt ( int iChannel )  qsamplerChannelStrip *qsamplerMainForm::channelStripAt ( int iChannel )
1428  {  {
1429      QWidgetList wlist = m_pWorkspace->windowList();      QWidgetList wlist = m_pWorkspace->windowList();
1430      if (wlist.isEmpty())      if (wlist.isEmpty())
# Line 1373  void qsamplerMainForm::channelsMenuAbout Line 1445  void qsamplerMainForm::channelsMenuAbout
1445      if (!wlist.isEmpty()) {      if (!wlist.isEmpty()) {
1446          channelsMenu->insertSeparator();          channelsMenu->insertSeparator();
1447          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1448              qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);              qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1449              int iItemID = channelsMenu->insertItem(pChannel->caption(), this, SLOT(channelsMenuActivated(int)));              if (pChannelStrip) {
1450              channelsMenu->setItemParameter(iItemID, iChannel);                  int iItemID = channelsMenu->insertItem(pChannelStrip->caption(), this, SLOT(channelsMenuActivated(int)));
1451              channelsMenu->setItemChecked(iItemID, activeChannel() == pChannel);                  channelsMenu->setItemParameter(iItemID, iChannel);
1452                    channelsMenu->setItemChecked(iItemID, activeChannelStrip() == pChannelStrip);
1453                }
1454          }          }
1455      }      }
1456  }  }
# Line 1385  void qsamplerMainForm::channelsMenuAbout Line 1459  void qsamplerMainForm::channelsMenuAbout
1459  // Windows menu activation slot  // Windows menu activation slot
1460  void qsamplerMainForm::channelsMenuActivated ( int iChannel )  void qsamplerMainForm::channelsMenuActivated ( int iChannel )
1461  {  {
1462      qsamplerChannelStrip *pChannel = channelAt(iChannel);      qsamplerChannelStrip *pChannelStrip = channelStripAt(iChannel);
1463      if (pChannel)      if (pChannelStrip)
1464          pChannel->showNormal();          pChannelStrip->showNormal();
1465      pChannel->setFocus();      pChannelStrip->setFocus();
1466  }  }
1467    
1468    
# Line 1428  void qsamplerMainForm::timerSlot (void) Line 1502  void qsamplerMainForm::timerSlot (void)
1502      }      }
1503            
1504          // Refresh each channel usage, on each period...          // Refresh each channel usage, on each period...
1505      if (m_pClient && m_pOptions->bAutoRefresh && m_pWorkspace->isUpdatesEnabled()) {      if (m_pClient && (m_iChangeCount > 0 || m_pOptions->bAutoRefresh)) {
1506          m_iTimerSlot += QSAMPLER_TIMER_MSECS;          m_iTimerSlot += QSAMPLER_TIMER_MSECS;
1507          if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime)  {          if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime && m_pWorkspace->isUpdatesEnabled())  {
1508              m_iTimerSlot = 0;              m_iTimerSlot = 0;
1509                m_iChangeCount = 0;
1510              QWidgetList wlist = m_pWorkspace->windowList();              QWidgetList wlist = m_pWorkspace->windowList();
1511              for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {              for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {
1512                  qsamplerChannelStrip *pChannel = (qsamplerChannelStrip *) wlist.at(iChannel);                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);
1513                  if (pChannel->isVisible())                  if (pChannelStrip && pChannelStrip->isVisible()) {
1514                      pChannel->updateChannelUsage();                      // If we can't make it clean, try next time.
1515                        if (!pChannelStrip->updateChannelUsage())
1516                            m_iChangeCount++;
1517                    }
1518              }              }
1519          }          }
1520      }      }

Legend:
Removed from v.176  
changed lines
  Added in v.302

  ViewVC Help
Powered by ViewVC