diff options
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | core/qmpmidiread.cpp | 2 | ||||
-rw-r--r-- | qmidiplayer-desktop/CMakeLists.txt | 8 | ||||
-rw-r--r-- | qmidiplayer-desktop/main.cpp | 12 | ||||
-rw-r--r-- | qmidiplayer-desktop/qdialskulpturestyle.cpp | 43 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmphelpwindow.cpp | 3 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmphelpwindow.hpp | 2 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpplugin.cpp | 9 | ||||
-rw-r--r-- | qmidiplayer-desktop/translations/qmp_zh_CN.ts | 631 |
9 files changed, 496 insertions, 219 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b92872..e789ec8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include(FindPkgConfig) -find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5 REQUIRED COMPONENTS Widgets LinguistTools) find_package(Threads REQUIRED) pkg_search_module(fluidsynth REQUIRED fluidsynth>=2.0.0) pkg_search_module(rtmidi REQUIRED rtmidi) @@ -18,6 +18,9 @@ option(BUILD_VISUALIZATION "Build visualization plugin" ON) if(WIN32) option(BUILD_BACKTRACE "Build backtrace library" OFF) endif() +if(UNIX) + option(BUILD_PORTABLE "Instruct the built binary not to search system directories" OFF) +endif() add_subdirectory(core) add_subdirectory(qmidiplayer-desktop) diff --git a/core/qmpmidiread.cpp b/core/qmpmidiread.cpp index 697a5bd..c7d11f2 100644 --- a/core/qmpmidiread.cpp +++ b/core/qmpmidiread.cpp @@ -221,7 +221,7 @@ uint32_t CSMFReader::read_chunk(int is_header) else if(strncmp(hdr,"MTrk",4)) { - error(0,"Wrong track chunk header. Ignoring the whole chunk"); + error(0,"Wrong track chunk header. Ignoring the entire chunk."); uint32_t chnklen=read_u32();fseek(f,chnklen,SEEK_CUR);return 0; } else return read_track(),1; diff --git a/qmidiplayer-desktop/CMakeLists.txt b/qmidiplayer-desktop/CMakeLists.txt index 87741f8..ca2b6b7 100644 --- a/qmidiplayer-desktop/CMakeLists.txt +++ b/qmidiplayer-desktop/CMakeLists.txt @@ -60,6 +60,9 @@ include_directories(${PROJECT_SOURCE_DIR}/include/) cmake_host_system_information(RESULT build_host QUERY HOSTNAME) add_definitions(-DBUILD_MACHINE=${build_host}) +if(UNIX AND NOT BUILD_PORTABLE) + add_definitions(-DNON_PORTABLE -DINSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}) +endif() add_executable(qmidiplayer ${qmpdesktop_SOURCES} @@ -74,6 +77,10 @@ target_link_libraries(qmidiplayer ${CMAKE_DL_LIBS} ) +file(GLOB qmpdesktop_TS_FILES translations/*.ts) +qt5_create_translation(qmpdesktop_QM_FILES ${qmpdesktop_SOURCES} ${qmpdesktop_TS_FILES}) +add_custom_target(translations ALL DEPENDS ${qmpdesktop_QM_FILES}) + install(TARGETS qmidiplayer) install(DIRECTORY ${PROJECT_SOURCE_DIR}/doc DESTINATION ${CMAKE_INSTALL_PREFIX}/share/qmidiplayer) @@ -84,3 +91,4 @@ install(FILES ${PROJECT_SOURCE_DIR}/img/qmidiplyr.png DESTINATION ${CMAKE_INSTAL install(FILES ${PROJECT_SOURCE_DIR}/img/qmidiplyr.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps) install(FILES menu/qmidiplayer DESTINATION ${CMAKE_INSTALL_PREFIX}/share/menu) install(FILES qmidiplayer.mime DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages) +install(FILES ${qmpdesktop_QM_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/qmidiplayer/translations) diff --git a/qmidiplayer-desktop/main.cpp b/qmidiplayer-desktop/main.cpp index b1c9149..9f1d593 100644 --- a/qmidiplayer-desktop/main.cpp +++ b/qmidiplayer-desktop/main.cpp @@ -44,11 +44,19 @@ int main(int argc,char **argv) QLibraryInfo::location(QLibraryInfo::TranslationsPath)); a.installTranslator(&qtTranslator); QTranslator qmpTranslator; - qmpTranslator.load("qmp_"+QLocale::system().name()); +#ifndef NON_PORTABLE + qmpTranslator.load("qmp_"+QLocale::system().name(), + QCoreApplication::applicationDirPath()+"/translations/"); +#else +#define strify(s) #s + qmpTranslator.load("qmp_"+QLocale::system().name(), + QString(strify(INSTALL_PREFIX))+"/share/qmidiplayer/translations"); +#undef strify +#endif a.installTranslator(&qmpTranslator); QCommandLineParser clp; - clp.setApplicationDescription("A cross-platform MIDI player."); + clp.setApplicationDescription(QCoreApplication::translate("main","A cross-platform MIDI player.")); clp.addHelpOption(); clp.addVersionOption(); clp.addPositionalArgument("file",QCoreApplication::translate("main","midi files to play (optional)."),"[files...]"); diff --git a/qmidiplayer-desktop/qdialskulpturestyle.cpp b/qmidiplayer-desktop/qdialskulpturestyle.cpp index 33c80de..7650edb 100644 --- a/qmidiplayer-desktop/qdialskulpturestyle.cpp +++ b/qmidiplayer-desktop/qdialskulpturestyle.cpp @@ -134,27 +134,23 @@ paintDialBase(QPainter *painter, const QStyleOption *option) dial_color = option->palette.color(QPalette::Window); } qreal t = option->state & QStyle::State_Enabled ? 2.0 : 1.5; - if (1) { - // ###: work around Qt 4.3.0 bug? (this works for 4.3.1) - QConicalGradient border_gradient(r.center(), angle); - border_gradient.setColorAt(0.0, dial_color.lighter(120)); - border_gradient.setColorAt(0.2, dial_color); - border_gradient.setColorAt(0.5, dial_color.darker(130)); - border_gradient.setColorAt(0.8, dial_color); - border_gradient.setColorAt(1.0, dial_color.lighter(120)); - painter->setPen(QPen(border_gradient, t)); - } else { - painter->setPen(QPen(Qt::red, t)); - } + // ###: work around Qt 4.3.0 bug? (this works for 4.3.1) + QConicalGradient border_gradient(r.center(), angle); + border_gradient.setColorAt(0.0, dial_color.lighter(120)); + border_gradient.setColorAt(0.2, dial_color); + border_gradient.setColorAt(0.5, dial_color.darker(130)); + border_gradient.setColorAt(0.8, dial_color); + border_gradient.setColorAt(1.0, dial_color.lighter(120)); + painter->setPen(QPen(border_gradient, t)); #if 0 QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); dial_gradient.setColorAt(0.0, dial_color.darker(105)); dial_gradient.setColorAt(0.5, dial_color.lighter(102)); dial_gradient.setColorAt(1.0, dial_color.lighter(105)); #elif 1 - QLinearGradient dial_gradient(option->direction == Qt::LeftToRight ? r.topLeft() : r.topRight(), option->direction == Qt::LeftToRight ? r.bottomRight() : r.bottomLeft()); + QLinearGradient dial_gradient(option->direction == Qt::LeftToRight ? r.topLeft() : r.topRight(), option->direction == Qt::LeftToRight ? r.bottomRight() : r.bottomLeft()); // QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); - if (true || option->state & QStyle::State_Enabled) { + if (option->state & QStyle::State_Enabled) { #if 1 dial_gradient.setColorAt(0.0, dial_color.darker(106)); dial_gradient.setColorAt(1.0, dial_color.lighter(104)); @@ -213,7 +209,11 @@ paintCachedDialBase(QPainter *painter, const QStyleOptionSlider *option) state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus | QStyle::State_KeyboardFocusChange); } // state &= ~(QStyle::State_HasFocus); - pixmapName.sprintf("scp-qdb-%x-%x-%llx-%x", state, option->direction, option->palette.cacheKey(), d); + pixmapName = QString("scp-qdb-%1-%2-%3-%4") + .arg(state, 0, 16) + .arg(option->direction, 0, 16) + .arg(option->palette.cacheKey(), 0, 16) + .arg(d, 0, 16); } paintIndicatorCached(painter, option, paintDialBase, useCache, pixmapName); } @@ -356,18 +356,23 @@ paintCachedGrip(QPainter *painter, const QStyleOption *option) useCache = false; } if (useCache) { - uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); + QStyle::State state = option->state & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); - QByteArray colorName = option->palette.color(QPalette::Button).name().toLatin1(); - pixmapName.sprintf("scp-isg-%x-%x-%s-%x-%x", state, option->direction, colorName.constData(), option->rect.width(), option->rect.height()); + QByteArray colorName = option->palette.color(QPalette::Button).name().toLatin1(); + pixmapName = QString("scp-isg-%1-%2-%3-%4-%5") + .arg(state, 0, 16) + .arg(option->direction, 0, 16) + .arg(QString(colorName)) + .arg(option->rect.width(), 0, 16) + .arg(option->rect.height(), 0, 16); } paintIndicatorCached(painter,option, [=](QPainter *painter,const QStyleOption *option){ QStyleOption opt(*option); - opt.rect.moveTo(0,0); + opt.rect.moveTo(0, 0); paintGrip(painter,&opt); }, useCache,pixmapName); diff --git a/qmidiplayer-desktop/qmphelpwindow.cpp b/qmidiplayer-desktop/qmphelpwindow.cpp index 2faed61..325fc57 100644 --- a/qmidiplayer-desktop/qmphelpwindow.cpp +++ b/qmidiplayer-desktop/qmphelpwindow.cpp @@ -1,6 +1,7 @@ #include <fluidsynth.h> #include "qmphelpwindow.hpp" #include "ui_qmphelpwindow.h" +#define strify(s) #s static const char *months="JanFebMarAprMayJunJulAugSepOctNovDec"; std::string parseDate(const char *date) @@ -38,7 +39,7 @@ void qmpHelpWindow::on_textBrowser_sourceChanged(const QUrl &src) s.replace("RT_FLUIDSYNTH_VERSION",fluid_version_str()); s.replace("APP_VERSION",APP_VERSION); s.replace("BUILD_DATE",parseDate(__DATE__).c_str()); - s.replace("BUILD_MACHINE",sss(BUILD_MACHINE)); + s.replace("BUILD_MACHINE",strify(BUILD_MACHINE)); ui->textBrowser->setHtml(s); } } diff --git a/qmidiplayer-desktop/qmphelpwindow.hpp b/qmidiplayer-desktop/qmphelpwindow.hpp index 4e1ca4c..2cde49d 100644 --- a/qmidiplayer-desktop/qmphelpwindow.hpp +++ b/qmidiplayer-desktop/qmphelpwindow.hpp @@ -6,8 +6,6 @@ #ifndef BUILD_MACHINE #define BUILD_MACHINE UNKNOWN #endif -#define ss(s) #s -#define sss(s) ss(s) namespace Ui { class qmpHelpWindow; diff --git a/qmidiplayer-desktop/qmpplugin.cpp b/qmidiplayer-desktop/qmpplugin.cpp index 8f16573..19d14b5 100644 --- a/qmidiplayer-desktop/qmpplugin.cpp +++ b/qmidiplayer-desktop/qmpplugin.cpp @@ -55,13 +55,16 @@ void qmpPluginManager::scanPlugins(const std::vector<std::string> &pp) { QDirIterator *dir; std::vector<std::string> cpluginpaths(pp); -#ifdef QMP_BUILD_UNIX_PACKAGE - dir=new QDirIterator("/usr/lib/qmidiplayer/"); +#ifdef NON_PORTABLE +#define strify(s) #s + QString pdir=QString(strify(INSTALL_PREFIX))+"/lib/qmidiplayer/"; +#undef strify + dir=new QDirIterator(pdir); while(dir->hasNext()) { dir->next(); if(dir->fileInfo().suffix()=="so") - cpluginpaths.push_back(std::string("/usr/lib/qmidiplayer/")+dir->fileName().toStdString()); + cpluginpaths.push_back((pdir+dir->fileName()).toStdString()); } delete dir; #endif diff --git a/qmidiplayer-desktop/translations/qmp_zh_CN.ts b/qmidiplayer-desktop/translations/qmp_zh_CN.ts index f7f79df..c9e0800 100644 --- a/qmidiplayer-desktop/translations/qmp_zh_CN.ts +++ b/qmidiplayer-desktop/translations/qmp_zh_CN.ts @@ -1,6 +1,42 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> +<context> + <name>QFileEdit</name> + <message> + <location filename="../qmpsettingswindow.cpp" line="752"/> + <source>Select a file</source> + <translation type="unfinished">选择文件</translation> + </message> +</context> +<context> + <name>main</name> + <message> + <location filename="../main.cpp" line="51"/> + <source>A cross-platform MIDI player.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="54"/> + <source>midi files to play (optional).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="55"/> + <source>Load a plugin from <plugin library>.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="56"/> + <source>Load all files from the same folder.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="58"/> + <source>Keep console window open.</source> + <translation type="unfinished"></translation> + </message> +</context> <context> <name>qmpChannelEditor</name> <message> @@ -24,11 +60,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="124"/> - <source>Yamaha Grand Piano</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../qmpchanneleditor.ui" line="97"/> <source>BK: 0</source> <translation type="unfinished"></translation> @@ -39,18 +70,23 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../qmpchanneleditor.ui" line="124"/> + <source>Yamaha Grand Piano</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../qmpchanneleditor.ui" line="135"/> <source>Filters</source> <translation type="unfinished">滤波器</translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="192"/> - <source>Res. 64</source> + <location filename="../qmpchanneleditor.ui" line="182"/> + <source>Cut. 64</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="182"/> - <source>Cut. 64</source> + <location filename="../qmpchanneleditor.ui" line="192"/> + <source>Res. 64</source> <translation type="unfinished"></translation> </message> <message> @@ -59,31 +95,46 @@ <translation type="unfinished">效果</translation> </message> <message> + <location filename="../qmpchanneleditor.ui" line="252"/> + <source>Rev. 64</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../qmpchanneleditor.ui" line="262"/> <source>Chr. 64</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="252"/> - <source>Rev. 64</source> - <translation type="unfinished"></translation> + <location filename="../qmpchanneleditor.ui" line="275"/> + <source>Mixer</source> + <translation>混音</translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="349"/> - <source>Envelope</source> + <location filename="../qmpchanneleditor.ui" line="322"/> + <source>Vol. 127</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="419"/> - <source>Dec. 64</source> + <location filename="../qmpchanneleditor.ui" line="332"/> + <source>Pan. C</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../qmpchanneleditor.ui" line="349"/> + <source>Envelope</source> + <translation type="unfinished">包络</translation> + </message> + <message> <location filename="../qmpchanneleditor.ui" line="409"/> <source>Atk. 64</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../qmpchanneleditor.ui" line="419"/> + <source>Dec. 64</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../qmpchanneleditor.ui" line="429"/> <source>Rel. 64</source> <translation type="unfinished"></translation> @@ -91,12 +142,7 @@ <message> <location filename="../qmpchanneleditor.ui" line="442"/> <source>Vibrato</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpchanneleditor.ui" line="512"/> - <source>Dep. 64</source> - <translation type="unfinished"></translation> + <translation type="unfinished">振音</translation> </message> <message> <location filename="../qmpchanneleditor.ui" line="502"/> @@ -104,23 +150,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="522"/> - <source>Del. 64</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpchanneleditor.ui" line="275"/> - <source>Mixer</source> - <translation>混音</translation> - </message> - <message> - <location filename="../qmpchanneleditor.ui" line="332"/> - <source>Pan. C</source> + <location filename="../qmpchanneleditor.ui" line="512"/> + <source>Dep. 64</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpchanneleditor.ui" line="322"/> - <source>Vol. 127</source> + <location filename="../qmpchanneleditor.ui" line="522"/> + <source>Del. 64</source> <translation type="unfinished"></translation> </message> <message> @@ -137,60 +173,130 @@ <translation>通道</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="72"/> <source>A</source> - <translation>活动</translation> + <translation type="vanished">活动</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="77"/> <source>M</source> - <translation>静音</translation> + <translation type="vanished">静音</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="82"/> <source>S</source> - <translation>独奏</translation> + <translation type="vanished">独奏</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="87"/> <source>Device</source> - <translation>输出设备</translation> + <translation type="vanished">输出设备</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="92"/> <source>Preset</source> - <translation>乐器</translation> - </message> - <message> - <location filename="../qmpchannelswindow.ui" line="97"/> - <source>...</source> - <translation type="unfinished"></translation> + <translation type="vanished">乐器</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="114"/> + <location filename="../qmpchannelswindow.ui" line="41"/> <source>Save</source> <translation>保存播放列表</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="127"/> + <location filename="../qmpchannelswindow.ui" line="54"/> <source>Load</source> <translation>打开播放列表</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="134"/> + <location filename="../qmpchannelswindow.ui" line="61"/> <source>Unmute All</source> <translation>取消全部静音</translation> </message> <message> - <location filename="../qmpchannelswindow.ui" line="141"/> + <location filename="../qmpchannelswindow.ui" line="68"/> <source>Unsolo All</source> <translation>取消全部独奏</translation> </message> + <message> + <location filename="../qmpchannelswindow.cpp" line="293"/> + <source>Channel</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>qmpCustomizeWindow</name> + <message> + <location filename="../qmpcustomizewindow.ui" line="14"/> + <source>Customize widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpcustomizewindow.ui" line="31"/> + <source>></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpcustomizewindow.ui" line="38"/> + <source><</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpcustomizewindow.ui" line="56"/> + <source>Items can be sorted by drag and drop.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>qmpDevPropDialog</name> + <message> + <location filename="../qmpdevpropdialog.ui" line="14"/> + <source>External Output Device Setup</source> + <translation type="unfinished">外部输出设备设置</translation> + </message> + <message> + <location filename="../qmpdevpropdialog.ui" line="27"/> + <source>Device</source> + <translation type="unfinished">输出设备</translation> + </message> + <message> + <location filename="../qmpdevpropdialog.ui" line="32"/> + <source>Connected?</source> + <translation>已连接</translation> + </message> + <message> + <location filename="../qmpdevpropdialog.ui" line="37"/> + <source>Device Initialization File</source> + <translation>设备配置文件</translation> + </message> + <message> + <location filename="../qmpdevpropdialog.ui" line="52"/> + <source>+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpdevpropdialog.ui" line="59"/> + <source>-</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>qmpDevicePriorityDialog</name> + <message> + <location filename="../qmpdeviceprioritydialog.ui" line="14"/> + <source>Select MIDI Output Devices</source> + <translation type="unfinished">选择MIDI输出设备</translation> + </message> + <message> + <location filename="../qmpdeviceprioritydialog.ui" line="25"/> + <source>Move Up</source> + <translation type="unfinished">上移</translation> + </message> + <message> + <location filename="../qmpdeviceprioritydialog.ui" line="32"/> + <source>Move Down</source> + <translation type="unfinished">下移</translation> + </message> </context> <context> <name>qmpEfxWindow</name> <message> <location filename="../qmpefxwindow.ui" line="26"/> + <location filename="../qmpefxwindow.cpp" line="31"/> <source>Effects</source> <translation>效果</translation> </message> @@ -200,58 +306,68 @@ <translation>混响</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="121"/> + <location filename="../qmpefxwindow.ui" line="59"/> + <location filename="../qmpefxwindow.ui" line="287"/> + <source>Enabled</source> + <translation type="unfinished">启用</translation> + </message> + <message> + <location filename="../qmpefxwindow.ui" line="135"/> <source>Room</source> <translation>房间大小</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="147"/> + <location filename="../qmpefxwindow.ui" line="163"/> <source>Damp</source> <translation>衰减</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="176"/> + <location filename="../qmpefxwindow.ui" line="91"/> <source>Width</source> <translation>声场</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="202"/> - <location filename="../qmpefxwindow.ui" line="376"/> + <location filename="../qmpefxwindow.ui" line="210"/> + <location filename="../qmpefxwindow.ui" line="473"/> <source>Level</source> <translation>音量</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="226"/> + <location filename="../qmpefxwindow.ui" line="258"/> <source>Chorus</source> <translation>和声</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="321"/> + <location filename="../qmpefxwindow.ui" line="294"/> + <source>LFO</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpefxwindow.ui" line="301"/> + <source>Si&ne</source> + <translation type="unfinished">正弦波(&n)</translation> + </message> + <message> + <location filename="../qmpefxwindow.ui" line="401"/> <source>Feedback</source> <translation>和声数量</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="347"/> + <location filename="../qmpefxwindow.ui" line="326"/> <source>Rate</source> <translation>频率</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="363"/> + <location filename="../qmpefxwindow.ui" line="439"/> <source>Depth</source> <translation>延迟</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="424"/> - <source>LFO</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpefxwindow.ui" line="437"/> <source>Sine</source> - <translation>正弦</translation> + <translation type="vanished">正弦</translation> </message> <message> - <location filename="../qmpefxwindow.ui" line="450"/> + <location filename="../qmpefxwindow.ui" line="308"/> <source>Trian&gle</source> <translation>三角波(&g)</translation> </message> @@ -268,6 +384,7 @@ <name>qmpInfoWindow</name> <message> <location filename="../qmpinfowindow.ui" line="20"/> + <location filename="../qmpinfowindow.cpp" line="19"/> <source>File Information</source> <translation>文件信息</translation> </message> @@ -320,71 +437,96 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="84"/> + <location filename="../qmpmainwindow.ui" line="77"/> <source>somefile.mid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="126"/> + <location filename="../qmpmainwindow.ui" line="104"/> <source><html><head/><body><p>Poly</p></body></html></source> <translation><html><head/><body><p>复音</p></body></html></translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="390"/> + <location filename="../qmpmainwindow.ui" line="126"/> + <location filename="../qmpmainwindow.ui" line="170"/> + <source>00000</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpmainwindow.ui" line="199"/> + <source>?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpmainwindow.ui" line="237"/> + <location filename="../qmpmainwindow.ui" line="253"/> + <source>00:00</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpmainwindow.ui" line="533"/> + <source>Vol.</source> + <translation>音量</translation> + </message> + <message> <source>Channels</source> - <translation>通道</translation> + <translation type="vanished">通道</translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="419"/> <source>Playlist</source> - <translation>播放列表</translation> + <translation type="vanished">播放列表</translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="454"/> <source>Effects</source> - <translation>效果</translation> + <translation type="vanished">效果</translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="483"/> <source>Visualization</source> - <translation>可视化</translation> + <translation type="vanished">可视化</translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="539"/> <source>Master</source> - <translation>主音量</translation> + <translation type="vanished">主音量</translation> </message> <message> - <location filename="../qmpmainwindow.ui" line="105"/> - <location filename="../qmpmainwindow.ui" line="163"/> - <source>00:00</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpmainwindow.ui" line="46"/> - <source>?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpmainwindow.cpp" line="72"/> <source>File Information</source> - <translation>文件信息</translation> + <translation type="vanished">文件信息</translation> </message> <message> - <location filename="../qmpmainwindow.cpp" line="73"/> <source>Render to Wave</source> - <translation>输出到wav文件</translation> + <translation type="vanished">输出到wav文件</translation> + </message> + <message> + <location filename="../qmpmainwindow.cpp" line="113"/> + <source>Render to wave</source> + <translation>输出wav文件</translation> </message> <message> - <location filename="../qmpmainwindow.cpp" line="74"/> + <location filename="../qmpmainwindow.cpp" line="114"/> <source>Panic</source> <translation>关闭所有音符</translation> </message> + <message> + <location filename="../qmpmainwindow.cpp" line="115"/> + <source>Restart fluidsynth</source> + <translation>重新载入FluidSynth</translation> + </message> + <message> + <location filename="../qmpmainwindow.cpp" line="353"/> + <source>Error</source> + <translation>错误</translation> + </message> + <message> + <location filename="../qmpmainwindow.cpp" line="353"/> + <source>%1 is not a valid midi file.</source> + <translation>%1是无效的midi文件。</translation> + </message> </context> <context> <name>qmpPlistWindow</name> <message> <location filename="../qmpplistwindow.ui" line="29"/> + <location filename="../qmpplistwindow.cpp" line="73"/> <source>Playlist</source> <translation>播放列表</translation> </message> @@ -400,15 +542,15 @@ </message> <message> <location filename="../qmpplistwindow.ui" line="161"/> - <location filename="../qmpplistwindow.cpp" line="188"/> - <location filename="../qmpplistwindow.cpp" line="296"/> + <location filename="../qmpplistwindow.cpp" line="213"/> + <location filename="../qmpplistwindow.cpp" line="329"/> <source>Repeat Off</source> <translation>循环关</translation> </message> <message> <location filename="../qmpplistwindow.ui" line="257"/> - <location filename="../qmpplistwindow.cpp" line="213"/> - <location filename="../qmpplistwindow.cpp" line="289"/> + <location filename="../qmpplistwindow.cpp" line="238"/> + <location filename="../qmpplistwindow.cpp" line="322"/> <source>Shuffle Off</source> <translation>随机关</translation> </message> @@ -433,30 +575,30 @@ <translation>清空</translation> </message> <message> - <location filename="../qmpplistwindow.cpp" line="192"/> - <location filename="../qmpplistwindow.cpp" line="300"/> + <location filename="../qmpplistwindow.cpp" line="217"/> + <location filename="../qmpplistwindow.cpp" line="333"/> <source>Repeat One</source> <translation>循环当前</translation> </message> <message> - <location filename="../qmpplistwindow.cpp" line="196"/> - <location filename="../qmpplistwindow.cpp" line="304"/> + <location filename="../qmpplistwindow.cpp" line="221"/> + <location filename="../qmpplistwindow.cpp" line="337"/> <source>Repeat All</source> <translation>循环全部</translation> </message> <message> - <location filename="../qmpplistwindow.cpp" line="208"/> - <location filename="../qmpplistwindow.cpp" line="284"/> + <location filename="../qmpplistwindow.cpp" line="233"/> + <location filename="../qmpplistwindow.cpp" line="317"/> <source>Shuffle On</source> <translation>随机开</translation> </message> <message> - <location filename="../qmpplistwindow.cpp" line="259"/> + <location filename="../qmpplistwindow.cpp" line="292"/> <source>Save playlist</source> <translation>保存播放列表</translation> </message> <message> - <location filename="../qmpplistwindow.cpp" line="272"/> + <location filename="../qmpplistwindow.cpp" line="305"/> <source>Load playlist</source> <translation>加载播放列表</translation> </message> @@ -469,24 +611,37 @@ <translation>乐器选择</translation> </message> <message> - <location filename="../qmppresetselect.ui" line="39"/> + <location filename="../qmppresetselect.ui" line="42"/> <source>Bank</source> <translation>乐器库</translation> </message> <message> - <location filename="../qmppresetselect.ui" line="66"/> + <location filename="../qmppresetselect.ui" line="69"/> <source>Preset</source> <translation>乐器</translation> </message> <message> - <location filename="../qmppresetselect.ui" line="114"/> + <location filename="../qmppresetselect.ui" line="85"/> + <source>Bank MSB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmppresetselect.ui" line="99"/> + <source>Bank LSB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmppresetselect.ui" line="113"/> + <source>Patch</source> + <translation type="unfinished"></translation> + </message> + <message> <source>OK</source> - <translation>确定</translation> + <translation type="vanished">确定</translation> </message> <message> - <location filename="../qmppresetselect.ui" line="101"/> <source>Cancel</source> - <translation>取消</translation> + <translation type="vanished">取消</translation> </message> </context> <context> @@ -502,290 +657,386 @@ <translation>MIDI选项</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="44"/> <source>Default Output Device</source> - <translation>默认输出设备</translation> + <translation type="vanished">默认输出设备</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="58"/> - <source>Internal FluidSynth</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../qmpsettingswindow.ui" line="74"/> + <location filename="../qmpsettingswindow.ui" line="42"/> <source>Disable Midi Mapping</source> <translation>只使用默认输出设备</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="87"/> + <location filename="../qmpsettingswindow.ui" line="55"/> <source>Send SysEx</source> <translation>发送SysEx指令</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="100"/> + <location filename="../qmpsettingswindow.ui" line="68"/> <source>Wait for remaining voices before stopping</source> <translation>停止前等待复音数降为0</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="115"/> + <location filename="../qmpsettingswindow.ui" line="83"/> <source>Text Encoding</source> - <translation type="unfinished">MIDI内文本编码</translation> + <translation type="unfinished">文本编码</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="129"/> + <location filename="../qmpsettingswindow.ui" line="97"/> <source>Unicode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="134"/> + <location filename="../qmpsettingswindow.ui" line="102"/> <source>Big5</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="139"/> + <location filename="../qmpsettingswindow.ui" line="107"/> <source>Big5-HKSCS</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="144"/> + <location filename="../qmpsettingswindow.ui" line="112"/> <source>CP949</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="149"/> + <location filename="../qmpsettingswindow.ui" line="117"/> <source>EUC-JP</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="154"/> + <location filename="../qmpsettingswindow.ui" line="122"/> <source>EUC-KR</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="159"/> + <location filename="../qmpsettingswindow.ui" line="127"/> <source>GB18030</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="164"/> + <location filename="../qmpsettingswindow.ui" line="132"/> <source>KOI8-R</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="169"/> + <location filename="../qmpsettingswindow.ui" line="137"/> <source>KOI8-U</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="174"/> + <location filename="../qmpsettingswindow.ui" line="142"/> <source>Macintosh</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="179"/> + <location filename="../qmpsettingswindow.ui" line="147"/> <source>Shift-JIS</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="190"/> + <location filename="../qmpsettingswindow.ui" line="165"/> + <source>Select MIDI output devices</source> + <translation type="unfinished">选择MIDI输出设备</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="178"/> + <location filename="../qmpsettingswindow.ui" line="208"/> + <source>...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="195"/> + <source>External MIDI output device setup</source> + <translation type="unfinished">外部MIDI设备设置</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="218"/> <source>Synth</source> <translation type="unfinished">合成器</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="196"/> + <location filename="../qmpsettingswindow.ui" line="224"/> <source>Audio Buffer Count</source> <translation>音频缓冲区数量</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="203"/> + <location filename="../qmpsettingswindow.ui" line="231"/> <source>Audio Buffer Size</source> <translation>音频缓冲区大小</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="217"/> - <location filename="../qmpsettingswindow.ui" line="296"/> + <location filename="../qmpsettingswindow.ui" line="245"/> + <location filename="../qmpsettingswindow.ui" line="324"/> <source>64</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="222"/> + <location filename="../qmpsettingswindow.ui" line="250"/> <source>128</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="227"/> + <location filename="../qmpsettingswindow.ui" line="255"/> <source>256</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="232"/> + <location filename="../qmpsettingswindow.ui" line="260"/> <source>512</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="237"/> + <location filename="../qmpsettingswindow.ui" line="265"/> <source>1024</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="242"/> + <location filename="../qmpsettingswindow.ui" line="270"/> <source>2048</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="247"/> + <location filename="../qmpsettingswindow.ui" line="275"/> <source>4096</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="252"/> + <location filename="../qmpsettingswindow.ui" line="280"/> <source>8192</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="260"/> - <source>Audio Frequency</source> - <translation>采样频率</translation> + <location filename="../qmpsettingswindow.ui" line="288"/> + <source>Sample Rate</source> + <translation type="unfinished">采样率</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="271"/> + <location filename="../qmpsettingswindow.ui" line="299"/> <source>2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="276"/> + <location filename="../qmpsettingswindow.ui" line="304"/> <source>4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="281"/> + <location filename="../qmpsettingswindow.ui" line="309"/> <source>8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="286"/> + <location filename="../qmpsettingswindow.ui" line="314"/> <source>16</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="291"/> + <location filename="../qmpsettingswindow.ui" line="319"/> <source>32</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="304"/> - <source>Audio Driver</source> - <translation>音频驱动</translation> - </message> - <message> - <location filename="../qmpsettingswindow.ui" line="312"/> + <location filename="../qmpsettingswindow.ui" line="340"/> <source>16bits</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="317"/> + <location filename="../qmpsettingswindow.ui" line="345"/> <source>float</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="332"/> + <location filename="../qmpsettingswindow.ui" line="360"/> <source>22050</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="337"/> + <location filename="../qmpsettingswindow.ui" line="365"/> <source>44100</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="342"/> + <location filename="../qmpsettingswindow.ui" line="370"/> <source>48000</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="347"/> + <location filename="../qmpsettingswindow.ui" line="375"/> <source>96000</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="355"/> + <location filename="../qmpsettingswindow.ui" line="383"/> + <source>Sample Format</source> + <translation type="unfinished">采样格式</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="648"/> + <source>Show label beside icon in toolbar buttons</source> + <translation type="unfinished">工具栏按钮中显示文字标签</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="663"/> + <source>Icon Theme</source> + <translation type="unfinished">图标主题</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="671"/> + <source>Auto</source> + <translation type="unfinished">自动</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="676"/> + <source>Dark</source> + <translation type="unfinished">暗色</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="681"/> + <source>Light</source> + <translation type="unfinished">亮色</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="693"/> + <source>Customize toolbar</source> + <translation type="unfinished">自定义工具栏</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="700"/> + <location filename="../qmpsettingswindow.ui" line="718"/> + <source>Customize</source> + <translation type="unfinished">设置</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="711"/> + <source>Customize actions</source> + <translation type="unfinished">自定义右键菜单</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="728"/> + <source>Plugins</source> + <translation type="unfinished">插件</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="746"/> + <source>Name</source> + <translation type="unfinished">名称</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="751"/> + <source>Version</source> + <translation type="unfinished">版本</translation> + </message> + <message> + <source>Audio Frequency</source> + <translation type="vanished">采样频率</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="332"/> + <source>Audio Driver</source> + <translation>音频驱动</translation> + </message> + <message> <source>Audio Format</source> - <translation>音频格式</translation> + <translation type="vanished">音频格式</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="375"/> + <location filename="../qmpsettingswindow.ui" line="403"/> <source>Max Polyphony</source> <translation>最大复音数</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="382"/> + <location filename="../qmpsettingswindow.ui" line="410"/> <source>Auto bank select mode</source> <translation>自动确定乐器库选择方式</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="389"/> + <location filename="../qmpsettingswindow.ui" line="417"/> <source>Bank select mode</source> <translation>乐器库选择方式</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="400"/> + <location filename="../qmpsettingswindow.ui" line="428"/> <source>Ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="405"/> + <location filename="../qmpsettingswindow.ui" line="433"/> <source>CC#0</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="410"/> + <location filename="../qmpsettingswindow.ui" line="438"/> <source>CC#32</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="415"/> + <location filename="../qmpsettingswindow.ui" line="443"/> <source>CC#0*128+CC#32</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="423"/> + <location filename="../qmpsettingswindow.ui" line="451"/> <source>CPU Cores</source> <translation>合成器线程数</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="441"/> + <location filename="../qmpsettingswindow.ui" line="469"/> <source>Soundfonts</source> <translation>音源</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="527"/> + <location filename="../qmpsettingswindow.ui" line="485"/> + <location filename="../qmpsettingswindow.ui" line="741"/> + <source>E</source> + <translation>启用</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="490"/> + <location filename="../qmpsettingswindow.ui" line="756"/> + <source>Path</source> + <translation>路径</translation> + </message> + <message> + <location filename="../qmpsettingswindow.ui" line="571"/> <source>Behavior</source> <translation>行为设定</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="533"/> + <location filename="../qmpsettingswindow.ui" line="583"/> <source>Restore last playlist on startup</source> <translation>启动时,恢复上次的播放列表</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="540"/> + <location filename="../qmpsettingswindow.ui" line="596"/> <source>Load files in the same folder</source> <translation>添加同一文件夹下的所有文件</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="547"/> + <location filename="../qmpsettingswindow.ui" line="609"/> <source>Save dialog status</source> <translation>保存对话框状态</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="554"/> + <location filename="../qmpsettingswindow.ui" line="622"/> <source>Save parameters in effects window</source> <translation>保存效果窗口内的设定</translation> </message> <message> - <location filename="../qmpsettingswindow.ui" line="561"/> + <location filename="../qmpsettingswindow.ui" line="635"/> <source>Persistent fluidsynth instance</source> <translation>单一fluidsynth实例</translation> </message> + <message> + <location filename="../qmpsettingswindow.cpp" line="398"/> + <source>No soundfont loaded</source> + <translation>未选择soundfont</translation> + </message> + <message> + <location filename="../qmpsettingswindow.cpp" line="399"/> + <source>Internal fluidsynth is the only available MIDI output but it has no soundfont set. Would you like to setup soundfonts now? You may have to reload the internal synth afterwards.</source> + <translation>仅有FluidSynth输出可用,但未选择其使用的soundfont。需要现在进行设置吗?(设置完毕后需要重新加载FluidSynth。)</translation> + </message> </context> </TS> |