Partial changes
This commit is contained in:
parent
f398497cd2
commit
fab1ad3a11
|
@ -1,5 +1,6 @@
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
use gtk4::{CellRendererText, CellRendererToggle, TreeView, TreeViewColumn};
|
use gtk4::subclass::tree_view;
|
||||||
|
use gtk4::{CellRendererText, CellRendererToggle, ListStore, TreeView, TreeViewColumn};
|
||||||
|
|
||||||
use crate::help_functions::*;
|
use crate::help_functions::*;
|
||||||
|
|
||||||
|
@ -471,263 +472,118 @@ pub fn create_tree_view_similar_videos(tree_view: &TreeView) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_tree_view_same_music(tree_view: &TreeView) {
|
pub fn create_tree_view_same_music(tree_view: &TreeView) {
|
||||||
let model = get_list_store(tree_view);
|
|
||||||
|
|
||||||
let renderer = CellRendererToggle::new();
|
|
||||||
renderer.connect_toggled(move |_r, path| {
|
|
||||||
let iter = model.iter(&path).unwrap();
|
|
||||||
let mut fixed = model.get::<bool>(&iter, ColumnsSameMusic::SelectionButton as i32);
|
|
||||||
fixed = !fixed;
|
|
||||||
model.set_value(&iter, ColumnsSameMusic::SelectionButton as u32, &fixed.to_value());
|
|
||||||
});
|
|
||||||
let column = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_resizable(false);
|
|
||||||
column.set_fixed_width(30);
|
|
||||||
column.add_attribute(&renderer, "activatable", ColumnsSameMusic::ActivatableSelectButton as i32);
|
|
||||||
column.add_attribute(&renderer, "active", ColumnsSameMusic::SelectionButton as i32);
|
|
||||||
column.add_attribute(&renderer, "cell-background", ColumnsSameMusic::Color as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Size");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Size as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("File Name");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Name as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Title");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Title as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Artist");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Artist as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Year");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Year as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Bitrate");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Bitrate as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Length");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Length as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Genre");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Genre as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Path");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Path as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Modification Date");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsSameMusic::Modification as i32);
|
|
||||||
column.add_attribute(&renderer, "background", ColumnsSameMusic::Color as i32);
|
|
||||||
column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
tree_view.set_vexpand(true);
|
tree_view.set_vexpand(true);
|
||||||
|
|
||||||
|
let model = get_list_store(tree_view);
|
||||||
|
let columns_colors = (ColumnsSameMusic::Color as i32, ColumnsSameMusic::TextColor as i32);
|
||||||
|
let activatable_colors = (ColumnsSameMusic::ActivatableSelectButton as i32, ColumnsSameMusic::Color as i32);
|
||||||
|
|
||||||
|
create_default_selection_button_column(&tree_view, ColumnsSameMusic::SelectionButton as i32, model, Some(activatable_colors));
|
||||||
|
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Size as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Name as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Title as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Artist as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Year as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Bitrate as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Length as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Genre as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Path as i32, None, Some(columns_colors));
|
||||||
|
create_default_column(&tree_view, ColumnsSameMusic::Modification as i32, None, Some(columns_colors));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_tree_view_invalid_symlinks(tree_view: &TreeView) {
|
pub fn create_tree_view_invalid_symlinks(tree_view: &TreeView) {
|
||||||
|
tree_view.set_vexpand(true);
|
||||||
|
|
||||||
let model = get_list_store(tree_view);
|
let model = get_list_store(tree_view);
|
||||||
|
|
||||||
let renderer = CellRendererToggle::new();
|
create_default_selection_button_column(&tree_view, ColumnsInvalidSymlinks::SelectionButton as i32, model, None);
|
||||||
renderer.connect_toggled(move |_r, path| {
|
|
||||||
let iter = model.iter(&path).unwrap();
|
|
||||||
let mut fixed = model.get::<bool>(&iter, ColumnsInvalidSymlinks::SelectionButton as i32);
|
|
||||||
fixed = !fixed;
|
|
||||||
model.set_value(&iter, ColumnsInvalidSymlinks::SelectionButton as u32, &fixed.to_value());
|
|
||||||
});
|
|
||||||
let column = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_resizable(false);
|
|
||||||
column.set_fixed_width(30);
|
|
||||||
column.add_attribute(&renderer, "active", ColumnsInvalidSymlinks::SelectionButton as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
create_default_column(&tree_view, ColumnsInvalidSymlinks::Name as i32, None, None);
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
create_default_column(&tree_view, ColumnsInvalidSymlinks::Path as i32, None, None);
|
||||||
column.pack_start(&renderer, true);
|
create_default_column(&tree_view, ColumnsInvalidSymlinks::DestinationPath as i32, None, None);
|
||||||
column.set_title("Symlink File Name");
|
create_default_column(&tree_view, ColumnsInvalidSymlinks::TypeOfError as i32, None, None);
|
||||||
column.set_resizable(true);
|
create_default_column(
|
||||||
column.set_min_width(50);
|
&tree_view,
|
||||||
column.add_attribute(&renderer, "text", ColumnsInvalidSymlinks::Name as i32);
|
ColumnsInvalidSymlinks::Modification as i32,
|
||||||
column.set_sort_column_id(ColumnsInvalidSymlinks::Name as i32);
|
Some(ColumnsInvalidSymlinks::ModificationAsSecs as i32),
|
||||||
tree_view.append_column(&column);
|
None,
|
||||||
|
);
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Symlink Folder");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsInvalidSymlinks::Path as i32);
|
|
||||||
column.set_sort_column_id(ColumnsInvalidSymlinks::Path as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Destination Path");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsInvalidSymlinks::DestinationPath as i32);
|
|
||||||
column.set_sort_column_id(ColumnsInvalidSymlinks::DestinationPath as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Type of Error");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsInvalidSymlinks::TypeOfError as i32);
|
|
||||||
column.set_sort_column_id(ColumnsInvalidSymlinks::TypeOfError as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Modification Date");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsInvalidSymlinks::Modification as i32);
|
|
||||||
column.set_sort_column_id(ColumnsInvalidSymlinks::ModificationAsSecs as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
tree_view.set_vexpand(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_tree_view_broken_files(tree_view: &TreeView) {
|
pub fn create_tree_view_broken_files(tree_view: &TreeView) {
|
||||||
|
tree_view.set_vexpand(true);
|
||||||
|
|
||||||
let model = get_list_store(tree_view);
|
let model = get_list_store(tree_view);
|
||||||
|
|
||||||
|
create_default_selection_button_column(&tree_view, ColumnsBrokenFiles::SelectionButton as i32, model, None);
|
||||||
|
|
||||||
|
create_default_column(&tree_view, ColumnsBrokenFiles::Name as i32, None, None);
|
||||||
|
create_default_column(&tree_view, ColumnsBrokenFiles::Path as i32, None, None);
|
||||||
|
create_default_column(&tree_view, ColumnsBrokenFiles::ErrorType as i32, None, None);
|
||||||
|
create_default_column(
|
||||||
|
&tree_view,
|
||||||
|
ColumnsBrokenFiles::Modification as i32,
|
||||||
|
Some(ColumnsBrokenFiles::ModificationAsSecs as i32),
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn create_tree_view_bad_extensions(tree_view: &TreeView) {
|
||||||
|
tree_view.set_vexpand(true);
|
||||||
|
|
||||||
|
let model = get_list_store(tree_view);
|
||||||
|
|
||||||
|
create_default_selection_button_column(&tree_view, ColumnsBadExtensions::SelectionButton as i32, model, None);
|
||||||
|
|
||||||
|
create_default_column(&tree_view, ColumnsBadExtensions::Name as i32, None, None);
|
||||||
|
create_default_column(&tree_view, ColumnsBadExtensions::Path as i32, None, None);
|
||||||
|
create_default_column(&tree_view, ColumnsBadExtensions::CurrentExtension as i32, None, None);
|
||||||
|
create_default_column(&tree_view, ColumnsBadExtensions::ValidExtensions as i32, None, None);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_default_selection_button_column(
|
||||||
|
tree_view: &TreeView,
|
||||||
|
column_id: i32,
|
||||||
|
model: ListStore,
|
||||||
|
activatable_color_columns: Option<(i32, i32)>,
|
||||||
|
) -> (CellRendererToggle, TreeViewColumn) {
|
||||||
let renderer = CellRendererToggle::new();
|
let renderer = CellRendererToggle::new();
|
||||||
renderer.connect_toggled(move |_r, path| {
|
renderer.connect_toggled(move |_r, path| {
|
||||||
let iter = model.iter(&path).unwrap();
|
let iter = model.iter(&path).unwrap();
|
||||||
let mut fixed = model.get::<bool>(&iter, ColumnsBrokenFiles::SelectionButton as i32);
|
let mut fixed = model.get::<bool>(&iter, column_id);
|
||||||
fixed = !fixed;
|
fixed = !fixed;
|
||||||
model.set_value(&iter, ColumnsBrokenFiles::SelectionButton as u32, &fixed.to_value());
|
model.set_value(&iter, column_id as u32, &fixed.to_value());
|
||||||
});
|
});
|
||||||
let column = TreeViewColumn::new();
|
let column = TreeViewColumn::new();
|
||||||
column.pack_start(&renderer, true);
|
column.pack_start(&renderer, true);
|
||||||
column.set_resizable(false);
|
column.set_resizable(false);
|
||||||
column.set_fixed_width(30);
|
column.set_fixed_width(30);
|
||||||
column.add_attribute(&renderer, "active", ColumnsBrokenFiles::SelectionButton as i32);
|
column.add_attribute(&renderer, "active", column_id);
|
||||||
|
if let Some(activatable_color_columns) = activatable_color_columns {
|
||||||
|
column.add_attribute(&renderer, "activatable", activatable_color_columns.0);
|
||||||
|
column.add_attribute(&renderer, "cell-background", activatable_color_columns.1);
|
||||||
|
}
|
||||||
tree_view.append_column(&column);
|
tree_view.append_column(&column);
|
||||||
|
(renderer, column)
|
||||||
let renderer = CellRendererText::new();
|
}
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
fn create_default_column(tree_view: &TreeView, column_id: i32, sort_column_id: Option<i32>, colors_columns_id: Option<(i32, i32)>) -> (CellRendererText, TreeViewColumn) {
|
||||||
column.set_title("Name");
|
let renderer = CellRendererText::new();
|
||||||
column.set_resizable(true);
|
let column: TreeViewColumn = TreeViewColumn::new();
|
||||||
column.set_min_width(50);
|
column.pack_start(&renderer, true);
|
||||||
column.add_attribute(&renderer, "text", ColumnsBrokenFiles::Name as i32);
|
column.set_resizable(true);
|
||||||
column.set_sort_column_id(ColumnsBrokenFiles::Name as i32);
|
column.set_min_width(50);
|
||||||
tree_view.append_column(&column);
|
column.add_attribute(&renderer, "text", column_id);
|
||||||
|
if let Some(sort_column_id) = sort_column_id {
|
||||||
let renderer = CellRendererText::new();
|
column.set_sort_column_id(sort_column_id);
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
} else {
|
||||||
column.pack_start(&renderer, true);
|
column.set_sort_column_id(column_id);
|
||||||
column.set_title("Path");
|
}
|
||||||
column.set_resizable(true);
|
if let Some(colors_columns_id) = colors_columns_id {
|
||||||
column.set_min_width(50);
|
column.add_attribute(&renderer, "background", colors_columns_id.0);
|
||||||
column.add_attribute(&renderer, "text", ColumnsBrokenFiles::Path as i32);
|
column.add_attribute(&renderer, "foreground", colors_columns_id.1);
|
||||||
column.set_sort_column_id(ColumnsBrokenFiles::Path as i32);
|
}
|
||||||
tree_view.append_column(&column);
|
tree_view.append_column(&column);
|
||||||
|
(renderer, column)
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("ErrorType");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsBrokenFiles::ErrorType as i32);
|
|
||||||
column.set_sort_column_id(ColumnsBrokenFiles::ErrorType as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
let renderer = CellRendererText::new();
|
|
||||||
let column: TreeViewColumn = TreeViewColumn::new();
|
|
||||||
column.pack_start(&renderer, true);
|
|
||||||
column.set_title("Modification Date");
|
|
||||||
column.set_resizable(true);
|
|
||||||
column.set_min_width(50);
|
|
||||||
column.add_attribute(&renderer, "text", ColumnsBrokenFiles::Modification as i32);
|
|
||||||
column.set_sort_column_id(ColumnsBrokenFiles::ModificationAsSecs as i32);
|
|
||||||
tree_view.append_column(&column);
|
|
||||||
|
|
||||||
tree_view.set_vexpand(true);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -287,7 +287,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
||||||
tree_view.set_model(Some(&list_store));
|
tree_view.set_model(Some(&list_store));
|
||||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||||
|
|
||||||
create_tree_view_broken_files(&tree_view);
|
create_tree_view_bad_extensions(&tree_view);
|
||||||
|
|
||||||
tree_view.set_widget_name("tree_view_bad_extensions");
|
tree_view.set_widget_name("tree_view_bad_extensions");
|
||||||
scrolled_window.set_child(Some(&tree_view));
|
scrolled_window.set_child(Some(&tree_view));
|
||||||
|
|
Loading…
Reference in a new issue