Compare commits

..

1 commit

Author SHA1 Message Date
7ea4c7b62a Port UI to GTK 4 (close #85) 2024-05-22 14:40:36 +02:00
15 changed files with 1513 additions and 1844 deletions

View file

@ -1,69 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<template class="McgAlbumHeaderbar" parent="AdwBin"> <template class="McgAlbumHeaderbar" parent="AdwBin">
<child>
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="standalone_title">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Title</property>
<property name="selectable">True</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1"/>
</attributes>
</object>
<!--
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
-->
</child>
<child>
<object class="GtkLabel" id="standalone_artist">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Artist</property>
<property name="selectable">True</property>
</object>
<!--
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
-->
</child>
</object>
</child>
<child> <child>
<object class="GtkButton"> <object class="GtkHeaderBar">
<property name="visible">True</property> <child type="title">
<property name="can-focus">True</property> <object class="GtkBox">
<property name="receives-default">True</property> <property name="orientation">vertical</property>
<signal name="clicked" handler="on_close_clicked" swapped="no"/> <child>
<object class="GtkLabel" id="standalone_title">
<property name="selectable">True</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel" id="standalone_artist">
<property name="selectable">True</property>
</object>
</child>
</object>
</child>
<child> <child>
<object class="GtkImage"> <object class="GtkButton">
<property name="visible">True</property> <property name="receives-default">True</property>
<property name="can-focus">False</property> <signal name="clicked" handler="on_close_clicked" swapped="no"/>
<property name="icon-name">go-previous-symbolic</property> <child>
<object class="GtkImage">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </template>
</child>
</template>
</interface> </interface>

View file

@ -1,86 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<object class="GtkAdjustment" id="server-port-adjustment"> <object class="GtkAdjustment" id="server-port-adjustment">
<property name="lower">1024</property> <property name="lower">1024</property>
<property name="upper">9999</property> <property name="upper">9999</property>
<property name="value">6600</property> <property name="value">6600</property>
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">100</property> <property name="page-increment">100</property>
</object> </object>
<object class="GtkBox" id="toolbar"> <object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property> <property name="orientation">horizontal</property>
<property name="spacing">6</property> <property name="spacing">6</property>
</object> </object>
<template class="McgConnectionPanel" parent="AdwBin"> <template class="McgConnectionPanel" parent="AdwBin">
<child>
<object class="AdwStatusPage">
<property name="title">Connect to MPD</property>
<child> <child>
<object class="AdwStatusPage"> <object class="GtkBox">
<property name="title">Connect to MPD</property> <property name="hexpand">false</property>
<child> <property name="halign">center</property>
<object class="GtkBox"> <child>
<property name="hexpand">false</property> <object class="GtkListBox" id="zeroconf_list">
<property name="halign">center</property> <property name="hexpand">true</property>
<child> <child type="placeholder">
<object class="GtkListBox" id="zeroconf_list"> <object class="GtkLabel">
<property name="hexpand">true</property> <property name="label" translatable="yes">No service found</property>
<child type="placeholder"> </object>
<object class="GtkLabel">
<property name="label" translatable="true">No service found</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBox">
<property name="hexpand">true</property>
<property name="selection-mode">none</property>
<style>
<class name="boxed-list"/>
</style>
<child>
<object class="AdwEntryRow" id="host_row">
<property name="title" translatable="true">Host</property>
<property name="show-apply-button">true</property>
<signal name="apply" handler="on_host_entry_apply"/>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<style>
<class name="header"/>
</style>
<child>
<object class="GtkLabel">
<property name="label" translatable="true">Port</property>
<property name="halign">start</property>
<property name="hexpand">false</property>
<style>
<class name="subtitle"/>
</style>
</object>
</child>
<child>
<object class="GtkSpinButton" id="port_spinner">
<property name="name">port_spinner</property>
<property name="value">6600</property>
<property name="adjustment">server-port-adjustment</property>
<signal name="value-changed" handler="on_port_spinner_value_changed"/>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPasswordEntryRow" id="password_row">
<property name="title" translatable="true">Password</property>
<property name="show-apply-button">true</property>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</object> </object>
</child>
<child>
<object class="GtkListBox">
<property name="hexpand">true</property>
<property name="selection-mode">none</property>
<style>
<class name="boxed-list"/>
</style>
<child>
<object class="AdwEntryRow" id="host_row">
<property name="title" translatable="yes">Host</property>
<property name="show-apply-button">true</property>
<signal name="apply" handler="on_host_entry_apply"/>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<style>
<class name="header"/>
</style>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Port</property>
<property name="halign">start</property>
<property name="hexpand">false</property>
<style>
<class name="subtitle"/>
</style>
</object>
</child>
<child>
<object class="GtkSpinButton" id="port_spinner">
<property name="name">port_spinner</property>
<property name="value">6600</property>
<property name="adjustment">server-port-adjustment</property>
<signal name="value-changed" handler="on_port_spinner_value_changed"/>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPasswordEntryRow" id="password_row">
<property name="title" translatable="yes">Password</property>
<property name="show-apply-button">true</property>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</template> </object>
</child>
</template>
</interface> </interface>

View file

@ -1,159 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<object class="GtkBox" id="toolbar"> <object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property> <property name="orientation">horizontal</property>
<property name="halign">end</property>
<property name="spacing">6</property>
<child>
<object class="GtkButton" id="fullscreen_button">
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show the cover in fullscreen mode</property>
<property name="action-name">win.toggle-fullscreen</property>
<child>
<object class="GtkImage">
<property name="icon-name">view-fullscreen-symbolic</property>
</object>
</child>
</object>
</child>
</object>
<template class="McgCoverPanel" parent="GtkOverlay">
<child>
<object class="GtkStack" id="cover_stack">
<child>
<object class="GtkSpinner" id="cover_spinner">
</object>
</child>
<child>
<object class="GtkImage" id="cover_default">
<property name="icon-name">image-x-generic-symbolic</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="cover_scroll">
<property name="kinetic-scrolling">False</property>
<property name="overlay-scrolling">False</property>
<property name="hexpand">true</property>
<property name="halign">fill</property>
<property name="vexpand">true</property>
<property name="valign">fill</property>
<child>
<object class="GtkViewport" id="cover_box">
<property name="name">cover_box</property>
<property name="hexpand">true</property>
<property name="halign">fill</property>
<property name="vexpand">true</property>
<property name="valign">fill</property>
<child>
<object class="GtkImage" id="cover_image">
<property name="hexpand">true</property>
<property name="halign">fill</property>
<property name="vexpand">true</property>
<property name="valign">fill</property>
<property name="icon-name">image-x-generic-symbolic</property>
<property name="icon-size">large</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="overlay">
<object class="GtkRevealer" id="info_revealer">
<property name="halign">end</property> <property name="halign">end</property>
<property name="spacing">6</property> <property name="transition-type">slide-right</property>
<property name="name">cover_info_revealer</property>
<style>
<class name="background"/>
</style>
<child> <child>
<object class="GtkButton" id="fullscreen_button"> <object class="GtkScrolledWindow" id="cover_info_scroll">
<property name="receives-default">True</property> <property name="halign">start</property>
<property name="tooltip-text" translatable="yes">Show the cover in fullscreen mode</property> <property name="vscrollbar-policy">never</property>
<property name="action-name">win.toggle-fullscreen</property> <property name="max-content-width">200</property>
<property name="propagate-natural-width">True</property>
<property name="name">cover_info_scroll</property>
<child>
<object class="GtkViewport">
<child> <child>
<object class="GtkImage"> <object class="GtkBox">
<property name="icon-name">view-fullscreen-symbolic</property> <property name="orientation">vertical</property>
</object> <property name="halign">start</property>
</child> <property name="valign">fill</property>
</object> <property name="vexpand">true</property>
</child> <property name="margin-start">5</property>
</object> <property name="margin-end">5</property>
<template class="McgCoverPanel" parent="GtkOverlay"> <property name="margin-top">5</property>
<child> <property name="margin-bottom">5</property>
<object class="GtkStack" id="cover_stack"> <child>
<child> <object class="GtkGrid">
<object class="GtkSpinner" id="cover_spinner"> <property name="margin-start">5</property>
</object> <property name="margin-bottom">5</property>
</child> <property name="row-spacing">5</property>
<child> <property name="column-homogeneous">True</property>
<object class="GtkImage" id="cover_default"> <style>
<property name="icon-name">image-x-generic-symbolic</property> <class name="cover-labels"/>
</object> </style>
</child> <child>
<child> <object class="GtkLabel" id="album_title_label">
<object class="GtkScrolledWindow" id="cover_scroll"> <property name="halign">start</property>
<property name="kinetic-scrolling">False</property> <property name="label">Album</property>
<property name="overlay-scrolling">False</property> <property name="wrap">True</property>
<property name="hexpand">true</property> <property name="xalign">0</property>
<property name="halign">fill</property> <layout>
<property name="vexpand">true</property> <property name="column">0</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="album_date_label">
<property name="halign">start</property>
<property name="label">Date</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">0</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="album_artist_label">
<property name="halign">start</property>
<property name="label">Artist</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">0</property>
<property name="row">2</property>
</layout>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScale" id="songs_scale">
<property name="orientation">vertical</property>
<property name="valign">fill</property> <property name="valign">fill</property>
<child> <property name="vexpand">true</property>
<object class="GtkViewport" id="cover_box"> <property name="restrict-to-fill-level">False</property>
<property name="name">cover_box</property> <property name="digits">0</property>
<property name="hexpand">true</property> <property name="draw-value">False</property>
<property name="halign">fill</property> </object>
<property name="vexpand">true</property> </child>
<property name="valign">fill</property> </object>
<child>
<object class="GtkImage" id="cover_image">
<property name="hexpand">true</property>
<property name="halign">fill</property>
<property name="vexpand">true</property>
<property name="valign">fill</property>
<property name="icon-name">image-x-generic-symbolic</property>
<property name="icon-size">large</property>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</object> </object>
</child>
</object>
</child> </child>
<child type="overlay"> </object>
<object class="GtkRevealer" id="info_revealer"> </child>
<property name="halign">end</property> </template>
<property name="transition-type">slide-right</property>
<property name="name">cover_info_revealer</property>
<style>
<class name="background"/>
</style>
<child>
<object class="GtkScrolledWindow" id="cover_info_scroll">
<property name="halign">start</property>
<property name="vscrollbar-policy">never</property>
<property name="max-content-width">200</property>
<property name="propagate-natural-width">True</property>
<property name="name">cover_info_scroll</property>
<child>
<object class="GtkViewport">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="halign">start</property>
<property name="valign">fill</property>
<property name="vexpand">true</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkGrid">
<property name="margin-start">5</property>
<property name="margin-bottom">5</property>
<property name="row-spacing">5</property>
<property name="column-homogeneous">True</property>
<style>
<class name="cover-labels"/>
</style>
<child>
<object class="GtkLabel" id="album_title_label">
<property name="halign">start</property>
<property name="label">Album</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">0</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="album_date_label">
<property name="halign">start</property>
<property name="label">Date</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">0</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="album_artist_label">
<property name="halign">start</property>
<property name="label">Artist</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">0</property>
<property name="row">2</property>
</layout>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScale" id="songs_scale">
<property name="orientation">vertical</property>
<property name="valign">fill</property>
<property name="vexpand">true</property>
<property name="restrict-to-fill-level">False</property>
<property name="digits">0</property>
<property name="draw-value">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface> </interface>

View file

@ -1,339 +1,339 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<object class="GtkAdjustment" id="grid_adjustment"> <object class="GtkAdjustment" id="grid_adjustment">
<property name="lower">100</property> <property name="lower">100</property>
<property name="upper">1000</property> <property name="upper">1000</property>
<property name="value">150</property> <property name="value">150</property>
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkPopover" id="toolbar_popover"> <object class="GtkPopover" id="toolbar_popover">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="halign">end</property>
<child>
<object class="GtkScale" id="grid_scale">
<property name="width-request">350</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">grid_adjustment</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">-1</property>
<property name="round-digits">0</property>
<property name="digits">0</property>
<property name="has-origin">False</property>
<signal name="value-changed" handler="on_grid_scale_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkButton" id="library-toolbar-update">
<property name="label" translatable="yes">update library</property>
<signal name="clicked" handler="on_update_clicked" swapped="no"/>
</object>
</child>
<child>
<object class="GtkBox" id="library-toolbar-sort">
<property name="orientation">vertical</property>
<child>
<object class="GtkSeparator">
<property name="orientation">vertical</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Sort</property>
</object>
</child>
<child>
<object class="GtkCheckButton" id="sort_artist">
<property name="label" translatable="yes">sort by artist</property>
<property name="receives-default">False</property>
<property name="group">sort_year</property>
<signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</object>
</child>
<child>
<object class="GtkCheckButton" id="sort_title">
<property name="label" translatable="yes">sort by title</property>
<property name="receives-default">False</property>
<property name="group">sort_year</property>
<signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</object>
</child>
<child>
<object class="GtkCheckButton" id="sort_year">
<property name="label" translatable="yes">sort by year</property>
<property name="receives-default">False</property>
<signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</object>
</child>
<child>
<object class="GtkCheckButton" id="sort_modified">
<property name="label" translatable="yes">sort by modification</property>
<property name="receives-default">False</property>
<property name="group">sort_year</property>
<signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</object>
</child>
<child>
<object class="GtkCheckButton" id="toolbar_sort_order_button">
<property name="label">sort library descending</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<signal name="toggled" handler="on_sort_order_toggled" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="spacing">6</property>
<child> <child>
<object class="GtkToggleButton" id="toolbar_search_bar"> <object class="GtkScale" id="grid_scale">
<property name="receives-default">True</property> <property name="width-request">350</property>
<property name="tooltip-text" translatable="yes">Search the library</property> <property name="visible">True</property>
<child> <property name="can-focus">True</property>
<object class="GtkImage"> <property name="adjustment">grid_adjustment</property>
<property name="icon-name">system-search-symbolic</property> <property name="restrict-to-fill-level">False</property>
</object> <property name="fill-level">-1</property>
</child> <property name="round-digits">0</property>
<!-- <property name="digits">0</property>
<accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/> <property name="has-origin">False</property>
--> <signal name="value-changed" handler="on_grid_scale_changed" swapped="no"/>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkToggleButton" id="select_button"> <object class="GtkButton" id="library-toolbar-update">
<property name="visible">True</property> <property name="label" translatable="yes">update library</property>
<property name="can-focus">True</property> <signal name="clicked" handler="on_update_clicked" swapped="no"/>
<property name="receives-default">True</property> </object>
<property name="tooltip-text" translatable="yes">Select multiple albums</property>
<signal name="toggled" handler="on_select_toggled" swapped="no"/>
<child>
<object class="GtkImage">
<property name="icon-name">object-select-symbolic</property>
</object>
</child>
</object>
</child> </child>
<child> <child>
<object class="GtkMenuButton"> <object class="GtkBox" id="library-toolbar-sort">
<property name="visible">True</property> <property name="orientation">vertical</property>
<property name="can-focus">True</property> <child>
<property name="receives-default">True</property> <object class="GtkSeparator">
<property name="tooltip-text" translatable="yes">Settings and actions</property> <property name="orientation">vertical</property>
<property name="popover">toolbar_popover</property> </object>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">open-menu-symbolic</property>
</object>
</child>
</object>
</child>
</object>
<template class="McgLibraryPanel" parent="AdwBin">
<child>
<object class="GtkStack" id="library_stack">
<property name="transition-type">slide-left-right</property>
<child>
<object class="GtkBox" id="panel_normal">
<property name="orientation">vertical</property>
<child>
<object class="GtkSearchBar" id="filter_bar">
<property name="search-mode-enabled" bind-source="toolbar_search_bar" bind-property="active" bind-flags="sync-create"/>
<child>
<object class="GtkSearchEntry" id="filter_entry">
<property name="placeholder-text" translatable="yes">search library</property>
<signal name="search-changed" handler="on_filter_entry_changed" swapped="no"/>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkBox" id="progress_box">
<property name="orientation">vertical</property>
<child type="center">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child type="center">
<object class="GtkBox">
<property name="halign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkImage" id="progress_image">
<property name="icon-size">large</property>
<property name="icon-name">image-x-generic-symbolic</property>
</object>
</child>
<child>
<object class="GtkProgressBar" id="progress_bar">
<property name="width-request">200</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pulse-step">0</property>
<property name="show-text">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="scroll">
<property name="vexpand">true</property>
<child>
<object class="GtkGridView" id="library_grid">
<property name="orientation">vertical</property>
<property name="single_click_activate">true</property>
<signal name="activate" handler="on_library_grid_clicked"/>
<style>
<class name="no-bg"/>
</style>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="activatable">true</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkPicture">
<property name="content-fit">contain</property>
<property name="can-shrink">false</property>
<binding name="tooltip-markup">
<lookup name="tooltip" type="GridItem">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
<binding name="paintable">
<lookup name="cover" type="GridItem">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
</object>
</child>
</object>
</property>
</template>
</interface>
]]>
</property>
</object>
</property>
</object>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer" id="actionbar_revealer">
<property name="transition-type">slide-up</property>
<child>
<object class="GtkActionBar" id="actionbar">
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">cancel</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_cancel_clicked" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">queue</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_add_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child> </child>
<child> <child>
<object class="GtkBox" id="panel_standalone"> <object class="GtkLabel">
<property name="orientation">vertical</property> <property name="label" translatable="yes">Sort</property>
<child> </object>
<object class="GtkStack" id="standalone_stack"> </child>
<property name="vexpand">true</property> <child>
<property name="transition-type">crossfade</property> <object class="GtkCheckButton" id="sort_artist">
<child> <property name="label" translatable="yes">sort by artist</property>
<object class="GtkSpinner" id="standalone_spinner"> <property name="receives-default">False</property>
<property name="visible">True</property> <property name="group">sort_year</property>
<property name="can-focus">False</property> <signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow" id="standalone_scroll"> <object class="GtkCheckButton" id="sort_title">
<property name="visible">True</property> <property name="label" translatable="yes">sort by title</property>
<property name="can-focus">True</property> <property name="receives-default">False</property>
<property name="kinetic-scrolling">False</property> <property name="group">sort_year</property>
<property name="overlay-scrolling">False</property> <signal name="toggled" handler="on_sort_toggled" swapped="no"/>
<child> </object>
<object class="GtkViewport"> </child>
<property name="visible">True</property> <child>
<property name="can-focus">False</property> <object class="GtkCheckButton" id="sort_year">
<child> <property name="label" translatable="yes">sort by year</property>
<object class="GtkImage" id="standalone_image"> <property name="receives-default">False</property>
<property name="icon-name">gtk-missing-image</property> <signal name="toggled" handler="on_sort_toggled" swapped="no"/>
<property name="icon-size">large</property> </object>
</object> </child>
</child> <child>
</object> <object class="GtkCheckButton" id="sort_modified">
</child> <property name="label" translatable="yes">sort by modification</property>
</object> <property name="receives-default">False</property>
</child> <property name="group">sort_year</property>
</object> <signal name="toggled" handler="on_sort_toggled" swapped="no"/>
</child> </object>
<child> </child>
<object class="GtkActionBar" id="actionbar_standalone"> <child>
<child type="end"> <object class="GtkCheckButton" id="toolbar_sort_order_button">
<object class="GtkButton"> <property name="label" translatable="yes">sort library descending</property>
<property name="label" translatable="yes">play</property> <property name="visible">True</property>
<property name="receives-default">True</property> <property name="can-focus">True</property>
<signal name="clicked" handler="on_standalone_play_clicked" swapped="no"/> <property name="receives-default">False</property>
</object> <property name="active">True</property>
</child> <signal name="toggled" handler="on_sort_order_toggled" swapped="no"/>
<child type="end"> </object>
<object class="GtkButton"> </child>
<property name="label" translatable="yes">queue</property> </object>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_queue_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</object>
</child>
</object>
<object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property>
<property name="halign">end</property>
<property name="spacing">6</property>
<child>
<object class="GtkToggleButton" id="toolbar_search_bar">
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Search the library</property>
<child>
<object class="GtkImage">
<property name="icon-name">system-search-symbolic</property>
</object>
</child>
<!--
<accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-->
</object>
</child>
<child>
<object class="GtkToggleButton" id="select_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Select multiple albums</property>
<signal name="toggled" handler="on_select_toggled" swapped="no"/>
<child>
<object class="GtkImage">
<property name="icon-name">object-select-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Settings and actions</property>
<property name="popover">toolbar_popover</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">open-menu-symbolic</property>
</object>
</child>
</object>
</child>
</object>
<template class="McgLibraryPanel" parent="AdwBin">
<child>
<object class="GtkStack" id="library_stack">
<property name="transition-type">slide-left-right</property>
<child>
<object class="GtkBox" id="panel_normal">
<property name="orientation">vertical</property>
<child>
<object class="GtkSearchBar" id="filter_bar">
<property name="search-mode-enabled" bind-source="toolbar_search_bar" bind-property="active" bind-flags="sync-create"/>
<child>
<object class="GtkSearchEntry" id="filter_entry">
<property name="placeholder-text" translatable="yes">search library</property>
<signal name="search-changed" handler="on_filter_entry_changed" swapped="no"/>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkBox" id="progress_box">
<property name="orientation">vertical</property>
<child type="center">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child type="center">
<object class="GtkBox">
<property name="halign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkImage" id="progress_image">
<property name="icon-size">large</property>
<property name="icon-name">image-x-generic-symbolic</property>
</object>
</child>
<child>
<object class="GtkProgressBar" id="progress_bar">
<property name="width-request">200</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pulse-step">0</property>
<property name="show-text">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="scroll">
<property name="vexpand">true</property>
<child>
<object class="GtkGridView" id="library_grid">
<property name="orientation">vertical</property>
<property name="single_click_activate">true</property>
<signal name="activate" handler="on_library_grid_clicked"/>
<style>
<class name="no-bg"/>
</style>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="activatable">true</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkPicture">
<property name="content-fit">contain</property>
<property name="can-shrink">false</property>
<binding name="tooltip-markup">
<lookup name="tooltip" type="GridItem">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
<binding name="paintable">
<lookup name="cover" type="GridItem">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
</object>
</child>
</object>
</property>
</template> </template>
</interface>
]]>
</property>
</object>
</property>
</object>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer" id="actionbar_revealer">
<property name="transition-type">slide-up</property>
<child>
<object class="GtkActionBar" id="actionbar">
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">cancel</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_cancel_clicked" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">queue</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_add_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="panel_standalone">
<property name="orientation">vertical</property>
<child>
<object class="GtkStack" id="standalone_stack">
<property name="vexpand">true</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkSpinner" id="standalone_spinner">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="standalone_scroll">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="kinetic-scrolling">False</property>
<property name="overlay-scrolling">False</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage" id="standalone_image">
<property name="icon-name">gtk-missing-image</property>
<property name="icon-size">large</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkActionBar" id="actionbar_standalone">
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">play</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_play_clicked" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">queue</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_queue_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface> </interface>

