mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-31 00:11:59 +02:00
bin: Rewrite Clapper player binary
A rewritten Clapper video player made using "Clapper" and "ClapperGtk" libraries. Since both libraries from this repo are in C, newly rewritten Clapper binary is also in C to avoid mixing different programming languages in a single repo, thus making maintenance easier. Not depending on GJS gives us also an additional benefit of supporting different operating systems or linux shells without pulling GJS as dependency. Licensed under GPL-3.0-or-later.
This commit is contained in:
81
src/bin/clapper-app/ui/clapper-app-audio-stream-list-item.ui
Normal file
81
src/bin/clapper-app/ui/clapper-app-audio-stream-list-item.ui
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="GtkListItem">
|
||||
<property name="activatable">false</property>
|
||||
<property name="child">
|
||||
<object class="AdwPreferencesGroup">
|
||||
<binding name="title">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_stream_group_title">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Codec</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="codec" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Channels</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_convert_int">
|
||||
<lookup name="channels" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Sample Format</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="sample-format" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Sample Rate</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_convert_int">
|
||||
<lookup name="sample-rate" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Bitrate</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_bitrate">
|
||||
<lookup name="bitrate" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Language</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="lang-name" type="ClapperAudioStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
153
src/bin/clapper-app/ui/clapper-app-headerbar.ui
Normal file
153
src/bin/clapper-app/ui/clapper-app-headerbar.ui
Normal file
@@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppHeaderbar" parent="ClapperGtkContainer">
|
||||
<property name="adaptive-width">560</property>
|
||||
<signal name="adapt" handler="container_adapt_cb"/>
|
||||
<child>
|
||||
<object class="GtkCenterBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">start</property>
|
||||
<child type="center">
|
||||
<object class="ClapperGtkLeadContainer">
|
||||
<property name="blocked-actions">toggle-play|seek-request</property>
|
||||
<property name="width-target">640</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">center</property>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
<class name="rounded"/>
|
||||
<class name="mainbox"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="spacing">2</property>
|
||||
<style>
|
||||
<class name="rounded"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="icon-name">view-list-symbolic</property>
|
||||
<signal name="clicked" handler="reveal_queue_button_clicked_cb"/>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="previous_item_revealer">
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="transition-type">slide-right</property>
|
||||
<property name="transition-duration">400</property>
|
||||
<property name="reveal-child">true</property>
|
||||
<child>
|
||||
<object class="ClapperGtkPreviousItemButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperGtkTitleLabel">
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">fill</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="fallback-to-uri">true</property>
|
||||
<style>
|
||||
<class name="heading"/>
|
||||
<class name="titlelabel"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="next_item_revealer">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="transition-type">slide-left</property>
|
||||
<property name="transition-duration">400</property>
|
||||
<property name="reveal-child">true</property>
|
||||
<child>
|
||||
<object class="ClapperGtkNextItemButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="icon-name">help-about-symbolic</property>
|
||||
<property name="action-name">app.info</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropTarget" id="drop_target">
|
||||
<property name="actions">copy</property>
|
||||
<property name="preload">true</property>
|
||||
<signal name="notify::value" handler="drop_value_notify_cb"/>
|
||||
<signal name="drop" handler="drop_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="queue_revealer">
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="transition-type">slide-down</property>
|
||||
<property name="transition-duration">800</property>
|
||||
<property name="reveal-child">false</property>
|
||||
<signal name="notify::reveal-child" handler="queue_reveal_cb"/>
|
||||
<child>
|
||||
<object class="ClapperAppQueueList"/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkRevealer" id="win_buttons_revealer">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="transition-type">slide-left</property>
|
||||
<property name="transition-duration">500</property>
|
||||
<property name="reveal-child">true</property>
|
||||
<child>
|
||||
<object class="ClapperAppWindowStateButtons">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
201
src/bin/clapper-app/ui/clapper-app-help-overlay.ui
Normal file
201
src/bin/clapper-app/ui/clapper-app-help-overlay.ui
Normal file
@@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<object class="GtkShortcutsWindow" id="help_overlay">
|
||||
<property name="modal">true</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsSection">
|
||||
<property name="section-name">app</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="title" translatable="yes">General</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Show shortcuts</property>
|
||||
<property name="accelerator"><Ctrl>question</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Open preferences</property>
|
||||
<property name="accelerator"><Ctrl>comma</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Toggle fullscreen</property>
|
||||
<property name="subtitle" translatable="yes">Double tap | Double click</property>
|
||||
<property name="accelerator">F11 f</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Quit</property>
|
||||
<property name="accelerator"><Ctrl>Q</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="title" translatable="yes">Media</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Add Files…</property>
|
||||
<property name="accelerator"><Ctrl>O</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Add URI…</property>
|
||||
<property name="accelerator"><Ctrl>U</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="title" translatable="yes">Queue</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Next item</property>
|
||||
<property name="accelerator"><Ctrl>Right</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Next item</property>
|
||||
<property name="accelerator"><Ctrl>Left</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Previous item</property>
|
||||
<property name="accelerator"><Ctrl>Left</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Previous item</property>
|
||||
<property name="accelerator"><Ctrl>Right</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Change progression mode</property>
|
||||
<property name="accelerator"><Ctrl>P</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="title" translatable="yes">Playback</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Toggle play</property>
|
||||
<property name="subtitle" translatable="yes">Tap | Left click</property>
|
||||
<property name="accelerator">space k</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Seek forward</property>
|
||||
<property name="subtitle" translatable="yes">Double tap (right side) | Scroll right</property>
|
||||
<property name="accelerator">Right l</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Seek forward</property>
|
||||
<property name="subtitle" translatable="yes">Double tap (left side) | Scroll left</property>
|
||||
<property name="accelerator">Left j</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Seek backward</property>
|
||||
<property name="subtitle" translatable="yes">Double tap (left side) | Scroll left</property>
|
||||
<property name="accelerator">Left j</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Seek backward</property>
|
||||
<property name="subtitle" translatable="yes">Double tap (right side) | Scroll right</property>
|
||||
<property name="accelerator">Right l</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Volume up</property>
|
||||
<property name="subtitle" translatable="yes">Scroll up</property>
|
||||
<property name="accelerator">Up</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Volume down</property>
|
||||
<property name="subtitle" translatable="yes">Scroll down</property>
|
||||
<property name="accelerator">Down</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Toggle mute</property>
|
||||
<property name="accelerator">M</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Speed up</property>
|
||||
<property name="accelerator">greater</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="title" translatable="yes">Speed down</property>
|
||||
<property name="accelerator">less</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Next chapter</property>
|
||||
<property name="accelerator"><Shift>Right</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Next chapter</property>
|
||||
<property name="accelerator"><Shift>Left</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Previous chapter</property>
|
||||
<property name="accelerator"><Shift>Left</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Previous chapter</property>
|
||||
<property name="accelerator"><Shift>Right</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
380
src/bin/clapper-app/ui/clapper-app-info-window.ui
Normal file
380
src/bin/clapper-app/ui/clapper-app-info-window.ui
Normal file
@@ -0,0 +1,380 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppInfoWindow" parent="AdwWindow">
|
||||
<property name="width-request">280</property>
|
||||
<property name="height-request">280</property>
|
||||
<property name="default-width">400</property>
|
||||
<property name="default-height">640</property>
|
||||
<property name="modal">true</property>
|
||||
<property name="content">
|
||||
<object class="AdwNavigationView">
|
||||
<child>
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Info</property>
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar"/>
|
||||
</child>
|
||||
<property name="content">
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<style>
|
||||
<class name="maincontent"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">8</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Media</property>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Title</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="title" type="ClapperMediaItem">
|
||||
<lookup name="current-item" type="ClapperQueue">
|
||||
<lookup name="queue" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Container Format</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="container-format" type="ClapperMediaItem">
|
||||
<lookup name="current-item" type="ClapperQueue">
|
||||
<lookup name="queue" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Duration</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="media_duration_closure">
|
||||
<lookup name="duration" type="ClapperMediaItem">
|
||||
<lookup name="current-item" type="ClapperQueue">
|
||||
<lookup name="queue" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Streams</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="video_action_row">
|
||||
<property name="title" translatable="yes">Video</property>
|
||||
<property name="activatable">true</property>
|
||||
<property name="action-name">navigation.push</property>
|
||||
<property name="action-target">'video-streams-page'</property>
|
||||
<binding name="sensitive">
|
||||
<closure type="gboolean" function="has_streams_closure">
|
||||
<lookup name="n-streams" type="ClapperStreamList">
|
||||
<lookup name="video-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
<property name="visible" bind-source="video_action_row" bind-property="sensitive" bind-flags="sync-create"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="audio_action_row">
|
||||
<property name="title" translatable="yes">Audio</property>
|
||||
<property name="activatable">true</property>
|
||||
<property name="action-name">navigation.push</property>
|
||||
<property name="action-target">'audio-streams-page'</property>
|
||||
<binding name="sensitive">
|
||||
<closure type="gboolean" function="has_streams_closure">
|
||||
<lookup name="n-streams" type="ClapperStreamList">
|
||||
<lookup name="audio-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
<property name="visible" bind-source="audio_action_row" bind-property="sensitive" bind-flags="sync-create"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="subtitles_action_row">
|
||||
<property name="title" translatable="yes">Subtitles</property>
|
||||
<property name="activatable">true</property>
|
||||
<property name="action-name">navigation.push</property>
|
||||
<property name="action-target">'subtitle-streams-page'</property>
|
||||
<binding name="sensitive">
|
||||
<closure type="gboolean" function="has_streams_closure">
|
||||
<lookup name="n-streams" type="ClapperStreamList">
|
||||
<lookup name="subtitle-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
<property name="visible" bind-source="subtitles_action_row" bind-property="sensitive" bind-flags="sync-create"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Video Playback</property>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Decoder</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_decoder_closure">
|
||||
<lookup name="current-video-decoder" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Filter</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_element_name_closure">
|
||||
<lookup name="video-filter" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Sink</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_element_name_closure">
|
||||
<lookup name="video-sink" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Audio Playback</property>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Decoder</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_element_name_closure">
|
||||
<lookup name="current-audio-decoder" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Filter</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_element_name_closure">
|
||||
<lookup name="audio-filter" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Sink</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="playback_element_name_closure">
|
||||
<lookup name="audio-sink" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Video Streams</property>
|
||||
<property name="tag">video-streams-page</property>
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar"/>
|
||||
</child>
|
||||
<property name="content">
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<style>
|
||||
<class name="subcontent"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkListView" id="vstreams_list">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="css-name">streamlist</property>
|
||||
<property name="can-target">false</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="resource">/com/github/rafostar/Clapper/clapper-app/ui/clapper-app-video-stream-list-item.ui</property>
|
||||
</object>
|
||||
</property>
|
||||
<binding name="model">
|
||||
<closure type="GtkSelectionModel" function="create_no_selection_closure">
|
||||
<lookup name="video-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Audio Streams</property>
|
||||
<property name="tag">audio-streams-page</property>
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar"/>
|
||||
</child>
|
||||
<property name="content">
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<style>
|
||||
<class name="subcontent"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkListView" id="astreams_list">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="css-name">streamlist</property>
|
||||
<property name="can-target">false</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="resource">/com/github/rafostar/Clapper/clapper-app/ui/clapper-app-audio-stream-list-item.ui</property>
|
||||
</object>
|
||||
</property>
|
||||
<binding name="model">
|
||||
<closure type="GtkSelectionModel" function="create_no_selection_closure">
|
||||
<lookup name="audio-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Subtitle Streams</property>
|
||||
<property name="tag">subtitle-streams-page</property>
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar"/>
|
||||
</child>
|
||||
<property name="content">
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<style>
|
||||
<class name="subcontent"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkListView" id="sstreams_list">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="css-name">streamlist</property>
|
||||
<property name="can-target">false</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="resource">/com/github/rafostar/Clapper/clapper-app/ui/clapper-app-subtitle-stream-list-item.ui</property>
|
||||
</object>
|
||||
</property>
|
||||
<binding name="model">
|
||||
<closure type="GtkSelectionModel" function="create_no_selection_closure">
|
||||
<lookup name="subtitle-streams" type="ClapperPlayer">
|
||||
<lookup name="player">ClapperAppInfoWindow</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<style>
|
||||
<class name="info"/>
|
||||
</style>
|
||||
</template>
|
||||
</interface>
|
52
src/bin/clapper-app/ui/clapper-app-initial-state.ui
Normal file
52
src/bin/clapper-app/ui/clapper-app-initial-state.ui
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<object class="GtkBox" id="initial_state">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">6</property>
|
||||
<style>
|
||||
<class name="initialstate"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="ClapperAppWindowStateButtons">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="icon-name">com.github.rafostar.Clapper</property>
|
||||
<property name="title" translatable="no">Clapper</property>
|
||||
<property name="description" translatable="yes">Start by adding media to playback queue</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Add Files…</property>
|
||||
<property name="action-name">app.add-files</property>
|
||||
<style>
|
||||
<class name="pill"/>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Add URI…</property>
|
||||
<property name="action-name">app.add-uri</property>
|
||||
<style>
|
||||
<class name="pill"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
246
src/bin/clapper-app/ui/clapper-app-preferences-window.ui
Normal file
246
src/bin/clapper-app/ui/clapper-app-preferences-window.ui
Normal file
@@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppPreferencesWindow" parent="AdwPreferencesWindow">
|
||||
<property name="width-request">280</property>
|
||||
<property name="height-request">280</property>
|
||||
<property name="default-width">540</property>
|
||||
<property name="default-height">540</property>
|
||||
<property name="modal">true</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="title" translatable="yes">General</property>
|
||||
<property name="icon-name">user-home-symbolic</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Seeking</property>
|
||||
<child>
|
||||
<object class="AdwComboRow" id="seek_method_combo_row">
|
||||
<property name="title" translatable="yes">Method</property>
|
||||
<property name="subtitle" translatable="yes">A preferred method used for seeking</property>
|
||||
<property name="model">
|
||||
<object class="AdwEnumListModel">
|
||||
<property name="enum-type">ClapperPlayerSeekMethod</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="expression">
|
||||
<closure type="gchararray" function="seek_method_name_closure"/>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="seek_value_spin_row">
|
||||
<property name="title" translatable="yes">Value</property>
|
||||
<property name="subtitle" translatable="yes">Value used for seeking forward/backward</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">1</property>
|
||||
<property name="upper">99</property>
|
||||
<property name="page-increment">1</property>
|
||||
<property name="step-increment">1</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwComboRow" id="seek_unit_combo_row">
|
||||
<property name="title" translatable="yes">Unit</property>
|
||||
<property name="subtitle" translatable="yes">An unit of a seek forward/backward value</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList">
|
||||
<items>
|
||||
<item translatable="yes">Second</item>
|
||||
<item translatable="yes">Minute</item>
|
||||
<item translatable="yes">Percentage</item>
|
||||
</items>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Features</property>
|
||||
<child>
|
||||
<object class="AdwSwitchRow" id="server_switch_row">
|
||||
<property name="title" translatable="yes">Server</property>
|
||||
<property name="subtitle" translatable="yes">Control player remotely</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="title" translatable="yes">Playback</property>
|
||||
<property name="icon-name">camera-video-symbolic</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Audio</property>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="audio_offset_spin_row">
|
||||
<property name="title" translatable="yes">Offset</property>
|
||||
<property name="subtitle" translatable="yes">Synchronisation offset in seconds between the audio and video streams</property>
|
||||
<property name="digits">3</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">-10</property>
|
||||
<property name="upper">10</property>
|
||||
<property name="page-increment">1</property>
|
||||
<property name="step-increment">0.025</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Subtitles</property>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="subtitle_offset_spin_row">
|
||||
<property name="title" translatable="yes">Offset</property>
|
||||
<property name="subtitle" translatable="yes">Synchronisation offset in seconds between the subtitle and video streams</property>
|
||||
<property name="digits">3</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">-10</property>
|
||||
<property name="upper">10</property>
|
||||
<property name="page-increment">1</property>
|
||||
<property name="step-increment">0.025</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Default font</property>
|
||||
<property name="subtitle" translatable="yes">Text font used for subtitles when media does not explicitly specify one</property>
|
||||
<child>
|
||||
<object class="GtkFontDialogButton" id="font_dialog_button">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="dialog">
|
||||
<object class="GtkFontDialog"/>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="title" translatable="yes">Tweaks</property>
|
||||
<property name="icon-name">applications-engineering-symbolic</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="no">GStreamer</property>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Plugin ranking</property>
|
||||
<property name="subtitle" translatable="yes">Alter default ranks of GStreamer plugins</property>
|
||||
<property name="activatable">true</property>
|
||||
<signal name="activated" handler="plugin_ranking_activated_cb"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="preferences"/>
|
||||
</style>
|
||||
</template>
|
||||
<object class="AdwNavigationPage" id="plugins_subpage">
|
||||
<property name="title" translatable="yes">Plugin Ranking</property>
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar"/>
|
||||
</child>
|
||||
<property name="content">
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<style>
|
||||
<class name="subcontent"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Available plugins</property>
|
||||
<property name="description" translatable="yes">Select a plugin and its feature to override rank for. When multiple elements have similiar capabilities, the one with highest value is preferred.</property>
|
||||
<child>
|
||||
<object class="AdwComboRow" id="plugins_combo_row">
|
||||
<property name="title" translatable="yes">Plugin</property>
|
||||
<property name="enable-search">true</property>
|
||||
<property name="expression">
|
||||
<lookup type="GtkStringObject" name="string"/>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwComboRow" id="features_combo_row">
|
||||
<property name="title" translatable="yes">Plugin feature</property>
|
||||
<property name="enable-search">true</property>
|
||||
<property name="expression">
|
||||
<lookup type="GtkStringObject" name="string"/>
|
||||
</property>
|
||||
<binding name="model">
|
||||
<closure type="GtkStringList" function="ranking_features_model_closure">
|
||||
<lookup name="selected-item">plugins_combo_row</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="add_override_button">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Add override</property>
|
||||
<binding name="sensitive">
|
||||
<closure type="gboolean" function="add_override_button_sensitive_closure">
|
||||
<lookup name="selected-item">features_combo_row</lookup>
|
||||
<lookup name="rank-rows">ClapperAppPreferencesWindow</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<signal name="clicked" handler="add_override_button_clicked_cb"/>
|
||||
<style>
|
||||
<class name="pill"/>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup" id="overrides_group">
|
||||
<property name="title" translatable="yes">Rank overrides</property>
|
||||
<property name="visible">false</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<signal name="unrealize" handler="plugin_ranking_unrealize_cb"/>
|
||||
<style>
|
||||
<class name="pluginssubpage"/>
|
||||
</style>
|
||||
</object>
|
||||
</interface>
|
39
src/bin/clapper-app/ui/clapper-app-queue-list-item.ui
Normal file
39
src/bin/clapper-app/ui/clapper-app-queue-list-item.ui
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="GtkListItem">
|
||||
<property name="child">
|
||||
<object class="ClapperAppMediaItemBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="can-target">true</property>
|
||||
<property name="spacing">6</property>
|
||||
<binding name="media-item">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="can-target">false</property>
|
||||
<property name="icon-name">list-drag-handle-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperGtkTitleLabel">
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="can-target">false</property>
|
||||
<property name="fallback-to-uri">true</property>
|
||||
<binding name="media-item">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</binding>
|
||||
<style>
|
||||
<class name="heading"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
187
src/bin/clapper-app/ui/clapper-app-queue-list.ui
Normal file
187
src/bin/clapper-app/ui/clapper-app-queue-list.ui
Normal file
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppQueueList" parent="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkSeparator">
|
||||
<property name="orientation">horizontal</property>
|
||||
<style>
|
||||
<class name="topseparator"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStack" id="stack">
|
||||
<property name="transition-duration">200</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="stack_default_page">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="spacing">6</property>
|
||||
<style>
|
||||
<class name="buttonsbox"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<style>
|
||||
<class name="linked"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="action-name">app.add-files</property>
|
||||
<style>
|
||||
<class name="additemsbutton"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">list-add-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Add</property>
|
||||
<property name="use-underline">true</property>
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="menu-model">add_items_menu</property>
|
||||
<style>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropDown" id="progression_drop_down">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="tooltip-text" translatable="yes">Queue progression</property>
|
||||
<property name="show-arrow">false</property>
|
||||
<property name="model">
|
||||
<object class="ClapperAppQueueProgressionModel"/>
|
||||
</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="resource">/com/github/rafostar/Clapper/clapper-app/ui/clapper-app-queue-progression-item.ui</property>
|
||||
</object>
|
||||
</property>
|
||||
<style>
|
||||
<class name="progressiondropdown"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="stack_trash_page">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="hexpand">true</property>
|
||||
<style>
|
||||
<class name="removeitembox"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="icon-name">user-trash-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropTarget" id="trash_drop_target">
|
||||
<property name="actions">move</property>
|
||||
<signal name="drop" handler="trash_drop_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="hscrollbar-policy">never</property>
|
||||
<property name="vscrollbar-policy">automatic</property>
|
||||
<property name="propagate-natural-height">true</property>
|
||||
<property name="max-content-height">274</property>
|
||||
<style>
|
||||
<class name="queue"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkListView" id="list_view">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="enable-rubberband">false</property>
|
||||
<property name="single-click-activate">false</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="resource">/com/github/rafostar/Clapper/clapper-app/ui/clapper-app-queue-list-item.ui</property>
|
||||
</object>
|
||||
</property>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkDragSource">
|
||||
<property name="actions">move</property>
|
||||
<signal name="prepare" handler="drag_item_prepare_cb"/>
|
||||
<signal name="drag-begin" handler="drag_item_drag_begin_cb"/>
|
||||
<signal name="drag-end" handler="drag_item_drag_end_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropTarget" id="drop_target">
|
||||
<property name="actions">move|copy</property>
|
||||
<property name="preload">true</property>
|
||||
<signal name="notify::value" handler="queue_drop_value_notify_cb"/>
|
||||
<signal name="motion" handler="queue_drop_motion_cb"/>
|
||||
<signal name="leave" handler="queue_drop_leave_cb"/>
|
||||
<signal name="drop" handler="queue_drop_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
<menu id="add_items_menu">
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Add Files…</attribute>
|
||||
<attribute name="action">app.add-files</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Add URI…</attribute>
|
||||
<attribute name="action">app.add-uri</attribute>
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
</interface>
|
39
src/bin/clapper-app/ui/clapper-app-queue-progression-item.ui
Normal file
39
src/bin/clapper-app/ui/clapper-app-queue-progression-item.ui
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="GtkListItem">
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="icon-name">list-drag-handle-symbolic</property>
|
||||
<binding name="icon-name">
|
||||
<lookup name="icon-name" type="ClapperAppQueueProgressionItem">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="single-line-mode">true</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="xalign">0.0</property>
|
||||
<binding name="label">
|
||||
<lookup name="label" type="ClapperAppQueueProgressionItem">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="GtkListItem">
|
||||
<property name="activatable">false</property>
|
||||
<property name="child">
|
||||
<object class="AdwPreferencesGroup">
|
||||
<binding name="title">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_stream_group_title">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Title</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="title" type="ClapperStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Language</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="lang-name" type="ClapperSubtitleStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
26
src/bin/clapper-app/ui/clapper-app-uri-dialog.ui
Normal file
26
src/bin/clapper-app/ui/clapper-app-uri-dialog.ui
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<object class="AdwMessageDialog" id="dialog">
|
||||
<property name="modal">true</property>
|
||||
<property name="width-request">420</property>
|
||||
<property name="heading" translatable="yes">Add URI</property>
|
||||
<property name="body" translatable="yes">Insert an URI to be added to playback queue</property>
|
||||
<property name="close-response">cancel</property>
|
||||
<property name="default-response">add</property>
|
||||
<property name="extra-child">
|
||||
<object class="GtkEntry">
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="activates-default">true</property>
|
||||
<property name="truncate-multiline">true</property>
|
||||
<property name="input-purpose">url</property>
|
||||
<property name="placeholder-text" translatable="yes">Enter or drop URI here</property>
|
||||
</object>
|
||||
</property>
|
||||
<responses>
|
||||
<response id="cancel" translatable="yes">Cancel</response>
|
||||
<response id="add" translatable="yes" appearance="suggested" enabled="false">Add</response>
|
||||
</responses>
|
||||
</object>
|
||||
</interface>
|
74
src/bin/clapper-app/ui/clapper-app-video-stream-list-item.ui
Normal file
74
src/bin/clapper-app/ui/clapper-app-video-stream-list-item.ui
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="GtkListItem">
|
||||
<property name="activatable">false</property>
|
||||
<property name="child">
|
||||
<object class="AdwPreferencesGroup">
|
||||
<binding name="title">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_stream_group_title">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Codec</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="codec" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Resolution</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_resolution">
|
||||
<lookup name="width" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
<lookup name="height" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Framerate</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_convert_double">
|
||||
<lookup name="fps" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Bitrate</property>
|
||||
<binding name="subtitle">
|
||||
<closure type="gchararray" function="clapper_app_list_item_make_bitrate">
|
||||
<lookup name="bitrate" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</closure>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="ClapperAppPropertyRow">
|
||||
<property name="title" translatable="yes">Pixel Format</property>
|
||||
<binding name="subtitle">
|
||||
<lookup name="pixel-format" type="ClapperVideoStream">
|
||||
<lookup name="item">GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
73
src/bin/clapper-app/ui/clapper-app-window-state-buttons.ui
Normal file
73
src/bin/clapper-app/ui/clapper-app-window-state-buttons.ui
Normal file
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppWindowStateButtons" parent="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="menu_button">
|
||||
<property name="icon-name">open-menu-symbolic</property>
|
||||
<property name="menu-model">app_menu</property>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="minimize_button">
|
||||
<property name="icon_name">window-minimize-symbolic</property>
|
||||
<property name="visible">false</property>
|
||||
<signal name="clicked" handler="minimize_button_clicked_cb"/>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="maximize_button">
|
||||
<property name="icon_name">window-maximize-symbolic</property>
|
||||
<property name="visible">false</property>
|
||||
<signal name="clicked" handler="maximize_button_clicked_cb"/>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="close_button">
|
||||
<property name="icon_name">window-close-symbolic</property>
|
||||
<property name="visible">false</property>
|
||||
<signal name="clicked" handler="close_button_clicked_cb"/>
|
||||
<style>
|
||||
<class name="osd"/>
|
||||
<class name="flat"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
<menu id="app_menu">
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Preferences</attribute>
|
||||
<attribute name="action">app.preferences</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Keyboard Shortcuts</attribute>
|
||||
<attribute name="action">win.show-help-overlay</attribute>
|
||||
</item>
|
||||
</section>
|
||||
<section>
|
||||
<item>
|
||||
<!-- TRANSLATORS: Please do not translate application name -->
|
||||
<attribute name="label" translatable="yes">About Clapper</attribute>
|
||||
<attribute name="action">app.about</attribute>
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
</interface>
|
75
src/bin/clapper-app/ui/clapper-app-window.ui
Normal file
75
src/bin/clapper-app/ui/clapper-app-window.ui
Normal file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="clapper-app">
|
||||
<template class="ClapperAppWindow" parent="GtkApplicationWindow">
|
||||
<property name="default-width">1024</property>
|
||||
<property name="default-height">576</property>
|
||||
<property name="child">
|
||||
<object class="GtkStack">
|
||||
<property name="transition-duration">300</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<child>
|
||||
<object class="ClapperGtkVideo" id="video">
|
||||
<property name="focusable">true</property>
|
||||
<property name="auto-inhibit">true</property>
|
||||
<signal name="toggle-fullscreen" handler="video_toggle_fullscreen_cb"/>
|
||||
<signal name="seek-request" handler="video_seek_request_cb"/>
|
||||
<signal name="map" handler="video_map_cb"/>
|
||||
<signal name="unmap" handler="video_unmap_cb"/>
|
||||
<child type="overlay">
|
||||
<object class="ClapperGtkBillboard" id="billboard"/>
|
||||
</child>
|
||||
<child type="fading-overlay">
|
||||
<object class="ClapperGtkSimpleControls" id="simple_controls">
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="fading-overlay">
|
||||
<object class="ClapperAppHeaderbar">
|
||||
<property name="valign">start</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEventControllerScroll">
|
||||
<property name="flags">both-axes</property>
|
||||
<signal name="scroll-begin" handler="scroll_begin_cb"/>
|
||||
<signal name="scroll" handler="scroll_cb"/>
|
||||
<signal name="scroll-end" handler="scroll_end_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEventControllerKey">
|
||||
<property name="propagation-phase">capture</property>
|
||||
<signal name="key-pressed" handler="key_pressed_cb"/>
|
||||
<signal name="key-released" handler="key_released_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGestureClick">
|
||||
<property name="button">3</property>
|
||||
<signal name="pressed" handler="right_click_pressed_cb"/>
|
||||
<signal name="released" handler="right_click_released_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGestureDrag">
|
||||
<signal name="drag-begin" handler="drag_begin_cb"/>
|
||||
<signal name="drag-update" handler="drag_update_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkDropTarget" id="drop_target">
|
||||
<property name="actions">copy</property>
|
||||
<property name="preload">true</property>
|
||||
<signal name="notify::value" handler="drop_value_notify_cb"/>
|
||||
<signal name="drop" handler="drop_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="app"/>
|
||||
</style>
|
||||
</template>
|
||||
</interface>
|
Reference in New Issue
Block a user