adding basic properties for videos
This commit is contained in:
parent
708caa431f
commit
76e211ac83
|
@ -1,5 +1,8 @@
|
|||
namespace Deskcandy.Candy {
|
||||
class Video : BaseCandy {
|
||||
public bool loop { get; set; default = true; }
|
||||
public double speed { get; set; default = 100.0; }
|
||||
|
||||
public Video() {
|
||||
}
|
||||
|
||||
|
@ -8,7 +11,20 @@ namespace Deskcandy.Candy {
|
|||
|
||||
public override Subprocess launch(uint socket_id) throws Error {
|
||||
message("Launching mpv video...");
|
||||
return new Subprocess(SubprocessFlags.NONE, "mpv", @"--wid=$socket_id", "--no-audio", "--video-unscaled=downscale-big", "--video-zoom=20", this.name);
|
||||
var args = new Array<string>();
|
||||
args.append_val("mpv");
|
||||
args.append_val(@"--wid=$socket_id");
|
||||
args.append_val("--no-audio");
|
||||
args.append_val("--no-terminal");
|
||||
// TODO: temp
|
||||
args.append_val("--video-unscaled=downscale-big");
|
||||
args.append_val("--video-zoom=20");
|
||||
args.append_val(@"--speed=$(this.speed)");
|
||||
if (this.loop) {
|
||||
args.append_val("--loop");
|
||||
}
|
||||
args.append_val(this.name);
|
||||
return new Subprocess.newv(args.steal(), SubprocessFlags.NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -217,6 +217,13 @@
|
|||
<mime-type>video/*</mime-type>
|
||||
</mime-types>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="video_speed_adjustment">
|
||||
<property name="lower">0.01</property>
|
||||
<property name="upper">5</property>
|
||||
<property name="value">1</property>
|
||||
<property name="step-increment">0.01</property>
|
||||
<property name="page-increment">0.10</property>
|
||||
</object>
|
||||
<template class="DeskcandyWindow" parent="GtkApplicationWindow">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="window-position">center</property>
|
||||
|
@ -645,13 +652,81 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFileChooserButton" id="video_chooser">
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="filter">video_file_filter</property>
|
||||
<property name="title" translatable="yes">Select Video</property>
|
||||
<signal name="file-set" handler="on_video_chooser_file_set" swapped="no"/>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkFileChooserButton" id="video_chooser">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="filter">video_file_filter</property>
|
||||
<property name="title" translatable="yes">Select Video</property>
|
||||
<signal name="file-set" handler="on_video_property_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Speed</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale" id="video_speed_slider">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="adjustment">video_speed_adjustment</property>
|
||||
<property name="round-digits">0</property>
|
||||
<property name="digits">2</property>
|
||||
<property name="value-pos">left</property>
|
||||
<signal name="value-changed" handler="on_video_property_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="video_loop_checkbox">
|
||||
<property name="label" translatable="yes">Loop</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw-indicator">True</property>
|
||||
<signal name="toggled" handler="on_video_property_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">video_page</property>
|
||||
|
|
|
@ -20,6 +20,11 @@ namespace Deskcandy {
|
|||
private unowned Gtk.ListStore screensavers_liststore;
|
||||
[GtkChild]
|
||||
private unowned Gtk.FileChooserButton video_chooser;
|
||||
[GtkChild]
|
||||
private unowned Gtk.CheckButton video_loop_checkbox;
|
||||
[GtkChild]
|
||||
private unowned Gtk.Range video_speed_slider;
|
||||
|
||||
|
||||
private BaseCandy active_candy;
|
||||
private Subprocess proc;
|
||||
|
@ -96,8 +101,10 @@ namespace Deskcandy {
|
|||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_video_chooser_file_set() {
|
||||
private void on_video_property_changed() {
|
||||
this.video.name = this.video_chooser.get_filename();
|
||||
this.video.loop = this.video_loop_checkbox.get_active();
|
||||
this.video.speed = this.video_speed_slider.get_value();
|
||||
this.refresh_socket();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue