Gui Fix
This commit is contained in:
parent
32f7a172f7
commit
755e5e6a74
|
@ -259,10 +259,25 @@ impl SameMusic {
|
|||
self.directories.set_included_directory(included_directory, &mut self.text_messages);
|
||||
}
|
||||
|
||||
pub fn set_maximum_difference(&mut self, maximum_difference: f64) {
|
||||
self.maximum_difference = maximum_difference;
|
||||
}
|
||||
pub fn set_minimum_segment_duration(&mut self, minimum_segment_duration: f32) {
|
||||
self.minimum_segment_duration = minimum_segment_duration;
|
||||
}
|
||||
|
||||
pub fn set_reference_directory(&mut self, reference_directory: Vec<PathBuf>) {
|
||||
self.directories.set_reference_directory(reference_directory);
|
||||
}
|
||||
|
||||
pub fn set_check_type(&mut self, check_type: CheckingMethod) {
|
||||
assert!([CheckingMethod::AudioTags, CheckingMethod::AudioContent].contains(&check_type));
|
||||
self.check_type = check_type
|
||||
}
|
||||
pub fn get_check_type(&self) -> CheckingMethod {
|
||||
self.check_type
|
||||
}
|
||||
|
||||
pub fn set_excluded_directory(&mut self, excluded_directory: Vec<PathBuf>) {
|
||||
self.directories.set_excluded_directory(excluded_directory, &mut self.text_messages);
|
||||
}
|
||||
|
|
|
@ -16,6 +16,8 @@ music_bitrate_checkbox = Bitrate
|
|||
music_genre_checkbox = Genre
|
||||
music_length_checkbox = Length
|
||||
music_comparison_checkbox = Approximate Comparison
|
||||
music_checking_by_tags = Tags
|
||||
music_checking_by_content = Content
|
||||
|
||||
music_comparison_checkbox_tooltip =
|
||||
It searches for similar music files using AI, which uses machine learning to remove parentheses from a phrase. For example, with this option enabled, the files in question will be considered duplicates:
|
||||
|
|
|
@ -550,7 +550,7 @@ fn computer_same_music(
|
|||
} else {
|
||||
let vector = mf.get_duplicated_music_entries();
|
||||
|
||||
let text: &str = "-----";
|
||||
let text: &str = if mf.get_check_type() == CheckingMethod::AudioTags { "-----" } else { "" };
|
||||
|
||||
for vec_file_entry in vector {
|
||||
// Sort
|
||||
|
|
|
@ -12,7 +12,7 @@ use gtk4::Grid;
|
|||
use czkawka_core::bad_extensions::BadExtensions;
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::broken_files::{BrokenFiles, CheckedTypes};
|
||||
use czkawka_core::common_dir_traversal::ProgressData;
|
||||
use czkawka_core::common_dir_traversal::{CheckingMethod, ProgressData};
|
||||
use czkawka_core::duplicate::DuplicateFinder;
|
||||
use czkawka_core::empty_files::EmptyFiles;
|
||||
use czkawka_core::empty_folder::EmptyFolder;
|
||||
|
@ -24,8 +24,8 @@ use czkawka_core::temporary::Temporary;
|
|||
|
||||
use crate::gui_structs::gui_data::GuiData;
|
||||
use crate::help_combo_box::{
|
||||
BIG_FILES_CHECK_METHOD_COMBO_BOX, DUPLICATES_CHECK_METHOD_COMBO_BOX, DUPLICATES_HASH_TYPE_COMBO_BOX, IMAGES_HASH_SIZE_COMBO_BOX, IMAGES_HASH_TYPE_COMBO_BOX,
|
||||
IMAGES_RESIZE_ALGORITHM_COMBO_BOX,
|
||||
AUDIO_TYPE_CHECK_METHOD_COMBO_BOX, BIG_FILES_CHECK_METHOD_COMBO_BOX, DUPLICATES_CHECK_METHOD_COMBO_BOX, DUPLICATES_HASH_TYPE_COMBO_BOX, IMAGES_HASH_SIZE_COMBO_BOX,
|
||||
IMAGES_HASH_TYPE_COMBO_BOX, IMAGES_RESIZE_ALGORITHM_COMBO_BOX,
|
||||
};
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
|
@ -479,7 +479,10 @@ fn same_music_search(
|
|||
let check_button_music_length: gtk4::CheckButton = gui_data.main_notebook.check_button_music_length.clone();
|
||||
let check_button_music_bitrate: gtk4::CheckButton = gui_data.main_notebook.check_button_music_bitrate.clone();
|
||||
let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
|
||||
let combo_box_audio_check_type = gui_data.main_notebook.combo_box_audio_check_type.clone();
|
||||
let check_button_music_approximate_comparison = gui_data.main_notebook.check_button_music_approximate_comparison.clone();
|
||||
let scale_seconds_same_music = gui_data.main_notebook.scale_seconds_same_music.clone();
|
||||
let scale_similarity_same_music = gui_data.main_notebook.scale_similarity_same_music.clone();
|
||||
|
||||
get_list_store(&tree_view_same_music_finder).clear();
|
||||
|
||||
|
@ -506,7 +509,13 @@ fn same_music_search(
|
|||
music_similarity |= MusicSimilarity::LENGTH;
|
||||
}
|
||||
|
||||
if music_similarity != MusicSimilarity::NONE {
|
||||
let check_method_index = combo_box_audio_check_type.active().unwrap() as usize;
|
||||
let check_method = AUDIO_TYPE_CHECK_METHOD_COMBO_BOX[check_method_index].check_method;
|
||||
|
||||
let maximum_difference = scale_similarity_same_music.value();
|
||||
let minimum_segment_duration = scale_seconds_same_music.value() as f32;
|
||||
|
||||
if music_similarity != MusicSimilarity::NONE || check_method == CheckingMethod::AudioContent {
|
||||
thread::spawn(move || {
|
||||
let mut mf = SameMusic::new();
|
||||
|
||||
|
@ -520,6 +529,9 @@ fn same_music_search(
|
|||
mf.set_allowed_extensions(loaded_common_items.allowed_extensions);
|
||||
mf.set_recursive_search(loaded_common_items.recursive_search);
|
||||
mf.set_music_similarity(music_similarity);
|
||||
mf.set_maximum_difference(maximum_difference);
|
||||
mf.set_minimum_segment_duration(minimum_segment_duration);
|
||||
mf.set_check_type(check_method);
|
||||
mf.set_approximate_comparison(approximate_comparison);
|
||||
mf.set_save_also_as_json(loaded_common_items.save_also_as_json);
|
||||
mf.set_exclude_other_filesystems(loaded_common_items.ignore_other_filesystems);
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
use gtk4::prelude::*;
|
||||
use gtk4::{CheckButton, Widget};
|
||||
|
||||
use czkawka_core::common_dir_traversal::CheckingMethod;
|
||||
|
||||
use crate::gui_structs::gui_data::GuiData;
|
||||
use crate::help_combo_box::AUDIO_TYPE_CHECK_METHOD_COMBO_BOX;
|
||||
use crate::help_functions::scale_set_min_max_values;
|
||||
|
||||
const MINIMUM_SECONDS: f64 = 0.5;
|
||||
const MAXIMUM_SECONDS: f64 = 180.0;
|
||||
const DEFAULT_SECONDS: f64 = 15.0;
|
||||
const MINIMUM_SIMILARITY: f64 = 0.0;
|
||||
const MAXIMUM_SIMILARITY: f64 = 10.0;
|
||||
const DEFAULT_SIMILARITY: f64 = 5.0;
|
||||
|
||||
pub fn connect_same_music_change_mode(gui_data: &GuiData) {
|
||||
let check_button_music_title = gui_data.main_notebook.check_button_music_title.clone();
|
||||
let check_button_music_approximate_comparison = gui_data.main_notebook.check_button_music_approximate_comparison.clone();
|
||||
let check_button_music_bitrate = gui_data.main_notebook.check_button_music_bitrate.clone();
|
||||
let check_button_music_artist = gui_data.main_notebook.check_button_music_artist.clone();
|
||||
let check_button_music_genre = gui_data.main_notebook.check_button_music_genre.clone();
|
||||
let check_button_music_length = gui_data.main_notebook.check_button_music_length.clone();
|
||||
let check_button_music_year = gui_data.main_notebook.check_button_music_year.clone();
|
||||
let buttons = [
|
||||
check_button_music_title,
|
||||
check_button_music_approximate_comparison,
|
||||
check_button_music_bitrate,
|
||||
check_button_music_artist,
|
||||
check_button_music_genre,
|
||||
check_button_music_year,
|
||||
check_button_music_length,
|
||||
];
|
||||
|
||||
let scale_seconds_same_music = gui_data.main_notebook.scale_seconds_same_music.clone();
|
||||
let scale_similarity_same_music = gui_data.main_notebook.scale_similarity_same_music.clone();
|
||||
let label_same_music_similarity = gui_data.main_notebook.label_same_music_similarity.clone();
|
||||
let label_same_music_seconds = gui_data.main_notebook.label_same_music_seconds.clone();
|
||||
|
||||
scale_set_min_max_values(&scale_seconds_same_music, MINIMUM_SECONDS, MAXIMUM_SECONDS, DEFAULT_SECONDS, None);
|
||||
scale_set_min_max_values(&scale_similarity_same_music, MINIMUM_SIMILARITY, MAXIMUM_SIMILARITY, DEFAULT_SIMILARITY, None);
|
||||
|
||||
let scales_and_labels = [
|
||||
scale_seconds_same_music.into(),
|
||||
scale_similarity_same_music.into(),
|
||||
label_same_music_similarity.into(),
|
||||
label_same_music_seconds.into(),
|
||||
];
|
||||
|
||||
let combo_box_audio_check_type = gui_data.main_notebook.combo_box_audio_check_type.clone();
|
||||
|
||||
let check_method_index = combo_box_audio_check_type.active().unwrap() as usize;
|
||||
let check_method = AUDIO_TYPE_CHECK_METHOD_COMBO_BOX[check_method_index].check_method;
|
||||
|
||||
disable_enable_buttons(&buttons, &scales_and_labels, check_method);
|
||||
combo_box_audio_check_type.connect_changed(move |combo_box_text| {
|
||||
if let Some(active) = combo_box_text.active() {
|
||||
let check_method = AUDIO_TYPE_CHECK_METHOD_COMBO_BOX[active as usize].check_method;
|
||||
|
||||
disable_enable_buttons(&buttons, &scales_and_labels, check_method);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
fn disable_enable_buttons(buttons: &[CheckButton; 7], scales: &[Widget; 4], current_mode: CheckingMethod) {
|
||||
match current_mode {
|
||||
CheckingMethod::AudioTags => {
|
||||
buttons.iter().for_each(|e| e.show());
|
||||
scales.iter().for_each(|e| e.hide());
|
||||
}
|
||||
CheckingMethod::AudioContent => {
|
||||
buttons.iter().for_each(|e| e.hide());
|
||||
scales.iter().for_each(|e| e.show());
|
||||
}
|
||||
_ => panic!(),
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ pub mod connect_notebook_tabs;
|
|||
pub mod connect_popovers_select;
|
||||
pub mod connect_popovers_sort;
|
||||
pub mod connect_progress_window;
|
||||
pub mod connect_same_music_mode_changed;
|
||||
pub mod connect_selection_of_directories;
|
||||
pub mod connect_settings;
|
||||
pub mod connect_show_hide_ui;
|
||||
|
|
|
@ -7,7 +7,7 @@ use czkawka_core::localizer_core::{fnc_get_similarity_minimal, fnc_get_similarit
|
|||
use czkawka_core::similar_images::{get_string_from_similarity, SIMILAR_VALUES};
|
||||
|
||||
use crate::flg;
|
||||
use crate::help_combo_box::{BIG_FILES_CHECK_METHOD_COMBO_BOX, DUPLICATES_CHECK_METHOD_COMBO_BOX, IMAGES_HASH_SIZE_COMBO_BOX};
|
||||
use crate::help_combo_box::{AUDIO_TYPE_CHECK_METHOD_COMBO_BOX, BIG_FILES_CHECK_METHOD_COMBO_BOX, DUPLICATES_CHECK_METHOD_COMBO_BOX, IMAGES_HASH_SIZE_COMBO_BOX};
|
||||
use crate::help_functions::get_all_direct_children;
|
||||
use crate::notebook_enums::{NotebookMainEnum, NUMBER_OF_NOTEBOOK_MAIN_TABS};
|
||||
|
||||
|
@ -121,6 +121,12 @@ pub struct GuiMainNotebook {
|
|||
pub check_button_music_genre: CheckButton,
|
||||
pub check_button_music_length: CheckButton,
|
||||
pub check_button_music_approximate_comparison: CheckButton,
|
||||
pub label_audio_check_type: Label,
|
||||
pub combo_box_audio_check_type: ComboBoxText,
|
||||
pub label_same_music_seconds: Label,
|
||||
pub label_same_music_similarity: Label,
|
||||
pub scale_seconds_same_music: Scale,
|
||||
pub scale_similarity_same_music: Scale,
|
||||
}
|
||||
|
||||
impl GuiMainNotebook {
|
||||
|
@ -247,6 +253,13 @@ impl GuiMainNotebook {
|
|||
let image_preview_similar_images: Image = builder.object("image_preview_similar_images").unwrap();
|
||||
let image_preview_duplicates: Image = builder.object("image_preview_duplicates").unwrap();
|
||||
|
||||
let label_audio_check_type: Label = builder.object("label_audio_check_type").unwrap();
|
||||
let combo_box_audio_check_type: ComboBoxText = builder.object("combo_box_audio_check_type").unwrap();
|
||||
let label_same_music_seconds: Label = builder.object("label_same_music_seconds").unwrap();
|
||||
let label_same_music_similarity: Label = builder.object("label_same_music_similarity").unwrap();
|
||||
let scale_seconds_same_music: Scale = builder.object("scale_seconds_same_music").unwrap();
|
||||
let scale_similarity_same_music: Scale = builder.object("scale_similarity_same_music").unwrap();
|
||||
|
||||
Self {
|
||||
notebook_main,
|
||||
scrolled_window_duplicate_finder,
|
||||
|
@ -289,6 +302,7 @@ impl GuiMainNotebook {
|
|||
check_button_music_genre,
|
||||
check_button_music_length,
|
||||
check_button_music_approximate_comparison,
|
||||
label_audio_check_type,
|
||||
scale_similarity_similar_images,
|
||||
scale_similarity_similar_videos,
|
||||
check_button_broken_files_audio,
|
||||
|
@ -331,6 +345,11 @@ impl GuiMainNotebook {
|
|||
combo_box_big_files_mode,
|
||||
label_big_files_mode,
|
||||
check_button_broken_files_image,
|
||||
combo_box_audio_check_type,
|
||||
label_same_music_seconds,
|
||||
label_same_music_similarity,
|
||||
scale_seconds_same_music,
|
||||
scale_similarity_same_music,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -541,6 +560,19 @@ impl GuiMainNotebook {
|
|||
}
|
||||
}
|
||||
|
||||
{
|
||||
let active = self.combo_box_audio_check_type.active().unwrap_or(0);
|
||||
self.combo_box_audio_check_type.remove_all();
|
||||
for i in &AUDIO_TYPE_CHECK_METHOD_COMBO_BOX {
|
||||
let text = match i.check_method {
|
||||
CheckingMethod::AudioTags => flg!("music_checking_by_tags"),
|
||||
CheckingMethod::AudioContent => flg!("music_checking_by_content"),
|
||||
_ => panic!(),
|
||||
};
|
||||
self.combo_box_audio_check_type.append_text(&text);
|
||||
}
|
||||
self.combo_box_audio_check_type.set_active(Some(active));
|
||||
}
|
||||
{
|
||||
let active = self.combo_box_duplicate_check_method.active().unwrap_or(0);
|
||||
self.combo_box_duplicate_check_method.remove_all();
|
||||
|
|
|
@ -48,6 +48,23 @@ pub const DUPLICATES_CHECK_METHOD_COMBO_BOX: [CheckMethodStruct; 4] = [
|
|||
},
|
||||
];
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct AudioTypeStruct {
|
||||
pub eng_name: &'static str,
|
||||
pub check_method: CheckingMethod,
|
||||
}
|
||||
|
||||
pub const AUDIO_TYPE_CHECK_METHOD_COMBO_BOX: [AudioTypeStruct; 2] = [
|
||||
AudioTypeStruct {
|
||||
eng_name: "Tags",
|
||||
check_method: CheckingMethod::AudioTags,
|
||||
},
|
||||
AudioTypeStruct {
|
||||
eng_name: "Content",
|
||||
check_method: CheckingMethod::AudioContent,
|
||||
},
|
||||
];
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct SearchModeStruct {
|
||||
pub eng_name: &'static str,
|
||||
|
|
|
@ -7,7 +7,7 @@ use gdk4::gdk_pixbuf::{InterpType, Pixbuf};
|
|||
use glib::signal::Inhibit;
|
||||
use glib::Error;
|
||||
use gtk4::prelude::*;
|
||||
use gtk4::{ListStore, ScrollType, TextView, TreeView, Widget};
|
||||
use gtk4::{ListStore, Scale, ScrollType, TextView, TreeView, Widget};
|
||||
use image::codecs::jpeg::JpegEncoder;
|
||||
use image::{DynamicImage, EncodableLayout};
|
||||
use once_cell::sync::OnceCell;
|
||||
|
@ -770,7 +770,16 @@ pub fn check_if_list_store_column_have_all_same_values(list_store: &ListStore, c
|
|||
false
|
||||
}
|
||||
|
||||
pub fn scale_step_function(scale: >k4::Scale, _scroll_type: ScrollType, value: f64) -> Inhibit {
|
||||
pub fn scale_set_min_max_values(scale: &Scale, minimum: f64, maximum: f64, current_value: f64, step: Option<f64>) {
|
||||
scale.set_range(minimum, maximum);
|
||||
scale.set_fill_level(maximum);
|
||||
scale.set_value(current_value);
|
||||
if let Some(step) = step {
|
||||
scale.adjustment().set_step_increment(step)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn scale_step_function(scale: &Scale, _scroll_type: ScrollType, value: f64) -> Inhibit {
|
||||
scale.set_increments(1_f64, 1_f64);
|
||||
scale.set_round_digits(0);
|
||||
scale.set_fill_level(value.round());
|
||||
|
|
|
@ -42,6 +42,7 @@ use crate::compute_results::*;
|
|||
use crate::connect_things::connect_button_sort::connect_button_sort;
|
||||
use crate::connect_things::connect_popovers_select::connect_popover_select;
|
||||
use crate::connect_things::connect_popovers_sort::connect_popover_sort;
|
||||
use crate::connect_things::connect_same_music_mode_changed::connect_same_music_change_mode;
|
||||
use crate::initialize_gui::*;
|
||||
use crate::language_functions::LANGUAGES_ALL;
|
||||
use crate::saving_loading::*;
|
||||
|
@ -163,6 +164,7 @@ fn build_ui(application: &Application, arguments: &[OsString]) {
|
|||
connect_button_about(&gui_data);
|
||||
connect_about_buttons(&gui_data);
|
||||
connect_similar_image_size_change(&gui_data);
|
||||
connect_same_music_change_mode(&gui_data);
|
||||
|
||||
let window_main = gui_data.window_main.clone();
|
||||
let taskbar_state = gui_data.taskbar_state.clone();
|
||||
|
|
|
@ -237,6 +237,10 @@
|
|||
(5,232,"GtkLabel","label_buttons_sort",230,None,None,None,1),
|
||||
(5,234,"GtkLabel","label_audio_check_type",124,None,None,None,None),
|
||||
(5,235,"GtkComboBoxText","combo_box_audio_check_type",124,None,None,None,1),
|
||||
(5,236,"GtkScale","scale_seconds_same_music",117,None,None,None,7),
|
||||
(5,237,"GtkScale","scale_similarity_same_music",117,None,None,None,9),
|
||||
(5,238,"GtkLabel","label_same_music_seconds",117,None,None,None,6),
|
||||
(5,239,"GtkLabel","label_same_music_similarity",117,None,None,None,8),
|
||||
(6,1,"GtkPopover","popover_right_click",None,None,None,None,None),
|
||||
(6,2,"GtkBox",None,1,None,None,None,None),
|
||||
(6,3,"GtkButton","buttons_popover_right_click_open_file",2,None,None,None,None),
|
||||
|
@ -769,6 +773,26 @@
|
|||
(5,232,"GtkLabel","label","SortMenu",None,None,None,None,None),
|
||||
(5,234,"GtkLabel","label","Audio check type",None,None,None,None,None),
|
||||
(5,234,"GtkWidget","margin-end","2",None,None,None,None,None),
|
||||
(5,236,"GtkRange","fill-level","100",None,None,None,None,None),
|
||||
(5,236,"GtkRange","round-digits","1",None,None,None,None,None),
|
||||
(5,236,"GtkScale","digits","0",None,None,None,None,None),
|
||||
(5,236,"GtkScale","draw-value","1",None,None,None,None,None),
|
||||
(5,236,"GtkScale","value-pos","right",None,None,None,None,None),
|
||||
(5,236,"GtkWidget","focusable","1",None,None,None,None,None),
|
||||
(5,236,"GtkWidget","hexpand","1",None,None,None,None,None),
|
||||
(5,237,"GtkRange","fill-level","100",None,None,None,None,None),
|
||||
(5,237,"GtkRange","round-digits","1",None,None,None,None,None),
|
||||
(5,237,"GtkScale","digits","0",None,None,None,None,None),
|
||||
(5,237,"GtkScale","draw-value","1",None,None,None,None,None),
|
||||
(5,237,"GtkScale","value-pos","right",None,None,None,None,None),
|
||||
(5,237,"GtkWidget","focusable","1",None,None,None,None,None),
|
||||
(5,237,"GtkWidget","hexpand","1",None,None,None,None,None),
|
||||
(5,238,"GtkLabel","label","Minimal fragment second duration",None,None,None,None,None),
|
||||
(5,238,"GtkWidget","margin-end","5",None,None,None,None,None),
|
||||
(5,238,"GtkWidget","margin-start","5",None,None,None,None,None),
|
||||
(5,239,"GtkLabel","label","Max difference",None,None,None,None,None),
|
||||
(5,239,"GtkWidget","margin-end","5",None,None,None,None,None),
|
||||
(5,239,"GtkWidget","margin-start","5",None,None,None,None,None),
|
||||
(6,1,"GtkPopover","child",None,None,None,None,None,2),
|
||||
(6,1,"GtkPopover","position","left",None,None,None,None,None),
|
||||
(6,2,"GtkOrientable","orientation","vertical",None,None,None,None,None),
|
||||
|
@ -991,6 +1015,7 @@
|
|||
(9,58,"GtkWidget","focusable","1",None,None,None,None,None),
|
||||
(9,58,"GtkWidget","hexpand","1",None,None,None,None,None),
|
||||
(9,59,"GtkAccessible","accessible-role","menu-item-checkbox",None,None,None,None,None),
|
||||
(9,59,"GtkLabel","label","Restart Required",None,None,None,None,None),
|
||||
(9,59,"GtkWidget","margin-bottom","4",None,None,None,None,None),
|
||||
(9,59,"GtkWidget","margin-top","5",None,None,None,None,None),
|
||||
(10,1,"GtkPopover","child",None,None,None,None,None,2),
|
||||
|
|
|
@ -721,6 +721,42 @@
|
|||
<property name="label">Length</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label_same_music_seconds">
|
||||
<property name="label">Minimal fragment second duration</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale" id="scale_seconds_same_music">
|
||||
<property name="digits">0</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="fill-level">100</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="round-digits">1</property>
|
||||
<property name="value-pos">right</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label_same_music_similarity">
|
||||
<property name="label">Max difference</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale" id="scale_similarity_same_music">
|
||||
<property name="digits">0</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="fill-level">100</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="round-digits">1</property>
|
||||
<property name="value-pos">right</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
|
|
|
@ -142,6 +142,7 @@
|
|||
<child>
|
||||
<object class="GtkLabel" id="label_restart_needed">
|
||||
<property name="accessible-role">menu-item-checkbox</property>
|
||||
<property name="label">Restart Required</property>
|
||||
<property name="margin-bottom">4</property>
|
||||
<property name="margin-top">5</property>
|
||||
</object>
|
||||
|
|
Loading…
Reference in a new issue