View file

@ -1,182 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<object class="GtkBox" id="toolbar"> <object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property> <property name="orientation">horizontal</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="spacing">6</property> <property name="spacing">6</property>
<child>
<object class="GtkToggleButton" id="select_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Select multiple albums</property>
<signal name="toggled" handler="on_select_toggled" swapped="no"/>
<child> <child>
<object class="GtkToggleButton" id="select_button"> <object class="GtkImage">
<property name="visible">True</property> <property name="icon-name">object-select-symbolic</property>
<property name="can-focus">True</property> </object>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Select multiple albums</property>
<signal name="toggled" handler="on_select_toggled" swapped="no"/>
<child>
<object class="GtkImage">
<property name="icon-name">object-select-symbolic</property>
</object>
</child>
</object>
</child> </child>
</object>
</child>
<child>
<object class="GtkButton" id="playlist_clear_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Clear the playlist</property>
<signal name="clicked" handler="on_clear_clicked" swapped="no"/>
<child> <child>
<object class="GtkButton" id="playlist_clear_button"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">True</property> <property name="icon-name">edit-clear</property>
<property name="tooltip-text" translatable="yes">Clear the playlist</property> </object>
<signal name="clicked" handler="on_clear_clicked" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">edit-clear</property>
</object>
</child>
</object>
</child> </child>
</object> </object>
<template class="McgPlaylistPanel" parent="AdwBin"> </child>
</object>
<template class="McgPlaylistPanel" parent="AdwBin">
<child>
<object class="GtkStack" id="playlist_stack">
<property name="transition-type">slide-left-right</property>
<child> <child>
<object class="GtkStack" id="playlist_stack"> <object class="GtkBox" id="panel_normal">
<property name="transition-type">slide-left-right</property> <property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child> <child>
<object class="GtkBox" id="panel_normal"> <object class="GtkGridView" id="playlist_grid">
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <property name="single-click-activate">true</property>
<object class="GtkScrolledWindow"> <signal name="activate" handler="on_playlist_grid_clicked"/>
<property name="vexpand">true</property> <style>
<child> <class name="no-bg"/>
<object class="GtkGridView" id="playlist_grid"> </style>
<property name="orientation">vertical</property> <property name="factory">
<property name="single-click-activate">true</property> <object class="GtkBuilderListItemFactory">
<signal name="activate" handler="on_playlist_grid_clicked"/> <property name="bytes">
<style>
<class name="no-bg"/>
</style>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes">
<![CDATA[ <![CDATA[
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<template class="GtkListItem"> <template class="GtkListItem">
<property name="activatable">true</property> <property name="activatable">true</property>
<property name="child"> <property name="child">
<object class="GtkBox"> <object class="GtkBox">
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkPicture"> <object class="GtkPicture">
<property name="content-fit">contain</property> <property name="content-fit">contain</property>
<property name="can-shrink">false</property> <property name="can-shrink">false</property>
<binding name="tooltip-markup"> <binding name="tooltip-markup">
<lookup name="tooltip" type="GridItem"> <lookup name="tooltip" type="GridItem">
<lookup name="item">GtkListItem</lookup> <lookup name="item">GtkListItem</lookup>
</lookup> </lookup>
</binding> </binding>
<binding name="paintable"> <binding name="paintable">
<lookup name="cover" type="GridItem"> <lookup name="cover" type="GridItem">
<lookup name="item">GtkListItem</lookup> <lookup name="item">GtkListItem</lookup>
</lookup> </lookup>
</binding> </binding>
</object> </object>
</child> </child>
</object> </object>
</property> </property>
</template> </template>
</interface> </interface>
]]> ]]>
</property> </property>
</object> </object>
</property> </property>
</object> </object>
</child> </child>
<style> <style>
<class name="no-bg"/> <class name="no-bg"/>
</style> </style>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkRevealer" id="actionbar_revealer"> <object class="GtkRevealer" id="actionbar_revealer">
<property name="transition-type">slide-up</property> <property name="transition-type">slide-up</property>
<child> <child>
<object class="GtkActionBar" id="actionbar"> <object class="GtkActionBar" id="actionbar">
<child type="end"> <child type="end">
<object class="GtkButton"> <object class="GtkButton">
<property name="label" translatable="yes">cancel</property> <property name="label" translatable="yes">cancel</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_cancel_clicked" swapped="no"/> <signal name="clicked" handler="on_selection_cancel_clicked" swapped="no"/>
</object> </object>
</child> </child>
<child type="end"> <child type="end">
<object class="GtkButton"> <object class="GtkButton">
<property name="label" translatable="yes">remove</property> <property name="label" translatable="yes">remove</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<signal name="clicked" handler="on_selection_remove_clicked" swapped="no"/> <signal name="clicked" handler="on_selection_remove_clicked" swapped="no"/>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child>
<child>
<object class="GtkBox" id="panel_standalone">
<property name="orientation">vertical</property>
<child>
<object class="GtkStack" id="standalone_stack">
<property name="vexpand">true</property>
<child>
<object class="GtkSpinner" id="standalone_spinner">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child> </child>
<child> <child>
<object class="GtkBox" id="panel_standalone"> <object class="GtkScrolledWindow" id="standalone_scroll">
<property name="orientation">vertical</property> <property name="visible">True</property>
<property name="can-focus">True</property>
<property name="kinetic-scrolling">False</property>
<property name="overlay-scrolling">False</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child> <child>
<object class="GtkStack" id="standalone_stack"> <object class="GtkImage" id="standalone_image">
<property name="vexpand">true</property> <property name="icon-name">gtk-missing-image</property>
<child> <property name="icon-size">large</property>
<object class="GtkSpinner" id="standalone_spinner"> </object>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="standalone_scroll">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="kinetic-scrolling">False</property>
<property name="overlay-scrolling">False</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage" id="standalone_image">
<property name="icon-name">gtk-missing-image</property>
<property name="icon-size">large</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child> </child>
<child> </object>
<object class="GtkActionBar" id="actionbar_standalone"> </child>
<child type="end"> </object>
<object class="GtkButton">
<property name="label" translatable="yes">play</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_play_clicked" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">remove</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_remove_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</object> </object>
</child>
<child>
<object class="GtkActionBar" id="actionbar_standalone">
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">play</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_play_clicked" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkButton">
<property name="label" translatable="yes">remove</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_standalone_remove_clicked" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child> </child>
</template> </object>
</child>
</template>
</interface> </interface>

