mirror of
https://github.com/xlmnxp/blue-recorder.git
synced 2024-11-23 09:03:10 +03:00
fix draw_mouse
This commit is contained in:
parent
5fb12a8776
commit
b4e6b6393e
@ -258,7 +258,6 @@
|
||||
<property name="margin-end">3</property>
|
||||
<property name="margin-top">3</property>
|
||||
<property name="margin-bottom">3</property>
|
||||
<property name="active">True</property>
|
||||
<property name="has-tooltip">True</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
|
@ -87,7 +87,7 @@ file-name = اسم الملفّ الافتراضي:
|
||||
file-name-overwritten = اسم الملف (سيُكتَبُ عليه)
|
||||
|
||||
# Follow mouse label
|
||||
follow-mouse = إبراز مؤشر الفأرة
|
||||
follow-mouse = Follow Mouse
|
||||
|
||||
# Frames label
|
||||
frames = الإطارات:
|
||||
@ -103,16 +103,16 @@ license =
|
||||
لمزيد تفاصيل راجع رخصة جنو العمومية. إن لم تكن حصلت على نسخة من رخصة جنو العمومية مع المسجل الأزرق فانظر { license-website }.
|
||||
|
||||
# Bitrate label
|
||||
bitrate = معدل البت:
|
||||
bitrate = Bitrate:
|
||||
|
||||
# Recording button
|
||||
record = سجل
|
||||
|
||||
# Record audio label
|
||||
record-audio = تسجيل صوت اللاقط
|
||||
record-audio = Record Mic
|
||||
|
||||
# Record speaker label
|
||||
record-speaker = تسجيل صوت المكبر
|
||||
record-speaker = Record Speaker
|
||||
|
||||
# Record video label
|
||||
record-video = تسجيل الصورة
|
||||
@ -138,18 +138,18 @@ website = الموقع
|
||||
about-tooltip = ما يُستَحسَنُ أن تعلمه عن المسجل الأزرق
|
||||
area-tooltip = يحدد المنطقة المُراد تسجيلها
|
||||
audio-source-tooltip = لاختيار مدخل الصوت
|
||||
audio-tooltip = يسجل باستخدام مدخل الصوت
|
||||
audio-tooltip = Mic audio recording
|
||||
delay-tooltip = مُهلة قبل بدء التسجيل
|
||||
folder-tooltip = لاختيار مكان التخزين
|
||||
follow-mouse-tooltip = يميز مؤشر الفأرة عند التسجيل
|
||||
follow-mouse-tooltip = Make the grabbed area follow the mouse
|
||||
format-tooltip = لاختيار صيغة الخَرج
|
||||
frames-tooltip = عدد الإطارات في الثانية
|
||||
hide-tooltip = لإخفاء نافذة المسجل الأزرق عند بدء التسجيل
|
||||
mouse-tooltip = يظهر مؤشر الفأرة عند التسجيل
|
||||
bitrate-tooltip = ضبط معدل البت بوحدة KB
|
||||
bitrate-tooltip = Set video bitrate in KB/s
|
||||
record-tooltip = يبدأ تسجيل الشاشة
|
||||
screen-tooltip = يحدد الشاشة ليسجلها
|
||||
speaker-tooltip = يسجل باستخدام مخرج الصوت
|
||||
speaker-tooltip = Speakr sound recording
|
||||
stop-tooltip = وقف تسجيل الشاشة
|
||||
video-tooltip = يسجل الشاشة
|
||||
wayland-tooltip = غير مدعوم في وايلاند
|
||||
|
@ -87,7 +87,7 @@ file-name = اسم الملفّ الافتراضي:
|
||||
file-name-overwritten = اسم الملف (سيُكتَبُ عليه)
|
||||
|
||||
# Follow mouse label
|
||||
follow-mouse = إبراز مؤشر الفأرة
|
||||
follow-mouse = Follow Mouse
|
||||
|
||||
# Frames label
|
||||
frames = الإطارات:
|
||||
@ -103,16 +103,16 @@ license =
|
||||
لمزيد تفاصيل راجع رخصة جنو العمومية. إن لم تكن حصلت على نسخة من رخصة جنو العمومية مع المسجل الأزرق فانظر { license-website }.
|
||||
|
||||
# Bitrate label
|
||||
bitrate = معدل البت:
|
||||
bitrate = Bitrate:
|
||||
|
||||
# Recording button
|
||||
record = سجل
|
||||
|
||||
# Record audio label
|
||||
record-audio = تسجيل صوت اللاقط
|
||||
record-audio = Record Mic
|
||||
|
||||
# Record speaker label
|
||||
record-speaker = تسجيل صوت المكبر
|
||||
record-speaker = Record Speaker
|
||||
|
||||
# Record video label
|
||||
record-video = تسجيل الصورة
|
||||
@ -138,18 +138,18 @@ website = الموقع
|
||||
about-tooltip = ما يُستَحسَنُ أن تعلمه عن المسجل الأزرق
|
||||
area-tooltip = يحدد المنطقة المُراد تسجيلها
|
||||
audio-source-tooltip = لاختيار مدخل الصوت
|
||||
audio-tooltip = يسجل باستخدام مدخل الصوت
|
||||
audio-tooltip = Mic audio recording
|
||||
delay-tooltip = مُهلة قبل بدء التسجيل
|
||||
folder-tooltip = لاختيار مكان التخزين
|
||||
follow-mouse-tooltip = يميز مؤشر الفأرة عند التسجيل
|
||||
follow-mouse-tooltip = Make the grabbed area follow the mouse
|
||||
format-tooltip = لاختيار صيغة الخَرج
|
||||
frames-tooltip = عدد الإطارات في الثانية
|
||||
hide-tooltip = لإخفاء نافذة المسجل الأزرق عند بدء التسجيل
|
||||
mouse-tooltip = يظهر مؤشر الفأرة عند التسجيل
|
||||
bitrate-tooltip = ضبط معدل البت بوحدة KB
|
||||
bitrate-tooltip = Set video bitrate in KB/s
|
||||
record-tooltip = يبدأ تسجيل الشاشة
|
||||
screen-tooltip = يحدد الشاشة ليسجلها
|
||||
speaker-tooltip = يسجل باستخدام مخرج الصوت
|
||||
speaker-tooltip = Speakr sound recording
|
||||
stop-tooltip = وقف تسجيل الشاشة
|
||||
video-tooltip = يسجل الشاشة
|
||||
wayland-tooltip = غير مدعوم في وايلاند
|
||||
|
@ -138,12 +138,12 @@ audio-source-tooltip = Select audio source
|
||||
audio-tooltip = Mic audio recording
|
||||
delay-tooltip = Delay time before starting record
|
||||
folder-tooltip = Select storage location
|
||||
follow-mouse-tooltip = Highlight mouse
|
||||
follow-mouse-tooltip = Make the grabbed area follow the mouse
|
||||
format-tooltip = Select file format
|
||||
frames-tooltip = Frames rate
|
||||
hide-tooltip = Hide window when start recording
|
||||
mouse-tooltip = Mouse appears in video recording
|
||||
bitrate-tooltip = Set video bitrate in KB
|
||||
bitrate-tooltip = Set video bitrate in KB/s
|
||||
record-tooltip = Start screen record
|
||||
screen-tooltip = Select screen to record
|
||||
speaker-tooltip = Speakr sound recording
|
||||
|
@ -138,12 +138,12 @@ audio-source-tooltip = Select audio source
|
||||
audio-tooltip = Mic audio recording
|
||||
delay-tooltip = Delay time before starting record
|
||||
folder-tooltip = Select storage location
|
||||
follow-mouse-tooltip = Highlight mouse
|
||||
follow-mouse-tooltip = Make the grabbed area follow the mouse
|
||||
format-tooltip = Select file format
|
||||
frames-tooltip = Frames rate
|
||||
hide-tooltip = Hide window when start recording
|
||||
mouse-tooltip = Mouse appears in video recording
|
||||
bitrate-tooltip = Set video bitrate in KB
|
||||
bitrate-tooltip = Set video bitrate in KB/s
|
||||
record-tooltip = Start screen record
|
||||
screen-tooltip = Select screen to record
|
||||
speaker-tooltip = Speakr sound recording
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -59,6 +59,7 @@ fn default() {
|
||||
set("default", "followmousecheck", "0");
|
||||
set("default", "hidecheck", "0");
|
||||
set("default", "speakercheck", "0");
|
||||
set("default", "mode", "screen");
|
||||
}
|
||||
|
||||
fn merge_previous_version() -> Option<PathBuf> {
|
||||
|
@ -1,4 +1,5 @@
|
||||
extern crate subprocess;
|
||||
use crate::config_management;
|
||||
use crate::utils::{is_snap, is_wayland};
|
||||
use crate::wayland_record::{CursorModeTypes, RecordTypes, WaylandRecorder};
|
||||
use chrono::prelude::*;
|
||||
@ -85,34 +86,46 @@ impl Ffmpeg {
|
||||
}
|
||||
|
||||
if self.record_video.is_active() && !is_wayland() {
|
||||
let mut ffmpeg_command = FfmpegCommand::new();
|
||||
|
||||
// if show mouse switch is enabled, draw the mouse to video
|
||||
let draw_mouse = if self.record_mouse.is_active() {
|
||||
"-draw_mouse 1"
|
||||
} else {
|
||||
"-draw_mouse 0"
|
||||
};
|
||||
|
||||
// record video with specified width and hight
|
||||
ffmpeg_command.size(width.into(), height.into())
|
||||
.format("x11grab").args(draw_mouse.split(' '))
|
||||
.input(format!("{}+{},{}", std::env::var("DISPLAY").unwrap_or_else(|_| ":0".to_string())
|
||||
let mode = config_management::get("default", "mode");
|
||||
let format = "x11grab";
|
||||
let display = format!("{}+{},{}",
|
||||
std::env::var("DISPLAY").unwrap_or_else(|_| ":0".to_string())
|
||||
.as_str(),
|
||||
x,
|
||||
y
|
||||
));
|
||||
);
|
||||
let mut ffmpeg_command = FfmpegCommand::new();
|
||||
|
||||
// Disable frame rate if value is zero
|
||||
if self.record_frames.value() > 0.0 {
|
||||
ffmpeg_command.rate(self.record_frames.value() as f32);
|
||||
// record video with specified width and hight
|
||||
if self.follow_mouse.is_active() && mode.as_str() == "screen" {
|
||||
let width = width as f32 * 0.95;
|
||||
let height = height as f32 * 0.95;
|
||||
ffmpeg_command.size(width as u32, height as u32);
|
||||
} else {
|
||||
ffmpeg_command.size(width.into(), height.into());
|
||||
}
|
||||
|
||||
// if show mouse switch is enabled, draw the mouse to video
|
||||
if self.record_mouse.is_active() {
|
||||
ffmpeg_command.args(["-draw_mouse", "1"]);
|
||||
} else {
|
||||
ffmpeg_command.args(["-draw_mouse", "0"]);
|
||||
};
|
||||
|
||||
// if follow mouse switch is enabled, follow the mouse
|
||||
if self.follow_mouse.is_active() {
|
||||
ffmpeg_command.args(["-follow_mouse", "centered"]);
|
||||
}
|
||||
|
||||
// Disable frame rate if value is zero
|
||||
if self.record_frames.value() > 0.0 {
|
||||
ffmpeg_command.args(["-framerate", &self.record_frames.value().to_string()]);
|
||||
}
|
||||
|
||||
// Video format && input
|
||||
ffmpeg_command.format(format)
|
||||
.input(display);
|
||||
|
||||
// Disable bitrate if value is zero
|
||||
if self.record_bitrate.value() > 0.0 {
|
||||
ffmpeg_command.args([
|
||||
|
20
src/main.rs
20
src/main.rs
@ -140,13 +140,16 @@ pub fn build_ui(application: &Application) {
|
||||
stop_button.hide();
|
||||
play_button.hide();
|
||||
|
||||
// Toggle button
|
||||
config_management::set("default", "mode", "screen");
|
||||
screen_grab_button.set_active(true);
|
||||
|
||||
// Comboboxs tooltip
|
||||
audio_source_combobox.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("audio-source-tooltip").unwrap()
|
||||
.value().unwrap(), None, &mut vec![]).to_string()));
|
||||
format_chooser_combobox.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("format-tooltip").unwrap()
|
||||
.value().unwrap(), None, &mut vec![]).to_string()));
|
||||
|
||||
// Hide window grab button in Wayland
|
||||
area_grab_button.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("area-tooltip").unwrap()
|
||||
.value().unwrap(), None, &mut vec![]).to_string()));
|
||||
// Temporary solution
|
||||
@ -156,6 +159,7 @@ pub fn build_ui(application: &Application) {
|
||||
//area_grab_button.set_can_target(false);
|
||||
//area_grab_button.add_css_class("disabled");
|
||||
area_grab_button.set_sensitive(false);
|
||||
// Hide window grab button in Wayland
|
||||
area_grab_button.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("wayland-tooltip").unwrap()
|
||||
.value().unwrap(), None, &mut vec![]).to_string()));
|
||||
}
|
||||
@ -241,23 +245,19 @@ pub fn build_ui(application: &Application) {
|
||||
config_management::set_bool("default", "videocheck", switch.is_active());
|
||||
if switch.is_active() {
|
||||
_mouse_switch.set_sensitive(true);
|
||||
_follow_mouse_switch.set_sensitive(true);
|
||||
} else {
|
||||
_mouse_switch.set_sensitive(false);
|
||||
_follow_mouse_switch.set_sensitive(false);
|
||||
_audio_switch.set_active(true);
|
||||
_audio_switch.set_sensitive(true);
|
||||
_mouse_switch.set_active(false);
|
||||
_follow_mouse_switch.set_active(false);
|
||||
}
|
||||
});
|
||||
let _follow_mouse_switch = follow_mouse_switch.clone();
|
||||
mouse_switch.connect_toggled(move |switch: &CheckButton| {
|
||||
config_management::set_bool("default", "mousecheck", switch.is_active());
|
||||
if switch.is_active() {
|
||||
_follow_mouse_switch.set_sensitive(true);
|
||||
} else {
|
||||
_follow_mouse_switch.set_active(false);
|
||||
_follow_mouse_switch.set_sensitive(false);
|
||||
}
|
||||
});
|
||||
let _mouse_switch = mouse_switch.clone();
|
||||
audio_switch.connect_toggled(move |switch: &CheckButton| {
|
||||
@ -548,6 +548,7 @@ pub fn build_ui(application: &Application) {
|
||||
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 |_| {
|
||||
config_management::set("default", "mode", "area");
|
||||
_area_chooser_window.show();
|
||||
});
|
||||
|
||||
@ -556,6 +557,9 @@ pub fn build_ui(application: &Application) {
|
||||
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_capture
|
||||
.borrow_mut()
|
||||
.get_window_by_name(_area_chooser_window.title().unwrap().as_str());
|
||||
_area_chooser_window.hide();
|
||||
});
|
||||
|
||||
@ -569,6 +573,7 @@ pub fn build_ui(application: &Application) {
|
||||
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 |_| {
|
||||
config_management::set("default", "mode", "screen");
|
||||
screen_grab_button_record_window.replace(false);
|
||||
_area_chooser_window.hide();
|
||||
_area_capture.borrow_mut().reset();
|
||||
@ -581,6 +586,7 @@ pub fn build_ui(application: &Application) {
|
||||
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 |_| {
|
||||
config_management::set("default", "mode", "window");
|
||||
_area_chooser_window.hide();
|
||||
if is_wayland() {
|
||||
window_grab_button_record_window.replace(true);
|
||||
|
Loading…
Reference in New Issue
Block a user