mirror of
https://github.com/xlmnxp/blue-recorder.git
synced 2024-11-23 17:13:11 +03:00
add ProgressBar when save file
This commit is contained in:
parent
1cca628280
commit
17d0abb0b6
@ -225,7 +225,7 @@
|
|||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
<property name="image">image3</property>
|
<property name="image">image3</property>
|
||||||
<property name="relief">none</property>
|
<property name="relief">half</property>
|
||||||
<property name="always_show_image">True</property>
|
<property name="always_show_image">True</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extern crate subprocess;
|
extern crate subprocess;
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::{CheckButton, ComboBoxText, Dialog, Entry, FileChooser, ProgressBar, SpinButton, Window};
|
use gtk::{CheckButton, ComboBoxText, Entry, FileChooser, ProgressBar, SpinButton, Window, WindowType, WindowPosition};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
@ -15,28 +15,34 @@ use zvariant::Value;
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ProgressWidget {
|
pub struct ProgressWidget {
|
||||||
pub dialog: Dialog,
|
pub window: Window,
|
||||||
pub progress: ProgressBar,
|
pub progress: ProgressBar,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ProgressWidget {
|
impl ProgressWidget {
|
||||||
pub fn new(window: &Window) -> ProgressWidget {
|
pub fn new(window: &Window) -> ProgressWidget {
|
||||||
ProgressWidget {
|
ProgressWidget {
|
||||||
dialog: Dialog::new(),
|
window: Window::new(WindowType::Toplevel),
|
||||||
progress: ProgressBar::new(),
|
progress: ProgressBar::new(),
|
||||||
}
|
}
|
||||||
.init(&window)
|
.init(&window)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn init(&self, window: &Window) -> ProgressWidget {
|
pub fn init(self, window: &Window) -> ProgressWidget {
|
||||||
self.dialog.set_title("Progress");
|
self.window.set_title("Progress");
|
||||||
self.dialog.set_transient_for(Some(window));
|
self.window.set_transient_for(Some(window));
|
||||||
self.progress.set_fraction(0.0);
|
self.progress.set_fraction(0.0);
|
||||||
self.dialog.get_content_area().add(&self.progress);
|
|
||||||
self.progress.set_show_text(true);
|
self.progress.set_show_text(true);
|
||||||
self.dialog.set_deletable(false);
|
self.progress.set_margin_start(10);
|
||||||
self.dialog.set_modal(true);
|
self.progress.set_margin_top(10);
|
||||||
self.clone()
|
self.progress.set_margin_end(10);
|
||||||
|
self.progress.set_margin_bottom(10);
|
||||||
|
self.window.add(&self.progress);
|
||||||
|
self.window.set_deletable(false);
|
||||||
|
self.window.set_position(WindowPosition::CenterOnParent);
|
||||||
|
self.window.set_modal(true);
|
||||||
|
self.window.resize(200, 50);
|
||||||
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_progress(&self, title: String, value: i32, max: i32) {
|
pub fn set_progress(&self, title: String, value: i32, max: i32) {
|
||||||
@ -47,12 +53,12 @@ impl ProgressWidget {
|
|||||||
|
|
||||||
pub fn show(&self) {
|
pub fn show(&self) {
|
||||||
self.progress.set_fraction(0.0);
|
self.progress.set_fraction(0.0);
|
||||||
self.dialog.show_all();
|
self.window.show();
|
||||||
self.dialog.show();
|
self.window.show_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn hide(&self) {
|
pub fn hide(&self) {
|
||||||
self.dialog.hide();
|
self.window.hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,6 +126,7 @@ impl Ffmpeg {
|
|||||||
.display()
|
.display()
|
||||||
.to_string(),
|
.to_string(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if is_wayland() {
|
if is_wayland() {
|
||||||
if self.record_video.get_active() {
|
if self.record_video.get_active() {
|
||||||
if self.unbound.is_some() {
|
if self.unbound.is_some() {
|
||||||
@ -153,7 +160,8 @@ impl Ffmpeg {
|
|||||||
ffmpeg_command.arg("-y");
|
ffmpeg_command.arg("-y");
|
||||||
self.process_id = Some(ffmpeg_command.spawn().unwrap().id());
|
self.process_id = Some(ffmpeg_command.spawn().unwrap().id());
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
|
return self.process_id.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut ffmpeg_command: Command = Command::new("ffmpeg");
|
let mut ffmpeg_command: Command = Command::new("ffmpeg");
|
||||||
@ -266,7 +274,7 @@ impl Ffmpeg {
|
|||||||
.arg(format!("{}.temp", self.saved_filename.as_ref().unwrap()));
|
.arg(format!("{}.temp", self.saved_filename.as_ref().unwrap()));
|
||||||
ffmpeg_convert_command.arg(format!(
|
ffmpeg_convert_command.arg(format!(
|
||||||
"{}{}",
|
"{}{}",
|
||||||
self.saved_filename.as_ref().unwrap(),
|
self.saved_filename.as_ref().unwrap_or(&String::new()),
|
||||||
if is_audio_record {
|
if is_audio_record {
|
||||||
format!(
|
format!(
|
||||||
".temp.without.audio.{}",
|
".temp.without.audio.{}",
|
||||||
|
Loading…
Reference in New Issue
Block a user