View file

@ -1,326 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<object class="GtkBox" id="toolbar"> <object class="GtkBox" id="toolbar">
<property name="orientation">horizontal</property> <property name="orientation">horizontal</property>
<property name="halign">end</property> <property name="halign">end</property>
<child> <child>
<object class="GtkToggleButton" id="sidebar_switcher"> <object class="GtkToggleButton" id="sidebar_switcher">
<property name="icon-name">sidebar-show-symbolic</property> <property name="icon-name">sidebar-show-symbolic</property>
<property name="active">true</property> <property name="active">true</property>
<property name="visible" bind-source="server_flap" bind-property="folded" bind-flags="sync-create"/> <property name="visible" bind-source="server_flap" bind-property="folded" bind-flags="sync-create"/>
</object> </object>
</child> </child>
</object> </object>
<template class="McgServerPanel" parent="AdwBin"> <template class="McgServerPanel" parent="AdwBin">
<child> <child>
<object class="AdwFlap" id="server_flap"> <object class="AdwFlap" id="server_flap">
<property name="flap-position">end</property> <property name="flap-position">end</property>
<property name="reveal-flap" bind-source="sidebar_switcher" bind-property="active" bind-flags="sync-create|bidirectional" /> <property name="reveal-flap" bind-source="sidebar_switcher" bind-property="active" bind-flags="sync-create|bidirectional" />
<property name="flap"> <property name="flap">
<object class="GtkStackSidebar"> <object class="GtkStackSidebar">
<property name="stack">stack</property> <property name="stack">stack</property>
<property name="name">server_stack_sidebar</property> <property name="name">server_stack_sidebar</property>
</object> </object>
</property> </property>
<property name="separator"> <property name="separator">
<object class="GtkSeparator"/> <object class="GtkSeparator"/>
</property> </property>
<property name="content"> <property name="content">
<object class="GtkStack" id="stack"> <object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">status</property>
<property name="title" translatable="yes">Status</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">dialog-information-symbolic</property>
<child>
<object class="GtkGrid">
<property name="row-spacing">2</property>
<property name="column-spacing">5</property>
<property name="hexpand">false</property>
<property name="halign">center</property>
<child> <child>
<object class="GtkStackPage"> <object class="GtkLabel">
<property name="name">status</property> <property name="halign">start</property>
<property name="title">Status</property> <property name="valign">start</property>
<property name="child"> <property name="label" translatable="yes">File:</property>
<object class="AdwStatusPage"> <layout>
<property name="icon-name">dialog-information-symbolic</property> <property name="column">0</property>
<child> <property name="row">0</property>
<object class="GtkGrid"> </layout>
<property name="row-spacing">2</property> </object>
<property name="column-spacing">5</property>
<property name="hexpand">false</property>
<property name="halign">center</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label" translatable="yes">File:</property>
<layout>
<property name="column">0</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Audio:</property>
<layout>
<property name="column">0</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Bitrate:</property>
<layout>
<property name="column">0</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Error:</property>
<layout>
<property name="column">0</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_file">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_audio">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_bitrate">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_error">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">3</property>
</layout>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child> </child>
<child> <child>
<object class="GtkStackPage"> <object class="GtkLabel">
<property name="name">stats</property> <property name="halign">start</property>
<property name="title">Statistics</property> <property name="valign">start</property>
<property name="child"> <property name="label" translatable="yes">Audio:</property>
<object class="AdwStatusPage"> <layout>
<property name="icon-name">starred-symbolic</property> <property name="column">0</property>
<child> <property name="row">1</property>
<object class="GtkGrid"> </layout>
<property name="row-spacing">2</property> </object>
<property name="column-spacing">5</property>
<property name="column-homogeneous">true</property>
<property name="hexpand">false</property>
<property name="halign">center</property>
<child>
<object class="GtkLabel" id="stats_artists">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Artists</property>
<layout>
<property name="column">1</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_albums">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Albums</property>
<layout>
<property name="column">1</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_songs">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Songs</property>
<layout>
<property name="column">1</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_dbplaytime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds</property>
<layout>
<property name="column">1</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<layout>
<property name="column">0</property>
<property name="row">4</property>
<property name="column-span">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_playtime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">5</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds played</property>
<layout>
<property name="column">1</property>
<property name="row">5</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_uptime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">6</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds running</property>
<layout>
<property name="column">1</property>
<property name="row">6</property>
</layout>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child> </child>
<child> <child>
<object class="GtkStackPage"> <object class="GtkLabel">
<property name="name">devices</property> <property name="halign">start</property>
<property name="title">Audio Devices</property> <property name="valign">start</property>
<property name="child"> <property name="label" translatable="yes">Bitrate:</property>
<object class="AdwStatusPage"> <layout>
<property name="icon-name">audio-speakers-symbolic</property> <property name="column">0</property>
<child> <property name="row">2</property>
<object class="GtkListBox" id="output_devices"> </layout>
<property name="hexpand">false</property> </object>
<property name="halign">center</property>
<property name="selection-mode">none</property>
<style>
<class name="no-bg"/>
</style>
</object>
</child>
</object>
</property>
</object>
</child> </child>
</object> <child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Error:</property>
<layout>
<property name="column">0</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_file">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_audio">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_bitrate">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="status_error">
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;i&gt;none&lt;/i&gt;</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<layout>
<property name="column">1</property>
<property name="row">3</property>
</layout>
</object>
</child>
</object>
</child>
</object>
</property> </property>
</object> </object>
</child> </child>
</template> <child>
<object class="GtkStackPage">
<property name="name">stats</property>
<property name="title" translatable="yes">Statistics</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">starred-symbolic</property>
<child>
<object class="GtkGrid">
<property name="row-spacing">2</property>
<property name="column-spacing">5</property>
<property name="column-homogeneous">true</property>
<property name="hexpand">false</property>
<property name="halign">center</property>
<child>
<object class="GtkLabel" id="stats_artists">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Artists</property>
<layout>
<property name="column">1</property>
<property name="row">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_albums">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Albums</property>
<layout>
<property name="column">1</property>
<property name="row">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_songs">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Songs</property>
<layout>
<property name="column">1</property>
<property name="row">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_dbplaytime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds</property>
<layout>
<property name="column">1</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<layout>
<property name="column">0</property>
<property name="row">4</property>
<property name="column-span">2</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_playtime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">5</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds played</property>
<layout>
<property name="column">1</property>
<property name="row">5</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="stats_uptime">
<property name="halign">end</property>
<property name="justify">right</property>
<layout>
<property name="column">0</property>
<property name="row">6</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Seconds running</property>
<layout>
<property name="column">1</property>
<property name="row">6</property>
</layout>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">devices</property>
<property name="title" translatable="yes">Audio Devices</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">audio-speakers-symbolic</property>
<child>
<object class="GtkListBox" id="output_devices">
<property name="hexpand">false</property>
<property name="halign">center</property>
<property name="selection-mode">none</property>
<style>
<class name="no-bg"/>
</style>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</property>
</object>
</child>
</template>
</interface> </interface>

