diff --git a/Cargo.lock b/Cargo.lock index cd2fb45..f6586fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,7 +106,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -285,7 +285,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -347,7 +347,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -421,7 +421,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -571,9 +571,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "jobserver", "libc", @@ -984,7 +984,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -1077,7 +1077,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -1259,7 +1259,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -1367,7 +1367,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -2123,7 +2123,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -2213,7 +2213,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -2689,7 +2689,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -2739,7 +2739,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -2823,7 +2823,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3083,7 +3083,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3270,9 +3270,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.11" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe060fe50f524be480214aba758c71f99f90ee8c83c5a36b5e9e1d568eb4eb3" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64", "bytes", @@ -3538,7 +3538,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3561,7 +3561,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3739,9 +3739,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.93" +version = "2.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +checksum = "987bc0be1cdea8b10216bd06e2ca407d40b9543468fafd3ddfb02f36e77f71f3" dependencies = [ "proc-macro2", "quote", @@ -3765,7 +3765,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3825,12 +3825,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if 1.0.0", "fastrand 2.3.0", + "getrandom", "once_cell", "rustix 0.38.42", "windows-sys 0.59.0", @@ -3853,7 +3854,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -3976,7 +3977,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "winnow 0.6.21", ] [[package]] @@ -4025,7 +4026,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -4221,7 +4222,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "wasm-bindgen-shared", ] @@ -4256,7 +4257,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4497,7 +4498,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -4508,7 +4509,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -4519,7 +4520,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -4530,7 +4531,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -4797,9 +4798,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "e6f5bb5257f2407a5425c6e749bfd9692192a73e70a6060516ac04f889087d68" dependencies = [ "memchr", ] @@ -4901,7 +4902,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "synstructure", ] @@ -4987,7 +4988,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "zvariant_utils", ] @@ -5020,7 +5021,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -5040,7 +5041,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "synstructure", ] @@ -5069,7 +5070,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] [[package]] @@ -5144,7 +5145,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", "zvariant_utils", ] @@ -5156,5 +5157,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.94", ] diff --git a/gui/src/timer.rs b/gui/src/timer.rs index 7cddab2..d4277c1 100644 --- a/gui/src/timer.rs +++ b/gui/src/timer.rs @@ -5,7 +5,7 @@ use adw::gtk::glib; use adw::gtk::prelude::*; use adw::Window; -pub fn recording_delay(delay_spin: SpinButton, mut delay_time: u64, delay_window: Window, delay_window_button: ToggleButton, +pub fn recording_delay(delay_spin: SpinButton, mut delay_time: u16, 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; @@ -55,12 +55,12 @@ pub fn stop_timer(record_time_label: Label) { record_time_label.set_text(¤t_record_time(stop_time)); } -fn current_delay_time(delay_time: u64) -> String { - let delay = secfmt::from(delay_time); +fn current_delay_time(delay_time: u16) -> String { + let delay = secfmt::from(delay_time as u64); format!("{:02}", delay.seconds) } -fn current_record_time(start_time: u64) -> String { - let start = secfmt::from(start_time); +fn current_record_time(start_time: u16) -> String { + let start = secfmt::from(start_time as u64); format!("{:02}:{:02}:{:02}", start.hours, start.minutes, start.seconds) } diff --git a/gui/src/ui.rs b/gui/src/ui.rs index 4d4d410..ea54eb4 100644 --- a/gui/src/ui.rs +++ b/gui/src/ui.rs @@ -782,11 +782,14 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag })); // Record button - let _audio_input_switch = audio_input_switch.clone(); - //let bundle_msg = get_bundle("already-exist", None); - let _delay_spin = delay_spin.clone(); delay_window_button.set_label(&get_bundle("delay-window-stop", None)); delay_window_title.set_label(&get_bundle("delay-title", None)); + record_button.set_tooltip_text(Some(&get_bundle("record-tooltip", None))); + record_label.set_label(&get_bundle("record", None)); + let _audio_input_switch = audio_input_switch.clone(); + let _audio_output_switch = audio_output_switch.clone(); + //let bundle_msg = get_bundle("already-exist", None); + let _delay_spin = delay_spin.clone(); let _delay_window = delay_window.clone(); let _delay_window_button = delay_window_button.clone(); let _error_dialog = error_dialog.clone(); @@ -797,11 +800,8 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag let _play_button = play_button.clone(); let _record_button = record_button.clone(); let _record_time_label = record_time_label.clone(); - let _audio_output_switch = audio_output_switch.clone(); let _stop_button = stop_button.clone(); let _video_switch = video_switch.clone(); - record_button.set_tooltip_text(Some(&get_bundle("record-tooltip", None))); - record_label.set_label(&get_bundle("record", None)); //let wayland_record = main_context.block_on(WaylandRecorder::new()); record_button.connect_clicked(move |_| { if !_audio_input_switch.is_active() && @@ -810,194 +810,95 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag { // Do nothing } else { - let file_name = _ffmpeg_record_interface.borrow_mut().filename.clone(); - let is_file_already_exists = Path::new(&file_name).try_exists().is_ok(); - if is_file_already_exists { - let message_dialog = MessageDialog::new( - Some(&_main_window), - adw::gtk::DialogFlags::all(), - adw::gtk::MessageType::Warning, - adw::gtk::ButtonsType::YesNo, - &&get_bundle("already-exist", None), + _delay_window_button.set_active(false); + if _delay_spin.value() as u16 > 0 { + recording_delay( + _delay_spin.clone(), + _delay_spin.value() as u16, + delay_window.clone(), + _delay_window_button.clone(), + delay_window_label.clone(), + _record_button.clone(), ); - let main_context = glib::MainContext::default(); - let answer = main_context.block_on(message_dialog.run_future()); - message_dialog.close(); - if answer != adw::gtk::ResponseType::Yes { + } else if _delay_spin.value() as u16 == 0 { + let file_name = _ffmpeg_record_interface.borrow_mut().filename.clone(); + if !is_overwrite(&file_name, _main_window.clone()) { // Do nothing } else { - _delay_window_button.set_active(false); - if _delay_spin.value() as u64 > 0 { - recording_delay( - _delay_spin.clone(), - _delay_spin.value() as u64, - delay_window.clone(), - _delay_window_button.clone(), - delay_window_label.clone(), - _record_button.clone(), - ); - } else if _delay_spin.value() as u64 == 0 { - let _area_capture = area_capture.borrow_mut(); - let start_video_record = _ffmpeg_record_interface.borrow_mut().start_video( - _area_capture.x, - _area_capture.y, - _area_capture.width, - _area_capture.height, - mode, - ); - _audio_input_switch.set_sensitive(false); - _audio_output_switch.set_sensitive(false); - _video_switch.set_sensitive(false); - start_timer(record_time_label.clone()); - record_time_label.set_visible(true); - if hide_switch.is_active() { - _main_window.minimize(); - } - _play_button.hide(); - _record_button.hide(); - _stop_button.show(); - if _audio_input_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_input_audio() { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _audio_output_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_output_audio() { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _video_switch.is_active() { - match start_video_record { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } + let _area_capture = area_capture.borrow_mut(); + let start_video_record = _ffmpeg_record_interface.borrow_mut().start_video( + _area_capture.x, + _area_capture.y, + _area_capture.width, + _area_capture.height, + mode, + ); + _audio_input_switch.set_sensitive(false); + _audio_output_switch.set_sensitive(false); + _video_switch.set_sensitive(false); + start_timer(record_time_label.clone()); + record_time_label.set_visible(true); + if hide_switch.is_active() { + _main_window.minimize(); + } + _play_button.hide(); + _record_button.hide(); + _stop_button.show(); + if _audio_input_switch.is_active() { + match _ffmpeg_record_interface.borrow_mut().start_input_audio() { + Ok(_) => { + // Do nothing + }, + Err(error) => { + _audio_input_switch.set_sensitive(true); + _audio_output_switch.set_sensitive(true); + _video_switch.set_sensitive(true); + _record_button.show(); + _stop_button.hide(); + let text_buffer = TextBuffer::new(None); + text_buffer.set_text(&format!("{}", error)); + _error_message.set_buffer(Some(&text_buffer)); + _error_dialog.show(); + }, } } - } else { - _delay_window_button.set_active(false); - if _delay_spin.value() as u64 > 0 { - recording_delay( - _delay_spin.clone(), - _delay_spin.value() as u64, - delay_window.clone(), - _delay_window_button.clone(), - delay_window_label.clone(), - _record_button.clone(), - ); - } else if _delay_spin.value() as u64 == 0 { - let _area_capture = area_capture.borrow_mut(); - let start_video_record = _ffmpeg_record_interface.borrow_mut().start_video( - _area_capture.x, - _area_capture.y, - _area_capture.width, - _area_capture.height, - mode, - ); - _audio_input_switch.set_sensitive(false); - _audio_output_switch.set_sensitive(false); - _video_switch.set_sensitive(false); - start_timer(record_time_label.clone()); - record_time_label.set_visible(true); - if hide_switch.is_active() { - _main_window.minimize(); + if _audio_output_switch.is_active() { + match _ffmpeg_record_interface.borrow_mut().start_output_audio() { + Ok(_) => { + // Do nothing + }, + Err(error) => { + _audio_input_switch.set_sensitive(true); + _audio_output_switch.set_sensitive(true); + _video_switch.set_sensitive(true); + _record_button.show(); + _stop_button.hide(); + let text_buffer = TextBuffer::new(None); + text_buffer.set_text(&format!("{}", error)); + _error_message.set_buffer(Some(&text_buffer)); + _error_dialog.show(); + }, } - _play_button.hide(); - _record_button.hide(); - _stop_button.show(); - if _audio_input_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_input_audio() { - Ok(_) => { - // Do nothing + } + if _video_switch.is_active() { + match start_video_record { + Ok(_) => { + // Do nothing }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _audio_output_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_output_audio() { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _video_switch.is_active() { - match start_video_record { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } + Err(error) => { + _audio_input_switch.set_sensitive(true); + _audio_output_switch.set_sensitive(true); + _video_switch.set_sensitive(true); + _record_button.show(); + _stop_button.hide(); + let text_buffer = TextBuffer::new(None); + text_buffer.set_text(&format!("{}", error)); + _error_message.set_buffer(Some(&text_buffer)); + _error_dialog.show(); + }, } } + } } } }); @@ -1056,7 +957,7 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag match _ffmpeg_record_interface.borrow_mut().stop_video() { Ok(_) => { // Do nothing - }, + }, Err(error) => { _audio_input_switch.set_sensitive(true); _audio_output_switch.set_sensitive(true); @@ -1210,89 +1111,28 @@ fn build_ui(application: &Application, error_dialog: MessageDialog, error_messag Ok(()) } -/*fn record() { - _delay_window_button.set_active(false); - if _delay_spin.value() as u64 > 0 { - recording_delay( - _delay_spin.clone(), - _delay_spin.value() as u64, - delay_window.clone(), - _delay_window_button.clone(), - delay_window_label.clone(), - _record_button.clone(), - ); - } else if _delay_spin.value() as u64 == 0 { - let _area_capture = area_capture.borrow_mut(); - let start_video_record = _ffmpeg_record_interface.borrow_mut().start_video( - _area_capture.x, - _area_capture.y, - _area_capture.width, - _area_capture.height, - mode, - ); - _audio_input_switch.set_sensitive(false); - _audio_output_switch.set_sensitive(false); - _video_switch.set_sensitive(false); - start_timer(record_time_label.clone()); - record_time_label.set_visible(true); - if hide_switch.is_active() { - _main_window.minimize(); - } - _play_button.hide(); - _record_button.hide(); - _stop_button.show(); - if _audio_input_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_input_audio() { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _audio_output_switch.is_active() { - match _ffmpeg_record_interface.borrow_mut().start_output_audio() { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } - } - if _video_switch.is_active() { - match start_video_record { - Ok(_) => { - // Do nothing - }, - Err(error) => { - _audio_input_switch.set_sensitive(true); - _audio_output_switch.set_sensitive(true); - _video_switch.set_sensitive(true); - _record_button.show(); - _stop_button.hide(); - let text_buffer = TextBuffer::new(None); - text_buffer.set_text(&format!("{}", error)); - _error_message.set_buffer(Some(&text_buffer)); - _error_dialog.show(); - }, - } +// Overwrite file if exists or not +fn is_overwrite(filename: &str, window: Window) -> bool { + let is_file_already_exists = Path::new(filename).try_exists().is_ok(); + if is_file_already_exists { + let message_dialog = adw::gtk::MessageDialog::new( + Some(&window), + adw::gtk::DialogFlags::all(), + adw::gtk::MessageType::Warning, + adw::gtk::ButtonsType::YesNo, + &&get_bundle("already-exist", None), + ); -}*/ + let main_context = glib::MainContext::default(); + let answer = main_context.block_on(message_dialog.run_future()); + message_dialog.close(); + + if answer != adw::gtk::ResponseType::Yes { + return false; + } else { + return true; + } + } else { + return true; + } +}