/[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 586 by capela, Wed May 25 11:41:35 2005 UTC revision 957 by capela, Wed Nov 29 11:48:26 2006 UTC
# Line 2  Line 2 
2  //  //
3  // ui.h extension file, included from the uic-generated form implementation.  // ui.h extension file, included from the uic-generated form implementation.
4  /****************************************************************************  /****************************************************************************
5     Copyright (C) 2004-2005, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2006, rncbc aka Rui Nuno Capela. All rights reserved.
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License     modify it under the terms of the GNU General Public License
# Line 14  Line 14 
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License along
18     along with this program; if not, write to the Free Software     with this program; if not, write to the Free Software Foundation, Inc.,
19     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20    
21  *****************************************************************************/  *****************************************************************************/
22    
# 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  #if CONFIG_LIBGIG  #ifdef CONFIG_LIBGIG
53  # include <gig.h>  #include <gig.h>
54  #endif  #endif
55    
56  // Timer constant stuff.  // Timer constant stuff.
# Line 387  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 466  bool qsamplerMainForm::openSession (void Line 471  bool qsamplerMainForm::openSession (void
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?
# Line 500  bool qsamplerMainForm::saveSession ( boo Line 505  bool qsamplerMainForm::saveSession ( boo
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())
# Line 513  bool qsamplerMainForm::saveSession ( boo Line 518  bool qsamplerMainForm::saveSession ( boo
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?")
# Line 535  bool qsamplerMainForm::closeSession ( bo Line 541  bool qsamplerMainForm::closeSession ( bo
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?")
# Line 593  bool qsamplerMainForm::loadSessionFile ( Line 600  bool qsamplerMainForm::loadSessionFile (
600      QTextStream ts(&file);      QTextStream ts(&file);
601      while (!ts.atEnd()) {      while (!ts.atEnd()) {
602          // Read the line.          // Read the line.
603          QString sCommand = ts.readLine().simplifyWhiteSpace();          QString sCommand = ts.readLine().stripWhiteSpace();
604          // If not empty, nor a comment, call the server...          // If not empty, nor a comment, call the server...
605          if (!sCommand.isEmpty() && sCommand[0] != '#') {          if (!sCommand.isEmpty() && sCommand[0] != '#') {
606              appendMessagesColor(sCommand, "#996633");              appendMessagesColor(sCommand, "#996633");
# Line 780  bool qsamplerMainForm::saveSessionFile ( Line 787  bool qsamplerMainForm::saveSessionFile (
787                  ts << endl;                  ts << endl;
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                                    qsamplerChannelRoutingMap::ConstIterator audioRoute;
791                                    for (audioRoute = pChannel->audioRouting().begin();
792                                                    audioRoute != pChannel->audioRouting().end();
793                                                            ++audioRoute) {
794                                            ts << "SET CHANNEL AUDIO_OUTPUT_CHANNEL " << iChannel
795                                                    << " " << audioRoute.key()
796                                                    << " " << audioRoute.data() << endl;
797                                    }
798                  ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl;                  ts << "SET CHANNEL VOLUME " << iChannel << " " << pChannel->volume() << endl;
799                                    if (pChannel->channelMute())
800                                            ts << "SET CHANNEL MUTE " << iChannel << " 1" << endl;
801                                    if (pChannel->channelSolo())
802                                            ts << "SET CHANNEL SOLO " << iChannel << " 1" << endl;
803                  ts << endl;                  ts << endl;
804              }              }
805          }          }
# Line 788  bool qsamplerMainForm::saveSessionFile ( Line 807  bool qsamplerMainForm::saveSessionFile (
807          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);          QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);
808      }      }
809    
810    #ifdef CONFIG_MIDI_INSTRUMENT
811            // MIDI instrument mapping...
812            lscp_midi_instrument_t *pInstrs = ::lscp_list_midi_instruments(m_pClient);
813            if (pInstrs)
814            ts << "# " << tr("MIDI instrument mapping") << endl;
815            for (int iInstr = 0; pInstrs && pInstrs[iInstr].program >= 0; iInstr++) {
816                    lscp_midi_instrument_info_t *pInstrInfo
817                            = ::lscp_get_midi_instrument_info(m_pClient, &pInstrs[iInstr]);
818                    if (pInstrInfo) {
819                            ts << "MAP MIDI_INSTRUMENT "
820                                    << pInstrs[iInstr].bank_msb    << " "
821                                    << pInstrs[iInstr].bank_lsb    << " "
822                                    << pInstrs[iInstr].program     << " "
823                                    << pInstrInfo->engine_name     << " '"
824                                    << pInstrInfo->instrument_file << "' "
825                                    << pInstrInfo->instrument_nr   << " "
826                                    << pInstrInfo->volume          << " ";
827                            switch (pInstrInfo->load_mode) {
828                                    case LSCP_LOAD_PERSISTENT:
829                                            ts << "PERSISTENT";
830                                            break;
831                                    case LSCP_LOAD_ON_DEMAND_HOLD:
832                                            ts << "ON_DEMAND_HOLD";
833                                            break;
834                                    case LSCP_LOAD_ON_DEMAND:
835                                    case LSCP_LOAD_DEFAULT:
836                                    default:
837                                            ts << "ON_DEMAND";
838                                            break;
839                            }
840                            if (pInstrInfo->name)
841                                    ts << " '" << pInstrInfo->name << "'";
842                            ts << endl;
843                    }
844                    ts << endl;
845            // Try to keep it snappy :)
846            QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput);
847            }
848    #endif //  CONFIG_MIDI_INSTRUMENT
849    
850      // Ok. we've wrote it.      // Ok. we've wrote it.
851      file.close();      file.close();
852    
# Line 872  void qsamplerMainForm::fileReset (void) Line 931  void qsamplerMainForm::fileReset (void)
931          return;          return;
932    
933      // Ask user whether he/she want's an internal sampler reset...      // Ask user whether he/she want's an internal sampler reset...
934      if (QMessageBox::warning(this, tr("Warning"),      if (QMessageBox::warning(this,
935                    QSAMPLER_TITLE ": " + tr("Warning"),
936          tr("Resetting the sampler instance will close\n"          tr("Resetting the sampler instance will close\n"
937             "all device and channel configurations.\n\n"             "all device and channel configurations.\n\n"
938             "Please note that this operation may cause\n"             "Please note that this operation may cause\n"
# Line 907  void qsamplerMainForm::fileRestart (void Line 967  void qsamplerMainForm::fileRestart (void
967      // Ask user whether he/she want's a complete restart...      // Ask user whether he/she want's a complete restart...
968      // (if we're currently up and running)      // (if we're currently up and running)
969      if (bRestart && m_pClient) {      if (bRestart && m_pClient) {
970          bRestart = (QMessageBox::warning(this, tr("Warning"),          bRestart = (QMessageBox::warning(this,
971                            QSAMPLER_TITLE ": " + tr("Warning"),
972              tr("New settings will be effective after\n"              tr("New settings will be effective after\n"
973                 "restarting the client/server connection.\n\n"                 "restarting the client/server connection.\n\n"
974                 "Please note that this operation may cause\n"                 "Please note that this operation may cause\n"
# Line 983  void qsamplerMainForm::editRemoveChannel Line 1044  void qsamplerMainForm::editRemoveChannel
1044    
1045      // Prompt user if he/she's sure about this...      // Prompt user if he/she's sure about this...
1046      if (m_pOptions && m_pOptions->bConfirmRemove) {      if (m_pOptions && m_pOptions->bConfirmRemove) {
1047          if (QMessageBox::warning(this, tr("Warning"),          if (QMessageBox::warning(this,
1048                            QSAMPLER_TITLE ": " + tr("Warning"),
1049              tr("About to remove channel:\n\n"              tr("About to remove channel:\n\n"
1050                 "%1\n\n"                 "%1\n\n"
1051                 "Are you sure?")                 "Are you sure?")
# Line 1166  void qsamplerMainForm::viewOptions (void Line 1228  void qsamplerMainForm::viewOptions (void
1228                  (!bOldStdoutCapture &&  m_pOptions->bStdoutCapture) ||                  (!bOldStdoutCapture &&  m_pOptions->bStdoutCapture) ||
1229                  ( bOldKeepOnTop     && !m_pOptions->bKeepOnTop)     ||                  ( bOldKeepOnTop     && !m_pOptions->bKeepOnTop)     ||
1230                  (!bOldKeepOnTop     &&  m_pOptions->bKeepOnTop)) {                  (!bOldKeepOnTop     &&  m_pOptions->bKeepOnTop)) {
1231                  QMessageBox::information(this, tr("Information"),                  QMessageBox::information(this,
1232                                            QSAMPLER_TITLE ": " + tr("Information"),
1233                      tr("Some settings may be only effective\n"                      tr("Some settings may be only effective\n"
1234                         "next time you start this program."), tr("OK"));                         "next time you start this program."), tr("OK"));
1235                  updateMessagesCapture();                  updateMessagesCapture();
# Line 1294  void qsamplerMainForm::helpAbout (void) Line 1357  void qsamplerMainForm::helpAbout (void)
1357      sText += tr("LSCP (liblscp) instrument_name support disabled.");      sText += tr("LSCP (liblscp) instrument_name support disabled.");
1358      sText += "</font></small><br />";      sText += "</font></small><br />";
1359  #endif  #endif
1360    #ifndef CONFIG_MUTE_SOLO
1361        sText += "<small><font color=\"red\">";
1362        sText += tr("Sampler channel Mute/Solo support disabled.");
1363        sText += "</font></small><br />";
1364    #endif
1365      sText += "<br />\n";      sText += "<br />\n";
1366      sText += tr("Using") + ": ";      sText += tr("Using") + ": ";
1367      sText += ::lscp_client_package();      sText += ::lscp_client_package();
1368      sText += " ";      sText += " ";
1369      sText += ::lscp_client_version();      sText += ::lscp_client_version();
1370  #if CONFIG_LIBGIG  #ifdef CONFIG_LIBGIG
1371      sText += ", ";      sText += ", ";
1372      sText += gig::libraryName();      sText += gig::libraryName().c_str();
1373      sText += " ";      sText += " ";
1374      sText += gig::libraryVersion();      sText += gig::libraryVersion().c_str();
1375  #endif  #endif
1376      sText += "<br />\n";      sText += "<br />\n";
1377      sText += "<br />\n";      sText += "<br />\n";
# Line 1329  void qsamplerMainForm::stabilizeForm (vo Line 1397  void qsamplerMainForm::stabilizeForm (vo
1397      // Update the main application caption...      // Update the main application caption...
1398      QString sSessionName = sessionName(m_sFilename);      QString sSessionName = sessionName(m_sFilename);
1399      if (m_iDirtyCount > 0)      if (m_iDirtyCount > 0)
1400          sSessionName += '*';          sSessionName += " *";
1401      setCaption(tr(QSAMPLER_TITLE " - [%1]").arg(sSessionName));      setCaption(tr(QSAMPLER_TITLE " - [%1]").arg(sSessionName));
1402    
1403      // Update the main menu state...      // Update the main menu state...
# Line 1593  void qsamplerMainForm::appendMessagesErr Line 1661  void qsamplerMainForm::appendMessagesErr
1661    
1662      appendMessagesColor(s.simplifyWhiteSpace(), "#ff0000");      appendMessagesColor(s.simplifyWhiteSpace(), "#ff0000");
1663    
1664      QMessageBox::critical(this, tr("Error"), s, tr("Cancel"));      QMessageBox::critical(this,
1665                    QSAMPLER_TITLE ": " + tr("Error"), s, tr("Cancel"));
1666  }  }
1667    
1668    
# Line 1633  void qsamplerMainForm::updateMessagesLim Line 1702  void qsamplerMainForm::updateMessagesLim
1702          if (m_pOptions->bMessagesLimit)          if (m_pOptions->bMessagesLimit)
1703              m_pMessages->setMessagesLimit(m_pOptions->iMessagesLimitLines);              m_pMessages->setMessagesLimit(m_pOptions->iMessagesLimitLines);
1704          else          else
1705              m_pMessages->setMessagesLimit(0);              m_pMessages->setMessagesLimit(-1);
1706      }      }
1707  }  }
1708    
# Line 1817  void qsamplerMainForm::timerSlot (void) Line 1886  void qsamplerMainForm::timerSlot (void)
1886          }          }
1887      }      }
1888    
1889          // Refresh each channel usage, on each period...          if (m_pClient) {
1890          if (m_pClient && (m_changedStrips.count() > 0 || m_pOptions->bAutoRefresh)) {                  // Update the channel information for each pending strip...
1891                  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...  
1892                          for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first();                          for (qsamplerChannelStrip *pChannelStrip = m_changedStrips.first();
1893                                          pChannelStrip;                                          pChannelStrip; pChannelStrip = m_changedStrips.next()) {
                                                 pChannelStrip = m_changedStrips.next()) {  
1894                                  // If successfull, remove from pending list...                                  // If successfull, remove from pending list...
1895                                  if (pChannelStrip->updateChannelInfo())                                  if (pChannelStrip->updateChannelInfo())
1896                                          m_changedStrips.remove(pChannelStrip);                                          m_changedStrips.remove(pChannelStrip);
1897                          }                          }
1898                          // Update the channel stream usage for each strip...                  }
1899                          QWidgetList wlist = m_pWorkspace->windowList();                  // Refresh each channel usage, on each period...
1900                          for (int iChannel = 0; iChannel < (int) wlist.count(); iChannel++) {                  if (m_pOptions->bAutoRefresh) {
1901                                  qsamplerChannelStrip *pChannelStrip = (qsamplerChannelStrip *) wlist.at(iChannel);                          m_iTimerSlot += QSAMPLER_TIMER_MSECS;
1902                                  if (pChannelStrip && pChannelStrip->isVisible())                          if (m_iTimerSlot >= m_pOptions->iAutoRefreshTime)  {
1903                                          pChannelStrip->updateChannelUsage();                                  m_iTimerSlot = 0;
1904                                    // Update the channel stream usage for each strip...
1905                                    QWidgetList wlist = m_pWorkspace->windowList();
1906                                    for (int iChannel = 0;
1907                                                    iChannel < (int) wlist.count(); iChannel++) {
1908                                            qsamplerChannelStrip *pChannelStrip
1909                                                    = (qsamplerChannelStrip *) wlist.at(iChannel);
1910                                            if (pChannelStrip && pChannelStrip->isVisible())
1911                                                    pChannelStrip->updateChannelUsage();
1912                                    }
1913                          }                          }
1914                  }                  }
1915          }          }
# Line 1860  void qsamplerMainForm::startServer (void Line 1934  void qsamplerMainForm::startServer (void
1934    
1935      // Is the server process instance still here?      // Is the server process instance still here?
1936      if (m_pServer) {      if (m_pServer) {
1937          switch (QMessageBox::warning(this, tr("Warning"),          switch (QMessageBox::warning(this,
1938                            QSAMPLER_TITLE ": " + tr("Warning"),
1939              tr("Could not start the LinuxSampler server.\n\n"              tr("Could not start the LinuxSampler server.\n\n"
1940                 "Maybe it ss already started."),                 "Maybe it ss already started."),
1941              tr("Stop"), tr("Kill"), tr("Cancel"))) {              tr("Stop"), tr("Kill"), tr("Cancel"))) {
# Line 2019  bool qsamplerMainForm::startClient (void Line 2094  bool qsamplerMainForm::startClient (void
2094      ::lscp_client_set_timeout(m_pClient, m_pOptions->iServerTimeout);      ::lscp_client_set_timeout(m_pClient, m_pOptions->iServerTimeout);
2095      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)));
2096    
2097            // Subscribe to channel info change notifications...
2098            if (::lscp_client_subscribe(m_pClient, LSCP_EVENT_CHANNEL_INFO) != LSCP_OK)
2099                    appendMessagesClient("lscp_client_subscribe");
2100    
2101      // We may stop scheduling around.      // We may stop scheduling around.
2102      stopSchedule();      stopSchedule();
2103    
# Line 2032  bool qsamplerMainForm::startClient (void Line 2111  bool qsamplerMainForm::startClient (void
2111          // if visible, that we're ready...          // if visible, that we're ready...
2112          if (m_pDeviceForm && m_pDeviceForm->isVisible())          if (m_pDeviceForm && m_pDeviceForm->isVisible())
2113              m_pDeviceForm->setClient(m_pClient);              m_pDeviceForm->setClient(m_pClient);
2114                
2115      // Is any session pending to be loaded?      // Is any session pending to be loaded?
2116      if (!m_pOptions->sSessionFile.isEmpty()) {      if (!m_pOptions->sSessionFile.isEmpty()) {
2117          // Just load the prabably startup session...          // Just load the prabably startup session...
# Line 2074  void qsamplerMainForm::stopClient (void) Line 2153  void qsamplerMainForm::stopClient (void)
2153      closeSession(false);      closeSession(false);
2154    
2155      // Close us as a client...      // Close us as a client...
2156      lscp_client_destroy(m_pClient);          ::lscp_client_unsubscribe(m_pClient, LSCP_EVENT_CHANNEL_INFO);
2157        ::lscp_client_destroy(m_pClient);
2158      m_pClient = NULL;      m_pClient = NULL;
2159    
2160      // Log final here.      // Log final here.

Legend:
Removed from v.586  
changed lines
  Added in v.957

  ViewVC Help
Powered by ViewVC