View file

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface> <interface>
<requires lib="gtk+" version="4.8"/> <requires lib="gtk+" version="4.8"/>
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />

View file

@ -1,78 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="4.8" /> <requires lib="gtk+" version="4.8" />
<requires lib="adw" version="1.2" /> <requires lib="adw" version="1.2" />
<template class="McgAppWindow" parent="AdwApplicationWindow"> <template class="McgAppWindow" parent="AdwApplicationWindow">
<property name="content"> <property name="content">
<object class="AdwToolbarView" id="toolbar_view"> <object class="AdwToolbarView" id="toolbar_view">
<child type="top"> <child type="top">
<object class="AdwHeaderBar" id="headerbar"> <object class="AdwHeaderBar" id="headerbar">
<property name="centering-policy">strict</property> <property name="centering-policy">strict</property>
<property name="show_end_title_buttons">true</property> <property name="show_end_title_buttons">true</property>
<property name="title-widget"> <property name="title-widget">
<object class="AdwViewSwitcherTitle" id="headerbar_panel_switcher"> <object class="AdwViewSwitcherTitle" id="headerbar_panel_switcher">
<property name="title">CoverGrid</property> <property name="title">CoverGrid</property>
<property name="stack">panel_stack</property> <property name="stack">panel_stack</property>
</object> </object>
</property> </property>
<child> <child>
<object class="GtkSwitch" id="headerbar_button_connect"> <object class="GtkSwitch" id="headerbar_button_connect">
<signal name="state-set" handler="on_headerbar_connection_state_set" swapped="no"/> <signal name="state-set" handler="on_headerbar_connection_state_set" swapped="no"/>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkToggleButton" id="headerbar_button_playpause"> <object class="GtkToggleButton" id="headerbar_button_playpause">
<property name="tooltip-text" translatable="yes">Switch between play and pause</property> <property name="tooltip-text" translatable="yes">Switch between play and pause</property>
<signal name="toggled" handler="on_headerbar_playpause_toggled" swapped="no"/> <signal name="toggled" handler="on_headerbar_playpause_toggled" swapped="no"/>
<child> <child>
<object class="GtkImage"> <object class="GtkImage">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">media-playback-start</property> <property name="icon-name">media-playback-start</property>
</object> </object>
</child>
</object>
</child>
<child>
<object class="GtkVolumeButton" id="headerbar_button_volume">
<signal name="value-changed" handler="on_headerbar_volume_changed" swapped="no"/>
</object>
</child>
<child type="end">
<object class="GtkStack" id="toolbar_stack">
</object>
</child>
</object>
</child> </child>
<property name="content"> </object>
<object class="GtkBox" id="content_box"> </child>
<property name="orientation">vertical</property> <child>
<child> <object class="GtkVolumeButton" id="headerbar_button_volume">
<object class="AdwToastOverlay" id="info_toast"> <signal name="value-changed" handler="on_headerbar_volume_changed" swapped="no"/>
<child> </object>
<object class="GtkStack" id="content_stack"> </child>
<property name="name">content_stack</property> <child type="end">
<property name="vexpand">true</property> <object class="GtkStack" id="toolbar_stack">
<child> </object>
<object class="AdwViewStack" id="panel_stack"> </child>
<property name="vexpand">true</property> </object>
<signal name="notify::visible-child" handler="on_stack_switched" swapped="no"/> </child>
</object> <property name="content">
</child> <object class="GtkBox" id="content_box">
</object> <property name="orientation">vertical</property>
</child> <child>
</object> <object class="AdwToastOverlay" id="info_toast">
</child> <child>
<child> <object class="GtkStack" id="content_stack">
<object class="AdwViewSwitcherBar"> <property name="name">content_stack</property>
<property name="stack">panel_stack</property> <property name="vexpand">true</property>
<binding name="reveal"> <child>
<lookup name="title-visible">headerbar_panel_switcher</lookup> <object class="AdwViewStack" id="panel_stack">
</binding> <property name="vexpand">true</property>
</object> <signal name="notify::visible-child" handler="on_stack_switched" swapped="no"/>
</child> </object>
</object> </child>
</property> </object>
</object> </child>
</object>
</child>
<child>
<object class="AdwViewSwitcherBar">
<property name="stack">panel_stack</property>
<binding name="reveal">
<lookup name="title-visible">headerbar_panel_switcher</lookup>
</binding>
</object>
</child>
</object>
</property> </property>
</template> </object>
</property>
</template>
</interface> </interface>

View file

@ -4,9 +4,6 @@
<file>gtk.css</file> <file>gtk.css</file>
<file>noise-texture.png</file> <file>noise-texture.png</file>
<file>ui/window.ui</file> <file>ui/window.ui</file>
<!--
<file>ui/gtk.menu.ui</file>
-->
<file>ui/shortcuts-dialog.ui</file> <file>ui/shortcuts-dialog.ui</file>
<file>ui/connection-panel.ui</file> <file>ui/connection-panel.ui</file>
<file>ui/album-headerbar.ui</file> <file>ui/album-headerbar.ui</file>

