4
public class BeatBox.NotImportedWindow : Window{
5
LinkedList<string> _files;
7
ScrolledWindow filesScroll;
10
CheckButton moveToRecycle;
12
Button deleteSelected;
15
public NotImportedWindow(LinkedList<string> files) {
18
this.set_title("Not Imported Files");
20
// set the size based on saved gconf settings
21
set_size_request(600, 400);
24
Label info = new Label("The following files could not be imported because they are corrupt.");
25
filesScroll = new ScrolledWindow(null, null);
26
filesView = new TreeView();
27
filesModel = new ListStore(2, typeof(bool), typeof(string));
28
filesView.set_model(filesModel);
29
moveToRecycle = new CheckButton.with_label("Recycle");
30
deleteAll = new Button.with_label("Delete all");
31
deleteSelected = new Button.with_label("Delete checked");
32
ignore = new Button.with_label("Ignore files");
34
info.set_line_wrap(false);
36
var toggle = new CellRendererToggle ();
37
toggle.toggled.connect ((toggle, path) => {
38
var tree_path = new TreePath.from_string (path);
40
filesModel.get_iter (out iter, tree_path);
41
filesModel.set (iter, 0, !toggle.active);
44
var column = new TreeViewColumn ();
45
column.title = "Delete";
46
column.pack_start (toggle, false);
47
column.add_attribute (toggle, "active", 0);
48
filesView.append_column (column);
50
filesView.insert_column_with_attributes(-1, "File Location", new CellRendererText(), "text", 1, null);
52
foreach(string file in files) {
54
filesModel.append(out item);
56
filesModel.set(item, 0, false, 1, file);
59
HButtonBox buttons = new HButtonBox();
60
Label filler = new Label("");
62
filesScroll.add(filesView);
63
filesScroll.set_policy(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC);
65
buttons.pack_start(moveToRecycle, false, false, 5);
66
buttons.pack_start(deleteAll, false, false, 0);
67
buttons.pack_start(deleteSelected, false, false, 0);
68
buttons.pack_start(filler, false, true, 0);
69
buttons.pack_end(ignore, false, false, 5);
71
VBox vbox = new VBox(false, 0);
72
vbox.pack_start(info, false, true, 0);
73
vbox.pack_start(filesScroll, true, true, 0);
74
vbox.pack_start(buttons, false, true, 5);
76
moveToRecycle.toggled.connect(moveToRecycleToggle);
77
deleteAll.clicked.connect(deleteAllClick);
78
deleteSelected.clicked.connect(deleteSelectedClick);
79
ignore.clicked.connect(ignoreClick);
85
public bool selectAll(TreeModel model, TreePath path, TreeIter iter) {
86
filesModel.set(iter, 0, true);
91
public bool deleteSelectedItems(TreeModel model, TreePath path, TreeIter iter) {
94
filesModel.get(iter, 0, out selected);
95
filesModel.get(iter, 1, out location);
98
if(moveToRecycle.get_active()) {
100
var file = File.new_for_path(location);
103
catch(GLib.Error err) {
104
stdout.printf("Could not move file %s to recycle: %s\n", location, err.message);
109
var file = File.new_for_path (location);
112
catch(GLib.Error err) {
113
stdout.printf("Could not delete file %s: %s\n", location, err.message);
121
public virtual void moveToRecycleToggle() {
122
if(moveToRecycle.active) {
123
deleteAll.set_label("Recycle all");
124
deleteSelected.set_label("Recycle selected");
127
deleteAll.set_label("Delete all");
128
deleteSelected.set_label("Delete selected");
132
public virtual void deleteAllClick() {
133
//select every item and then call deleteSelectedClick()
134
filesModel.foreach(selectAll);
135
deleteSelectedClick();
138
public virtual void deleteSelectedClick() {
139
filesModel.foreach(deleteSelectedItems);
143
public virtual void ignoreClick() {