diff --git a/ChangeLog b/ChangeLog index c37006b4..b2b86c8f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,9 @@ - add special server list filter for filtering occupied servers by using "#" (#397) +- save and restore mixer state (like fader, mute, etc.) (#377) + note that saving/loading of settings only works if not connected + - scale channel instrument picture in Compact skin mode - redesign of the server dialog (e.g. added welcome message setting) @@ -26,6 +29,8 @@ - bug fix: grouping faders in the client should be proportional (see discussion in #202, #419) +TODO instrument names in the profile dialog are no longer translated (worked in v3.5.8) + TODO improve settings management -> move settings class in client/server classes, move actual settings variables TODO improve interaction between use of inifile and command line parameters (edited) #120 TODO Save and restore mixer state (fader / mute / solo...) #377 diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 0092ca4b..8e92f139 100755 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -772,20 +772,14 @@ double CChannelFader::CalcFaderGain ( const double dValue ) * CAudioMixerBoard * \******************************************************************************/ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) : - QGroupBox ( parent ), - vecStoredFaderTags ( MAX_NUM_STORED_FADER_SETTINGS, "" ), - vecStoredFaderLevels ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_FADER_MAX ), - vecStoredPanValues ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_PAN_MAX / 2 ), - vecStoredFaderIsSolo ( MAX_NUM_STORED_FADER_SETTINGS, false ), - vecStoredFaderIsMute ( MAX_NUM_STORED_FADER_SETTINGS, false ), - vecStoredFaderGroupID ( MAX_NUM_STORED_FADER_SETTINGS, INVALID_INDEX ), - iNewClientFaderLevel ( 100 ), - bDisplayPans ( false ), - bIsPanSupported ( false ), - bNoFaderVisible ( true ), - iMyChannelID ( INVALID_INDEX ), - strServerName ( "" ), - eRecorderState ( RS_UNDEFINED ) + QGroupBox ( parent ), + pSettings ( nullptr ), + bDisplayPans ( false ), + bIsPanSupported ( false ), + bNoFaderVisible ( true ), + iMyChannelID ( INVALID_INDEX ), + strServerName ( "" ), + eRecorderState ( RS_UNDEFINED ) { // add group box and hboxlayout QHBoxLayout* pGroupBoxLayout = new QHBoxLayout ( this ); @@ -1076,11 +1070,11 @@ void CAudioMixerBoard::ApplyNewConClientList ( CVector& vecChanInf // server, in that case we do not have to do anything here. if ( ( !bNoFaderVisible || ( ( iMyChannelID != INVALID_INDEX ) && ( iMyChannelID != i ) ) ) && - ( iNewClientFaderLevel != 100 ) ) + ( pSettings->iNewClientFaderLevel != 100 ) ) { // the value is in percent -> convert range vecpChanFader[i]->SetFaderLevel ( - iNewClientFaderLevel / 100.0 * AUD_MIX_FADER_MAX ); + pSettings->iNewClientFaderLevel / 100.0 * AUD_MIX_FADER_MAX ); } } @@ -1235,26 +1229,26 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader ) if ( pChanFader->IsVisible() && !pChanFader->GetReceivedName().isEmpty() ) { - CVector viOldStoredFaderLevels ( vecStoredFaderLevels ); - CVector viOldStoredPanValues ( vecStoredPanValues ); - CVector vbOldStoredFaderIsSolo ( vecStoredFaderIsSolo ); - CVector vbOldStoredFaderIsMute ( vecStoredFaderIsMute ); - CVector vbOldStoredFaderGroupID ( vecStoredFaderGroupID ); + CVector viOldStoredFaderLevels ( pSettings->vecStoredFaderLevels ); + CVector viOldStoredPanValues ( pSettings->vecStoredPanValues ); + CVector vbOldStoredFaderIsSolo ( pSettings->vecStoredFaderIsSolo ); + CVector vbOldStoredFaderIsMute ( pSettings->vecStoredFaderIsMute ); + CVector vbOldStoredFaderGroupID ( pSettings->vecStoredFaderGroupID ); // init temporary list count (may be overwritten later on) int iTempListCnt = 0; // put new value on the top of the list const int iOldIdx = - vecStoredFaderTags.StringFiFoWithCompare ( pChanFader->GetReceivedName(), - true ); + pSettings->vecStoredFaderTags.StringFiFoWithCompare ( pChanFader->GetReceivedName(), + true ); // current fader level and solo state is at the top of the list - vecStoredFaderLevels[0] = pChanFader->GetFaderLevel(); - vecStoredPanValues[0] = pChanFader->GetPanValue(); - vecStoredFaderIsSolo[0] = pChanFader->IsSolo(); - vecStoredFaderIsMute[0] = pChanFader->IsMute(); - vecStoredFaderGroupID[0] = pChanFader->GetGroupID(); + pSettings->vecStoredFaderLevels[0] = pChanFader->GetFaderLevel(); + pSettings->vecStoredPanValues[0] = pChanFader->GetPanValue(); + pSettings->vecStoredFaderIsSolo[0] = pChanFader->IsSolo(); + pSettings->vecStoredFaderIsMute[0] = pChanFader->IsMute(); + pSettings->vecStoredFaderGroupID[0] = pChanFader->GetGroupID(); iTempListCnt = 1; for ( int iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ ) @@ -1267,11 +1261,11 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader ) // index in case the entry was not present in the vector before if ( iIdx != iOldIdx ) { - vecStoredFaderLevels[iTempListCnt] = viOldStoredFaderLevels[iIdx]; - vecStoredPanValues[iTempListCnt] = viOldStoredPanValues[iIdx]; - vecStoredFaderIsSolo[iTempListCnt] = vbOldStoredFaderIsSolo[iIdx]; - vecStoredFaderIsMute[iTempListCnt] = vbOldStoredFaderIsMute[iIdx]; - vecStoredFaderGroupID[iTempListCnt] = vbOldStoredFaderGroupID[iIdx]; + pSettings->vecStoredFaderLevels[iTempListCnt] = viOldStoredFaderLevels[iIdx]; + pSettings->vecStoredPanValues[iTempListCnt] = viOldStoredPanValues[iIdx]; + pSettings->vecStoredFaderIsSolo[iTempListCnt] = vbOldStoredFaderIsSolo[iIdx]; + pSettings->vecStoredFaderIsMute[iTempListCnt] = vbOldStoredFaderIsMute[iIdx]; + pSettings->vecStoredFaderGroupID[iTempListCnt] = vbOldStoredFaderGroupID[iIdx]; iTempListCnt++; } @@ -1293,14 +1287,14 @@ bool CAudioMixerBoard::GetStoredFaderSettings ( const CChannelInfo& ChanInfo, for ( int iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ ) { // check if fader text is already known in the list - if ( !vecStoredFaderTags[iIdx].compare ( ChanInfo.strName ) ) + if ( !pSettings->vecStoredFaderTags[iIdx].compare ( ChanInfo.strName ) ) { // copy stored settings values - iStoredFaderLevel = vecStoredFaderLevels[iIdx]; - iStoredPanValue = vecStoredPanValues[iIdx]; - bStoredFaderIsSolo = vecStoredFaderIsSolo[iIdx] != 0; - bStoredFaderIsMute = vecStoredFaderIsMute[iIdx] != 0; - iGroupID = vecStoredFaderGroupID[iIdx]; + iStoredFaderLevel = pSettings->vecStoredFaderLevels[iIdx]; + iStoredPanValue = pSettings->vecStoredPanValues[iIdx]; + bStoredFaderIsSolo = pSettings->vecStoredFaderIsSolo[iIdx] != 0; + bStoredFaderIsMute = pSettings->vecStoredFaderIsMute[iIdx] != 0; + iGroupID = pSettings->vecStoredFaderGroupID[iIdx]; // values found and copied, return OK return true; diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h index 3ed2c6be..aa1bc510 100755 --- a/src/audiomixerboard.h +++ b/src/audiomixerboard.h @@ -40,6 +40,7 @@ #include "global.h" #include "util.h" #include "levelmeter.h" +#include "settings.h" /* Classes ********************************************************************/ @@ -189,6 +190,7 @@ public: virtual ~CAudioMixerBoard(); + void SetSettingsPointer ( CClientSettings* pNSet ) { pSettings = pNSet; } void HideAll(); void ApplyNewConClientList ( CVector& vecChanInfo ); void SetServerName ( const QString& strNewServerName ); @@ -209,16 +211,6 @@ public: void SetRecorderState ( const ERecorderState newRecorderState ); - - // settings - CVector vecStoredFaderTags; - CVector vecStoredFaderLevels; - CVector vecStoredPanValues; - CVector vecStoredFaderIsSolo; - CVector vecStoredFaderIsMute; - CVector vecStoredFaderGroupID; - int iNewClientFaderLevel; - protected: class CMixerBoardScrollArea : public QScrollArea { @@ -249,6 +241,7 @@ protected: void OnGainValueChanged ( const int iChannelIdx, const double dValue ); + CClientSettings* pSettings; CVector vecpChanFader; CMixerBoardScrollArea* pScrollArea; QHBoxLayout* pMainLayout; diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 1895a751..73b3c99b 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -182,21 +182,15 @@ CClientDlg::CClientDlg ( CClient* pNCliP, // init GUI design SetGUIDesign ( pClient->GetGUIDesign() ); + // set the settings pointer to the mixer board (must be done early) + MainMixerBoard->SetSettingsPointer ( pSettings ); + // reset mixer board MainMixerBoard->HideAll(); // restore channel level display preference MainMixerBoard->SetDisplayChannelLevels ( pClient->GetDisplayChannelLevels() ); - // restore fader settings - MainMixerBoard->vecStoredFaderTags = pSettings->vecStoredFaderTags; - MainMixerBoard->vecStoredFaderLevels = pSettings->vecStoredFaderLevels; - MainMixerBoard->vecStoredPanValues = pSettings->vecStoredPanValues; - MainMixerBoard->vecStoredFaderIsSolo = pSettings->vecStoredFaderIsSolo; - MainMixerBoard->vecStoredFaderIsMute = pSettings->vecStoredFaderIsMute; - MainMixerBoard->vecStoredFaderGroupID = pSettings->vecStoredFaderGroupID; - MainMixerBoard->iNewClientFaderLevel = pSettings->iNewClientFaderLevel; - // init status label OnTimerStatus(); @@ -252,8 +246,23 @@ CClientDlg::CClientDlg ( CClient* pNCliP, #endif + // File menu -------------------------------------------------------------- + QMenu* pFileMenu = new QMenu ( tr ( "&File" ), this ); + + pLoadChannelSetupAction = pFileMenu->addAction ( tr ( "&Load Mixer Channels Setup..." ), this, + SLOT ( OnLoadChannelSetup() ) ); + + pSaveChannelSetupAction = pFileMenu->addAction ( tr ( "&Save Mixer Channels Setup..." ), this, + SLOT ( OnSaveChannelSetup() ) ); + + pFileMenu->addSeparator(); + + pFileMenu->addAction ( tr ( "E&xit" ), this, + SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) ); + + // View menu -------------------------------------------------------------- - pViewMenu = new QMenu ( tr ( "&View" ), this ); + QMenu* pViewMenu = new QMenu ( tr ( "&View" ), this ); pViewMenu->addAction ( tr ( "&Connection Setup..." ), this, SLOT ( OnOpenConnectionSetupDialog() ) ); @@ -274,14 +283,9 @@ CClientDlg::CClientDlg ( CClient* pNCliP, SLOT ( OnOpenAnalyzerConsole() ) ); } - pViewMenu->addSeparator(); - - pViewMenu->addAction ( tr ( "E&xit" ), this, - SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) ); - // Edit menu -------------------------------------------------------------- - pEditMenu = new QMenu ( tr ( "&Edit" ), this ); + QMenu* pEditMenu = new QMenu ( tr ( "&Edit" ), this ); pEditMenu->addAction ( tr ( "Sort Channel Users by &Name" ), this, SLOT ( OnSortChannelsByName() ), QKeySequence ( Qt::CTRL + Qt::Key_N ) ); @@ -294,8 +298,9 @@ CClientDlg::CClientDlg ( CClient* pNCliP, // Main menu bar ----------------------------------------------------------- - pMenu = new QMenuBar ( this ); + QMenuBar* pMenu = new QMenuBar ( this ); + pMenu->addMenu ( pFileMenu ); pMenu->addMenu ( pViewMenu ); pMenu->addMenu ( pEditMenu ); pMenu->addMenu ( new CHelpMenu ( true, this ) ); @@ -304,70 +309,6 @@ CClientDlg::CClientDlg ( CClient* pNCliP, layout()->setMenuBar ( pMenu ); - // Instrument pictures popup menu ------------------------------------------ - pInstrPictPopupMenu = new QMenu ( this ); - - // add an entry for all known instruments - for ( int iCurInst = 0; iCurInst < CInstPictures::GetNumAvailableInst(); iCurInst++ ) - { - // create a menu action with text and image - QAction* pCurAction = new QAction ( - QIcon ( CInstPictures::GetResourceReference ( iCurInst ) ), - CInstPictures::GetName ( iCurInst ), - this ); - - // add data to identify the action data when it is triggered - pCurAction->setData ( iCurInst ); - - pInstrPictPopupMenu->addAction ( pCurAction ); - } - - - // Country flag icons popup menu ------------------------------------------- - pCountryFlagPopupMenu = new QMenu ( this ); - - // add an entry for all known country flags - for ( int iCurCntry = static_cast ( QLocale::AnyCountry ); - iCurCntry < static_cast ( QLocale::LastCountry ); iCurCntry++ ) - { - // the "Default" country gets a special icon - QIcon CurFlagIcon; - QString sCurCountryName; - - if ( static_cast ( iCurCntry ) == QLocale::AnyCountry ) - { - // default icon and name for no flag selected - CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" ); - sCurCountryName = tr ( "None" ); - } - else - { - // get current country enum - QLocale::Country eCountry = - static_cast ( iCurCntry ); - - // get resource file name - CurFlagIcon.addFile ( CLocale::GetCountryFlagIconsResourceReference ( eCountry ) ); - - // get the country name - sCurCountryName = QLocale::countryToString ( eCountry ); - } - - // only add the entry if a flag is available - if ( !CurFlagIcon.isNull() ) - { - // create a menu action with text and image - QAction* pCurAction = - new QAction ( CurFlagIcon, sCurCountryName, this ); - - // add data to identify the action data when it is triggered - pCurAction->setData ( iCurCntry ); - - pCountryFlagPopupMenu->addAction ( pCurAction ); - } - } - - // Window positions -------------------------------------------------------- // main window if ( !pSettings->vecWindowPosMain.isEmpty() && !pSettings->vecWindowPosMain.isNull() ) @@ -524,9 +465,6 @@ CClientDlg::CClientDlg ( CClient* pNCliP, QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::AudioChannelsChanged, this, &CClientDlg::OnAudioChannelsChanged ); - QObject::connect ( &ClientSettingsDlg, &CClientSettingsDlg::NewClientLevelChanged, - this, &CClientDlg::OnNewClientLevelChanged ); - QObject::connect ( MainMixerBoard, &CAudioMixerBoard::ChangeChanGain, this, &CClientDlg::OnChangeChanGain ); @@ -597,17 +535,10 @@ void CClientDlg::closeEvent ( QCloseEvent* Event ) pClient->Stop(); } - // store mixer fader settings (we have to hide all mixer faders first to - // initiate a storage of the current mixer fader levels in case we are - // just in a connected state) and other settings + // we have to hide all mixer faders first to initiate a storage of the + // current mixer fader levels in case we are just in a connected state MainMixerBoard->HideAll(); - pSettings->vecStoredFaderTags = MainMixerBoard->vecStoredFaderTags; - pSettings->vecStoredFaderLevels = MainMixerBoard->vecStoredFaderLevels; - pSettings->vecStoredPanValues = MainMixerBoard->vecStoredPanValues; - pSettings->vecStoredFaderIsSolo = MainMixerBoard->vecStoredFaderIsSolo; - pSettings->vecStoredFaderIsMute = MainMixerBoard->vecStoredFaderIsMute; - pSettings->vecStoredFaderGroupID = MainMixerBoard->vecStoredFaderGroupID; - pSettings->iNewClientFaderLevel = MainMixerBoard->iNewClientFaderLevel; + pSettings->bConnectDlgShowAllMusicians = ConnectDlg.GetShowAllMusicians(); // default implementation of this event handler routine @@ -755,6 +686,36 @@ void CClientDlg::OnConnectDisconBut() } } +void CClientDlg::OnLoadChannelSetup() +{ + QString strFileName = QFileDialog::getOpenFileName ( this, + tr ( "Select Channel Setup File" ), + "", + "*.jch" ); + + if ( !strFileName.isEmpty() ) + { +// TODO The client has to be stopped to apply recovered settings after re-connect. +// TODO Should we automatically stop/load/re-start the connection? + pSettings->LoadFaderSettings ( strFileName ); + } +} + +void CClientDlg::OnSaveChannelSetup() +{ + QString strFileName = QFileDialog::getSaveFileName ( this, + tr ( "Select Channel Setup File" ), + "", + "*.jch" ); + + if ( !strFileName.isEmpty() ) + { +// TODO The client has to be stopped to store current faders. +// TODO Should we automatically stop/save/re-start the connection? + pSettings->SaveFaderSettings ( strFileName ); + } +} + void CClientDlg::OnCentralServerAddressTypeChanged() { // if the server list is shown and the server type was changed, update the list @@ -1061,6 +1022,10 @@ void CClientDlg::Connect ( const QString& strSelectedAddress, if ( !pClient->IsRunning() ) { pClient->Start(); + +// TODO the client has to be stopped to load/store current faders -> as a quick hack disable menu if running +pLoadChannelSetupAction->setEnabled ( false ); +pSaveChannelSetupAction->setEnabled ( false ); } } @@ -1093,6 +1058,10 @@ void CClientDlg::Disconnect() if ( pClient->IsRunning() ) { pClient->Stop(); + +// TODO the client has to be stopped to load/store current faders -> as a quick hack disable menu if running +pLoadChannelSetupAction->setEnabled ( true ); +pSaveChannelSetupAction->setEnabled ( true ); } // change connect button text to "connect" diff --git a/src/clientdlg.h b/src/clientdlg.h index ff58cbbf..882a88ca 100755 --- a/src/clientdlg.h +++ b/src/clientdlg.h @@ -36,6 +36,7 @@ #include #include #include +#include #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) # include #endif @@ -109,11 +110,8 @@ protected: virtual void closeEvent ( QCloseEvent* Event ); void UpdateDisplay(); - QMenu* pViewMenu; - QMenu* pEditMenu; - QMenuBar* pMenu; - QMenu* pInstrPictPopupMenu; - QMenu* pCountryFlagPopupMenu; + QAction* pLoadChannelSetupAction; + QAction* pSaveChannelSetupAction; CClientSettingsDlg ClientSettingsDlg; CChatDlg ChatDlg; @@ -150,6 +148,8 @@ public slots: { ConnectDlg.SetVersionAndOSType ( InetAddr, eOSType, strVersion ); } #endif + void OnLoadChannelSetup(); + void OnSaveChannelSetup(); void OnOpenConnectionSetupDialog() { ShowConnectionSetupDialog(); } void OnOpenMusicianProfileDialog() { ShowMusicianProfileDialog(); } void OnOpenGeneralSettings() { ShowGeneralSettings(); } @@ -230,7 +230,6 @@ public slots: void OnAudioChannelsChanged() { UpdateRevSelection(); } void OnNumClientsChanged ( int iNewNumClients ); - void OnNewClientLevelChanged() { MainMixerBoard->iNewClientFaderLevel = pSettings->iNewClientFaderLevel; } void accept() { close(); } // introduced by pljones diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp index 83451379..1e3e6215 100755 --- a/src/clientsettingsdlg.cpp +++ b/src/clientsettingsdlg.cpp @@ -679,16 +679,6 @@ void CClientSettingsDlg::OnCentralServerAddressEditingFinished() edtCentralServerAddress->text() ); } -void CClientSettingsDlg::OnNewClientLevelEditingFinished() -{ - // store new setting in the client - pSettings->iNewClientFaderLevel = edtNewClientLevel->text().toInt(); - - // inform that the level has changed and the mixer board settings must - // be updated - emit NewClientLevelChanged(); -} - void CClientSettingsDlg::OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* button ) { if ( button == rbtBufferDelayPreferred ) diff --git a/src/clientsettingsdlg.h b/src/clientsettingsdlg.h index 2bb04f52..6f5cfddf 100755 --- a/src/clientsettingsdlg.h +++ b/src/clientsettingsdlg.h @@ -96,7 +96,7 @@ protected: void OnDisplayChannelLevelsStateChanged ( int value ); void OnEnableOPUS64StateChanged ( int value ); void OnCentralServerAddressEditingFinished(); - void OnNewClientLevelEditingFinished(); + void OnNewClientLevelEditingFinished() { pSettings->iNewClientFaderLevel = edtNewClientLevel->text().toInt(); } void OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* button ); void OnSoundcardActivated ( int iSndDevIdx ); void OnLInChanActivated ( int iChanIdx ); @@ -113,5 +113,4 @@ signals: void GUIDesignChanged(); void DisplayChannelLevelsChanged(); void AudioChannelsChanged(); - void NewClientLevelChanged(); }; diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm index 36253537..108cb064 100644 Binary files a/src/res/translation/translation_de_DE.qm and b/src/res/translation/translation_de_DE.qm differ diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts index b44e4b68..65406114 100644 --- a/src/res/translation/translation_de_DE.ts +++ b/src/res/translation/translation_de_DE.ts @@ -189,32 +189,32 @@ CAudioMixerBoard - + Personal Mix at the Server Eigener Mix am Server - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Wenn man mit einem Server verbunden ist, dann kann man hier den eigenen Mix verstellen ohne dass man etwas daran verändert, was die anderen von mir hören. Der Titel zeigt den Servernamen an und falls bekannt den Aufnahmestatus des Servers. - + Server - + T R Y I N G T O C O N N E C T V E R B I N D U N G S A U F B A U - + RECORDING ACTIVE AUFNAHME AKTIV - + Personal Mix at: Eigener Mix am Server: @@ -789,48 +789,53 @@ LED Statuslampe für den Netzwerkpuffer - - + + C&onnect &Verbinden - + + &File + + + + &View &Ansicht - + &Connection Setup... &Verbinden... - + My &Profile... Mein &Profil... - + C&hat... C&hat... - + &Settings... &Einstellungen... - + &Analyzer Console... - + E&xit &Beenden - + &Edit B&earbeiten @@ -839,23 +844,22 @@ &Sortiere Kanäle nach Namen - None - Keine + Keine - + Center Mitte - + R - + L @@ -930,37 +934,53 @@ Die CPU des Computers ist voll ausgelastet. - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + Sort Channel Users by &Name Sortiere die Kanäle nach dem &Namen - + Sort Channel Users by &Instrument Sortiere die Kanäle nach dem &Instrument - + Sort Channel Users by &Group Sortiere die Kanäle nach der &Gruppe - + Central Server Zentralserver - + + + Select Channel Setup File + + + + user Musiker - + users Musiker - + D&isconnect &Trennen @@ -2475,7 +2495,7 @@ - + No Name Kein Name diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm index 5ae494d5..c2ae6ab6 100644 Binary files a/src/res/translation/translation_es_ES.qm and b/src/res/translation/translation_es_ES.qm differ diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts index 923f575b..097d572a 100644 --- a/src/res/translation/translation_es_ES.ts +++ b/src/res/translation/translation_es_ES.ts @@ -201,32 +201,32 @@ CAudioMixerBoard - + Personal Mix at the Server Mezcla personal en el Servidor - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Estando conectado a un servidor, estos controles te permiten hacer tu mezcla personal sin afectar lo que otros escuchan de tí. El título muestra el nombre del servidor y, cuando se conoce, si está activamente grabando. - + Server Servidor - + T R Y I N G T O C O N N E C T I N T E N T A N D O C O N E C T A R - + RECORDING ACTIVE GRABACIÓN ACTIVA - + Personal Mix at: Mezcla Personal en el Servidor: @@ -809,74 +809,78 @@ Indicador LED estado buffers - - + + C&onnect C&onectar - + + &File + + + + &View &Ver - + &Connection Setup... &Configuración de Conexión... - + My &Profile... Mi &Perfil... - + C&hat... C&hat... - + &Settings... &Configuración... - + &Analyzer Console... &Analyzer Console... - + E&xit S&alir - + &Edit &Editar - + Sort Channel Users by &Group Ordenar Usuarios de Canal por &Grupo - None - Ninguno + Ninguno - + Center Centro - + R R - + L L @@ -951,32 +955,48 @@ El procesador del cliente o del servidor está al 100%. - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + Sort Channel Users by &Name Ordenar Canales por &Nombre - + Sort Channel Users by &Instrument Ordenar Canales por &Instrumento - + Central Server Servidor Central - + + + Select Channel Setup File + + + + user usuario - + users usuarios - + D&isconnect D&esconectar @@ -2499,7 +2519,7 @@ Ukulele Barítono - + No Name Sin Nombre diff --git a/src/res/translation/translation_fr_FR.qm b/src/res/translation/translation_fr_FR.qm index a455317a..ac7ee490 100644 Binary files a/src/res/translation/translation_fr_FR.qm and b/src/res/translation/translation_fr_FR.qm differ diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index d643d92e..9051e7d3 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -209,32 +209,32 @@ CAudioMixerBoard - + Personal Mix at the Server Mixage personnel au serveur - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Lorsque vous êtes connecté à un serveur, les contrôles vous permettent de régler votre mixage local sans affecter ce que les autres entendent de vous. Le titre indique le nom du serveur et, lorsqu'il est connu, s'il est en train d'enregistrer. - + Server Serveur - + T R Y I N G T O C O N N E C T T E N T A T I V E D E C O N N E X I O N - + RECORDING ACTIVE ENREGISTREMENT ACTIF - + Personal Mix at: Mixage personnel à : @@ -805,48 +805,53 @@ Indicateur LED d'état de tampon - - + + C&onnect Se c&onnecter - + + &File + + + + &View &Vue - + &Connection Setup... Paramètres de &connexion... - + My &Profile... Mon &profil - + C&hat... Tc&hate... - + &Settings... Paramètre&s... - + &Analyzer Console... Console d'&analyse - + E&xit &Quitter - + &Edit Édit&er @@ -855,23 +860,22 @@ &Trier les utilisateurs du canal par nom - None - Aucun + Aucun - + Center Centre - + R D - + L G @@ -946,37 +950,53 @@ Le processeur du client ou du serveur est à 100%. - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + Sort Channel Users by &Name Trier les utilisateurs du canal par &nom - + Sort Channel Users by &Instrument Trier les utilisateurs du canal par &instrument - + Sort Channel Users by &Group Trier les utilisateurs des canaux par &groupe - + Central Server Serveur central - + + + Select Channel Setup File + + + + user utilisateur - + users utilisateurs - + D&isconnect Dé&connecter @@ -2491,7 +2511,7 @@ Ukulélé basse - + No Name Sans nom diff --git a/src/res/translation/translation_it_IT.qm b/src/res/translation/translation_it_IT.qm index 4c91e8ac..3a97174f 100644 Binary files a/src/res/translation/translation_it_IT.qm and b/src/res/translation/translation_it_IT.qm differ diff --git a/src/res/translation/translation_it_IT.ts b/src/res/translation/translation_it_IT.ts index a03582e4..f5beac05 100644 --- a/src/res/translation/translation_it_IT.ts +++ b/src/res/translation/translation_it_IT.ts @@ -193,32 +193,32 @@ CAudioMixerBoard - + Personal Mix at the Server Mixer personale sul Server - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Quando connessi i fader permettono di regolare i volumi in locale senza influenzare l'ascolto degli altri utenti. L'intestazione mostra il nome de server, se valorizzato, e le informazioni sullo stato della sessione di registrazione se attiva. - + Server Server - + T R Y I N G T O C O N N E C T I N A T T E S A D I C O N N E S S I O N E - + RECORDING ACTIVE Sessione con Registrazione Attiva - + Personal Mix at: Mixer personale sul Server: @@ -639,7 +639,7 @@ - + L L @@ -861,63 +861,78 @@ Led di stato del Buffer - - + + C&onnect C&onnetti - + + &File + + + + &View &Vista - + &Connection Setup... Setup &Connessione... - + My &Profile... &Profilo Personale... - + C&hat... C&hat... - + &Settings... &Settaggi... - + &Analyzer Console... &Analizzatore... - + E&xit &Uscita - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + &Edit &Modifica - + Sort Channel Users by &Name Ordina canali per &Nome - + Sort Channel Users by &Instrument Ordina canali per &Strumento - + Sort Channel Users by &Group @@ -926,37 +941,42 @@ &Canali in ordine Alfabetico - None - Nullo + Nullo - + Center Centro - + R R - + Central Server Server Centrale - + + + Select Channel Setup File + + + + user utente - + users utenti - + D&isconnect D&isconnetti @@ -2451,7 +2471,7 @@ Uculele Basso - + No Name Senza Nome diff --git a/src/res/translation/translation_nl_NL.qm b/src/res/translation/translation_nl_NL.qm index 3ab7deeb..9b71ffe7 100644 Binary files a/src/res/translation/translation_nl_NL.qm and b/src/res/translation/translation_nl_NL.qm differ diff --git a/src/res/translation/translation_nl_NL.ts b/src/res/translation/translation_nl_NL.ts index da070a67..cc3a713a 100644 --- a/src/res/translation/translation_nl_NL.ts +++ b/src/res/translation/translation_nl_NL.ts @@ -193,32 +193,32 @@ CAudioMixerBoard - + Personal Mix at the Server Eigen mix op de Server - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Indien verbonden met de server kan hier de lokale mix ingesteld worden zonder dat hetgeen anderen van je horen wordt beïnvloed. De titel toont de servernaam en indien bekend of er audio wordt opgenomen. - + Server Server - + T R Y I N G T O C O N N E C T A A N H E T V E R B I N D E N - + RECORDING ACTIVE GELUIDSOPNAME ACTIEF - + Personal Mix at: Eigen mix op: @@ -631,7 +631,7 @@ - + L L @@ -853,98 +853,118 @@ Status van de buffers LED-indicator - - + + C&onnect C&onnect - + + &File + + + + &View &Bekijken - + &Connection Setup... &Verbindingsinstellingen... - + My &Profile... Mijn &Profiel... - + C&hat... C&hat... - + &Settings... &Settings... - + &Analyzer Console... &Analyzer Console... - + E&xit E&xit - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + &Edit &Bewerken - + Sort Channel Users by &Name Sorteer muzikanten op &naam - + Sort Channel Users by &Instrument Sorteer muzikanten op &instrument - + Sort Channel Users by &Group - None - Geen + Geen - + Center Centrum - + R R - + Central Server Centrale Server - + + + Select Channel Setup File + + + + user gebruiker - + users gebruikers - + D&isconnect &Afmelden @@ -2439,7 +2459,7 @@ Ukelele-bas - + No Name Geen naam diff --git a/src/res/translation/translation_pl_PL.qm b/src/res/translation/translation_pl_PL.qm index d69e0ce1..ee1fe75d 100755 Binary files a/src/res/translation/translation_pl_PL.qm and b/src/res/translation/translation_pl_PL.qm differ diff --git a/src/res/translation/translation_pl_PL.ts b/src/res/translation/translation_pl_PL.ts index 0db61d7f..f569e2be 100644 --- a/src/res/translation/translation_pl_PL.ts +++ b/src/res/translation/translation_pl_PL.ts @@ -154,32 +154,32 @@ CAudioMixerBoard - + Personal Mix at the Server - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. - + Server Serwer - + T R Y I N G T O C O N N E C T P R Ó B U J Ę S I Ę P O Ł Ą C Z Y Ć - + RECORDING ACTIVE - + Personal Mix at: @@ -536,7 +536,7 @@ - + L L @@ -706,98 +706,118 @@ - - + + C&onnect &Połącz - + + &File + + + + &View &Widok - + &Connection Setup... &Konfiguracja połączenia... - + My &Profile... Mój &profil... - + C&hat... &Czat... - + &Settings... &Ustawienia... - + &Analyzer Console... &Konsola analizatora... - + E&xit &Wyjdź - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + &Edit &Edytuj - + Sort Channel Users by &Name - + Sort Channel Users by &Instrument - + Sort Channel Users by &Group - None - Żaden + Żaden - + Center Środek - + R P - + Central Server - + + + Select Channel Setup File + + + + user - + users - + D&isconnect &Rozłącz @@ -2137,7 +2157,7 @@ nie jestem pewna Ukulele basowe - + No Name Brak nazwy diff --git a/src/res/translation/translation_pt_BR.qm b/src/res/translation/translation_pt_BR.qm index 9185e3e7..4b4a9b01 100644 Binary files a/src/res/translation/translation_pt_BR.qm and b/src/res/translation/translation_pt_BR.qm differ diff --git a/src/res/translation/translation_pt_BR.ts b/src/res/translation/translation_pt_BR.ts index 862f40f8..6d1fa13a 100644 --- a/src/res/translation/translation_pt_BR.ts +++ b/src/res/translation/translation_pt_BR.ts @@ -210,32 +210,32 @@ CAudioMixerBoard - + Personal Mix at the Server Mixagem Pessoal no Servidor - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Quando conectado a um servidor, estes controles permite definir sua mixagem local sem afetar o que os outros ouvem de você. O título exibe o nome do servidor e, quando conhecido, se está ativamente gravando. - + Server Servidor - + T R Y I N G T O C O N N E C T T E N T A N D O C O N E C T A R - + RECORDING ACTIVE GRAVAÇÃO ATIVA - + Personal Mix at: Mixagem Pessoal em: @@ -803,48 +803,53 @@ Indicador LED do estado dos buffers - - + + C&onnect C&onectar - + + &File + + + + &View &Ver - + &Connection Setup... &Conectar a Servidor... - + My &Profile... Meu &Perfil... - + C&hat... &Mensagens... - + &Settings... &Definições... - + &Analyzer Console... Console de &Análise... - + E&xit &Sair - + &Edit &Editar @@ -853,23 +858,22 @@ Ordenar os Canais por &Nome... - None - Nenhum + Nenhum - + Center Centro - + R R - + L L @@ -944,37 +948,53 @@ O CPU do cliente ou servidor está em 100%. - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + Sort Channel Users by &Name Ordenar os Canais por &Nome - + Sort Channel Users by &Instrument Ordenar os Canais por &Instrumento - + Sort Channel Users by &Group Ordenar os Canais por &Grupo - + Central Server Servidor Central - + + + Select Channel Setup File + + + + user usuário - + users usuários - + D&isconnect Opted by Desligar instead of Desconectar to keep same keyboard shortcut Desl&igar @@ -2478,7 +2498,7 @@ Ukulele Baixo - + No Name Sem Nome diff --git a/src/res/translation/translation_pt_PT.qm b/src/res/translation/translation_pt_PT.qm index 7679c927..5a958b6e 100644 Binary files a/src/res/translation/translation_pt_PT.qm and b/src/res/translation/translation_pt_PT.qm differ diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts index cd97fa89..917b3267 100644 --- a/src/res/translation/translation_pt_PT.ts +++ b/src/res/translation/translation_pt_PT.ts @@ -209,32 +209,32 @@ CAudioMixerBoard - + Personal Mix at the Server Mistura Pessoal no Servidor - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. Quando ligado a um servidor, estes controles permitem que defina a sua mistura local sem afectar o que os outros ouvem. O título mostra o nome do servidor e, quando conhecido, se está gravando activamente. - + Server Servidor - + T R Y I N G T O C O N N E C T T E N T A N D O L I G A R - + RECORDING ACTIVE GRAVAÇÃO ACTIVA - + Personal Mix at: Mistura Pessoal no Servidor: @@ -801,48 +801,53 @@ Indicador LED do estado dos buffers - - + + C&onnect &Ligar - + + &File + + + + &View &Ver - + &Connection Setup... &Ligar a Servidor... - + My &Profile... Meu &Perfil... - + C&hat... &Mensagens... - + &Settings... &Definições... - + &Analyzer Console... Consola de &Análise... - + E&xit &Sair - + &Edit &Editar @@ -851,23 +856,22 @@ Ordenar os Canais por &Nome... - None - Nenhum + Nenhum - + Center Centro - + R R - + L L @@ -942,37 +946,53 @@ O CPU do cliente ou servidor está a 100%. - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + Sort Channel Users by &Name Ordenar Utilizadores por &Nome - + Sort Channel Users by &Instrument Ordenar canais por &Instrumento - + Sort Channel Users by &Group - + Central Server Servidor Central - + + + Select Channel Setup File + + + + user utilizador - + users utilizadores - + D&isconnect Desl&igar @@ -2475,7 +2495,7 @@ Ukulele Baixo - + No Name Sem Nome diff --git a/src/res/translation/translation_sv_SE.qm b/src/res/translation/translation_sv_SE.qm index d4d61e78..f037a488 100644 Binary files a/src/res/translation/translation_sv_SE.qm and b/src/res/translation/translation_sv_SE.qm differ diff --git a/src/res/translation/translation_sv_SE.ts b/src/res/translation/translation_sv_SE.ts index c0cdc365..4ffb716a 100644 --- a/src/res/translation/translation_sv_SE.ts +++ b/src/res/translation/translation_sv_SE.ts @@ -153,32 +153,32 @@ CAudioMixerBoard - + Personal Mix at the Server Personlig mix på servern - + When connected to a server, the controls here allow you to set your local mix without affecting what others hear from you. The title shows the server name and, when known, whether it is actively recording. När du är ansluten till en server låter kontrollerna här ställa in din lokala mix utan att påverka vad andra hör från dig. Titeln visar servernamnet och, om det är känt, om den aktivt spelar in. - + Server Server - + T R Y I N G T O C O N N E C T F Ö R S Ö K E R A N S L U T A - + RECORDING ACTIVE INSPELNING AKTIV - + Personal Mix at: Personlig mix på: @@ -565,7 +565,7 @@ - + L V @@ -705,98 +705,118 @@ LED-indikator för buffertstatus - - + + C&onnect &Anslut - + + &File + + + + &View &Vy - + &Connection Setup... Anslutningsinställningar... - + My &Profile... Min &profil... - + C&hat... C&hatt - + &Settings... Inställningar... - + &Analyzer Console... Anal&yskonsol... - + E&xit &Avsluta - + + &Load Mixer Channels Setup... + + + + + &Save Mixer Channels Setup... + + + + &Edit &Redigera - + Sort Channel Users by &Name Sortera kanalanvändare efter &Namn - + Sort Channel Users by &Instrument Sortera kanalanvändare efter &Instrument - + Sort Channel Users by &Group - None - Ingen + Ingen - + Center Mitten - + R H - + Central Server Central server - + + + Select Channel Setup File + + + + user användare - + users användare - + D&isconnect Koppla &ner @@ -1824,7 +1844,7 @@ CMusProfDlg - + No Name Inget namn