View file

@ -1,16 +1,9 @@
data/xyz.suruatoel.mcg.gschema.xml
data/ui/album-headerbar.ui data/ui/album-headerbar.ui
data/ui/connection-panel.ui data/ui/connection-panel.ui
data/ui/cover-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-panel.ui
data/ui/library-toolbar.ui
data/ui/playlist-panel.ui data/ui/playlist-panel.ui
data/ui/playlist-toolbar.ui
data/ui/server-panel.ui data/ui/server-panel.ui
data/ui/server-toolbar.ui
data/ui/shortcuts-dialog.ui data/ui/shortcuts-dialog.ui
data/ui/window.ui data/ui/window.ui
src/albumheaderbar.py src/albumheaderbar.py
@ -18,7 +11,6 @@ src/application.py
src/client.py src/client.py
src/connectionpanel.py src/connectionpanel.py
src/coverpanel.py src/coverpanel.py
src/infodialog.py
src/librarypanel.py src/librarypanel.py
src/main.py src/main.py
src/playlistpanel.py src/playlistpanel.py

BIN
po/de.mo

Binary file not shown.

431
po/de.po
View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: CoverGrid (mcg)\n" "Project-Id-Version: CoverGrid (mcg)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-08 19:06+0100\n" "POT-Creation-Date: 2024-05-22 14:39+0200\n"
"PO-Revision-Date: 2023-01-08 19:07+0100\n" "PO-Revision-Date: 2024-05-22 14:39+0200\n"
"Last-Translator: coderkun <olli@suruatoel.xyz>\n" "Last-Translator: coderkun <olli@suruatoel.xyz>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: de_DE\n" "Language: de_DE\n"
@ -11,357 +11,212 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n" "X-Generator: Poedit 3.4.2\n"
"X-Poedit-Basepath: ../../..\n" "X-Poedit-Basepath: ../../..\n"
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
#: data/xyz.suruatoel.mcg.gschema.xml:11 #: data/ui/connection-panel.ui:29
msgid "MPD host" msgid "No service found"
msgstr "" msgstr "Keine Dienste gefunden"
#: data/xyz.suruatoel.mcg.gschema.xml:12 #: data/ui/connection-panel.ui:43
msgid "MPD host to connect to" msgid "Host"
msgstr "" msgstr "Host"
#: data/xyz.suruatoel.mcg.gschema.xml:16 #: data/ui/connection-panel.ui:56
msgid "MPD port" msgid "Port"
msgstr "" msgstr "Port"
#: 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"
msgstr "Titel"
#: data/ui/album-headerbar.ui:34
msgid "Artist"
msgstr "Künstler"
#: data/ui/connection-panel.ui:76 #: data/ui/connection-panel.ui:76
msgid "Enter hostname or IP address" msgid "Password"
msgstr "Hostnamen oder IP-Adresse eingeben" msgstr "Passwort"
#: data/ui/connection-panel.ui:89 #: data/ui/cover-panel.ui:12 data/ui/shortcuts-dialog.ui:88
msgid "Enter password or leave blank"
msgstr "Passwort eingeben oder leer lassen"
#: data/ui/connection-panel.ui:118
msgid "Host:"
msgstr "Host:"
#: data/ui/connection-panel.ui:130
msgid "Port:"
msgstr "Port:"
#: data/ui/connection-panel.ui:142
msgid "Password:"
msgstr "Passwort:"
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:102
msgid "Show the cover in fullscreen mode" msgid "Show the cover in fullscreen mode"
msgstr "Das Cover im Vollbildmodus anzeigen" msgstr "Das Cover im Vollbildmodus anzeigen"
#: data/ui/gtk.menu.ui:7 #: data/ui/library-panel.ui:34
msgid "Connect" msgid "update library"
msgstr "Verbinden" msgstr "Die Bibliothek aktualisieren"
#: data/ui/gtk.menu.ui:12 #: data/ui/library-panel.ui:48
msgid "Play"
msgstr "Abspielen"
#: data/ui/gtk.menu.ui:17
msgid "Clear Playlist"
msgstr "Playlist leeren"
#: data/ui/gtk.menu.ui:22
msgid "Toggle Fullscreen"
msgstr "Vollbild wechseln"
#: data/ui/gtk.menu.ui:27
msgid "Search Library"
msgstr "Bibliothek durchsuchen"
#: data/ui/gtk.menu.ui:34
msgid "Connection"
msgstr "Verbindung"
#: data/ui/gtk.menu.ui:40 src/window.py:113
msgid "Cover"
msgstr "Cover"
#: data/ui/gtk.menu.ui:46 src/window.py:114
msgid "Playlist"
msgstr "Wiedergabeliste"
#: data/ui/gtk.menu.ui:52 src/window.py:115
msgid "Library"
msgstr "Bibliothek"
#: data/ui/gtk.menu.ui:60
msgid "Keyboard Shortcuts"
msgstr "Tastenkombinationen"
#: data/ui/gtk.menu.ui:65
msgid "Info"
msgstr "Info"
#: data/ui/gtk.menu.ui:70
msgid "Quit"
msgstr "Beenden"
#: data/ui/info-dialog.ui:14
msgid ""
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
"instead of single tracks."
msgstr ""
"CoverGrid ist ein ein Client für den Music Player Daemon, der sich auf Alben "
"anstellen von einzelnen Songs fokussiert."
#: data/ui/library-panel.ui:27
msgid "search library"
msgstr "Bibliothek durchsuchen"
#: data/ui/library-panel.ui:166 data/ui/playlist-panel.ui:57
msgid "cancel"
msgstr "abbrechen"
#: data/ui/library-panel.ui:179 data/ui/library-panel.ui:264
msgid "queue"
msgstr "einreihen"
#: data/ui/library-panel.ui:277 data/ui/playlist-panel.ui:168
msgid "play"
msgstr "abspielen"
#: data/ui/library-toolbar.ui:76
msgid "Sort" msgid "Sort"
msgstr "Sortierung" msgstr "Sortierung"
#: data/ui/library-toolbar.ui:86 #: data/ui/library-panel.ui:53
msgid "sort by artist" msgid "sort by artist"
msgstr "nach Künstler" msgstr "nach Künstler"
#: data/ui/library-toolbar.ui:102 #: data/ui/library-panel.ui:61
msgid "sort by title" msgid "sort by title"
msgstr "nach Titel" msgstr "nach Titel"
#: data/ui/library-toolbar.ui:118 #: data/ui/library-panel.ui:69
msgid "sort by year" msgid "sort by year"
msgstr "nach Jahr" msgstr "nach Jahr"
#: data/ui/library-toolbar.ui:134 #: data/ui/library-panel.ui:76
msgid "sort by modification" msgid "sort by modification"
msgstr "nach Änderungsdatum" msgstr "nach Änderungsdatum"
#: data/ui/library-toolbar.ui:185 data/ui/shortcuts-dialog.ui:115 #: data/ui/library-panel.ui:84
msgid "sort library descending"
msgstr "absteigend sortieren"
#: data/ui/library-panel.ui:105 data/ui/shortcuts-dialog.ui:99
msgid "Search the library" msgid "Search the library"
msgstr "Die Bibliothek durchsuchen" msgstr "Die Bibliothek durchsuchen"
#: data/ui/library-toolbar.ui:208 data/ui/playlist-toolbar.ui:15 #: data/ui/library-panel.ui:121 data/ui/playlist-panel.ui:14
msgid "Select multiple albums" msgid "Select multiple albums"
msgstr "Mehrere Alben auswählen" msgstr "Mehrere Alben auswählen"
#: data/ui/library-toolbar.ui:230 #: data/ui/library-panel.ui:135
msgid "Settings and actions" msgid "Settings and actions"
msgstr "Einstellungen und Aktionen" msgstr "Einstellungen und Aktionen"
#: data/ui/playlist-panel.ui:70 data/ui/playlist-panel.ui:155 #: data/ui/library-panel.ui:160
msgid "remove" msgid "search library"
msgstr "entfernen" msgstr "Bibliothek durchsuchen"
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89 #: data/ui/library-panel.ui:263 data/ui/playlist-panel.ui:107
msgid "cancel"
msgstr "abbrechen"
#: data/ui/library-panel.ui:270 data/ui/library-panel.ui:327
msgid "queue"
msgstr "einreihen"
#: data/ui/library-panel.ui:320 data/ui/playlist-panel.ui:163
msgid "play"
msgstr "abspielen"
#: data/ui/playlist-panel.ui:28 data/ui/shortcuts-dialog.ui:77
msgid "Clear the playlist" msgid "Clear the playlist"
msgstr "Die Wiedergabeliste leeren" msgstr "Die Wiedergabeliste leeren"
#: data/ui/server-panel.ui:69 #: data/ui/playlist-panel.ui:114 data/ui/playlist-panel.ui:170
msgid "File:" msgid "remove"
msgstr "Datei:" msgstr "entfernen"
#: data/ui/server-panel.ui:82 #: data/ui/server-panel.ui:35
msgid "Audio:"
msgstr "Audio:"
#: data/ui/server-panel.ui:95
msgid "Bitrate:"
msgstr "Bitrate:"
#: data/ui/server-panel.ui:108
msgid "Error:"
msgstr "Fehler:"
#: 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:221
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: data/ui/server-panel.ui:301 #: data/ui/server-panel.ui:49
msgid "Albums" msgid "File:"
msgstr "Alben" msgstr "Datei:"
#: data/ui/server-panel.ui:313 #: data/ui/server-panel.ui:60
msgid "Songs" msgid "Audio:"
msgstr "Songs" msgstr "Audio:"
#: data/ui/server-panel.ui:325 #: data/ui/server-panel.ui:71
msgid "Artists" msgid "Bitrate:"
msgstr "Künstler" msgstr "Bitrate:"
#: data/ui/server-panel.ui:349 #: data/ui/server-panel.ui:82
msgid "Seconds" msgid "Error:"
msgstr "Sekunden" msgstr "Fehler:"
#: data/ui/server-panel.ui:396 #: data/ui/server-panel.ui:92 data/ui/server-panel.ui:106
msgid "Seconds played" #: data/ui/server-panel.ui:120 data/ui/server-panel.ui:134
msgstr "Sekunden gespielt" msgid "<i>none</i>"
msgstr "<i>nichts</i>"
#: data/ui/server-panel.ui:407 #: data/ui/server-panel.ui:154
msgid "Seconds running"
msgstr "Sekunden laufend"
#: data/ui/server-panel.ui:465
msgid "Statistics" msgid "Statistics"
msgstr "Statistiken" msgstr "Statistiken"
#: data/ui/server-panel.ui:535 #: data/ui/server-panel.ui:178
msgid "Artists"
msgstr "Künstler"
#: data/ui/server-panel.ui:198
msgid "Albums"
msgstr "Alben"
#: data/ui/server-panel.ui:218
msgid "Songs"
msgstr "Songs"
#: data/ui/server-panel.ui:238
msgid "Seconds"
msgstr "Sekunden"
#: data/ui/server-panel.ui:267
msgid "Seconds played"
msgstr "Sekunden gespielt"
#: data/ui/server-panel.ui:287
msgid "Seconds running"
msgstr "Sekunden laufend"
#: data/ui/server-panel.ui:303
msgid "Audio Devices" msgid "Audio Devices"
msgstr "Audiogeräte" msgstr "Audiogeräte"
#: data/ui/shortcuts-dialog.ui:15 #: data/ui/shortcuts-dialog.ui:14
msgid "General" msgid "General"
msgstr "Allgemein" msgstr "Allgemein"
#: data/ui/shortcuts-dialog.ui:20 #: data/ui/shortcuts-dialog.ui:18
msgid "Switch to the Connection panel" msgid "Switch to the Connection panel"
msgstr "Zum Verbindungspaneel wechseln" msgstr "Zum Verbindungspaneel wechseln"
#: data/ui/shortcuts-dialog.ui:27 #: data/ui/shortcuts-dialog.ui:24
msgid "Switch to the Cover panel" msgid "Switch to the Cover panel"
msgstr "Zum Cover-Paneel wechseln" msgstr "Zum Cover-Paneel wechseln"
#: data/ui/shortcuts-dialog.ui:34 #: data/ui/shortcuts-dialog.ui:30
msgid "Switch to the Playlist panel" msgid "Switch to the Playlist panel"
msgstr "Zum Wiedergabelistenpaneel wechseln" msgstr "Zum Wiedergabelistenpaneel wechseln"
#: data/ui/shortcuts-dialog.ui:41 #: data/ui/shortcuts-dialog.ui:36
msgid "Switch to the Library panel" msgid "Switch to the Library panel"
msgstr "Zum Bibliothekspaneel wechseln" msgstr "Zum Bibliothekspaneel wechseln"
#: data/ui/shortcuts-dialog.ui:48 #: data/ui/shortcuts-dialog.ui:42
msgid "Show the keyboard shortcuts" msgid "Show the keyboard shortcuts"
msgstr "Die Tastenkombinationen anzeigen (dieser Dialog)" msgstr "Die Tastenkombinationen anzeigen (dieser Dialog)"
#: data/ui/shortcuts-dialog.ui:55 #: data/ui/shortcuts-dialog.ui:48
msgid "Open the info dialog" msgid "Open the info dialog"
msgstr "Den Infodialog öffnen" msgstr "Den Infodialog öffnen"
#: data/ui/shortcuts-dialog.ui:62 #: data/ui/shortcuts-dialog.ui:54
msgid "Quit the application" msgid "Quit the application"
msgstr "Die Anwendung beenden" msgstr "Die Anwendung beenden"
#: data/ui/shortcuts-dialog.ui:70 #: data/ui/shortcuts-dialog.ui:61
msgid "Player" msgid "Player"
msgstr "Wiedergabeprogramm" msgstr "Wiedergabeprogramm"
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139 #: data/ui/shortcuts-dialog.ui:65
msgid "Connect or disconnect" msgid "Connect or disconnect"
msgstr "Die Verbindung herstellen oder trennen" msgstr "Die Verbindung herstellen oder trennen"
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161 #: data/ui/shortcuts-dialog.ui:71 data/ui/window.ui:25
msgid "Switch between play and pause" msgid "Switch between play and pause"
msgstr "Zwischen Abspielen und Pause wechseln" msgstr "Zwischen Abspielen und Pause wechseln"
#: data/ui/shortcuts-dialog.ui:97 #: data/ui/shortcuts-dialog.ui:84
msgid "Cover Panel" msgid "Cover Panel"
msgstr "Cover-Paneel" msgstr "Cover-Paneel"
#: data/ui/shortcuts-dialog.ui:110 #: data/ui/shortcuts-dialog.ui:95
msgid "Library Panel" msgid "Library Panel"
msgstr "Bibliothekspaneel" msgstr "Bibliothekspaneel"
#: data/ui/window.ui:108 #: src/connectionpanel.py:51
msgid "Connect to MPD" msgid "use"
msgstr "Zu MPD verbinden" msgstr "verwenden"
#: data/ui/window.ui:181 #: src/librarypanel.py:291
msgid "Adjust the volume"
msgstr "Die Lautstärke anpassen"
#: src/librarypanel.py:421
msgid "Loading albums" msgid "Loading albums"
msgstr "Alben werden geladen" msgstr "Alben werden geladen"
#: src/librarypanel.py:521 #: src/librarypanel.py:379
msgid "Loading images" msgid "Loading images"
msgstr "Bilder werden geladen" msgstr "Bilder werden geladen"
@ -373,10 +228,74 @@ msgstr "{} mit {}"
msgid "{}:{} minutes" msgid "{}:{} minutes"
msgstr "{}:{} Minuten" msgstr "{}:{} Minuten"
#: src/window.py:112 #: src/window.py:114
msgid "Server" msgid "Server"
msgstr "Server" msgstr "Server"
#: src/window.py:115
msgid "Cover"
msgstr "Cover"
#: src/window.py:116
msgid "Playlist"
msgstr "Wiedergabeliste"
#: src/window.py:117
msgid "Library"
msgstr "Bibliothek"
#, fuzzy
#~ msgid "Connection state"
#~ msgstr "Verbindung"
#~ msgid "Title"
#~ msgstr "Titel"
#~ msgid "Artist"
#~ msgstr "Künstler"
#~ msgid "Enter hostname or IP address"
#~ msgstr "Hostnamen oder IP-Adresse eingeben"
#~ msgid "Enter password or leave blank"
#~ msgstr "Passwort eingeben oder leer lassen"
#~ msgid "Connect"
#~ msgstr "Verbinden"
#~ msgid "Play"
#~ msgstr "Abspielen"
#~ msgid "Clear Playlist"
#~ msgstr "Playlist leeren"
#~ msgid "Toggle Fullscreen"
#~ msgstr "Vollbild wechseln"
#~ msgid "Search Library"
#~ msgstr "Bibliothek durchsuchen"
#~ msgid "Connection"
#~ msgstr "Verbindung"
#~ msgid "Keyboard Shortcuts"
#~ msgstr "Tastenkombinationen"
#~ msgid "Info"
#~ msgstr "Info"
#~ msgid "Quit"
#~ msgstr "Beenden"
#~ msgid "CoverGrid is a client for the Music Player Daemon, focusing on albums instead of single tracks."
#~ msgstr "CoverGrid ist ein ein Client für den Music Player Daemon, der sich auf Alben anstellen von einzelnen Songs fokussiert."
#~ msgid "Connect to MPD"
#~ msgstr "Zu MPD verbinden"
#~ msgid "Adjust the volume"
#~ msgstr "Die Lautstärke anpassen"
#~ msgid "Enter URL or local path" #~ msgid "Enter URL or local path"
#~ msgstr "URL oder lokalen Pfad eingeben" #~ msgstr "URL oder lokalen Pfad eingeben"

