|
@@ -54,6 +54,7 @@ namespace Publicate {
|
|
|
|
|
|
var add_file_button = new Button.from_icon_name("list-add-symbolic");
|
|
var add_file_button = new Button.from_icon_name("list-add-symbolic");
|
|
file_buttons.append(add_file_button);
|
|
file_buttons.append(add_file_button);
|
|
|
|
+ add_file_button.clicked.connect(import_file);
|
|
|
|
|
|
var remove_file_button = new Button.from_icon_name("user-trash-symbolic");
|
|
var remove_file_button = new Button.from_icon_name("user-trash-symbolic");
|
|
file_buttons.append(remove_file_button);
|
|
file_buttons.append(remove_file_button);
|
|
@@ -159,5 +160,26 @@ namespace Publicate {
|
|
yield save(to_save);
|
|
yield save(to_save);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public async void import_file() {
|
|
|
|
+
|
|
|
|
+ var dialog = new FileDialog();
|
|
|
|
+ var file = yield dialog.open(window, null);
|
|
|
|
+
|
|
|
|
+ if(file == null) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var stream = yield file.read_async(Priority.DEFAULT, null);
|
|
|
|
+ var compression = new Ppub.CompressionInfo(stream, false);
|
|
|
|
+ stream.seek(0, SeekType.SET, null);
|
|
|
|
+ var sample = new uint8[2048];
|
|
|
|
+ size_t sample_size;
|
|
|
|
+ yield stream.read_all_async(sample, Priority.DEFAULT, null, out sample_size);
|
|
|
|
+ stream.seek(0, SeekType.SET, null);
|
|
|
|
+
|
|
|
|
+ var mimetype = Ppub.guess_mimetype(file.get_basename(), sample);
|
|
|
|
+ yield add_asset(file.get_basename(), mimetype, stream, compression);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|