├── .gitattributes ├── .gitignore ├── 3rd_party └── FreeImage │ ├── 3.15.4 │ ├── Dist │ │ ├── FreeImage.dll │ │ ├── FreeImage.h │ │ ├── FreeImage.lib │ │ └── delete.me │ ├── README.minGW │ ├── Whatsnew.txt │ ├── Wrapper │ │ └── FreeImagePlus │ │ │ └── dist │ │ │ ├── FreeImagePlus.dll │ │ │ ├── FreeImagePlus.h │ │ │ ├── FreeImagePlus.lib │ │ │ └── delete.me │ ├── license-fi.txt │ ├── license-gplv2.txt │ └── license-gplv3.txt │ ├── 3.16.0 │ ├── Dist │ │ ├── FreeImage.dll │ │ ├── FreeImage.h │ │ ├── FreeImage.lib │ │ └── delete.me │ ├── README.minGW │ ├── Whatsnew.txt │ ├── Wrapper │ │ └── FreeImagePlus │ │ │ └── dist │ │ │ ├── FreeImagePlus.dll │ │ │ ├── FreeImagePlus.h │ │ │ ├── FreeImagePlus.lib │ │ │ └── delete.me │ ├── license-fi.txt │ ├── license-gplv2.txt │ └── license-gplv3.txt │ └── link ├── DoxyfileRpcFunctions ├── DoxygenLayoutRpcFunctions.xml ├── HowToBuild.txt ├── HowToDebugWithPDB.txt ├── HowToSetupPluginFrom7zPackage.txt ├── LibrariesAndToolsUsedInProject.txt ├── License-English.txt ├── License-Russian.txt ├── ReadMe.txt ├── build_installer.bat ├── build_plugin.bat ├── client_src ├── css │ ├── jquery.rating.css │ ├── main_page.css │ └── playlist_table.css ├── dataTables │ └── media │ │ └── js │ │ └── jquery.dataTables.js ├── favicon.ico ├── i18n │ ├── en │ │ ├── aimp_manager.js │ │ ├── datatables.txt │ │ └── main_page.js │ ├── ja │ │ ├── aimp_manager.js │ │ ├── datatables.txt │ │ └── main_page.js │ ├── pl │ │ ├── aimp_manager.js │ │ ├── datatables.txt │ │ └── main_page.js │ └── ru │ │ ├── aimp_manager.js │ │ ├── datatables.txt │ │ └── main_page.js ├── images │ ├── aimp_icon.ico │ ├── delete.png │ └── star.png ├── index.htm ├── jQuery-File-Upload │ ├── css │ │ └── jquery.fileupload-ui.css │ └── js │ │ ├── jquery.fileupload.js │ │ └── jquery.iframe-transport.js ├── jquery-ui │ └── development-bundle │ │ ├── jquery-1.9.0.js │ │ ├── themes │ │ └── ui-darkness │ │ │ ├── images │ │ │ ├── animated-overlay.gif │ │ │ ├── ui-bg_flat_30_cccccc_40x100.png │ │ │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ │ │ ├── ui-bg_glass_20_555555_1x400.png │ │ │ ├── ui-bg_glass_40_0078a3_1x400.png │ │ │ ├── ui-bg_glass_40_ffc73d_1x400.png │ │ │ ├── ui-bg_gloss-wave_25_333333_500x100.png │ │ │ ├── ui-bg_highlight-soft_80_eeeeee_1x100.png │ │ │ ├── ui-bg_inset-soft_25_000000_1x100.png │ │ │ ├── ui-bg_inset-soft_30_f58400_1x100.png │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_4b8e0b_256x240.png │ │ │ ├── ui-icons_a83300_256x240.png │ │ │ ├── ui-icons_cccccc_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ ├── jquery-ui.css │ │ │ ├── jquery.ui.all.css │ │ │ ├── jquery.ui.base.css │ │ │ ├── jquery.ui.button.css │ │ │ ├── jquery.ui.core.css │ │ │ ├── jquery.ui.dialog.css │ │ │ ├── jquery.ui.menu.css │ │ │ ├── jquery.ui.progressbar.css │ │ │ ├── jquery.ui.resizable.css │ │ │ ├── jquery.ui.slider.css │ │ │ ├── jquery.ui.tabs.css │ │ │ └── jquery.ui.theme.css │ │ └── ui │ │ ├── jquery.ui.button.js │ │ ├── jquery.ui.core.js │ │ ├── jquery.ui.dialog.js │ │ ├── jquery.ui.draggable.js │ │ ├── jquery.ui.menu.js │ │ ├── jquery.ui.mouse.js │ │ ├── jquery.ui.position.js │ │ ├── jquery.ui.progressbar.js │ │ ├── jquery.ui.resizable.js │ │ ├── jquery.ui.slider.js │ │ ├── jquery.ui.sortable.js │ │ ├── jquery.ui.tabs.js │ │ └── jquery.ui.widget.js └── js │ ├── aimp_control.js │ ├── aimp_manager.js │ ├── i18n.js │ ├── jquery.cookie.js │ ├── jquery.rating.js │ ├── jquery.selectboxes.js │ ├── jscroller2-1.61-src.js │ ├── rpc.js │ └── settings_dialog.js ├── inno_setup_data ├── Czech.isl ├── English.isl ├── Polish.isl ├── Russian.isl ├── aimp_control_plugin.iss ├── default_settings.dat └── icons │ ├── aimp2_32x32.png │ ├── aimp3_32x32.png │ ├── aimp_control_plugin_installer.ico │ ├── aimp_control_settings_manager.ico │ ├── icon_aimp2_32x32.ico │ └── icon_aimp3_32x32.ico ├── lib ├── sqlite3.def ├── sqlite3.exp └── sqlite3.lib ├── make_7z_package.bat ├── make_installer_7z_package_docs.bat ├── msvc ├── aimp_control_plugin.sln ├── aimp_control_plugin.vcxproj ├── aimp_control_plugin.vcxproj.filters └── aimp_control_plugin.vcxproj.user ├── setup_environment.bat ├── setup_vs_project_variables.bat ├── src ├── aimp │ ├── aimp2_sdk.h │ ├── aimp3.60_sdk │ │ ├── Helpers │ │ │ ├── AIMPString.cpp │ │ │ ├── AIMPString.h │ │ │ ├── IUnknownInterfaceImpl.h │ │ │ ├── support.h │ │ │ └── typedefs.h │ │ ├── aimp3_60_sdk.h │ │ ├── apiActions.h │ │ ├── apiAlbumArt.h │ │ ├── apiCore.h │ │ ├── apiDecoders.h │ │ ├── apiFileManager.h │ │ ├── apiInternet.h │ │ ├── apiMUI.h │ │ ├── apiMenu.h │ │ ├── apiMessages.h │ │ ├── apiObjects.h │ │ ├── apiOptions.h │ │ ├── apiPlayer.h │ │ ├── apiPlaylists.h │ │ ├── apiPlugin.h │ │ ├── apiRemote.h │ │ ├── apiScheduler.h │ │ ├── apiSkins.h │ │ ├── apiTagEditor.h │ │ ├── apiThreading.h │ │ └── apiVisuals.h │ ├── aimp3_sdk │ │ ├── AIMPSDKAddons.h │ │ ├── AIMPSDKCommon.h │ │ ├── AIMPSDKCore.h │ │ ├── AIMPSDKInput.h │ │ ├── AIMPSDKRemote.h │ │ ├── AIMPSDKVisual.h │ │ ├── Helpers │ │ │ └── AIMPSDKHelpers.h │ │ └── aimp3_sdk.h │ ├── aimp3_util.h │ ├── common_types.h │ ├── manager.h │ ├── manager2.6.cpp │ ├── manager2.6.h │ ├── manager3.0.cpp │ ├── manager3.0.h │ ├── manager3.1.cpp │ ├── manager3.1.h │ ├── manager3.6.cpp │ ├── manager3.6.h │ ├── manager_impl_common.h │ ├── player_supported_formats_getter.h │ ├── playlist.cpp │ ├── playlist.h │ ├── playlist_entry.cpp │ ├── playlist_entry.h │ ├── playlist_entry_rating.h │ ├── playlist_queue.h │ ├── playlist_update_manager.h │ ├── track_description.cpp │ └── track_description.h ├── config.h ├── control_plugin.def ├── dllmain.cpp ├── download_track │ ├── download_track_request_handler.cpp │ └── request_handler.h ├── http_server │ ├── auth_manager.cpp │ ├── auth_manager.h │ ├── connection.cpp │ ├── connection.h │ ├── header.h │ ├── http_request_handler.cpp │ ├── http_request_parser.cpp │ ├── mime_types.cpp │ ├── mime_types.h │ ├── mongoose │ │ ├── mongoose.c │ │ └── mongoose.h │ ├── mpfd_parser │ │ ├── Exception.cpp │ │ ├── Exception.h │ │ ├── Field.cpp │ │ ├── Field.h │ │ ├── Parser.cpp │ │ └── Parser.h │ ├── mpfd_parser_factory.cpp │ ├── mpfd_parser_factory.h │ ├── reply.cpp │ ├── reply.h │ ├── request.h │ ├── request_handler.h │ ├── request_parser.h │ ├── server.cpp │ └── server.h ├── jsonrpc │ ├── config.h │ ├── features.h │ ├── forwards.h │ ├── frontend.h │ ├── json_batchallocator.h │ ├── json_internalarray.inl │ ├── json_internalmap.inl │ ├── json_reader.cpp │ ├── json_value.cpp │ ├── json_valueiterator.inl │ ├── json_writer.cpp │ ├── jsonrpc_request_parser.cpp │ ├── jsonrpc_response_serializer.cpp │ ├── jsonrpc_value.cpp │ ├── reader.h │ ├── request_parser.h │ ├── response_serializer.h │ ├── value.h │ └── writer.h ├── plugin │ ├── control_plugin.cpp │ ├── control_plugin.h │ ├── logger.cpp │ ├── logger.h │ ├── settings.cpp │ └── settings.h ├── rpc │ ├── compatibility │ │ ├── webctrl_plugin.cpp │ │ └── webctrl_plugin.h │ ├── exception.h │ ├── frontend.h │ ├── method.h │ ├── methods.cpp │ ├── methods.h │ ├── request_handler.h │ ├── request_parser.h │ ├── response_serializer.h │ ├── rpc_request_handler.cpp │ ├── rpc_value.cpp │ ├── utils.cpp │ ├── utils.h │ └── value.h ├── sqlite │ ├── sqlite.c │ ├── sqlite.h │ ├── sqlite3 │ │ ├── config.h │ │ ├── sqlite3.c │ │ ├── sqlite3.h │ │ ├── sqlite3_unicode.c │ │ ├── sqlite3_unicode.h │ │ └── sqlite3ext.h │ ├── sqlite_unicode.c │ └── sqlite_unicode.h ├── stdafx.cpp ├── stdafx.h ├── transport │ └── asio │ │ ├── bluetooth_endpoint.hpp │ │ └── rfcomm.hpp ├── upload_track │ ├── request_handler.h │ └── upload_track_request_handler.cpp ├── utils │ ├── base64.cpp │ ├── base64.h │ ├── image.cpp │ ├── image.h │ ├── iunknown_impl.h │ ├── power_management.cpp │ ├── power_management.h │ ├── scope_guard.h │ ├── sqlite_util.h │ ├── string_encoding.cpp │ ├── string_encoding.h │ ├── util.cpp │ └── util.h ├── webctlrpc │ ├── frontend.h │ ├── request_parser.h │ ├── response_serializer.h │ ├── webctlrpc_request_parser.cpp │ └── webctlrpc_response_serializer.cpp └── xmlrpc │ ├── frontend.h │ ├── parse_util.cpp │ ├── parse_util.h │ ├── request_parser.h │ ├── response_serializer.h │ ├── value.h │ ├── xmlrpc_request_parser.cpp │ ├── xmlrpc_response_serializer.cpp │ └── xmlrpc_value.cpp ├── srcsrv.ini ├── tools ├── 7z.dll ├── 7z.exe ├── codesign │ └── sign_executable.bat ├── compiler.jar ├── html_optimizer.py ├── notes.txt ├── plugin_dll_attributes_update.bat ├── save_debug_symbols.bat ├── verpatch.exe └── yuicompressor-2.4.2.jar ├── version_template.txt └── vs_launch.bat /.gitattributes: -------------------------------------------------------------------------------- 1 | # Do not perform line ending conversion at all. Found at http://stackoverflow.com/a/15161420 2 | * -text 3 | 4 | ## Auto detect text files and perform LF normalization 5 | ##* text=auto 6 | 7 | # Custom for Visual Studio 8 | *.cs diff=csharp 9 | *.sln merge=union 10 | *.csproj merge=union 11 | *.vbproj merge=union 12 | *.fsproj merge=union 13 | *.dbproj merge=union 14 | 15 | # Standard to msysgit 16 | *.doc diff=astextplain 17 | *.DOC diff=astextplain 18 | *.docx diff=astextplain 19 | *.DOCX diff=astextplain 20 | *.dot diff=astextplain 21 | *.DOT diff=astextplain 22 | *.pdf diff=astextplain 23 | *.PDF diff=astextplain 24 | *.rtf diff=astextplain 25 | *.RTF diff=astextplain 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .svn 2 | temp_build 3 | msvc/aimp_control_plugin.opensdf 4 | msvc/aimp_control_plugin.sdf 5 | msvc/aimp_control_plugin.v11.suo 6 | msvc/ipch 7 | client_src/album_covers_cache 8 | version.txt 9 | tools/codesign/certum.pfx 10 | msvc/aimp_control_plugin.VC.VC.opendb 11 | msvc/aimp_control_plugin.VC.db 12 | -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Dist/FreeImage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Dist/FreeImage.dll -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Dist/FreeImage.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Dist/FreeImage.h -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Dist/FreeImage.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Dist/FreeImage.lib -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Dist/delete.me: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Dist/delete.me -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Whatsnew.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Whatsnew.txt -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.dll -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.h -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/FreeImagePlus.lib -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/delete.me: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/Wrapper/FreeImagePlus/dist/delete.me -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.15.4/license-gplv3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.15.4/license-gplv3.txt -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Dist/FreeImage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Dist/FreeImage.dll -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Dist/FreeImage.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Dist/FreeImage.h -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Dist/FreeImage.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Dist/FreeImage.lib -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Dist/delete.me: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Dist/delete.me -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Whatsnew.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Whatsnew.txt -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.dll -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.h -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/FreeImagePlus.lib -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/delete.me: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/Wrapper/FreeImagePlus/dist/delete.me -------------------------------------------------------------------------------- /3rd_party/FreeImage/3.16.0/license-gplv3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/3rd_party/FreeImage/3.16.0/license-gplv3.txt -------------------------------------------------------------------------------- /3rd_party/FreeImage/link: -------------------------------------------------------------------------------- 1 | http://downloads.sourceforge.net/freeimage/FreeImage3154Win32.zip -------------------------------------------------------------------------------- /HowToDebugWithPDB.txt: -------------------------------------------------------------------------------- 1 | For details see http://msdn.microsoft.com/en-us/magazine/cc301459.aspx, also http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/24/7981.aspx 2 | 3 | In debuggers Windbg, Visual Studio debugger following env. variable is used to determine symbol path: 4 | set _NT_SYMBOL_PATH=SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 5 | -------------------------------------------------------------------------------- /HowToSetupPluginFrom7zPackage.txt: -------------------------------------------------------------------------------- 1 | How to install plugin: 2 | 3 | 1) Put "Control Plugin.dll" 4 | for AIMP 3.6+: to AIMP player's "Plugins\Control Plugin" directory. 5 | for AIMP 3.5 and older: to AIMP player's "Plugins" directory. 6 | 2) Put 'htdocs' directory to path which is writeable for AIMP. Do not put it to Program Files dir. 7 | This is required for album cover support. If you don't need it put it to any folder. 8 | 3) Optional: put SettingsManager directory near to "Control Plugin.dll". 9 | Launch it to tune all aspects of plugin work. It will save settings.dat file. 10 | 4) Skip if you use SettingManager. 11 | Create plugin settings.dat file. 12 | There are several ways to do this: 13 | 4.1) Just launch AIMP and exit, plugin will save default settings file in plugin folder("Control Plugin") in AIMP Plugins directory. 14 | "\Plugins\Control Plugin\settings.dat" 15 | 4.2) Copy settings.dat from 7z package to "\Plugins\Control Plugin" directory. 16 | 17 | In settings.dat set following values: 18 | httpserver.document_root - set full path to htdocs directory. 19 | httpserver.interfaces - set list of network interfaces where plugin server will work. 20 | To use all available interfaces uncomment element: 21 | 22 | 23 | 5) Optional, album cover support 24 | Copy following files to "\Plugins\Control Plugin" directory: 25 | FreeImage.dll 26 | FreeImagePlus.dll 27 | 28 | Test plugin work: 29 | Open plugin's page in browser. Default URL is http://localhost:3333/index.htm. -------------------------------------------------------------------------------- /LibrariesAndToolsUsedInProject.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/LibrariesAndToolsUsedInProject.txt -------------------------------------------------------------------------------- /License-English.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Alexey Ivanov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /License-Russian.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Алексей Иванов 2 | 3 | Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: 4 | 5 | Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. 6 | 7 | ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕ НАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. -------------------------------------------------------------------------------- /ReadMe.txt: -------------------------------------------------------------------------------- 1 | AIMP Control plugin. Copyright (c) 2015, Alexey Ivanov 2 | 3 | To know about build procedure please read HowToBuild.txt file. 4 | Used software is listed in LibrariesAndToolsUsedInProject.txt file. 5 | 6 | Content of directories in project root: 7 | 8 | client_src 9 | html and javascript code which is run in client browser. 10 | inno_setup_data 11 | Inno Setup installer script and resources. 12 | msvc 13 | Visual Studio project. 14 | src 15 | plugin source code 16 | tools 17 | programs and scripts used in build process. -------------------------------------------------------------------------------- /build_installer.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal ENABLEDELAYEDEXPANSION 3 | 4 | call build_plugin.bat || goto ERROR_HANDLER 5 | 6 | call setup_environment.bat 7 | 8 | :: Notice that variable TEMP_BUILD_DIR is set in build_plugin.bat script. 9 | 10 | set PLUGIN_DLL=%TEMP_BUILD_DIR%\Control Plugin.dll 11 | 12 | :UPDATE_PLUGIN_DLL_ATTRIBUTES 13 | echo Updating plugin DLL attributes... 14 | set /p PROJECT_VERSION= < %PROJECT_VERSION_FILE% || set PROJECT_VERSION=unknown_version 15 | call tools\plugin_dll_attributes_update.bat "%PLUGIN_DLL%" !PROJECT_VERSION! || goto ERROR_HANDLER 16 | 17 | :SIGN_PLUGIN_DLL 18 | echo Skip signing of plugin DLL because cert is not available. 19 | :: echo Signing plugin DLL... 20 | :: call tools\codesign\sign_executable.bat "%PLUGIN_DLL%" 21 | :: if ERRORLEVEL 1 ( 22 | :: goto ERROR_HANDLER 23 | :: ) 24 | 25 | :SAVE_DEBUG_SYMBOLS 26 | call tools\save_debug_symbols.bat || goto ERROR_HANDLER 27 | 28 | :CREATE_INSTALLER 29 | echo Creating installer... 30 | ISCC inno_setup_data\aimp_control_plugin.iss || goto ERROR_HANDLER 31 | 32 | :SIGN_INSTALLER 33 | echo Skip signing of plugin installer because cert is not available. 34 | :: echo Signing installer... 35 | :: set INSTALLER_FILE=temp_build\Release\distrib\aimp_control_plugin-!PROJECT_VERSION!-setup.exe 36 | :: call tools\codesign\sign_executable.bat %INSTALLER_FILE% 37 | :: if ERRORLEVEL 1 ( 38 | :: goto ERROR_HANDLER 39 | :: ) 40 | 41 | echo Build successfull. 42 | exit /B 0 43 | 44 | 45 | :ERROR_HANDLER 46 | set ORIGINAL_ERROR_LEVEL=%ERRORLEVEL% 47 | echo Build failed. Error code %ORIGINAL_ERROR_LEVEL% 48 | exit /B %ORIGINAL_ERROR_LEVEL% -------------------------------------------------------------------------------- /build_plugin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | :: set paths to external tools which are used in this script. 4 | call setup_environment.bat 5 | 6 | :: currently only Release configuration is used. I think Debug config needed for debug purposes so it is much more convinient to use Visual Studio to build debug plugin version. 7 | set CONFIG_NAME=Release 8 | set TEMP_BUILD_DIR=temp_build\%CONFIG_NAME% 9 | set CLIENT_SRC_RELEASE_DIR=%TEMP_BUILD_DIR%\htdocs 10 | 11 | setlocal ENABLEDELAYEDEXPANSION 12 | 13 | :: This task can be skipped actual version does not matter. Uncomment version below instead. 14 | :UPDATE_PROJECT_BUILD_VERSION 15 | echo Updating project build version... 16 | SubWCRev .\ version_template.txt %PROJECT_VERSION_FILE% || goto ERROR_HANDLER 17 | set /p PROJECT_VERSION= < %PROJECT_VERSION_FILE% || set PROJECT_VERSION=unknown_version 18 | :: :UPDATE_PROJECT_BUILD_VERSION 19 | :: set PROJECT_VERSION=unknown_version 20 | 21 | :MINIMIZE_CLIENT_SRC 22 | :: prepare release version of client side src. 23 | echo Minimizing of browser scripts... 24 | set CLOSURE_COMPILER=tools\compiler.jar 25 | set YUICOMPRESSOR=tools\yuicompressor-2.4.2.jar 26 | python tools\html_optimizer.py -google_closure_compiler !CLOSURE_COMPILER! ^ 27 | -yuicompressor !YUICOMPRESSOR! ^ 28 | -output %CLIENT_SRC_RELEASE_DIR% client_src\index.htm || goto ERROR_HANDLER 29 | 30 | :COMPILE_PLUGIN 31 | echo Compiling plugin... 32 | :: notice that following paths are relative to .\msvc directory where aimp_control_plugin.sln is located. 33 | set VS_TEMP_DIR=..\%TEMP_BUILD_DIR%\vs\ 34 | call setup_vs_project_variables.bat 35 | :: variable AIMP_PLUGINS_DIR is used in Visual Studio project. This is the easiest way to make msbuild to put plugin DLL into temp build directory. 36 | set AIMP_PLUGINS_DIR=..\%TEMP_BUILD_DIR% 37 | set AIMP_CONTROL_SUBPATH=\ 38 | msbuild msvc\aimp_control_plugin.sln /maxcpucount ^ 39 | /property:Configuration=%CONFIG_NAME%;IntDir=%VS_TEMP_DIR%;OutDir=%VS_TEMP_DIR% || goto ERROR_HANDLER 40 | 41 | echo Build successfull. 42 | exit /B 43 | 44 | 45 | :ERROR_HANDLER 46 | set ORIGINAL_ERROR_LEVEL=%ERRORLEVEL% 47 | echo Build failed. Error code %ORIGINAL_ERROR_LEVEL% 48 | exit /B %ORIGINAL_ERROR_LEVEL% -------------------------------------------------------------------------------- /client_src/css/jquery.rating.css: -------------------------------------------------------------------------------- 1 | /* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */ 2 | div.rating-cancel,div.star-rating{float:left;width:17px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden} 3 | div.rating-cancel,div.rating-cancel a{background:url(../images/delete.png) no-repeat 0 -16px} 4 | div.star-rating,div.star-rating a{background:url(../images/star.png) no-repeat 0 0px} 5 | div.rating-cancel a,div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0} 6 | div.star-rating-on a{background-position:0 -16px!important} 7 | div.star-rating-hover a{background-position:0 -32px} 8 | /* Read Only CSS */ 9 | div.star-rating-readonly a{cursor:default !important} 10 | /* Partial Star CSS */ 11 | div.star-rating{background:transparent!important;overflow:hidden!important} 12 | /* END jQuery.Rating Plugin CSS */ -------------------------------------------------------------------------------- /client_src/css/main_page.css: -------------------------------------------------------------------------------- 1 | /* Common settings */ 2 | body { 3 | font-size: 62.5%; 4 | font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; 5 | } 6 | 7 | .paging_full_numbers span.paginate_button, 8 | .paging_full_numbers span.paginate_active, 9 | #playlists table.display thead th, 10 | #playback_panel_container { 11 | cursor: pointer; 12 | } 13 | 14 | /* Control panel */ 15 | #control_panel_buttons { 16 | padding : 5px 4px; 17 | margin: 0; 18 | } 19 | 20 | #volume_controls { 21 | float: right; 22 | /*margin-top: -4px;*/ 23 | margin: 7px 7px 7px 0; 24 | cursor: pointer; 25 | } 26 | 27 | #mute_button_holder { 28 | float: left; 29 | width: 16px; 30 | height: 16px; 31 | cursor: pointer; 32 | } 33 | 34 | #mute_button { 35 | width: 15px; 36 | height: 15px; 37 | left : 0px; 38 | top: 0px; 39 | position: relative; 40 | } 41 | 42 | #mute_icon { 43 | left : 0px; 44 | top: -1px; 45 | position: relative; 46 | } 47 | 48 | #volume_slider { 49 | width: 85px; 50 | float: right; 51 | margin: 3px 0; 52 | margin-left: 6px; 53 | } 54 | 55 | /* Control and Playback panels */ 56 | .aimp-panel { 57 | width: 340px; 58 | height: 38px; 59 | } 60 | 61 | /* Playlists */ 62 | #playlists .ui-icon { 63 | display: inline-block; 64 | width: 12px; 65 | height: 13px; 66 | } 67 | 68 | #playlists table tr:not(.control_menu):hover { 69 | border:1px solid #59b4d4; 70 | background:#0078a3; 71 | color:#fff; 72 | cursor: pointer; 73 | } 74 | 75 | #playlists .dataTables_paginate .ui-button { 76 | padding: 0 4px; 77 | } 78 | 79 | #playlists .dataTables_info { 80 | line-height: 22px; 81 | width: auto; 82 | margin-left: 4px; 83 | } 84 | 85 | #playlists .dataTables_length, 86 | #playlists .dataTables_filter { 87 | width: auto; 88 | } 89 | 90 | #playlists .dataTables_length { 91 | margin-left: 4px; 92 | } 93 | 94 | #playlists .paging_full_numbers { 95 | width: 435px; 96 | height: auto; 97 | } 98 | 99 | #playlist_controls { 100 | margin-top: 0.5em; 101 | } 102 | 103 | #playlist_controls .ui-menu { 104 | width: 100px; 105 | } 106 | 107 | #add_entity_to_playlist_button { 108 | width: 26px; 109 | height: 26px; 110 | } 111 | 112 | #file_upload_progress { 113 | margin-top: 1em; 114 | } 115 | 116 | #file_upload_progress.ui-progressbar { 117 | position: relative; 118 | } 119 | 120 | #file_upload_progress .progress-label { 121 | position: absolute; 122 | left: 50%; 123 | top: 4px; 124 | font-weight: bold; 125 | text-shadow: 1px 1px 0 #fff; 126 | } 127 | 128 | /* Playback panel, current track scroller */ 129 | #scroll_current_track_container { 130 | height: 20px; 131 | overflow: auto; 132 | } 133 | 134 | /* Settings dialog */ 135 | fieldset { 136 | padding:0; 137 | border:0; 138 | margin-top:25px; 139 | } 140 | 141 | h1 { 142 | font-size: 1.2em; 143 | margin: .6em 0; 144 | } 145 | 146 | /* settings fields holders */ 147 | div.fields_to_view { 148 | margin: 0; 149 | padding: 0; 150 | float: left; 151 | } 152 | 153 | #fields_hidden, #fields_displayed { 154 | list-style-type: none; 155 | margin: 0; 156 | padding: 0; 157 | float: left; 158 | margin-right: 10px; 159 | background: #eee; 160 | padding: 5px; 161 | min-width: 140px; 162 | } 163 | 164 | #fields_hidden li, #fields_displayed li { 165 | margin: 5px; 166 | padding: 5px; 167 | font-size: 1.2em; 168 | min-width: 140px; 169 | } 170 | 171 | /* track info labels */ 172 | .track_info_label { 173 | font-weight: bold; 174 | } 175 | 176 | .track_info_table_row { 177 | vertical-align: top; 178 | } 179 | 180 | #track_progress_bar { 181 | margin-left: 5px; 182 | margin-right: 5px; 183 | } -------------------------------------------------------------------------------- /client_src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/favicon.ico -------------------------------------------------------------------------------- /client_src/i18n/en/aimp_manager.js: -------------------------------------------------------------------------------- 1 | /* 2 | File contains localization for AimpManager web-interface. 3 | Copyright (c) 2012, Alexey Ivanov 4 | */ 5 | var language_aimp_manager = { 6 | error_unknown : 'Unknown error', 7 | error_request_parsing : 'Request parsing failed', 8 | error_method_not_found : 'Method not found', 9 | error_type : 'Type error', 10 | error_index_range : 'Index out of bounds', 11 | error_object_access : 'Object\'s member does not exist', 12 | error_value_range : 'Value out of range', 13 | error_internal : 'Internal plugin error', 14 | error_wrong_argument : 'Wrong argument', 15 | error_playback_failed : 'Playback failed', 16 | error_shuffle_mode_set_failed : 'Shuffle mode set failed', 17 | error_repeat_mode_set_failed : 'Repeat track mode set failed', 18 | error_volume_out_of_range : 'Volume level is out of range', 19 | error_volume_set_failed : 'Volume level set failed', 20 | error_mute_set_failed : 'Mute mode set failed', 21 | error_enqueue_track_failed : 'Enqueue track failed', 22 | error_dequeue_track_failed : 'Dequeue track failed', 23 | error_playlist_not_found : 'Playlist not found', 24 | error_track_not_found : 'Track not found', 25 | error_album_cover_load_failed : 'Album cover loading failed', 26 | error_rating_set_failed : 'Rating set failed', 27 | error_status_set_failed : 'Status set failed', 28 | error_radio_capture_set_failed : 'Radio capture mode set failed', 29 | error_move_track_in_queue_failed: 'Moving track in queue failed', 30 | error_add_url_to_playlist_failed: 'Add URL to playlist failed', 31 | error_remove_track_failed: 'Revoving track failed. Possible reason: track was not found.', 32 | error_remove_track_physical_deletion_disabled: 'Track removing failed. Reason: Track removing isn\'t enabled in plugin settings', 33 | error_scheduler_disabled: 'Sheduling failed. Reason: user has disabled it in plugin settings', 34 | error_scheduler_unsupported_action: 'Scheduling failed. Reason: machine does not support action. It can be disabled in plugin settings or action is not supported.', 35 | error_playlist_creation_failed: 'Playlist creation failed' 36 | } -------------------------------------------------------------------------------- /client_src/i18n/en/datatables.txt: -------------------------------------------------------------------------------- 1 | { 2 | "sProcessing": "Track list loading...", 3 | "sLengthMenu": "Show _MENU_ tracks", 4 | "sZeroRecords": "No matching tracks found", 5 | "sInfo": "Showing _START_ to _END_ of _TOTAL_ tracks", 6 | "sInfoEmtpy": "Showing 0 to 0 of 0 tracks", 7 | "sInfoFiltered": "(filtered from _MAX_ total tracks)", 8 | "sInfoPostFix": "", 9 | "sSearch": "Search:", 10 | "sUrl": "", 11 | "oPaginate": { 12 | "sFirst": "First", 13 | "sPrevious": "Previous", 14 | "sNext": "Next", 15 | "sLast": "Last" 16 | } 17 | } -------------------------------------------------------------------------------- /client_src/i18n/ja/aimp_manager.js: -------------------------------------------------------------------------------- 1 | /* 2 | File contains localization for AimpManager web-interface. 3 | Copyright (c) 2012, Alexey Ivanov 4 | */ 5 | var language_aimp_manager = { 6 | error_unknown : '不明なエラー', 7 | error_request_parsing : 'リクエストの解析に失敗しました', 8 | error_method_not_found : 'メソッドが見つかりません', 9 | error_type : 'タイプエラー', 10 | error_index_range : '範囲外のインデックス', 11 | error_object_access : 'オブジェクトが存在しません', 12 | error_value_range : '無効な値', 13 | error_internal : '内部プラグインエラー', 14 | error_wrong_argument : '無効な値', 15 | error_playback_failed : '再生に失敗しました', 16 | error_shuffle_mode_set_failed : 'シャッフル設定に失敗しました', 17 | error_repeat_mode_set_failed : 'リピート設定に失敗しました', 18 | error_volume_out_of_range : '音量が範囲外です', 19 | error_volume_set_failed : '音量の設定に失敗しました', 20 | error_mute_set_failed : 'ミュート設定に失敗しました', 21 | error_enqueue_track_failed : 'キューに追加できませんでした', 22 | error_dequeue_track_failed : 'キューから削除できませんでした', 23 | error_playlist_not_found : 'プレイリストが見つかりません', 24 | error_track_not_found : 'トラックが見つかりません', 25 | error_album_cover_load_failed : 'アルバムアートの読み込みに失敗しました', 26 | error_rating_set_failed : 'レーティングに失敗しました', 27 | error_status_set_failed : 'ステータス設定に失敗しました', 28 | error_radio_capture_set_failed : 'ラジオキャプチャ設定に失敗しました', 29 | error_move_track_in_queue_failed: 'キューの編集に失敗しました', 30 | error_add_url_to_playlist_failed: 'プレイリストにURLを追加できませんでした', 31 | error_remove_track_failed: 'トラックの削除に失敗しました。理由:トラックが見つかりません', 32 | error_remove_track_physical_deletion_disabled: 'トラックの削除に失敗しました。理由:プラグイン側の設定で無効にされています', 33 | error_scheduler_disabled: 'スケジューリングに失敗しました。理由:プラグイン側の設定で無効にされています', 34 | error_scheduler_unsupported_action: 'スケジューリングに失敗しました。理由:機器が対応していません。 プラグイン側の設定で無効にされている可能性があります。', 35 | error_playlist_creation_failed: 'プレイリストの作成に失敗しました' 36 | } -------------------------------------------------------------------------------- /client_src/i18n/ja/datatables.txt: -------------------------------------------------------------------------------- 1 | { 2 | "sProcessing": "トラックリストを読み込み中...", 3 | "sLengthMenu": "1ページに表示するトラック数: _MENU_", 4 | "sZeroRecords": "該当するトラックは見つかりません", 5 | "sInfo": "_TOTAL_曲中_START_~_END_曲目を表示しています", 6 | "sInfoEmtpy": "該当なし", 7 | "sInfoFiltered": "(全_MAX_曲のうち該当するトラック)", 8 | "sInfoPostFix": "", 9 | "sSearch": "検索:", 10 | "sUrl": "", 11 | "oPaginate": { 12 | "sFirst": "|<", 13 | "sPrevious": "<", 14 | "sNext": ">", 15 | "sLast": ">|" 16 | } 17 | } -------------------------------------------------------------------------------- /client_src/i18n/ja/main_page.js: -------------------------------------------------------------------------------- 1 | /* 2 | File contains localization for AimpManager web-interface. 3 | Copyright (c) 2012, Alexey Ivanov 4 | */ 5 | var language_main_page = { 6 | 7 | page_title : 'AIMPリモートコントローラー', 8 | error_playlists_loading : 'プレイリストを取得できませんでした', 9 | error_playlist_entries_loading : 'トラックを取得できませんでした', 10 | error_stop_playback : '再生を停止できませんでした', 11 | error_pause_playback : '一時停止できませんでした', 12 | error_play_previous_track : '前のトラックを再生できませんでした', 13 | error_play_next_track : '次のトラックを再生できませんでした', 14 | error_volume_get : '音量を取得できませんでした', 15 | error_volume_set : '音量を設定できませんでした', 16 | error_get_control_panel_state : 'AIMPコントロールパネルを取得できませんでした', 17 | 18 | reason : '理由', 19 | reason_unknown : '不明な理由', 20 | playback_state_playing : '再生中', 21 | playback_state_stopped : '停止しました', 22 | kilobits_per_second : 'kbit/s', 23 | 24 | control_panel_playback : '再生', 25 | control_panel_pause : '一時停止', 26 | control_panel_stop : '再生を停止', 27 | control_panel_previous : '前のトラック', 28 | control_panel_next : '次のトラック', 29 | control_panel_shuffle : 'シャッフル', 30 | control_panel_shuffle_on : 'シャッフルをオン', 31 | control_panel_shuffle_off : 'シャッフルをオフ', 32 | control_panel_repeat : 'リピート', 33 | control_panel_repeat_on : 'リピートをオン', 34 | control_panel_repeat_off : 'リピートをオフ', 35 | control_panel_radio_capture_on: 'ラジオキャプチャをオン', 36 | control_panel_radio_capture_off: 'ラジオキャプチャをオフ', 37 | control_panel_radio_capture_disabled: 'ラジオキャプチャはインターネットラジオを再生中のとき利用可能です', 38 | control_panel_settings : '設定', 39 | control_panel_volume : '音量', 40 | control_panel_mute : 'ミュート', 41 | control_panel_mute_on : 'ミュートする', 42 | control_panel_mute_off : 'ミュートを解除', 43 | 44 | settings_dialog_title : '設定', 45 | settings_dialog_save_button : '設定を保存', 46 | settings_dialog_cancel_button : 'キャンセル', 47 | // tab 'playlist view' 48 | settings_dialog_playlist_view_tab_title : 'プレイリストビュー', 49 | settings_dialog_playlist_view_tab_show_fields : '表示する情報', 50 | settings_dialog_playlist_view_tab_hide_fields : '表示しない情報', 51 | settings_dialog_playlist_view_tab_entry_field_warning : '少なくとも1つの情報を表示する必要があります', 52 | // tab 'language' 53 | settings_dialog_language_tab_title : '言語', 54 | // tab track info 55 | settings_dialog_trackinfo_tab_title : 'トラック情報パネル', 56 | settings_dialog_trackinfo_format : 'トラック情報パネルフォーマット', 57 | 58 | entry_field_caption_title : '曲名', 59 | entry_field_caption_artist : 'アーティスト', 60 | entry_field_caption_album : 'アルバム', 61 | entry_field_caption_date : '年', 62 | entry_field_caption_genre : 'ジャンル', 63 | entry_field_caption_bitrate : 'ビットレート', 64 | entry_field_caption_duration : '曲の長さ', 65 | entry_field_caption_filesize : 'ファイルサイズ', 66 | entry_field_caption_rating : 'レーティング', 67 | entry_field_caption_albumcover : 'アルバムアート', 68 | 69 | track_contol_menu_open : 'トラックコントロールパネルを開く', 70 | track_contol_menu_close : 'トラックコントロールパネルを閉じる', 71 | track_contol_menu_play : '再生', 72 | track_contol_menu_pause : '一時停止', 73 | track_contol_menu_enqueue : 'キューに追加', 74 | track_contol_menu_remove_from_queue : 'キューから削除', 75 | track_contol_menu_download_track : 'ダウンロード', 76 | 77 | track_info_dialog_caption : 'トラック情報', 78 | track_info_dialog_cancel_rating : '未評価', 79 | 80 | playlist_contol_menu_add : 'プレイリストにアイテムを追加', 81 | playlist_contol_menu_add_disabled : 'AIMP Control Pluginの設定によりプレイリストに追加できません', 82 | playlist_contol_menu_add_not_supported : 'プラグインが対応していないためプレイリストに追加できません。プラグインを最新バージョンに更新してください。', 83 | playlist_contol_menu_item_add_file : 'ファイル', 84 | playlist_contol_menu_item_add_url : 'URL', 85 | playlist_contol_dialog_file_add_title: 'ファイルを追加', 86 | playlist_contol_dialog_file_add_message: 'ファイルを選択するか、ここにドラッグ&ドロップしてください', 87 | playlist_contol_dialog_file_add_button_caption: 'ファイルを追加', 88 | playlist_contol_dialog_url_add_title: 'URLを追加', 89 | playlist_contol_dialog_url_add_button_title: '追加', 90 | 91 | all_entries : 'すべて' 92 | } -------------------------------------------------------------------------------- /client_src/i18n/pl/aimp_manager.js: -------------------------------------------------------------------------------- 1 | /* 2 | File contains localization for AimpManager web-interface. 3 | Copyright (c) 2012, Alexey Ivanov 4 | */ 5 | var language_aimp_manager = { 6 | error_unknown : 'Nieznany błąd', 7 | error_request_parsing : 'Błąd analizowania', 8 | error_method_not_found : 'Nie znaleziono metody', 9 | error_type : 'Błąd rodzaju', 10 | error_index_range : 'Indeks poza skalą?', 11 | error_object_access : 'Człon obiektu nie istnieje', 12 | error_value_range : 'Wartość poza skalą', 13 | error_internal : 'Błąd wewnętrzny pluginu', 14 | error_wrong_argument : 'Błędny argument', 15 | error_playback_failed : 'Odtwarzanie nie powiodło się', 16 | error_shuffle_mode_set_failed : 'Błąd ustawiania losowego odtwarzania', 17 | error_repeat_mode_set_failed : 'Błąd ustawiania powtarzania utworu', 18 | error_volume_out_of_range : 'Poziom głośności', 19 | error_volume_set_failed : 'Błąd ustawiania poziomu głośności', 20 | error_mute_set_failed : 'Błąd Ustawienia wyciszenia', 21 | error_enqueue_track_failed : 'Błąd dodawania do kolejki', 22 | error_dequeue_track_failed : 'Błąd usuwania z kolejki', 23 | error_playlist_not_found : 'Nie znaleziono playlisty', 24 | error_track_not_found : 'Nie znaleziono utworu', 25 | error_album_cover_load_failed : 'Błąd wczytywania okładki albumu', 26 | error_rating_set_failed : 'Błąd ustawiania oceny', 27 | error_status_set_failed : 'Błąd ustawiania statusu', 28 | error_radio_capture_set_failed : 'Błąd trybu przechwycania radia', 29 | error_move_track_in_queue_failed: 'Błąd przesuwania kolejki utworu', 30 | error_add_url_to_playlist_failed: 'Błąd dodawania streama radia do playlisty', 31 | error_remove_track_failed: 'Błąd usuwania utworu. Prawdopodobna przyczyna: Utworu nie znaleziono.', 32 | error_remove_track_physical_deletion_disabled: 'Błąd usuwania utworu. Powów: Usuwanie fizyczne utworu jest wyłączone w ustawieniach pluginu', 33 | error_scheduler_disabled: 'Błąd harmonogramu. Powód: Użytkownik wyłączył tą opcję w ustawieniach pluginu', 34 | error_scheduler_unsupported_action: 'Błąd harmonogramu. Powód: Brak obsługi operacji. Może być wyłączona w ustawieniach pluginu lub po prostu operacja nie jest obsługiwana.', 35 | error_playlist_creation_failed: 'Błąd tworzenia playlisty' 36 | } 37 | -------------------------------------------------------------------------------- /client_src/i18n/pl/datatables.txt: -------------------------------------------------------------------------------- 1 | { 2 | "sProcessing": "Pobieranie listy utworów...", 3 | "sLengthMenu": "Pokaż _MENU_ pozycji", 4 | "sZeroRecords": "Nie znaleziono wyszukiwanych pozycji", 5 | "sInfo": "Pokazuję _START_ do _END_ z _TOTAL_ wszystkich utworów", 6 | "sInfoEmtpy": "Brak utworów do pokazania... Dodaj jakieś, bo inaczej po co ci AIMP? :)", 7 | "sInfoFiltered": "(przefiltrowano z _MAX_ wszystkich pozycji)", 8 | "sInfoPostFix": "", 9 | "sSearch": "Wyszukiwanie:", 10 | "sUrl": "", 11 | "oPaginate": { 12 | "sFirst": "Pierwsza", 13 | "sPrevious": "Poprzednia", 14 | "sNext": "Następna", 15 | "sLast": "Ostatnia" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client_src/i18n/ru/aimp_manager.js: -------------------------------------------------------------------------------- 1 | /* 2 | File contains localization for AimpManager web-interface. 3 | Copyright (c) 2012, Alexey Ivanov 4 | */ 5 | 6 | var language_aimp_manager = { 7 | error_unknown : 'Неизвестная ошибка', 8 | error_request_parsing : 'Ошибка при разборе запроса', 9 | error_method_not_found : 'Метод не найден', 10 | error_type : 'Ошибка типа', 11 | error_index_range : 'Индекс за границей допустимого диапазона', 12 | error_object_access : 'Член объекта не существует', 13 | error_value_range : 'Значение за границей допустимого диапазона', 14 | error_internal : 'Внутренняя ошибка плагина', 15 | error_wrong_argument : 'Неверный аргумент', 16 | error_playback_failed : 'Ошибка воспроизведения', 17 | error_shuffle_mode_set_failed : 'Ошибка при установке режима "Случайное воспроизведение"', 18 | error_repeat_mode_set_failed : 'Ошибка при установке режима "Повтор трека"', 19 | error_volume_out_of_range : 'Уровень громкости выходит за пределы допустимого', 20 | error_volume_set_failed : 'Ошибка при установке уровня громкости', 21 | error_mute_set_failed : 'Ошибка при установке режима "Без звука"', 22 | error_enqueue_track_failed : 'Ошибка постановки трека в очередь', 23 | error_dequeue_track_failed : 'Ошибка изъятия трека из очереди', 24 | error_playlist_not_found : 'Список воспроизведения не найден', 25 | error_track_not_found : 'Трек не найден', 26 | error_album_cover_load_failed : 'Ошибка при загрузке обложки альбома', 27 | error_rating_set_failed : 'Ошибка при сохранении рейтинга', 28 | error_status_set_failed : 'Ошибка при сохранении статуса', 29 | error_radio_capture_set_failed : 'Ошибка при установке режима "Захват радио"', 30 | error_move_track_in_queue_failed: 'Ошибка перемещения трека в очереди', 31 | error_add_url_to_playlist_failed: 'Ошибка добавления ссылки в плейлист', 32 | error_remove_track_failed: 'Ошибка удаления трека. Вероятная причина: трек не найден.', 33 | error_remove_track_physical_deletion_disabled: 'Ошибка удаления трека. Причина: удаление треков не разрешено в настройках плагина.', 34 | error_scheduler_disabled: 'Ошибка планировщика. Причина: планировщик не включен в настройках плагина.', 35 | error_scheduler_unsupported_action: 'Ошибка планировщика. Причина: данное действие не поддерживается компьютером или не включено в настройках плагина.', 36 | error_playlist_creation_failed: 'Ошибка создания плейлиста' 37 | } -------------------------------------------------------------------------------- /client_src/i18n/ru/datatables.txt: -------------------------------------------------------------------------------- 1 | { 2 | "sProcessing": "Загрузка списка треков...", 3 | "sLengthMenu": "Показывать _MENU_ треков", 4 | "sZeroRecords": "Ничего не найдено", 5 | "sInfo": "Показано с _START_ по _END_ из _TOTAL_ треков", 6 | "sInfoEmtpy": "Показано с 0 по 0 из 0 треков", 7 | "sInfoFiltered": "(выбрано из _MAX_)", 8 | "sInfoPostFix": "", 9 | "sSearch": "Поиск:", 10 | "sUrl": "", 11 | "oPaginate": { 12 | "sFirst": "Первая", 13 | "sPrevious": "Предыдущая", 14 | "sNext": "Следующая", 15 | "sLast": "Последняя" 16 | } 17 | } -------------------------------------------------------------------------------- /client_src/images/aimp_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/images/aimp_icon.ico -------------------------------------------------------------------------------- /client_src/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/images/delete.png -------------------------------------------------------------------------------- /client_src/images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/images/star.png -------------------------------------------------------------------------------- /client_src/jQuery-File-Upload/css/jquery.fileupload-ui.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * jQuery File Upload UI Plugin CSS 7.4 4 | * https://github.com/blueimp/jQuery-File-Upload 5 | * 6 | * Copyright 2010, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .fileinput-button { 14 | position: relative; 15 | overflow: hidden; 16 | float: left; 17 | margin-right: 5px; 18 | } 19 | .fileinput-button input { 20 | position: absolute; 21 | top: 0; 22 | right: 0; 23 | margin: 0; 24 | opacity: 0; 25 | filter: alpha(opacity=0); 26 | transform: translate(-300px, 0) scale(4); 27 | font-size: 23px; 28 | direction: ltr; 29 | cursor: pointer; 30 | } 31 | .fileupload-buttonbar .ui-button, 32 | .fileupload-buttonbar .toggle { 33 | margin-bottom: 5px; 34 | } 35 | .files .progress { 36 | width: 200px; 37 | } 38 | .files .progress, 39 | .fileupload-buttonbar .progress { 40 | height: 20px; 41 | } 42 | .files .ui-progressbar-value, 43 | .fileupload-buttonbar .ui-progressbar-value { 44 | background: url(../img/progressbar.gif); 45 | } 46 | .fileupload-buttonbar .fade, 47 | .files .fade { 48 | display: none; 49 | } 50 | .fileupload-loading { 51 | position: absolute; 52 | left: 50%; 53 | width: 128px; 54 | height: 128px; 55 | background: url(../img/loading.gif) center no-repeat; 56 | display: none; 57 | } 58 | .fileupload-processing .fileupload-loading { 59 | display: block; 60 | } 61 | 62 | /* Fix for IE 6: */ 63 | * html .fileinput-button { 64 | margin-right: 1px; 65 | } 66 | * html .fileinput-button .ui-button-text { 67 | line-height: 24px; 68 | } 69 | * html .fileupload-buttonbar .ui-button { 70 | margin-left: 3px; 71 | } 72 | 73 | /* Fix for IE 7: */ 74 | * + html .fileinput-button { 75 | margin-right: 4px; 76 | } 77 | * + html .fileinput-button .ui-button-text { 78 | line-height: 24px; 79 | } 80 | * + html .fileupload-buttonbar .ui-button { 81 | margin-left: 3px; 82 | } 83 | 84 | @media (max-width: 767px) { 85 | .fileupload-buttonbar .toggle, 86 | .files .toggle, 87 | .files .btn span { 88 | display: none; 89 | } 90 | .files .preview * { 91 | width: 40px; 92 | } 93 | .files .name * { 94 | width: 80px; 95 | display: inline-block; 96 | word-wrap: break-word; 97 | } 98 | .files .progress { 99 | width: 20px; 100 | } 101 | } 102 | 103 | /* Fix for Webkit (Safari, Chrome) */ 104 | @media screen and (-webkit-min-device-pixel-ratio:0) { 105 | .fileinput-button { 106 | margin-top: 2px; 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/animated-overlay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/animated-overlay.gif -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_a83300_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_a83300_256x240.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_cccccc_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_cccccc_256x240.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a0ivanov/aimp-control-plugin/a6d4cdc1d33b3660e55bd4ee975fe1c6fd2c274d/client_src/jquery-ui/development-bundle/themes/ui-darkness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Theming 10 | */ 11 | @import "jquery.ui.base.css"; 12 | @import "jquery.ui.theme.css"; 13 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.base.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Theming 10 | */ 11 | @import url("jquery.ui.core.css"); 12 | 13 | @import url("jquery.ui.accordion.css"); 14 | @import url("jquery.ui.autocomplete.css"); 15 | @import url("jquery.ui.button.css"); 16 | @import url("jquery.ui.datepicker.css"); 17 | @import url("jquery.ui.dialog.css"); 18 | @import url("jquery.ui.menu.css"); 19 | @import url("jquery.ui.progressbar.css"); 20 | @import url("jquery.ui.resizable.css"); 21 | @import url("jquery.ui.selectable.css"); 22 | @import url("jquery.ui.slider.css"); 23 | @import url("jquery.ui.spinner.css"); 24 | @import url("jquery.ui.tabs.css"); 25 | @import url("jquery.ui.tooltip.css"); 26 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.button.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Button 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Button#theming 10 | */ 11 | .ui-button { 12 | display: inline-block; 13 | position: relative; 14 | padding: 0; 15 | line-height: normal; 16 | margin-right: .1em; 17 | cursor: pointer; 18 | vertical-align: middle; 19 | text-align: center; 20 | overflow: visible; /* removes extra width in IE */ 21 | } 22 | .ui-button, 23 | .ui-button:link, 24 | .ui-button:visited, 25 | .ui-button:hover, 26 | .ui-button:active { 27 | text-decoration: none; 28 | } 29 | /* to make room for the icon, a width needs to be set here */ 30 | .ui-button-icon-only { 31 | width: 2.2em; 32 | } 33 | /* button elements seem to need a little more width */ 34 | button.ui-button-icon-only { 35 | width: 2.4em; 36 | } 37 | .ui-button-icons-only { 38 | width: 3.4em; 39 | } 40 | button.ui-button-icons-only { 41 | width: 3.7em; 42 | } 43 | 44 | /* button text element */ 45 | .ui-button .ui-button-text { 46 | display: block; 47 | line-height: normal; 48 | } 49 | .ui-button-text-only .ui-button-text { 50 | padding: .4em 1em; 51 | } 52 | .ui-button-icon-only .ui-button-text, 53 | .ui-button-icons-only .ui-button-text { 54 | padding: .4em; 55 | text-indent: -9999999px; 56 | } 57 | .ui-button-text-icon-primary .ui-button-text, 58 | .ui-button-text-icons .ui-button-text { 59 | padding: .4em 1em .4em 2.1em; 60 | } 61 | .ui-button-text-icon-secondary .ui-button-text, 62 | .ui-button-text-icons .ui-button-text { 63 | padding: .4em 2.1em .4em 1em; 64 | } 65 | .ui-button-text-icons .ui-button-text { 66 | padding-left: 2.1em; 67 | padding-right: 2.1em; 68 | } 69 | /* no icon support for input elements, provide padding by default */ 70 | input.ui-button { 71 | padding: .4em 1em; 72 | } 73 | 74 | /* button icon element(s) */ 75 | .ui-button-icon-only .ui-icon, 76 | .ui-button-text-icon-primary .ui-icon, 77 | .ui-button-text-icon-secondary .ui-icon, 78 | .ui-button-text-icons .ui-icon, 79 | .ui-button-icons-only .ui-icon { 80 | position: absolute; 81 | top: 50%; 82 | margin-top: -8px; 83 | } 84 | .ui-button-icon-only .ui-icon { 85 | left: 50%; 86 | margin-left: -8px; 87 | } 88 | .ui-button-text-icon-primary .ui-button-icon-primary, 89 | .ui-button-text-icons .ui-button-icon-primary, 90 | .ui-button-icons-only .ui-button-icon-primary { 91 | left: .5em; 92 | } 93 | .ui-button-text-icon-secondary .ui-button-icon-secondary, 94 | .ui-button-text-icons .ui-button-icon-secondary, 95 | .ui-button-icons-only .ui-button-icon-secondary { 96 | right: .5em; 97 | } 98 | 99 | /* button sets */ 100 | .ui-buttonset { 101 | margin-right: 7px; 102 | } 103 | .ui-buttonset .ui-button { 104 | margin-left: 0; 105 | margin-right: -.3em; 106 | } 107 | 108 | /* workarounds */ 109 | /* reset extra padding in Firefox, see h5bp.com/l */ 110 | input.ui-button::-moz-focus-inner, 111 | button.ui-button::-moz-focus-inner { 112 | border: 0; 113 | padding: 0; 114 | } 115 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.core.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Theming/API 10 | */ 11 | 12 | /* Layout helpers 13 | ----------------------------------*/ 14 | .ui-helper-hidden { 15 | display: none; 16 | } 17 | .ui-helper-hidden-accessible { 18 | border: 0; 19 | clip: rect(0 0 0 0); 20 | height: 1px; 21 | margin: -1px; 22 | overflow: hidden; 23 | padding: 0; 24 | position: absolute; 25 | width: 1px; 26 | } 27 | .ui-helper-reset { 28 | margin: 0; 29 | padding: 0; 30 | border: 0; 31 | outline: 0; 32 | line-height: 1.3; 33 | text-decoration: none; 34 | font-size: 100%; 35 | list-style: none; 36 | } 37 | .ui-helper-clearfix:before, 38 | .ui-helper-clearfix:after { 39 | content: ""; 40 | display: table; 41 | } 42 | .ui-helper-clearfix:after { 43 | clear: both; 44 | } 45 | .ui-helper-clearfix { 46 | min-height: 0; /* support: IE7 */ 47 | } 48 | .ui-helper-zfix { 49 | width: 100%; 50 | height: 100%; 51 | top: 0; 52 | left: 0; 53 | position: absolute; 54 | opacity: 0; 55 | filter:Alpha(Opacity=0); 56 | } 57 | 58 | .ui-front { 59 | z-index: 100; 60 | } 61 | 62 | 63 | /* Interaction Cues 64 | ----------------------------------*/ 65 | .ui-state-disabled { 66 | cursor: default !important; 67 | } 68 | 69 | 70 | /* Icons 71 | ----------------------------------*/ 72 | 73 | /* states and images */ 74 | .ui-icon { 75 | display: block; 76 | text-indent: -99999px; 77 | overflow: hidden; 78 | background-repeat: no-repeat; 79 | } 80 | 81 | 82 | /* Misc visuals 83 | ----------------------------------*/ 84 | 85 | /* Overlays */ 86 | .ui-widget-overlay { 87 | position: fixed; 88 | top: 0; 89 | left: 0; 90 | width: 100%; 91 | height: 100%; 92 | } 93 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.dialog.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Dialog 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Dialog#theming 10 | */ 11 | .ui-dialog { 12 | position: absolute; 13 | top: 0; 14 | left: 0; 15 | padding: .2em; 16 | outline: 0; 17 | } 18 | .ui-dialog .ui-dialog-titlebar { 19 | padding: .4em 1em; 20 | position: relative; 21 | } 22 | .ui-dialog .ui-dialog-title { 23 | float: left; 24 | margin: .1em 0; 25 | white-space: nowrap; 26 | width: 90%; 27 | overflow: hidden; 28 | text-overflow: ellipsis; 29 | } 30 | .ui-dialog .ui-dialog-titlebar-close { 31 | position: absolute; 32 | right: .3em; 33 | top: 50%; 34 | width: 21px; 35 | margin: -10px 0 0 0; 36 | padding: 1px; 37 | height: 20px; 38 | } 39 | .ui-dialog .ui-dialog-content { 40 | position: relative; 41 | border: 0; 42 | padding: .5em 1em; 43 | background: none; 44 | overflow: auto; 45 | } 46 | .ui-dialog .ui-dialog-buttonpane { 47 | text-align: left; 48 | border-width: 1px 0 0 0; 49 | background-image: none; 50 | margin-top: .5em; 51 | padding: .3em 1em .5em .4em; 52 | } 53 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { 54 | float: right; 55 | } 56 | .ui-dialog .ui-dialog-buttonpane button { 57 | margin: .5em .4em .5em 0; 58 | cursor: pointer; 59 | } 60 | .ui-dialog .ui-resizable-se { 61 | width: 12px; 62 | height: 12px; 63 | right: -5px; 64 | bottom: -5px; 65 | background-position: 16px 16px; 66 | } 67 | .ui-draggable .ui-dialog-titlebar { 68 | cursor: move; 69 | } 70 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.menu.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Menu 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Menu#theming 10 | */ 11 | .ui-menu { 12 | list-style: none; 13 | padding: 2px; 14 | margin: 0; 15 | display: block; 16 | outline: none; 17 | } 18 | .ui-menu .ui-menu { 19 | margin-top: -3px; 20 | position: absolute; 21 | } 22 | .ui-menu .ui-menu-item { 23 | margin: 0; 24 | padding: 0; 25 | width: 100%; 26 | } 27 | .ui-menu .ui-menu-divider { 28 | margin: 5px -2px 5px -2px; 29 | height: 0; 30 | font-size: 0; 31 | line-height: 0; 32 | border-width: 1px 0 0 0; 33 | } 34 | .ui-menu .ui-menu-item a { 35 | text-decoration: none; 36 | display: block; 37 | padding: 2px .4em; 38 | line-height: 1.5; 39 | min-height: 0; /* support: IE7 */ 40 | font-weight: normal; 41 | } 42 | .ui-menu .ui-menu-item a.ui-state-focus, 43 | .ui-menu .ui-menu-item a.ui-state-active { 44 | font-weight: normal; 45 | margin: -1px; 46 | } 47 | 48 | .ui-menu .ui-state-disabled { 49 | font-weight: normal; 50 | margin: .4em 0 .2em; 51 | line-height: 1.5; 52 | } 53 | .ui-menu .ui-state-disabled a { 54 | cursor: default; 55 | } 56 | 57 | /* icon support */ 58 | .ui-menu-icons { 59 | position: relative; 60 | } 61 | .ui-menu-icons .ui-menu-item a { 62 | position: relative; 63 | padding-left: 2em; 64 | } 65 | 66 | /* left-aligned */ 67 | .ui-menu .ui-icon { 68 | position: absolute; 69 | top: .2em; 70 | left: .2em; 71 | } 72 | 73 | /* right-aligned */ 74 | .ui-menu .ui-menu-icon { 75 | position: static; 76 | float: right; 77 | } 78 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.progressbar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Progressbar 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Progressbar#theming 10 | */ 11 | .ui-progressbar { 12 | height: 2em; 13 | text-align: left; 14 | overflow: hidden; 15 | } 16 | .ui-progressbar .ui-progressbar-value { 17 | margin: -1px; 18 | height: 100%; 19 | } 20 | .ui-progressbar .ui-progressbar-overlay { 21 | background: url("images/animated-overlay.gif"); 22 | height: 100%; 23 | filter: alpha(opacity=25); 24 | opacity: 0.25; 25 | } 26 | .ui-progressbar-indeterminate .ui-progressbar-value { 27 | background-image: none; 28 | } 29 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.resizable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Resizable 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Resizable#theming 10 | */ 11 | .ui-resizable { 12 | position: relative; 13 | } 14 | .ui-resizable-handle { 15 | position: absolute; 16 | font-size: 0.1px; 17 | display: block; 18 | } 19 | .ui-resizable-disabled .ui-resizable-handle, 20 | .ui-resizable-autohide .ui-resizable-handle { 21 | display: none; 22 | } 23 | .ui-resizable-n { 24 | cursor: n-resize; 25 | height: 7px; 26 | width: 100%; 27 | top: -5px; 28 | left: 0; 29 | } 30 | .ui-resizable-s { 31 | cursor: s-resize; 32 | height: 7px; 33 | width: 100%; 34 | bottom: -5px; 35 | left: 0; 36 | } 37 | .ui-resizable-e { 38 | cursor: e-resize; 39 | width: 7px; 40 | right: -5px; 41 | top: 0; 42 | height: 100%; 43 | } 44 | .ui-resizable-w { 45 | cursor: w-resize; 46 | width: 7px; 47 | left: -5px; 48 | top: 0; 49 | height: 100%; 50 | } 51 | .ui-resizable-se { 52 | cursor: se-resize; 53 | width: 12px; 54 | height: 12px; 55 | right: 1px; 56 | bottom: 1px; 57 | } 58 | .ui-resizable-sw { 59 | cursor: sw-resize; 60 | width: 9px; 61 | height: 9px; 62 | left: -5px; 63 | bottom: -5px; 64 | } 65 | .ui-resizable-nw { 66 | cursor: nw-resize; 67 | width: 9px; 68 | height: 9px; 69 | left: -5px; 70 | top: -5px; 71 | } 72 | .ui-resizable-ne { 73 | cursor: ne-resize; 74 | width: 9px; 75 | height: 9px; 76 | right: -5px; 77 | top: -5px; 78 | } 79 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.slider.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Slider 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Slider#theming 10 | */ 11 | .ui-slider { 12 | position: relative; 13 | text-align: left; 14 | } 15 | .ui-slider .ui-slider-handle { 16 | position: absolute; 17 | z-index: 2; 18 | width: 1.2em; 19 | height: 1.2em; 20 | cursor: default; 21 | } 22 | .ui-slider .ui-slider-range { 23 | position: absolute; 24 | z-index: 1; 25 | font-size: .7em; 26 | display: block; 27 | border: 0; 28 | background-position: 0 0; 29 | } 30 | 31 | /* For IE8 - See #6727 */ 32 | .ui-slider.ui-state-disabled .ui-slider-handle, 33 | .ui-slider.ui-state-disabled .ui-slider-range { 34 | filter: inherit; 35 | } 36 | 37 | .ui-slider-horizontal { 38 | height: .8em; 39 | } 40 | .ui-slider-horizontal .ui-slider-handle { 41 | top: -.3em; 42 | margin-left: -.6em; 43 | } 44 | .ui-slider-horizontal .ui-slider-range { 45 | top: 0; 46 | height: 100%; 47 | } 48 | .ui-slider-horizontal .ui-slider-range-min { 49 | left: 0; 50 | } 51 | .ui-slider-horizontal .ui-slider-range-max { 52 | right: 0; 53 | } 54 | 55 | .ui-slider-vertical { 56 | width: .8em; 57 | height: 100px; 58 | } 59 | .ui-slider-vertical .ui-slider-handle { 60 | left: -.3em; 61 | margin-left: 0; 62 | margin-bottom: -.6em; 63 | } 64 | .ui-slider-vertical .ui-slider-range { 65 | left: 0; 66 | width: 100%; 67 | } 68 | .ui-slider-vertical .ui-slider-range-min { 69 | bottom: 0; 70 | } 71 | .ui-slider-vertical .ui-slider-range-max { 72 | top: 0; 73 | } 74 | -------------------------------------------------------------------------------- /client_src/jquery-ui/development-bundle/themes/ui-darkness/jquery.ui.tabs.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tabs 1.10.0 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2013 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://docs.jquery.com/UI/Tabs#theming 10 | */ 11 | .ui-tabs { 12 | position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 13 | padding: .2em; 14 | } 15 | .ui-tabs .ui-tabs-nav { 16 | margin: 0; 17 | padding: .2em .2em 0; 18 | } 19 | .ui-tabs .ui-tabs-nav li { 20 | list-style: none; 21 | float: left; 22 | position: relative; 23 | top: 0; 24 | margin: 1px .2em 0 0; 25 | border-bottom: 0; 26 | padding: 0; 27 | white-space: nowrap; 28 | } 29 | .ui-tabs .ui-tabs-nav li a { 30 | float: left; 31 | padding: .5em 1em; 32 | text-decoration: none; 33 | } 34 | .ui-tabs .ui-tabs-nav li.ui-tabs-active { 35 | margin-bottom: -1px; 36 | padding-bottom: 1px; 37 | } 38 | .ui-tabs .ui-tabs-nav li.ui-tabs-active a, 39 | .ui-tabs .ui-tabs-nav li.ui-state-disabled a, 40 | .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { 41 | cursor: text; 42 | } 43 | .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 44 | .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { 45 | cursor: pointer; 46 | } 47 | .ui-tabs .ui-tabs-panel { 48 | display: block; 49 | border-width: 0; 50 | padding: 1em 1.4em; 51 | background: none; 52 | } 53 | -------------------------------------------------------------------------------- /client_src/js/i18n.js: -------------------------------------------------------------------------------- 1 | /* 2 | Script contains localization utilities. 3 | Copyright (c) 2014, Alexey Ivanov 4 | */ 5 | 6 | // global assoc array to store all localized strings. 7 | var lang = {}; 8 | var l10n_data_files_list = ['aimp_manager', 'main_page']; 9 | 10 | /* Gets language ID from cookie, or return default value. */ 11 | function getLanguageID() { 12 | var lang_id = $.cookie('language'); 13 | return lang_id === null ? 'ru' // by default set Russian language. 14 | : lang_id; 15 | } 16 | 17 | /* Returns relative path to l10n files on server. */ 18 | function getLocalizationDirectory() { 19 | return 'i18n/' + getLanguageID(); 20 | } 21 | 22 | /* Load l10n files from l10n directory. */ 23 | function load_l10n_data() { 24 | var l10n_directory = getLocalizationDirectory(); 25 | 26 | for ( file in l10n_data_files_list ) { 27 | document.write('