BIN
po/en.mo

Binary file not shown.

431
po/en.po
View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: CoverGrid (mcg)\n" "Project-Id-Version: CoverGrid (mcg)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-08 19:06+0100\n" "POT-Creation-Date: 2024-05-22 14:39+0200\n"
"PO-Revision-Date: 2023-01-08 19:07+0100\n" "PO-Revision-Date: 2024-05-22 14:39+0200\n"
"Last-Translator: coderkun <olli@suruatoel.xyz>\n" "Last-Translator: coderkun <olli@suruatoel.xyz>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: en\n" "Language: en\n"
@ -11,358 +11,213 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n" "X-Generator: Poedit 3.4.2\n"
"X-Poedit-Basepath: ../../..\n" "X-Poedit-Basepath: ../../..\n"
"X-Poedit-SearchPath-0: mcg\n" "X-Poedit-SearchPath-0: mcg\n"
"X-Poedit-SearchPath-1: data/ui\n" "X-Poedit-SearchPath-1: data/ui\n"
#: data/xyz.suruatoel.mcg.gschema.xml:11 #: data/ui/connection-panel.ui:29
msgid "MPD host" msgid "No service found"
msgstr "" msgstr "No service found"
#: data/xyz.suruatoel.mcg.gschema.xml:12 #: data/ui/connection-panel.ui:43
msgid "MPD host to connect to" msgid "Host"
msgstr "" msgstr "Host"
#: data/xyz.suruatoel.mcg.gschema.xml:16 #: data/ui/connection-panel.ui:56
msgid "MPD port" msgid "Port"
msgstr "" msgstr "Port"
#: 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"
#: data/ui/album-headerbar.ui:34
msgid "Artist"
msgstr "Artist"
#: data/ui/connection-panel.ui:76 #: data/ui/connection-panel.ui:76
msgid "Enter hostname or IP address" msgid "Password"
msgstr "Enter hostname or IP address" msgstr "Password"
#: data/ui/connection-panel.ui:89 #: data/ui/cover-panel.ui:12 data/ui/shortcuts-dialog.ui:88
msgid "Enter password or leave blank"
msgstr "Enter password or leave blank"
#: data/ui/connection-panel.ui:118
msgid "Host:"
msgstr "Host:"
#: data/ui/connection-panel.ui:130
msgid "Port:"
msgstr "Port:"
#: data/ui/connection-panel.ui:142
msgid "Password:"
msgstr "Password:"
#: data/ui/cover-toolbar.ui:15 data/ui/shortcuts-dialog.ui:102
msgid "Show the cover in fullscreen mode" msgid "Show the cover in fullscreen mode"
msgstr "Show the cover in fullscreen mode" msgstr "Show the cover in fullscreen mode"
#: data/ui/gtk.menu.ui:7 #: data/ui/library-panel.ui:34
msgid "Connect" msgid "update library"
msgstr "Connect" msgstr "update the library"
#: data/ui/gtk.menu.ui:12 #: data/ui/library-panel.ui:48
msgid "Play"
msgstr "Play"
#: data/ui/gtk.menu.ui:17
msgid "Clear Playlist"
msgstr "Clear Playlist"
#: data/ui/gtk.menu.ui:22
msgid "Toggle Fullscreen"
msgstr "Toggle fullscreen"
#: data/ui/gtk.menu.ui:27
msgid "Search Library"
msgstr "Search Library"
#: data/ui/gtk.menu.ui:34
msgid "Connection"
msgstr "Connection"
#: data/ui/gtk.menu.ui:40 src/window.py:113
msgid "Cover"
msgstr "Cover"
#: data/ui/gtk.menu.ui:46 src/window.py:114
msgid "Playlist"
msgstr "Playlist"
#: data/ui/gtk.menu.ui:52 src/window.py:115
msgid "Library"
msgstr "Library"
#: data/ui/gtk.menu.ui:60
msgid "Keyboard Shortcuts"
msgstr "Keyboard Shortcuts"
#: data/ui/gtk.menu.ui:65
msgid "Info"
msgstr "Info"
#: data/ui/gtk.menu.ui:70
msgid "Quit"
msgstr "Quit"
#: data/ui/info-dialog.ui:14
msgid ""
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
"instead of single tracks."
msgstr ""
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
"instead of single tracks."
#: data/ui/library-panel.ui:27
msgid "search library"
msgstr "search library"
#: data/ui/library-panel.ui:166 data/ui/playlist-panel.ui:57
msgid "cancel"
msgstr "cancel"
#: data/ui/library-panel.ui:179 data/ui/library-panel.ui:264
msgid "queue"
msgstr "queue"
#: data/ui/library-panel.ui:277 data/ui/playlist-panel.ui:168
msgid "play"
msgstr "play"
#: data/ui/library-toolbar.ui:76
msgid "Sort" msgid "Sort"
msgstr "Sort order" msgstr "Sort order"
#: data/ui/library-toolbar.ui:86 #: data/ui/library-panel.ui:53
msgid "sort by artist" msgid "sort by artist"
msgstr "by Artist" msgstr "by Artist"
#: data/ui/library-toolbar.ui:102 #: data/ui/library-panel.ui:61
msgid "sort by title" msgid "sort by title"
msgstr "by Title" msgstr "by Title"
#: data/ui/library-toolbar.ui:118 #: data/ui/library-panel.ui:69
msgid "sort by year" msgid "sort by year"
msgstr "by Year" msgstr "by Year"
#: data/ui/library-toolbar.ui:134 #: data/ui/library-panel.ui:76
msgid "sort by modification" msgid "sort by modification"
msgstr "by Modification Date" msgstr "by Modification Date"
#: data/ui/library-toolbar.ui:185 data/ui/shortcuts-dialog.ui:115 #: data/ui/library-panel.ui:84
msgid "sort library descending"
msgstr "sort descending"
#: data/ui/library-panel.ui:105 data/ui/shortcuts-dialog.ui:99
msgid "Search the library" msgid "Search the library"
msgstr "Search the library" msgstr "Search the library"
#: data/ui/library-toolbar.ui:208 data/ui/playlist-toolbar.ui:15 #: data/ui/library-panel.ui:121 data/ui/playlist-panel.ui:14
msgid "Select multiple albums" msgid "Select multiple albums"
msgstr "Select multiple albums" msgstr "Select multiple albums"
#: data/ui/library-toolbar.ui:230 #: data/ui/library-panel.ui:135
msgid "Settings and actions" msgid "Settings and actions"
msgstr "Settings and actions" msgstr "Settings and actions"
#: data/ui/playlist-panel.ui:70 data/ui/playlist-panel.ui:155 #: data/ui/library-panel.ui:160
msgid "remove" msgid "search library"
msgstr "remove" msgstr "search library"
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89 #: data/ui/library-panel.ui:263 data/ui/playlist-panel.ui:107
msgid "cancel"
msgstr "cancel"
#: data/ui/library-panel.ui:270 data/ui/library-panel.ui:327
msgid "queue"
msgstr "queue"
#: data/ui/library-panel.ui:320 data/ui/playlist-panel.ui:163
msgid "play"
msgstr "play"
#: data/ui/playlist-panel.ui:28 data/ui/shortcuts-dialog.ui:77
msgid "Clear the playlist" msgid "Clear the playlist"
msgstr "Clear the playlist" msgstr "Clear the playlist"
#: data/ui/server-panel.ui:69 #: data/ui/playlist-panel.ui:114 data/ui/playlist-panel.ui:170
msgid "File:" msgid "remove"
msgstr "File:" msgstr "remove"
#: data/ui/server-panel.ui:82 #: data/ui/server-panel.ui:35
msgid "Audio:"
msgstr "Audio:"
#: data/ui/server-panel.ui:95
msgid "Bitrate:"
msgstr "Bitrate:"
#: data/ui/server-panel.ui:108
msgid "Error:"
msgstr "Error:"
#: 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:221
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: data/ui/server-panel.ui:301 #: data/ui/server-panel.ui:49
msgid "Albums" msgid "File:"
msgstr "Albums" msgstr "File:"
#: data/ui/server-panel.ui:313 #: data/ui/server-panel.ui:60
msgid "Songs" msgid "Audio:"
msgstr "Songs" msgstr "Audio:"
#: data/ui/server-panel.ui:325 #: data/ui/server-panel.ui:71
msgid "Artists" msgid "Bitrate:"
msgstr "Artists" msgstr "Bitrate:"
#: data/ui/server-panel.ui:349 #: data/ui/server-panel.ui:82
msgid "Seconds" msgid "Error:"
msgstr "Seconds" msgstr "Error:"
#: data/ui/server-panel.ui:396 #: data/ui/server-panel.ui:92 data/ui/server-panel.ui:106
msgid "Seconds played" #: data/ui/server-panel.ui:120 data/ui/server-panel.ui:134
msgstr "Seconds" msgid "<i>none</i>"
msgstr "<i>none</i>"
#: data/ui/server-panel.ui:407 #: data/ui/server-panel.ui:154
msgid "Seconds running"
msgstr "Seconds running"
#: data/ui/server-panel.ui:465
msgid "Statistics" msgid "Statistics"
msgstr "Statistics" msgstr "Statistics"
#: data/ui/server-panel.ui:535 #: data/ui/server-panel.ui:178
msgid "Artists"
msgstr "Artists"
#: data/ui/server-panel.ui:198
msgid "Albums"
msgstr "Albums"
#: data/ui/server-panel.ui:218
msgid "Songs"
msgstr "Songs"
#: data/ui/server-panel.ui:238
msgid "Seconds"
msgstr "Seconds"
#: data/ui/server-panel.ui:267
msgid "Seconds played"
msgstr "Seconds"
#: data/ui/server-panel.ui:287
msgid "Seconds running"
msgstr "Seconds running"
#: data/ui/server-panel.ui:303
msgid "Audio Devices" msgid "Audio Devices"
msgstr "Audio Devices" msgstr "Audio Devices"
#: data/ui/shortcuts-dialog.ui:15 #: data/ui/shortcuts-dialog.ui:14
msgid "General" msgid "General"
msgstr "General" msgstr "General"
#: data/ui/shortcuts-dialog.ui:20 #: data/ui/shortcuts-dialog.ui:18
msgid "Switch to the Connection panel" msgid "Switch to the Connection panel"
msgstr "Switch to the Connection panel" msgstr "Switch to the Connection panel"
#: data/ui/shortcuts-dialog.ui:27 #: data/ui/shortcuts-dialog.ui:24
msgid "Switch to the Cover panel" msgid "Switch to the Cover panel"
msgstr "Switch to the Cover panel" msgstr "Switch to the Cover panel"
#: data/ui/shortcuts-dialog.ui:34 #: data/ui/shortcuts-dialog.ui:30
msgid "Switch to the Playlist panel" msgid "Switch to the Playlist panel"
msgstr "Switch to the Playlist panel" msgstr "Switch to the Playlist panel"
#: data/ui/shortcuts-dialog.ui:41 #: data/ui/shortcuts-dialog.ui:36
msgid "Switch to the Library panel" msgid "Switch to the Library panel"
msgstr "Switch to the Cover panel" msgstr "Switch to the Cover panel"
#: data/ui/shortcuts-dialog.ui:48 #: data/ui/shortcuts-dialog.ui:42
msgid "Show the keyboard shortcuts" msgid "Show the keyboard shortcuts"
msgstr "Show the keyboard shortcuts (this dialog)" msgstr "Show the keyboard shortcuts (this dialog)"
#: data/ui/shortcuts-dialog.ui:55 #: data/ui/shortcuts-dialog.ui:48
msgid "Open the info dialog" msgid "Open the info dialog"
msgstr "Open the info dialog" msgstr "Open the info dialog"
#: data/ui/shortcuts-dialog.ui:62 #: data/ui/shortcuts-dialog.ui:54
msgid "Quit the application" msgid "Quit the application"
msgstr "Quit the application" msgstr "Quit the application"
#: data/ui/shortcuts-dialog.ui:70 #: data/ui/shortcuts-dialog.ui:61
msgid "Player" msgid "Player"
msgstr "Player" msgstr "Player"
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139 #: data/ui/shortcuts-dialog.ui:65
msgid "Connect or disconnect" msgid "Connect or disconnect"
msgstr "Connect or disconnect" msgstr "Connect or disconnect"
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161 #: data/ui/shortcuts-dialog.ui:71 data/ui/window.ui:25
msgid "Switch between play and pause" msgid "Switch between play and pause"
msgstr "Switch between play and pause" msgstr "Switch between play and pause"
#: data/ui/shortcuts-dialog.ui:97 #: data/ui/shortcuts-dialog.ui:84
msgid "Cover Panel" msgid "Cover Panel"
msgstr "Cover Panel" msgstr "Cover Panel"
#: data/ui/shortcuts-dialog.ui:110 #: data/ui/shortcuts-dialog.ui:95
msgid "Library Panel" msgid "Library Panel"
msgstr "Library Panel" msgstr "Library Panel"
#: data/ui/window.ui:108 #: src/connectionpanel.py:51
msgid "Connect to MPD" msgid "use"
msgstr "Connect to MPD" msgstr "use"
#: data/ui/window.ui:181 #: src/librarypanel.py:291
msgid "Adjust the volume"
msgstr "Adjust the volume"
#: src/librarypanel.py:421
msgid "Loading albums" msgid "Loading albums"
msgstr "Loading albums" msgstr "Loading albums"
#: src/librarypanel.py:521 #: src/librarypanel.py:379
msgid "Loading images" msgid "Loading images"
msgstr "Loading images" msgstr "Loading images"
@ -374,10 +229,74 @@ msgstr "{} feat. {}"
msgid "{}:{} minutes" msgid "{}:{} minutes"
msgstr "{}:{} minutes" msgstr "{}:{} minutes"
#: src/window.py:112 #: src/window.py:114
msgid "Server" msgid "Server"
msgstr "Server" msgstr "Server"
#: src/window.py:115
msgid "Cover"
msgstr "Cover"
#: src/window.py:116
msgid "Playlist"
msgstr "Playlist"
#: src/window.py:117
msgid "Library"
msgstr "Library"
#, fuzzy
#~ msgid "Connection state"
#~ msgstr "Connection"
#~ msgid "Title"
#~ msgstr "Title"
#~ msgid "Artist"
#~ msgstr "Artist"
#~ msgid "Enter hostname or IP address"
#~ msgstr "Enter hostname or IP address"
#~ msgid "Enter password or leave blank"
#~ msgstr "Enter password or leave blank"
#~ msgid "Connect"
#~ msgstr "Connect"
#~ msgid "Play"
#~ msgstr "Play"
#~ msgid "Clear Playlist"
#~ msgstr "Clear Playlist"
#~ msgid "Toggle Fullscreen"
#~ msgstr "Toggle fullscreen"
#~ msgid "Search Library"
#~ msgstr "Search Library"
#~ msgid "Connection"
#~ msgstr "Connection"
#~ msgid "Keyboard Shortcuts"
#~ msgstr "Keyboard Shortcuts"
#~ msgid "Info"
#~ msgstr "Info"
#~ msgid "Quit"
#~ msgstr "Quit"
#~ msgid "CoverGrid is a client for the Music Player Daemon, focusing on albums instead of single tracks."
#~ msgstr "CoverGrid is a client for the Music Player Daemon, focusing on albums instead of single tracks."
#~ msgid "Connect to MPD"
#~ msgstr "Connect to MPD"
#~ msgid "Adjust the volume"
#~ msgstr "Adjust the volume"
#~ msgid "Enter URL or local path" #~ msgid "Enter URL or local path"
#~ msgstr "Enter URL or local path" #~ msgstr "Enter URL or local path"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mcg\n" "Project-Id-Version: mcg\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-08 19:06+0100\n" "POT-Creation-Date: 2024-05-22 14:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,350 +17,208 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: data/xyz.suruatoel.mcg.gschema.xml:11 #: data/ui/connection-panel.ui:29
msgid "MPD host" msgid "No service found"
msgstr "" msgstr ""
#: data/xyz.suruatoel.mcg.gschema.xml:12 #: data/ui/connection-panel.ui:43
msgid "MPD host to connect to" msgid "Host"
msgstr "" msgstr ""
#: data/xyz.suruatoel.mcg.gschema.xml:16 #: data/ui/connection-panel.ui:56
msgid "MPD port" msgid "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 "" msgstr ""
#: data/ui/connection-panel.ui:76 #: data/ui/connection-panel.ui:76
msgid "Enter hostname or IP address" msgid "Password"
msgstr "" msgstr ""
#: data/ui/connection-panel.ui:89 #: data/ui/cover-panel.ui:12 data/ui/shortcuts-dialog.ui:88
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" msgid "Show the cover in fullscreen mode"
msgstr "" msgstr ""
#: data/ui/gtk.menu.ui:7 #: data/ui/library-panel.ui:34
msgid "Connect" msgid "update library"
msgstr "" msgstr ""
#: data/ui/gtk.menu.ui:12 #: data/ui/library-panel.ui:48
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" msgid "Sort"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:86 #: data/ui/library-panel.ui:53
msgid "sort by artist" msgid "sort by artist"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:102 #: data/ui/library-panel.ui:61
msgid "sort by title" msgid "sort by title"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:118 #: data/ui/library-panel.ui:69
msgid "sort by year" msgid "sort by year"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:134 #: data/ui/library-panel.ui:76
msgid "sort by modification" msgid "sort by modification"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:185 data/ui/shortcuts-dialog.ui:115 #: data/ui/library-panel.ui:84
msgid "sort library descending"
msgstr ""
#: data/ui/library-panel.ui:105 data/ui/shortcuts-dialog.ui:99
msgid "Search the library" msgid "Search the library"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:208 data/ui/playlist-toolbar.ui:15 #: data/ui/library-panel.ui:121 data/ui/playlist-panel.ui:14
msgid "Select multiple albums" msgid "Select multiple albums"
msgstr "" msgstr ""
#: data/ui/library-toolbar.ui:230 #: data/ui/library-panel.ui:135
msgid "Settings and actions" msgid "Settings and actions"
msgstr "" msgstr ""
#: data/ui/playlist-panel.ui:70 data/ui/playlist-panel.ui:155 #: data/ui/library-panel.ui:160
msgid "remove" msgid "search library"
msgstr "" msgstr ""
#: data/ui/playlist-toolbar.ui:37 data/ui/shortcuts-dialog.ui:89 #: data/ui/library-panel.ui:263 data/ui/playlist-panel.ui:107
msgid "cancel"
msgstr ""
#: data/ui/library-panel.ui:270 data/ui/library-panel.ui:327
msgid "queue"
msgstr ""
#: data/ui/library-panel.ui:320 data/ui/playlist-panel.ui:163
msgid "play"
msgstr ""
#: data/ui/playlist-panel.ui:28 data/ui/shortcuts-dialog.ui:77
msgid "Clear the playlist" msgid "Clear the playlist"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:69 #: data/ui/playlist-panel.ui:114 data/ui/playlist-panel.ui:170
msgid "File:" msgid "remove"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:82 #: data/ui/server-panel.ui:35
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" msgid "Status"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:301 #: data/ui/server-panel.ui:49
msgid "Albums" msgid "File:"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:313 #: data/ui/server-panel.ui:60
msgid "Songs" msgid "Audio:"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:325 #: data/ui/server-panel.ui:71
msgid "Artists" msgid "Bitrate:"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:349 #: data/ui/server-panel.ui:82
msgid "Seconds" msgid "Error:"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:396 #: data/ui/server-panel.ui:92 data/ui/server-panel.ui:106
msgid "Seconds played" #: data/ui/server-panel.ui:120 data/ui/server-panel.ui:134
msgid "<i>none</i>"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:407 #: data/ui/server-panel.ui:154
msgid "Seconds running"
msgstr ""
#: data/ui/server-panel.ui:465
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
#: data/ui/server-panel.ui:535 #: data/ui/server-panel.ui:178
msgid "Artists"
msgstr ""
#: data/ui/server-panel.ui:198
msgid "Albums"
msgstr ""
#: data/ui/server-panel.ui:218
msgid "Songs"
msgstr ""
#: data/ui/server-panel.ui:238
msgid "Seconds"
msgstr ""
#: data/ui/server-panel.ui:267
msgid "Seconds played"
msgstr ""
#: data/ui/server-panel.ui:287
msgid "Seconds running"
msgstr ""
#: data/ui/server-panel.ui:303
msgid "Audio Devices" msgid "Audio Devices"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:15 #: data/ui/shortcuts-dialog.ui:14
msgid "General" msgid "General"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:20 #: data/ui/shortcuts-dialog.ui:18
msgid "Switch to the Connection panel" msgid "Switch to the Connection panel"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:27 #: data/ui/shortcuts-dialog.ui:24
msgid "Switch to the Cover panel" msgid "Switch to the Cover panel"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:34 #: data/ui/shortcuts-dialog.ui:30
msgid "Switch to the Playlist panel" msgid "Switch to the Playlist panel"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:41 #: data/ui/shortcuts-dialog.ui:36
msgid "Switch to the Library panel" msgid "Switch to the Library panel"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:48 #: data/ui/shortcuts-dialog.ui:42
msgid "Show the keyboard shortcuts" msgid "Show the keyboard shortcuts"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:55 #: data/ui/shortcuts-dialog.ui:48
msgid "Open the info dialog" msgid "Open the info dialog"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:62 #: data/ui/shortcuts-dialog.ui:54
msgid "Quit the application" msgid "Quit the application"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:70 #: data/ui/shortcuts-dialog.ui:61
msgid "Player" msgid "Player"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:75 data/ui/window.ui:139 #: data/ui/shortcuts-dialog.ui:65
msgid "Connect or disconnect" msgid "Connect or disconnect"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:82 data/ui/window.ui:161 #: data/ui/shortcuts-dialog.ui:71 data/ui/window.ui:25
msgid "Switch between play and pause" msgid "Switch between play and pause"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:97 #: data/ui/shortcuts-dialog.ui:84
msgid "Cover Panel" msgid "Cover Panel"
msgstr "" msgstr ""
#: data/ui/shortcuts-dialog.ui:110 #: data/ui/shortcuts-dialog.ui:95
msgid "Library Panel" msgid "Library Panel"
msgstr "" msgstr ""
#: data/ui/window.ui:108 #: src/connectionpanel.py:51
msgid "Connect to MPD" msgid "use"
msgstr "" msgstr ""
#: data/ui/window.ui:181 #: src/librarypanel.py:291
msgid "Adjust the volume"
msgstr ""
#: src/librarypanel.py:421
msgid "Loading albums" msgid "Loading albums"
msgstr "" msgstr ""
#: src/librarypanel.py:521 #: src/librarypanel.py:379
msgid "Loading images" msgid "Loading images"
msgstr "" msgstr ""
@ -372,6 +230,18 @@ msgstr ""
msgid "{}:{} minutes" msgid "{}:{} minutes"
msgstr "" msgstr ""
#: src/window.py:112 #: src/window.py:114
msgid "Server" msgid "Server"
msgstr "" msgstr ""
#: src/window.py:115
msgid "Cover"
msgstr ""
#: src/window.py:116
msgid "Playlist"
msgstr ""
#: src/window.py:117
msgid "Library"
msgstr ""