update fluent

This commit is contained in:
ochibani 2024-06-03 21:34:16 +02:00
parent 3e6086ce89
commit 3f6b72c977
No known key found for this signature in database
GPG Key ID: 2C6B61CE0C704ED4
7 changed files with 207 additions and 66 deletions

61
Cargo.lock generated
View File

@ -71,9 +71,9 @@ dependencies = [
[[package]]
name = "async-broadcast"
version = "0.7.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e"
dependencies = [
"event-listener 5.3.1",
"event-listener-strategy",
@ -391,6 +391,7 @@ dependencies = [
"dark-light",
"dirs",
"filename",
"fluent",
"fluent-bundle",
"gdk-pixbuf 0.9.0",
"gdk4 0.9.0",
@ -435,7 +436,7 @@ dependencies = [
[[package]]
name = "cairo-rs"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"bitflags 2.5.0",
"cairo-sys-rs 0.20.0",
@ -458,7 +459,7 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"glib-sys 0.20.0",
"libc",
@ -770,6 +771,16 @@ dependencies = [
"winapi",
]
[[package]]
name = "fluent"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb74634707bebd0ce645a981148e8fb8c7bccd4c33c652aeffd28bf2f96d555a"
dependencies = [
"fluent-bundle",
"unic-langid",
]
[[package]]
name = "fluent-bundle"
version = "0.15.3"
@ -952,7 +963,7 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"gdk-pixbuf-sys 0.20.0",
"gio 0.20.0",
@ -989,7 +1000,7 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"gio-sys 0.20.0",
"glib-sys 0.20.0",
@ -1034,7 +1045,7 @@ dependencies = [
[[package]]
name = "gdk4"
version = "0.9.0"
source = "git+https://github.com/gtk-rs/gtk4-rs.git#3826b9acf320beedc3a1b0a326501e8ebadc05e6"
source = "git+https://github.com/gtk-rs/gtk4-rs.git#32e7155cd32bd5c27e1847c7e38aae825642043a"
dependencies = [
"cairo-rs 0.20.0",
"gdk-pixbuf 0.20.0",
@ -1065,7 +1076,7 @@ dependencies = [
[[package]]
name = "gdk4-sys"
version = "0.9.0"
source = "git+https://github.com/gtk-rs/gtk4-rs.git#3826b9acf320beedc3a1b0a326501e8ebadc05e6"
source = "git+https://github.com/gtk-rs/gtk4-rs.git#32e7155cd32bd5c27e1847c7e38aae825642043a"
dependencies = [
"cairo-sys-rs 0.20.0",
"gdk-pixbuf-sys 0.20.0",
@ -1140,7 +1151,7 @@ dependencies = [
[[package]]
name = "gio"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"futures-channel",
"futures-core",
@ -1196,7 +1207,7 @@ dependencies = [
[[package]]
name = "gio-sys"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"glib-sys 0.20.0",
"gobject-sys 0.20.0",
@ -1270,7 +1281,7 @@ dependencies = [
[[package]]
name = "glib"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"bitflags 2.5.0",
"futures-channel",
@ -1337,7 +1348,7 @@ dependencies = [
[[package]]
name = "glib-macros"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"heck 0.5.0",
"proc-macro-crate 3.1.0",
@ -1379,7 +1390,7 @@ dependencies = [
[[package]]
name = "glib-sys"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"libc",
"system-deps 6.2.2",
@ -1433,7 +1444,7 @@ dependencies = [
[[package]]
name = "gobject-sys"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"glib-sys 0.20.0",
"libc",
@ -1962,7 +1973,7 @@ dependencies = [
[[package]]
name = "pango"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"gio 0.20.0",
"glib 0.20.0",
@ -1985,7 +1996,7 @@ dependencies = [
[[package]]
name = "pango-sys"
version = "0.20.0"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#6c6c7bd561b9c66dceb4103f80bb21cd33be8563"
source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=master#bfbba2af8d2c1f09134919d378ea833caff32b4b"
dependencies = [
"glib-sys 0.20.0",
"gobject-sys 0.20.0",
@ -2131,9 +2142,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.84"
version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
dependencies = [
"unicode-ident",
]
@ -2480,7 +2491,7 @@ dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
"toml 0.8.13",
"toml 0.8.14",
"version-compare 0.2.0",
]
@ -2542,14 +2553,14 @@ dependencies = [
[[package]]
name = "toml"
version = "0.8.13"
version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba"
checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
"toml_edit 0.22.13",
"toml_edit 0.22.14",
]
[[package]]
@ -2585,9 +2596,9 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.22.13"
version = "0.22.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c"
checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38"
dependencies = [
"indexmap",
"serde",
@ -3049,7 +3060,7 @@ version = "4.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "989c3977a7aafa97b12b9a35d21cdcff9b0d2289762b14683f45d66b1ba6c48f"
dependencies = [
"async-broadcast 0.7.0",
"async-broadcast 0.7.1",
"async-executor",
"async-fs 2.1.2",
"async-io 2.3.3",

View File

@ -10,6 +10,7 @@ async-std = {version = "1.12.0", features = ["attributes"]}
chrono = "0.4.19"
dark-light = "1.0.0"
dirs = "4.0.0"
fluent = "0.16.1"
fluent-bundle = "0.15.3"
filename = "0.1.1"
gdk = { git = "https://github.com/gtk-rs/gtk4-rs.git", package = "gdk4"}
@ -17,7 +18,7 @@ gdk-pixbuf = "0.9.0"
gio = { version = "0.15.0" }
glib = "0.10.3"
gstreamer = "0.20.5"
gtk = { version = "0.4.8", package = "gtk4", features = ["v4_8"] }
gtk = { version = "0.4.6", package = "gtk4", features = ["v4_6"] }
gtk-sys = "0.15"
regex = "1.4.3"
rust-ini = "0.16"

View File

@ -68,10 +68,10 @@
</object>
</child>
<child>
<object class="GtkLabel">
<object class="GtkLabel" id="area_apply">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Apply</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
</object>
@ -98,7 +98,7 @@
<object class="GtkLabel" id="delay_window_title">
<property name="name">delay_window_title</property>
<property name="visible">True</property>
<property name="label" translatable="yes">Start Recording in…</property>
<property name="label" translatable="yes">label</property>
<property name="margin-top">10</property>
</object>
</child>
@ -108,6 +108,7 @@
<property name="vexpand">True</property>
<property name="hexpand">True</property>
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child type="bottom">
@ -119,7 +120,7 @@
<property name="margin-start">10</property>
<property name="margin-end">10</property>
<property name="margin-bottom">10</property>
<property name="label" translatable="yes">Stop</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
</object>
@ -239,8 +240,8 @@
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Select an Area</property>
<object class="GtkLabel" id="area_grab_label">
<property name="label" translatable="yes">label</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
@ -274,8 +275,8 @@
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Select Screen</property>
<object class="GtkLabel" id="screen_grab_label">
<property name="label" translatable="yes">label</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
@ -308,8 +309,8 @@
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Select a Window</property>
<object class="GtkLabel" id="window_grab_label">
<property name="label" translatable="yes">label</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
@ -424,9 +425,8 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="max-width-chars">2</property>
<property name="text" translatable="yes">60</property>
<property name="text" translatable="yes">number</property>
<property name="adjustment">adjustment2</property>
<property name="value">60</property>
</object>
</child>
<child>
@ -446,7 +446,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="max-width-chars">2</property>
<property name="text" translatable="yes">0</property>
<property name="text" translatable="yes">number</property>
<property name="adjustment">adjustment1</property>
<property name="climb-rate">1</property>
<layout>
@ -562,10 +562,10 @@
</object>
</child>
<child>
<object class="GtkLabel">
<object class="GtkLabel" id="record_label">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Record</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
</object>
@ -592,10 +592,10 @@
</object>
</child>
<child>
<object class="GtkLabel">
<object class="GtkLabel" id="stop_label">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Stop Recording</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
</object>

87
locales/ar_YE.ftl Normal file
View File

@ -0,0 +1,87 @@
blue-recorder = المسجّل الأزرق
area-chooser = محدد المنطقة
wayland-msg = غير مدعوم في وايلاند
default-command = تشغيل أمر عند الانتهاء:
file-name = اسم الملفّ الافتراضي:
mp4-format = MP4 (MPEG-4 Part 14)
mkv-format = MKV (Matroska multimedia container format)
webm-format = WEBM (Open Web Media File)
gif-format = GIF (Graphics Interchange Format)
avi-format = AVI (Audio Video Interleaved)
wmv-format = WMV (Windows Media Video)
nut-format = NUT (NUT Recording Format)
audio-input = مصدر صوت PulseAudio الافتراضي
record-video = تسجيل الصوت
record-audio = تسجيل الصوت
show-mouse = إظهار الفأرة
follow-mouse = متابعة الفأرة
auto-hide = إخفاء تلقائي
run-command = تشغيل أمر عند الانتهاء:
frames = الإطارات:
delay = التأخير:
audio-source = مدخل الصوت:
about = عن البرنامج
dialog-comment = مسجّل شاشة بسيط لسطح مكتب لينكس، يدعم إكس ووايلاند.
translator-credits = translator-credits
already-exist = File already exist. Do you want to overwrite it?
blue-recorder-preferences = Blue Recorder Preferences
file-name-overwritten = File Name (Will be overwritten)..
enter-command = Enter your command here..
select-window = Select a Window
delay-window-label = valuefsf
default-frames = {$value}
default-delay = {$value}
default-folder = Default folder:
default-pipeline = Default pipeline:
record-mouse = Record Mouse
record = سجل
delay-title = Start Recording in…
position-msg = Your area position has been saved!
stop-recording = stop recording
apply = تطبيق
select-area = اختار مساحة
select-screen = ختار شاشة
delay-window-stop = Stop

View File

@ -42,7 +42,9 @@ delay = Delay:
audio-source = Audio Input Source:
about = about
about = About
apply = Apply
dialog-comment = A simple screen recorder for Linux desktop. Supports Wayland & Xorg.
@ -50,6 +52,16 @@ translator-credits = translator-credits
already-exist = File already exist. Do you want to overwrite it?
record = Record
delay-title = Start Recording in…
delay-window-label = {$value}
delay-window-stop = Stop
stop-recording = Stop recording
blue-recorder-preferences = Blue Recorder Preferences
file-name-overwritten = File Name (Will be overwritten)..
@ -60,9 +72,11 @@ select-window = Select a Window
select-area = Select an Area
default-frames = Default frames:
select-screen = Select a Screen
default-delay = Default delay:
default-frames = {$value}
default-delay = {$value}
default-folder = Default folder:
@ -71,5 +85,3 @@ default-pipeline = Default pipeline:
record-mouse = Record Mouse
position-msg = Your area position has been saved!
stop-recording = stop recording

View File

@ -10,7 +10,7 @@ mod utils;
use ffmpeg_interface::Ffmpeg;
use fluent_bundle::bundle::FluentBundle;
use fluent_bundle::FluentResource;
use fluent_bundle::{FluentArgs, FluentResource};
use gtk::glib;
use gtk::prelude::*;
use gtk::{
@ -59,9 +59,9 @@ pub fn build_ui(application: &Application) {
let path = entry.unwrap().path();
path.file_stem().unwrap().to_string_lossy().to_string()
}).collect();
let mut locale = std::env::var("LANG").unwrap_or("en-US".to_string());
let mut locale = std::env::var("LANG").unwrap_or("en_US".to_string());
if !supported_lang.contains(&locale) {
locale = String::from("en-US");
locale = String::from("en_US");
}
let ftl_file = std::fs::read_to_string(
format!("{}/{}.ftl", ftl_path.to_str().unwrap(),locale.split('.').next().unwrap())
@ -75,9 +75,11 @@ pub fn build_ui(application: &Application) {
// Get Objects from UI
let main_window: Window = builder.object("main_window").unwrap();
let area_apply_label: Label = builder.object("area_apply").unwrap();
let area_chooser_window: Window = builder.object("area_chooser_window").unwrap();
let area_grab_button: ToggleButton = builder.object("area_grab_button").unwrap();
let area_grab_icon: Image = builder.object("area_grab_icon").unwrap();
let area_grab_label: Label = builder.object("area_grab_label").unwrap();
let area_set_button: Button = builder.object("area_set_button").unwrap();
let about_button: Button = builder.object("aboutbutton").unwrap();
let about_dialog: AboutDialog = builder.object("about_dialog").unwrap();
@ -89,8 +91,9 @@ pub fn build_ui(application: &Application) {
let delay_label: Label = builder.object("delay_label").unwrap();
let delay_spin: SpinButton = builder.object("delay").unwrap();
let delay_window: Window = builder.object("delay_window").unwrap();
let delay_window_label: Label = builder.object("delay_window_label").unwrap();
let delay_window_button: ToggleButton = builder.object("delay_window_stopbutton").unwrap();
let delay_window_label: Label = builder.object("delay_window_label").unwrap();
let delay_window_title: Label = builder.object("delay_window_title").unwrap();
let filename_entry: Entry = builder.object("filename").unwrap();
let folder_chooser_button: Button = builder.object("folder_chooser").unwrap();
let folder_chooser_image: Image = builder.object("folder_chooser_image").unwrap();
@ -103,13 +106,17 @@ pub fn build_ui(application: &Application) {
let mouse_switch: CheckButton = builder.object("mouseswitch").unwrap();
let play_button: Button = builder.object("playbutton").unwrap();
let record_button: Button = builder.object("recordbutton").unwrap();
let record_label: Label = builder.object("record_label").unwrap();
let record_time_label: Label = builder.object("record_time_label").unwrap();
let screen_grab_button: ToggleButton = builder.object("screen_grab_button").unwrap();
let screen_grab_icon: Image = builder.object("screen_grab_icon").unwrap();
let screen_grab_label: Label = builder.object("screen_grab_label").unwrap();
let stop_button: Button = builder.object("stopbutton").unwrap();
let stop_label: Label = builder.object("stop_label").unwrap();
let video_switch: CheckButton = builder.object("videoswitch").unwrap();
let window_grab_icon: Image = builder.object("window_grab_icon").unwrap();
let window_grab_button: ToggleButton = builder.object("window_grab_button").unwrap();
let window_grab_icon: Image = builder.object("window_grab_icon").unwrap();
let window_grab_label: Label = builder.object("window_grab_label").unwrap();
// --- default properties
// Windows
@ -369,15 +376,6 @@ pub fn build_ui(application: &Application) {
window_grab_icon.set_from_file(Some(&window_icon_path));
}
}
// Labels
command_label.set_label(&bundle.format_pattern(bundle.get_message("run-command").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
frames_label.set_label(&bundle.format_pattern(bundle.get_message("frames").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
delay_label.set_label(&bundle.format_pattern(bundle.get_message("delay").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
audio_source_label.set_label(&bundle.format_pattern(bundle.get_message("audio-source").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
// Spin
frames_spin.set_value(
@ -405,6 +403,24 @@ pub fn build_ui(application: &Application) {
config_management::set("default", "delay", _delay_spin.value().to_string().as_str());
});
// Labels
let mut frames_value = FluentArgs::new();
frames_value.set("value", frames_spin.value());
let mut delay_time_value = FluentArgs::new();
delay_time_value.set("value", delay_spin.value());
command_label.set_label(&bundle.format_pattern(bundle.get_message("run-command").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
frames_label.set_label(&bundle.format_pattern(bundle.get_message("frames").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
frames_spin.set_text(&bundle.format_pattern(bundle.get_message("default-frames").unwrap()
.value().unwrap(), Some(&frames_value), &mut vec![]).to_string());
delay_label.set_label(&bundle.format_pattern(bundle.get_message("delay").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
delay_spin.set_text(&bundle.format_pattern(bundle.get_message("default-delay").unwrap()
.value().unwrap(), Some(&delay_time_value), &mut vec![]).to_string());
audio_source_label.set_label(&bundle.format_pattern(bundle.get_message("audio-source").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
// FileChooser
let folder_chooser_native = FileChooserNative::new(
Some("Select Folder"),
@ -460,12 +476,16 @@ pub fn build_ui(application: &Application) {
let _area_chooser_window = area_chooser_window.clone();
let mut _area_capture = area_capture.clone();
area_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-area").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
area_grab_button.connect_clicked(move |_| {
_area_chooser_window.show();
});
let _area_chooser_window = area_chooser_window.clone();
let mut _area_capture = area_capture.clone();
area_apply_label.set_label(&bundle.format_pattern(bundle.get_message("apply").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
area_set_button.connect_clicked(move |_| {
_area_chooser_window.hide();
});
@ -475,7 +495,8 @@ pub fn build_ui(application: &Application) {
let record_window: Rc<RefCell<bool>> = Rc::new(RefCell::new(false));
let window_grab_button_record_window: Rc<RefCell<bool>> = record_window.clone();
let screen_grab_button_record_window: Rc<RefCell<bool>> = record_window.clone();
screen_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-screen").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
screen_grab_button.connect_clicked(move |_| {
screen_grab_button_record_window.replace(false);
_area_chooser_window.hide();
@ -484,6 +505,8 @@ pub fn build_ui(application: &Application) {
let _area_chooser_window: Window = area_chooser_window.clone();
let mut _area_capture: Rc<RefCell<area_capture::AreaCapture>> = area_capture.clone();
window_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-window").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
window_grab_button.connect_clicked(move |_| {
_area_chooser_window.hide();
if is_wayland() {
@ -535,7 +558,12 @@ pub fn build_ui(application: &Application) {
let _record_button = record_button.clone();
let _record_time_label = record_time_label.clone();
let _stop_button = stop_button.clone();
record_label.set_label(&bundle.format_pattern(bundle.get_message("record").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
delay_window_title.set_label(&bundle.format_pattern(bundle.get_message("delay-title").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
delay_window_button.set_label(&bundle.format_pattern(bundle.get_message("delay-window-stop").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
record_button.connect_clicked(move |_| {
_delay_window_button.set_active(false);
if _delay_spin.value() as u64 > 0 {
@ -576,6 +604,8 @@ pub fn build_ui(application: &Application) {
let mut _ffmpeg_record_interface = ffmpeg_record_interface.clone();
let _play_button = play_button.clone();
let _stop_button = stop_button.clone();
stop_label.set_label(&bundle.format_pattern(bundle.get_message("stop-recording").unwrap()
.value().unwrap(), None, &mut vec![]).to_string());
stop_button.connect_clicked(move |_| {
_record_time_label.set_visible(false);
stop_timer(_record_time_label.clone());

View File

@ -4,7 +4,8 @@ use gtk::glib;
use gtk::{Button, ToggleButton, Label, SpinButton, Window};
use gtk::prelude::*;
pub fn recording_delay(delay_spin: SpinButton, mut delay_time: u64, delay_window: Window, delay_window_button: ToggleButton, delay_window_label: Label, record_button: Button) {
pub fn recording_delay(delay_spin: SpinButton, mut delay_time: u64, delay_window: Window,
delay_window_button: ToggleButton, delay_window_label: Label, record_button: Button) {
// Keep time label alive and update every 1sec
let default_value = delay_time;
let capture_delay_label = move || {
@ -53,7 +54,6 @@ pub fn stop_timer(record_time_label: Label) {
record_time_label.set_text(&current_record_time(stop_time));
}
fn current_delay_time(delay_time: u64) -> String {
let delay = secfmt::from(delay_time);
format!("{:02}:{:02}", delay.minutes, delay.seconds)