Use the build system “meson” (close #32)
Replace the build system “setuptools” with “meson”.
This commit is contained in:
parent
ff0eee8380
commit
fac7a85566
37 changed files with 848 additions and 361 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -3,7 +3,5 @@ __pycache__/
|
|||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# Files created by setuptools
|
||||
build/
|
||||
dist/
|
||||
*.egg-info/
|
||||
/build/
|
||||
/install/
|
||||
|
|
|
@ -12,62 +12,42 @@ Dependencies:
|
|||
* "GTK":http://www.gtk.org 3 (>= 3.22) ("python-gobject":https://live.gnome.org/PyGObject)
|
||||
* "Avahi":http://www.avahi.org (optional)
|
||||
* "python-keyring":http://pypi.python.org/pypi/keyring (optional)
|
||||
* "python-setuptools":https://pypi.python.org/pypi/setuptools (building)
|
||||
* "meson":https://mesonbuild.com/ and "ninja":https://ninja-build.org/ (building)
|
||||
|
||||
Additionally a "MPD":http://www.musicpd.org server (version >= 0.21.0) is required at runtime.
|
||||
|
||||
|
||||
h2. Building
|
||||
|
||||
Build the application with _setuptools_:
|
||||
Build the application with _meson_ and _ninja_:
|
||||
|
||||
bc. $ python3 setup.py build
|
||||
bc. $ meson build
|
||||
$ ninja -C build
|
||||
|
||||
|
||||
h2. Running/Testing
|
||||
|
||||
For testing the application and running it without (system-wide) installation, donwload/clone the code, build it as described above and then use _setuptools_ to install it for the current user:
|
||||
For testing the application and running it without (system-wide) installation,
|
||||
donwload/clone the code, build it with the @--prefix@ option and install it
|
||||
with @ninja@:
|
||||
|
||||
bc. $ python3 setup.py develop --user
|
||||
bc. $ meson --prefix $(pwd)/install build
|
||||
$ ninja -C build
|
||||
$ ninja -C build install
|
||||
|
||||
After that you can run it with
|
||||
After that you can run it with _meson’s_ @devenv@ command:
|
||||
|
||||
bc. $ ~/.local/bin/mcg
|
||||
|
||||
or if _~/.local/bin/_ is on your PATH
|
||||
|
||||
bc. $ mcg
|
||||
bc. $ meson devenv -C build src/mcg
|
||||
|
||||
|
||||
h2. Installing
|
||||
|
||||
Install the application system-wide with _setuptools_:
|
||||
Install the application system-wide with _meson_ (after building):
|
||||
|
||||
bc. # python3 setup.py install
|
||||
bc. $ ninja -C build install
|
||||
|
||||
Note: _On Linux using the distribution’s package manager is the preferred way of installing applications system-wide._
|
||||
|
||||
|
||||
h2. Packaging
|
||||
|
||||
Create a distribution package with _setuptools_:
|
||||
|
||||
bc. $ python3 setup.py sdist
|
||||
|
||||
|
||||
h2. Cover/image configuration
|
||||
|
||||
Since MPD itself does not provide the cover/image/album art binaries, yet, _mcg_ has to look for them itself. In order to find the images a base folder has to be configured on the Connection tab as “Image Directory”. This value can either be a local (absolute) folder (e. g. /home/user/music/) or an http URL (e. g. http://localhost/music/). _mcg_ then adds the (relative) folder of the audio file to this paths and tries different names for the actual file:
|
||||
|
||||
# the album name
|
||||
# “cover”
|
||||
# “folder”
|
||||
|
||||
The following file extensions are used:
|
||||
|
||||
# png
|
||||
# jpg
|
||||
|
||||
The first combination that results in an existing file is used as cover image. If no matching file exists, _mcg_ will try to traverse the directory for any image file as fallback—this is done for local paths only though, not for http URLs.
|
||||
Note: _On Linux using the distribution’s package manager is the preferred way
|
||||
of installing applications system-wide._
|
||||
|
||||
|
||||
h2. Screenshots
|
||||
|
|
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 7 KiB |
7
data/icons/meson.build
Normal file
7
data/icons/meson.build
Normal file
|
@ -0,0 +1,7 @@
|
|||
application_id = 'xyz.suruatoel.mcg'
|
||||
|
||||
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
|
||||
install_data(
|
||||
join_paths(scalable_dir, ('@0@.svg').format(application_id)),
|
||||
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
|
||||
)
|
|
@ -4,7 +4,7 @@ Name=CoverGrid (mcg)
|
|||
Comment=CoverGrid for the Music Player Daemon
|
||||
Keywords=mpd;
|
||||
Type=Application
|
||||
Icon=mcg.svg
|
||||
Icon=xyz.suruatoel.mcg
|
||||
Exec=mcg
|
||||
Categories=AudioVideo;
|
||||
StartupNotify=true
|
||||
|
|
34
data/meson.build
Normal file
34
data/meson.build
Normal file
|
@ -0,0 +1,34 @@
|
|||
i18n = import('i18n')
|
||||
|
||||
desktop_file = i18n.merge_file(
|
||||
input: 'mcg.desktop',
|
||||
output: 'mcg.desktop',
|
||||
type: 'desktop',
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'applications')
|
||||
)
|
||||
|
||||
desktop_utils = find_program('desktop-file-validate', required: false)
|
||||
if desktop_utils.found()
|
||||
test('Validate desktop file', desktop_utils,
|
||||
args: [desktop_file]
|
||||
)
|
||||
endif
|
||||
|
||||
gnome = import('gnome')
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
|
||||
gnome.compile_resources('mcg',
|
||||
'xyz.suruatoel.mcg.gresource.xml',
|
||||
gresource_bundle: true,
|
||||
install: true,
|
||||
install_dir: pkgdatadir,
|
||||
)
|
||||
|
||||
install_data('xyz.suruatoel.mcg.gschema.xml',
|
||||
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
|
||||
)
|
||||
gnome.compile_schemas(depend_files: files('xyz.suruatoel.mcg.gschema.xml'))
|
||||
|
||||
subdir('icons')
|
|
@ -13,7 +13,7 @@
|
|||
<property name="version">3.0.2</property>
|
||||
<property name="comments" translatable="yes">CoverGrid is a client for the Music Player Daemon, focusing on albums instead of single tracks.</property>
|
||||
<property name="website">http://www.suruatoel.xyz/codes/mcg</property>
|
||||
<property name="logo-icon-name"/>
|
||||
<property name="logo-icon-name">xyz.suruatoel.mcg</property>
|
||||
<property name="license-type">gpl-3-0</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<requires lib="gtk+" version="3.20"/>
|
||||
<template class="McgAppWindow" parent="GtkApplicationWindow">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">mcg</property>
|
||||
<property name="icon-name">xyz.suruatoel.mcg</property>
|
||||
<signal name="size-allocate" handler="on_resize" swapped="no"/>
|
||||
<signal name="window-state-event" handler="on_state" swapped="no"/>
|
||||
<child>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<gresource prefix="/xyz/suruatoel/mcg">
|
||||
<file>gtk.css</file>
|
||||
<file>noise-texture.png</file>
|
||||
<file>icons/mcg.svg</file>
|
||||
<file>ui/window.ui</file>
|
||||
<file>ui/gtk.menu.ui</file>
|
||||
<file>ui/info-dialog.ui</file>
|
||||
|
|
44
mcg/mcg.py
44
mcg/mcg.py
|
@ -1,44 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
import sys
|
||||
|
||||
from mcg import Environment
|
||||
|
||||
|
||||
|
||||
|
||||
def setup_resources():
|
||||
from gi.repository import Gio
|
||||
|
||||
resource = Gio.resource_load(
|
||||
Environment.get_data('xyz.suruatoel.mcg.gresource')
|
||||
)
|
||||
Gio.Resource._register(resource)
|
||||
|
||||
|
||||
def setup_locale():
|
||||
import gettext
|
||||
|
||||
gettext.bindtextdomain('mcg', Environment.get_locale())
|
||||
gettext.textdomain('mcg')
|
||||
|
||||
|
||||
def run_application():
|
||||
from mcg.application import Application
|
||||
|
||||
app = Application()
|
||||
return app.run(sys.argv)
|
||||
|
||||
|
||||
def main():
|
||||
setup_resources()
|
||||
setup_locale()
|
||||
return run_application()
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
sys.exit(main())
|
19
meson.build
Normal file
19
meson.build
Normal file
|
@ -0,0 +1,19 @@
|
|||
project('mcg',
|
||||
version: '3.0.2',
|
||||
meson_version: '>= 0.59.0',
|
||||
default_options: [
|
||||
'warning_level=2',
|
||||
'werror=false',
|
||||
],
|
||||
)
|
||||
|
||||
subdir('data')
|
||||
subdir('src')
|
||||
subdir('po')
|
||||
|
||||
gnome = import('gnome')
|
||||
gnome.post_install(
|
||||
glib_compile_schemas: true,
|
||||
gtk_update_icon_cache: true,
|
||||
update_desktop_database: true,
|
||||
)
|
1
po/LINGUAS
Normal file
1
po/LINGUAS
Normal file
|
@ -0,0 +1 @@
|
|||
en de
|
29
po/POTFILES
Normal file
29
po/POTFILES
Normal file
|
@ -0,0 +1,29 @@
|
|||
data/xyz.suruatoel.mcg.gschema.xml
|
||||
data/ui/album-headerbar.ui
|
||||
data/ui/connection-panel.ui
|
||||
data/ui/cover-panel.ui
|
||||
data/ui/cover-toolbar.ui
|
||||
data/ui/gtk.menu.ui
|
||||
data/ui/info-dialog.ui
|
||||
data/ui/library-panel.ui
|
||||
data/ui/library-toolbar.ui
|
||||
data/ui/playlist-panel.ui
|
||||
data/ui/playlist-toolbar.ui
|
||||
data/ui/server-panel.ui
|
||||
data/ui/server-toolbar.ui
|
||||
data/ui/shortcuts-dialog.ui
|
||||
data/ui/window.ui
|
||||
src/albumheaderbar.py
|
||||
src/application.py
|
||||
src/client.py
|
||||
src/connectionpanel.py
|
||||
src/coverpanel.py
|
||||
src/infodialog.py
|
||||
src/librarypanel.py
|
||||
src/main.py
|
||||
src/playlistpanel.py
|
||||
src/serverpanel.py
|
||||
src/shortcutsdialog.py
|
||||
src/utils.py
|
||||
src/window.py
|
||||
src/zeroconf.py
|
|
@ -1,11 +1,12 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CoverGrid (mcg)\n"
|
||||
"POT-Creation-Date: 2020-10-24 14:41+0200\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-05 15:08+0200\n"
|
||||
"PO-Revision-Date: 2020-10-24 14:41+0200\n"
|
||||
"Last-Translator: coderkun <olli@suruatoel.xyz>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
@ -13,8 +14,87 @@ msgstr ""
|
|||
"X-Poedit-Basepath: ../../..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: mcg\n"
|
||||
"X-Poedit-SearchPath-1: data/ui\n"
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:11
|
||||
msgid "MPD host"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:12
|
||||
msgid "MPD host to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:16
|
||||
msgid "MPD port"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:17
|
||||
msgid "MPD port to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:21
|
||||
#, fuzzy
|
||||
msgid "Connection state"
|
||||
msgstr "Verbindung"
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:22
|
||||
msgid "State of last connection"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:26
|
||||
msgid "Window width"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:27
|
||||
msgid "The window width in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:31
|
||||
msgid "Window height"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:32
|
||||
msgid "The window height in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:36
|
||||
msgid "Window maximized"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:37
|
||||
msgid "Whether or not the window is in maximized state."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:42
|
||||
msgid "Last selected panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:43
|
||||
msgid "The index of the last selected panel."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:48
|
||||
msgid "Size of library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:49
|
||||
msgid "The size of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:53
|
||||
msgid "Sort criterium for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:54
|
||||
msgid "The sort criterium of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:58
|
||||
msgid "Sort type for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:59
|
||||
msgid "The sort type of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/album-headerbar.ui:17
|
||||
msgid "Title"
|
||||
|
@ -24,27 +104,27 @@ msgstr "Titel"
|
|||
msgid "Artist"
|
||||
msgstr "Künstler"
|
||||
|
||||
#: data/ui/connection-panel.ui:75
|
||||
#: data/ui/connection-panel.ui:76
|
||||
msgid "Enter hostname or IP address"
|
||||
msgstr "Hostnamen oder IP-Adresse eingeben"
|
||||
|
||||
#: data/ui/connection-panel.ui:88
|
||||
#: data/ui/connection-panel.ui:89
|
||||
msgid "Enter password or leave blank"
|
||||
msgstr "Passwort eingeben oder leer lassen"
|
||||
|
||||
#: data/ui/connection-panel.ui:117
|
||||
#: data/ui/connection-panel.ui:118
|
||||
msgid "Host:"
|
||||
msgstr "Host:"
|
||||
|
||||
#: data/ui/connection-panel.ui:129
|
||||
#: data/ui/connection-panel.ui:130
|
||||
msgid "Port:"
|
||||
msgstr "Port:"
|
||||
|
||||
#: data/ui/connection-panel.ui:141
|
||||
#: data/ui/connection-panel.ui:142
|
||||
msgid "Password:"
|
||||
msgstr "Passwort:"
|
||||
|
||||
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:101
|
||||
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:102
|
||||
msgid "Show the cover in fullscreen mode"
|
||||
msgstr "Das Cover im Vollbildmodus anzeigen"
|
||||
|
||||
|
@ -72,15 +152,15 @@ msgstr "Bibliothek durchsuchen"
|
|||
msgid "Connection"
|
||||
msgstr "Verbindung"
|
||||
|
||||
#: data/ui/gtk.menu.ui:40
|
||||
#: data/ui/gtk.menu.ui:40 src/window.py:113
|
||||
msgid "Cover"
|
||||
msgstr "Cover"
|
||||
|
||||
#: data/ui/gtk.menu.ui:46
|
||||
#: data/ui/gtk.menu.ui:46 src/window.py:114
|
||||
msgid "Playlist"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: data/ui/gtk.menu.ui:52
|
||||
#: data/ui/gtk.menu.ui:52 src/window.py:115
|
||||
msgid "Library"
|
||||
msgstr "Bibliothek"
|
||||
|
||||
|
@ -136,7 +216,7 @@ msgstr "nach Titel"
|
|||
msgid "sort by year"
|
||||
msgstr "nach Jahr"
|
||||
|
||||
#: data/ui/library-toolbar.ui:169 data/ui/shortcuts-dialog.ui:114
|
||||
#: data/ui/library-toolbar.ui:169 data/ui/shortcuts-dialog.ui:115
|
||||
msgid "Search the library"
|
||||
msgstr "Die Bibliothek durchsuchen"
|
||||
|
||||
|
@ -152,116 +232,116 @@ msgstr "Einstellungen und Aktionen"
|
|||
msgid "remove"
|
||||
msgstr "entfernen"
|
||||
|
||||
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:88
|
||||
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89
|
||||
msgid "Clear the playlist"
|
||||
msgstr "Die Wiedergabeliste leeren"
|
||||
|
||||
#: data/ui/server-panel.ui:68
|
||||
#: data/ui/server-panel.ui:69
|
||||
msgid "File:"
|
||||
msgstr "Datei:"
|
||||
|
||||
#: data/ui/server-panel.ui:81
|
||||
#: data/ui/server-panel.ui:82
|
||||
msgid "Audio:"
|
||||
msgstr "Audio:"
|
||||
|
||||
#: data/ui/server-panel.ui:94
|
||||
#: data/ui/server-panel.ui:95
|
||||
msgid "Bitrate:"
|
||||
msgstr "Bitrate:"
|
||||
|
||||
#: data/ui/server-panel.ui:107
|
||||
#: data/ui/server-panel.ui:108
|
||||
msgid "Error:"
|
||||
msgstr "Fehler:"
|
||||
|
||||
#: data/ui/server-panel.ui:119 data/ui/server-panel.ui:135
|
||||
#: data/ui/server-panel.ui:151 data/ui/server-panel.ui:167
|
||||
#: data/ui/server-panel.ui:120 data/ui/server-panel.ui:136
|
||||
#: data/ui/server-panel.ui:152 data/ui/server-panel.ui:168
|
||||
msgid "<i>none</i>"
|
||||
msgstr "<i>nichts</i>"
|
||||
|
||||
#: data/ui/server-panel.ui:208
|
||||
#: data/ui/server-panel.ui:221
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: data/ui/server-panel.ui:287
|
||||
#: data/ui/server-panel.ui:301
|
||||
msgid "Albums"
|
||||
msgstr "Alben"
|
||||
|
||||
#: data/ui/server-panel.ui:299
|
||||
#: data/ui/server-panel.ui:313
|
||||
msgid "Songs"
|
||||
msgstr "Songs"
|
||||
|
||||
#: data/ui/server-panel.ui:311
|
||||
#: data/ui/server-panel.ui:325
|
||||
msgid "Artists"
|
||||
msgstr "Künstler"
|
||||
|
||||
#: data/ui/server-panel.ui:335
|
||||
#: data/ui/server-panel.ui:349
|
||||
msgid "Seconds"
|
||||
msgstr "Sekunden"
|
||||
|
||||
#: data/ui/server-panel.ui:382
|
||||
#: data/ui/server-panel.ui:396
|
||||
msgid "Seconds played"
|
||||
msgstr "Sekunden gespielt"
|
||||
|
||||
#: data/ui/server-panel.ui:393
|
||||
#: data/ui/server-panel.ui:407
|
||||
msgid "Seconds running"
|
||||
msgstr "Sekunden laufend"
|
||||
|
||||
#: data/ui/server-panel.ui:430
|
||||
#: data/ui/server-panel.ui:465
|
||||
msgid "Statistics"
|
||||
msgstr "Statistiken"
|
||||
|
||||
#: data/ui/server-panel.ui:500
|
||||
#: data/ui/server-panel.ui:535
|
||||
msgid "Audio Devices"
|
||||
msgstr "Audiogeräte"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:14
|
||||
#: data/ui/shortcuts-dialog.ui:15
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:19
|
||||
#: data/ui/shortcuts-dialog.ui:20
|
||||
msgid "Switch to the Connection panel"
|
||||
msgstr "Zum Verbindungspaneel wechseln"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:26
|
||||
#: data/ui/shortcuts-dialog.ui:27
|
||||
msgid "Switch to the Cover panel"
|
||||
msgstr "Zum Cover-Paneel wechseln"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:33
|
||||
#: data/ui/shortcuts-dialog.ui:34
|
||||
msgid "Switch to the Playlist panel"
|
||||
msgstr "Zum Wiedergabelistenpaneel wechseln"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:40
|
||||
#: data/ui/shortcuts-dialog.ui:41
|
||||
msgid "Switch to the Library panel"
|
||||
msgstr "Zum Bibliothekspaneel wechseln"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:47
|
||||
#: data/ui/shortcuts-dialog.ui:48
|
||||
msgid "Show the keyboard shortcuts"
|
||||
msgstr "Die Tastenkombinationen anzeigen (dieser Dialog)"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:54
|
||||
#: data/ui/shortcuts-dialog.ui:55
|
||||
msgid "Open the info dialog"
|
||||
msgstr "Den Infodialog öffnen"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:61
|
||||
#: data/ui/shortcuts-dialog.ui:62
|
||||
msgid "Quit the application"
|
||||
msgstr "Die Anwendung beenden"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:69
|
||||
#: data/ui/shortcuts-dialog.ui:70
|
||||
msgid "Player"
|
||||
msgstr "Wiedergabeprogramm"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:74 data/ui/window.ui:139
|
||||
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139
|
||||
msgid "Connect or disconnect"
|
||||
msgstr "Die Verbindung herstellen oder trennen"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:81 data/ui/window.ui:161
|
||||
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161
|
||||
msgid "Switch between play and pause"
|
||||
msgstr "Zwischen Abspielen und Pause wechseln"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:96
|
||||
#: data/ui/shortcuts-dialog.ui:97
|
||||
msgid "Cover Panel"
|
||||
msgstr "Cover-Paneel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:109
|
||||
#: data/ui/shortcuts-dialog.ui:110
|
||||
msgid "Library Panel"
|
||||
msgstr "Bibliothekspaneel"
|
||||
|
||||
|
@ -273,31 +353,32 @@ msgstr "Zu MPD verbinden"
|
|||
msgid "Adjust the volume"
|
||||
msgstr "Die Lautstärke anpassen"
|
||||
|
||||
#: mcg/librarypanel.py:421
|
||||
#: src/librarypanel.py:419
|
||||
msgid "Loading albums"
|
||||
msgstr "Alben werden geladen"
|
||||
|
||||
#: mcg/librarypanel.py:523
|
||||
#: src/librarypanel.py:519
|
||||
msgid "Loading images"
|
||||
msgstr "Bilder werden geladen"
|
||||
|
||||
#: mcg/utils.py:50 mcg/utils.py:67
|
||||
#: src/utils.py:50 src/utils.py:67
|
||||
msgid "{} feat. {}"
|
||||
msgstr "{} mit {}"
|
||||
|
||||
#: mcg/utils.py:61
|
||||
#: src/utils.py:61
|
||||
msgid "{}:{} minutes"
|
||||
msgstr "{}:{} Minuten"
|
||||
|
||||
#: src/window.py:112
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
#~ msgid "Enter URL or local path"
|
||||
#~ msgstr "URL oder lokalen Pfad eingeben"
|
||||
|
||||
#~ msgid "Image Directory:"
|
||||
#~ msgstr "Bildordner:"
|
||||
|
||||
#~ msgid "Server"
|
||||
#~ msgstr "Server"
|
||||
|
||||
#~ msgid "{} of {} images loaded"
|
||||
#~ msgstr "{} von {} Bildern geladen"
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CoverGrid (mcg)\n"
|
||||
"POT-Creation-Date: 2020-10-24 14:39+0200\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-05 15:08+0200\n"
|
||||
"PO-Revision-Date: 2020-10-24 14:40+0200\n"
|
||||
"Last-Translator: coderkun <olli@suruatoel.xyz>\n"
|
||||
"Language-Team: \n"
|
||||
|
@ -15,6 +16,87 @@ msgstr ""
|
|||
"X-Poedit-SearchPath-0: mcg\n"
|
||||
"X-Poedit-SearchPath-1: data/ui\n"
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:11
|
||||
msgid "MPD host"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:12
|
||||
msgid "MPD host to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:16
|
||||
msgid "MPD port"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:17
|
||||
msgid "MPD port to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:21
|
||||
#, fuzzy
|
||||
msgid "Connection state"
|
||||
msgstr "Connection"
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:22
|
||||
msgid "State of last connection"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:26
|
||||
msgid "Window width"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:27
|
||||
msgid "The window width in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:31
|
||||
msgid "Window height"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:32
|
||||
msgid "The window height in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:36
|
||||
msgid "Window maximized"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:37
|
||||
msgid "Whether or not the window is in maximized state."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:42
|
||||
msgid "Last selected panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:43
|
||||
msgid "The index of the last selected panel."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:48
|
||||
msgid "Size of library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:49
|
||||
msgid "The size of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:53
|
||||
msgid "Sort criterium for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:54
|
||||
msgid "The sort criterium of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:58
|
||||
msgid "Sort type for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:59
|
||||
msgid "The sort type of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/album-headerbar.ui:17
|
||||
msgid "Title"
|
||||
msgstr "Title"
|
||||
|
@ -23,27 +105,27 @@ msgstr "Title"
|
|||
msgid "Artist"
|
||||
msgstr "Artist"
|
||||
|
||||
#: data/ui/connection-panel.ui:75
|
||||
#: data/ui/connection-panel.ui:76
|
||||
msgid "Enter hostname or IP address"
|
||||
msgstr "Enter hostname or IP address"
|
||||
|
||||
#: data/ui/connection-panel.ui:88
|
||||
#: data/ui/connection-panel.ui:89
|
||||
msgid "Enter password or leave blank"
|
||||
msgstr "Enter password or leave blank"
|
||||
|
||||
#: data/ui/connection-panel.ui:117
|
||||
#: data/ui/connection-panel.ui:118
|
||||
msgid "Host:"
|
||||
msgstr "Host:"
|
||||
|
||||
#: data/ui/connection-panel.ui:129
|
||||
#: data/ui/connection-panel.ui:130
|
||||
msgid "Port:"
|
||||
msgstr "Port:"
|
||||
|
||||
#: data/ui/connection-panel.ui:141
|
||||
#: data/ui/connection-panel.ui:142
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:101
|
||||
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:102
|
||||
msgid "Show the cover in fullscreen mode"
|
||||
msgstr "Show the cover in fullscreen mode"
|
||||
|
||||
|
@ -71,15 +153,15 @@ msgstr "Search Library"
|
|||
msgid "Connection"
|
||||
msgstr "Connection"
|
||||
|
||||
#: data/ui/gtk.menu.ui:40
|
||||
#: data/ui/gtk.menu.ui:40 src/window.py:113
|
||||
msgid "Cover"
|
||||
msgstr "Cover"
|
||||
|
||||
#: data/ui/gtk.menu.ui:46
|
||||
#: data/ui/gtk.menu.ui:46 src/window.py:114
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: data/ui/gtk.menu.ui:52
|
||||
#: data/ui/gtk.menu.ui:52 src/window.py:115
|
||||
msgid "Library"
|
||||
msgstr "Library"
|
||||
|
||||
|
@ -135,7 +217,7 @@ msgstr "by Title"
|
|||
msgid "sort by year"
|
||||
msgstr "by Year"
|
||||
|
||||
#: data/ui/library-toolbar.ui:169 data/ui/shortcuts-dialog.ui:114
|
||||
#: data/ui/library-toolbar.ui:169 data/ui/shortcuts-dialog.ui:115
|
||||
msgid "Search the library"
|
||||
msgstr "Search the library"
|
||||
|
||||
|
@ -151,116 +233,116 @@ msgstr "Settings and actions"
|
|||
msgid "remove"
|
||||
msgstr "remove"
|
||||
|
||||
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:88
|
||||
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89
|
||||
msgid "Clear the playlist"
|
||||
msgstr "Clear the playlist"
|
||||
|
||||
#: data/ui/server-panel.ui:68
|
||||
#: data/ui/server-panel.ui:69
|
||||
msgid "File:"
|
||||
msgstr "File:"
|
||||
|
||||
#: data/ui/server-panel.ui:81
|
||||
#: data/ui/server-panel.ui:82
|
||||
msgid "Audio:"
|
||||
msgstr "Audio:"
|
||||
|
||||
#: data/ui/server-panel.ui:94
|
||||
#: data/ui/server-panel.ui:95
|
||||
msgid "Bitrate:"
|
||||
msgstr "Bitrate:"
|
||||
|
||||
#: data/ui/server-panel.ui:107
|
||||
#: data/ui/server-panel.ui:108
|
||||
msgid "Error:"
|
||||
msgstr "Error:"
|
||||
|
||||
#: data/ui/server-panel.ui:119 data/ui/server-panel.ui:135
|
||||
#: data/ui/server-panel.ui:151 data/ui/server-panel.ui:167
|
||||
#: data/ui/server-panel.ui:120 data/ui/server-panel.ui:136
|
||||
#: data/ui/server-panel.ui:152 data/ui/server-panel.ui:168
|
||||
msgid "<i>none</i>"
|
||||
msgstr "<i>none</i>"
|
||||
|
||||
#: data/ui/server-panel.ui:208
|
||||
#: data/ui/server-panel.ui:221
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: data/ui/server-panel.ui:287
|
||||
#: data/ui/server-panel.ui:301
|
||||
msgid "Albums"
|
||||
msgstr "Albums"
|
||||
|
||||
#: data/ui/server-panel.ui:299
|
||||
#: data/ui/server-panel.ui:313
|
||||
msgid "Songs"
|
||||
msgstr "Songs"
|
||||
|
||||
#: data/ui/server-panel.ui:311
|
||||
#: data/ui/server-panel.ui:325
|
||||
msgid "Artists"
|
||||
msgstr "Artists"
|
||||
|
||||
#: data/ui/server-panel.ui:335
|
||||
#: data/ui/server-panel.ui:349
|
||||
msgid "Seconds"
|
||||
msgstr "Seconds"
|
||||
|
||||
#: data/ui/server-panel.ui:382
|
||||
#: data/ui/server-panel.ui:396
|
||||
msgid "Seconds played"
|
||||
msgstr "Seconds"
|
||||
|
||||
#: data/ui/server-panel.ui:393
|
||||
#: data/ui/server-panel.ui:407
|
||||
msgid "Seconds running"
|
||||
msgstr "Seconds running"
|
||||
|
||||
#: data/ui/server-panel.ui:430
|
||||
#: data/ui/server-panel.ui:465
|
||||
msgid "Statistics"
|
||||
msgstr "Statistics"
|
||||
|
||||
#: data/ui/server-panel.ui:500
|
||||
#: data/ui/server-panel.ui:535
|
||||
msgid "Audio Devices"
|
||||
msgstr "Audio Devices"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:14
|
||||
#: data/ui/shortcuts-dialog.ui:15
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:19
|
||||
#: data/ui/shortcuts-dialog.ui:20
|
||||
msgid "Switch to the Connection panel"
|
||||
msgstr "Switch to the Connection panel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:26
|
||||
#: data/ui/shortcuts-dialog.ui:27
|
||||
msgid "Switch to the Cover panel"
|
||||
msgstr "Switch to the Cover panel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:33
|
||||
#: data/ui/shortcuts-dialog.ui:34
|
||||
msgid "Switch to the Playlist panel"
|
||||
msgstr "Switch to the Playlist panel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:40
|
||||
#: data/ui/shortcuts-dialog.ui:41
|
||||
msgid "Switch to the Library panel"
|
||||
msgstr "Switch to the Cover panel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:47
|
||||
#: data/ui/shortcuts-dialog.ui:48
|
||||
msgid "Show the keyboard shortcuts"
|
||||
msgstr "Show the keyboard shortcuts (this dialog)"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:54
|
||||
#: data/ui/shortcuts-dialog.ui:55
|
||||
msgid "Open the info dialog"
|
||||
msgstr "Open the info dialog"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:61
|
||||
#: data/ui/shortcuts-dialog.ui:62
|
||||
msgid "Quit the application"
|
||||
msgstr "Quit the application"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:69
|
||||
#: data/ui/shortcuts-dialog.ui:70
|
||||
msgid "Player"
|
||||
msgstr "Player"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:74 data/ui/window.ui:139
|
||||
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139
|
||||
msgid "Connect or disconnect"
|
||||
msgstr "Connect or disconnect"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:81 data/ui/window.ui:161
|
||||
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161
|
||||
msgid "Switch between play and pause"
|
||||
msgstr "Switch between play and pause"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:96
|
||||
#: data/ui/shortcuts-dialog.ui:97
|
||||
msgid "Cover Panel"
|
||||
msgstr "Cover Panel"
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:109
|
||||
#: data/ui/shortcuts-dialog.ui:110
|
||||
msgid "Library Panel"
|
||||
msgstr "Library Panel"
|
||||
|
||||
|
@ -272,26 +354,25 @@ msgstr "Connect to MPD"
|
|||
msgid "Adjust the volume"
|
||||
msgstr "Adjust the volume"
|
||||
|
||||
#: mcg/librarypanel.py:421
|
||||
#: src/librarypanel.py:419
|
||||
msgid "Loading albums"
|
||||
msgstr "Loading albums"
|
||||
|
||||
#: mcg/librarypanel.py:523
|
||||
#: src/librarypanel.py:519
|
||||
msgid "Loading images"
|
||||
msgstr "Loading images"
|
||||
|
||||
#: mcg/utils.py:50 mcg/utils.py:67
|
||||
#: src/utils.py:50 src/utils.py:67
|
||||
msgid "{} feat. {}"
|
||||
msgstr "{} feat. {}"
|
||||
|
||||
#: mcg/utils.py:61
|
||||
#: src/utils.py:61
|
||||
msgid "{}:{} minutes"
|
||||
msgstr "{}:{} minutes"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Connection"
|
||||
#~ msgid "Connection state"
|
||||
#~ msgstr "Connection"
|
||||
#: src/window.py:112
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
#~ msgid "Enter URL or local path"
|
||||
#~ msgstr "Enter URL or local path"
|
||||
|
@ -299,9 +380,6 @@ msgstr "{}:{} minutes"
|
|||
#~ msgid "Image Directory:"
|
||||
#~ msgstr "Image Directory:"
|
||||
|
||||
#~ msgid "Server"
|
||||
#~ msgstr "Server"
|
||||
|
||||
#~ msgid "{} of {} images loaded"
|
||||
#~ msgstr "{} of {} images loaded"
|
||||
|
373
po/mcg.pot
Normal file
373
po/mcg.pot
Normal file
|
@ -0,0 +1,373 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the mcg package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mcg\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-05 15:08+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:11
|
||||
msgid "MPD host"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:12
|
||||
msgid "MPD host to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:16
|
||||
msgid "MPD port"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:17
|
||||
msgid "MPD port to connect to"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:21
|
||||
msgid "Connection state"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:22
|
||||
msgid "State of last connection"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:26
|
||||
msgid "Window width"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:27
|
||||
msgid "The window width in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:31
|
||||
msgid "Window height"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:32
|
||||
msgid "The window height in pixels."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:36
|
||||
msgid "Window maximized"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:37
|
||||
msgid "Whether or not the window is in maximized state."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:42
|
||||
msgid "Last selected panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:43
|
||||
msgid "The index of the last selected panel."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:48
|
||||
msgid "Size of library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:49
|
||||
msgid "The size of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:53
|
||||
msgid "Sort criterium for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:54
|
||||
msgid "The sort criterium of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:58
|
||||
msgid "Sort type for library items"
|
||||
msgstr ""
|
||||
|
||||
#: data/xyz.suruatoel.mcg.gschema.xml:59
|
||||
msgid "The sort type of items displayed in the library."
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/album-headerbar.ui:17
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/album-headerbar.ui:34
|
||||
msgid "Artist"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/connection-panel.ui:76
|
||||
msgid "Enter hostname or IP address"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/connection-panel.ui:89
|
||||
msgid "Enter password or leave blank"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/connection-panel.ui:118
|
||||
msgid "Host:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/connection-panel.ui:130
|
||||
msgid "Port:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/connection-panel.ui:142
|
||||
msgid "Password:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:102
|
||||
msgid "Show the cover in fullscreen mode"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:7
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:12
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:17
|
||||
msgid "Clear Playlist"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:22
|
||||
msgid "Toggle Fullscreen"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:27
|
||||
msgid "Search Library"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:34
|
||||
msgid "Connection"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:40 src/window.py:113
|
||||
msgid "Cover"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:46 src/window.py:114
|
||||
msgid "Playlist"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:52 src/window.py:115
|
||||
msgid "Library"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:60
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:65
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/gtk.menu.ui:70
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/info-dialog.ui:14
|
||||
msgid ""
|
||||
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
|
||||
"instead of single tracks."
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-panel.ui:27
|
||||
msgid "search library"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-panel.ui:166 data/ui/playlist-panel.ui:57
|
||||
msgid "cancel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-panel.ui:179 data/ui/library-panel.ui:264
|
||||
msgid "queue"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-panel.ui:277 data/ui/playlist-panel.ui:168
|
||||
msgid "play"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:76
|
||||
msgid "Sort"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:86
|
||||
msgid "sort by artist"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:102
|
||||
msgid "sort by title"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:118
|
||||
msgid "sort by year"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:169 data/ui/shortcuts-dialog.ui:115
|
||||
msgid "Search the library"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:192 data/ui/playlist-toolbar.ui:15
|
||||
msgid "Select multiple albums"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/library-toolbar.ui:214
|
||||
msgid "Settings and actions"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/playlist-panel.ui:70 data/ui/playlist-panel.ui:155
|
||||
msgid "remove"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89
|
||||
msgid "Clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:69
|
||||
msgid "File:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:82
|
||||
msgid "Audio:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:95
|
||||
msgid "Bitrate:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:108
|
||||
msgid "Error:"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:120 data/ui/server-panel.ui:136
|
||||
#: data/ui/server-panel.ui:152 data/ui/server-panel.ui:168
|
||||
msgid "<i>none</i>"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:221
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:301
|
||||
msgid "Albums"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:313
|
||||
msgid "Songs"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:325
|
||||
msgid "Artists"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:349
|
||||
msgid "Seconds"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:396
|
||||
msgid "Seconds played"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:407
|
||||
msgid "Seconds running"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:465
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/server-panel.ui:535
|
||||
msgid "Audio Devices"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:15
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:20
|
||||
msgid "Switch to the Connection panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:27
|
||||
msgid "Switch to the Cover panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:34
|
||||
msgid "Switch to the Playlist panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:41
|
||||
msgid "Switch to the Library panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:48
|
||||
msgid "Show the keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:55
|
||||
msgid "Open the info dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:62
|
||||
msgid "Quit the application"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:70
|
||||
msgid "Player"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139
|
||||
msgid "Connect or disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161
|
||||
msgid "Switch between play and pause"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:97
|
||||
msgid "Cover Panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/shortcuts-dialog.ui:110
|
||||
msgid "Library Panel"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.ui:108
|
||||
msgid "Connect to MPD"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.ui:181
|
||||
msgid "Adjust the volume"
|
||||
msgstr ""
|
||||
|
||||
#: src/librarypanel.py:419
|
||||
msgid "Loading albums"
|
||||
msgstr ""
|
||||
|
||||
#: src/librarypanel.py:519
|
||||
msgid "Loading images"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils.py:50 src/utils.py:67
|
||||
msgid "{} feat. {}"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils.py:61
|
||||
msgid "{}:{} minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:112
|
||||
msgid "Server"
|
||||
msgstr ""
|
3
po/meson.build
Normal file
3
po/meson.build
Normal file
|
@ -0,0 +1,3 @@
|
|||
i18n = import('i18n')
|
||||
|
||||
i18n.gettext(meson.project_name(), preset: 'glib')
|
119
setup.py
119
setup.py
|
@ -1,119 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from setuptools import setup
|
||||
from setuptools.command.build_py import build_py
|
||||
from setuptools.dist import Distribution
|
||||
|
||||
|
||||
|
||||
|
||||
class MCGDistribution(Distribution):
|
||||
global_options = Distribution.global_options + [
|
||||
("no-compile-schemas", None, "Don't compile gsettings schemas")
|
||||
]
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.no_compile_schemas = False
|
||||
super(self.__class__, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
|
||||
|
||||
class build_mcg(build_py):
|
||||
|
||||
|
||||
def run(self, *args, **kwargs):
|
||||
self._build_gresources()
|
||||
if not self.distribution.no_compile_schemas:
|
||||
self._build_gschemas()
|
||||
|
||||
# This will copy the package_data and data_files, so we need to do this
|
||||
# *after* we've compiled resources and schemas.
|
||||
super(self.__class__, self).run(*args, **kwargs)
|
||||
|
||||
|
||||
def _build_gresources(self):
|
||||
print("compiling gresources")
|
||||
subprocess.run(['glib-compile-resources', 'xyz.suruatoel.mcg.gresource.xml'], cwd='data')
|
||||
|
||||
|
||||
def _build_gschemas(self):
|
||||
print("compiling gschemas")
|
||||
subprocess.run(['glib-compile-schemas', 'data'])
|
||||
|
||||
|
||||
|
||||
|
||||
setup(
|
||||
distclass = MCGDistribution,
|
||||
cmdclass = {
|
||||
'build_py': build_mcg
|
||||
},
|
||||
name = "mcg",
|
||||
version = '3.0.2',
|
||||
description = "CoverGrid (mcg) is a client for the Music Player Daemon, focusing on albums instead of single tracks.",
|
||||
url = "http://www.suruatoel.xyz/codes/mcg",
|
||||
author = "coderkun",
|
||||
author_email = "olli@suruatoel.xyz",
|
||||
license = "GPL",
|
||||
packages = [
|
||||
'mcg',
|
||||
'mcg/data'
|
||||
],
|
||||
package_dir = {
|
||||
'mcg': 'mcg',
|
||||
'mcg/data': 'data'
|
||||
},
|
||||
package_data = {
|
||||
'mcg': [
|
||||
'LICENSE',
|
||||
'README.textile'
|
||||
],
|
||||
'mcg/data': [
|
||||
'xyz.suruatoel.mcg.gresource'
|
||||
]
|
||||
},
|
||||
extras_require = {
|
||||
'keyring support': ["python-keyring"]
|
||||
},
|
||||
entry_points = {
|
||||
"gui_scripts": [
|
||||
"mcg = mcg.mcg:main"
|
||||
]
|
||||
},
|
||||
data_files = [
|
||||
(os.path.join('share', 'applications'), [
|
||||
"data/mcg.desktop"
|
||||
]),
|
||||
(os.path.join('share', 'icons'), [
|
||||
"data/icons/mcg.svg"
|
||||
]),
|
||||
(os.path.join('share', 'glib-2.0', 'schemas'), [
|
||||
"data/xyz.suruatoel.mcg.gschema.xml",
|
||||
"data/gschemas.compiled",
|
||||
]),
|
||||
(os.path.join('share', 'locale', 'en', 'LC_MESSAGES'), [
|
||||
'locale/en/LC_MESSAGES/mcg.mo'
|
||||
]),
|
||||
(os.path.join('share', 'locale', 'de', 'LC_MESSAGES'), [
|
||||
'locale/de/LC_MESSAGES/mcg.mo'
|
||||
])
|
||||
],
|
||||
classifiers = [
|
||||
"Development Status :: 3 - Alpha",
|
||||
"Environment :: X11 Applications :: GTK"
|
||||
"Intended Audience :: End Users/Desktop"
|
||||
"License :: OSI Approved :: GNU General Public License (GPL)"
|
||||
"Operating System :: OS Independent"
|
||||
"Programming Language :: Python :: 3"
|
||||
"Topic :: Desktop Environment :: Gnome"
|
||||
"Topic :: Multimedia :: Sound/Audio"
|
||||
"Topic :: Multimedia :: Sound/Audio :: Players"
|
||||
]
|
||||
)
|
|
@ -8,8 +8,8 @@ import gi
|
|||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gio, Gtk, Gdk, GLib
|
||||
|
||||
from mcg.window import Window
|
||||
from mcg.infodialog import InfoDialog
|
||||
from .window import Window
|
||||
from .infodialog import InfoDialog
|
||||
|
||||
|
||||
|
||||
|
@ -20,32 +20,14 @@ class Application(Gtk.Application):
|
|||
DOMAIN = 'mcg'
|
||||
|
||||
|
||||
def _get_option(shortname, longname, description):
|
||||
option = GLib.OptionEntry()
|
||||
option.short_name = ord(shortname)
|
||||
option.long_name = longname
|
||||
option.description = description
|
||||
return option
|
||||
|
||||
|
||||
def __init__(self):
|
||||
Gtk.Application.__init__(self, application_id=Application.ID, flags=Gio.ApplicationFlags.FLAGS_NONE)
|
||||
super().__init__(application_id=Application.ID, flags=Gio.ApplicationFlags.FLAGS_NONE)
|
||||
self._window = None
|
||||
self._info_dialog = None
|
||||
self._verbosity = logging.WARNING
|
||||
self.add_main_option_entries([
|
||||
Application._get_option("v", "verbose", "Be verbose: show info messages"),
|
||||
Application._get_option("d", "debug", "Enable debugging: show debug messages")
|
||||
])
|
||||
self.connect('handle-local-options', self.handle_local_options)
|
||||
|
||||
|
||||
def handle_local_options(self, widget, options):
|
||||
if options.contains("debug") and options.lookup_value('debug'):
|
||||
self._verbosity = logging.DEBUG
|
||||
elif options.contains("verbose") and options.lookup_value('verbose'):
|
||||
self._verbosity = logging.INFO
|
||||
return -1
|
||||
#self.create_action('quit', self.quit, ['<primary>q'])
|
||||
#self.create_action('about', self.on_about_action)
|
||||
#self.create_action('preferences', self.on_preferences_action)
|
||||
|
||||
|
||||
def do_startup(self):
|
|
@ -13,12 +13,3 @@ from gi.repository import Gtk, GdkPixbuf
|
|||
@Gtk.Template(resource_path='/xyz/suruatoel/mcg/ui/info-dialog.ui')
|
||||
class InfoDialog(Gtk.AboutDialog):
|
||||
__gtype_name__ = 'McgInfoDialog'
|
||||
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self._logger = logging.getLogger(__name__)
|
||||
self.set_logo(
|
||||
GdkPixbuf.Pixbuf.new_from_resource("/xyz/suruatoel/mcg/icons/mcg.svg")
|
||||
)
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
import gettext
|
||||
import locale
|
||||
import logging
|
||||
import math
|
||||
import threading
|
||||
|