summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgnacy Kuchciński <ignacykuchcinski@gmail.com>2022-08-01 22:01:05 +0200
committerIgnacy Kuchciński <ignacykuchcinski@gmail.com>2022-09-11 00:03:53 +0200
commitd89a0b0742f6215883b14ac78cc4e50032bccfb1 (patch)
tree61d7c7be985b2db79956af6bd42703b91e5bd603
parent62d9dea807f09e3887cf83120bf5a32ec25cd9ac (diff)
downloadnautilus-gsoc-2022.tar.gz
files-view: Allow creating new filesgsoc-2022
-rw-r--r--data/meson.build1
-rw-r--r--data/templates/document.odtbin0 -> 8197 bytes
-rw-r--r--data/templates/meson.build9
-rw-r--r--data/templates/presentation.odpbin0 -> 13165 bytes
-rw-r--r--data/templates/spreadsheet.odsbin0 -> 6956 bytes
-rw-r--r--src/nautilus-files-view.c27
6 files changed, 35 insertions, 2 deletions
diff --git a/data/meson.build b/data/meson.build
index 2df5a226c..953b81408 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -135,4 +135,5 @@ if appstream_util.found()
endif
subdir('ontology')
+subdir('templates')
subdir('tracker')
diff --git a/data/templates/document.odt b/data/templates/document.odt
new file mode 100644
index 000000000..2a9ef52de
--- /dev/null
+++ b/data/templates/document.odt
Binary files differ
diff --git a/data/templates/meson.build b/data/templates/meson.build
new file mode 100644
index 000000000..1b00e15ab
--- /dev/null
+++ b/data/templates/meson.build
@@ -0,0 +1,9 @@
+templates_data = files(
+ 'document.odt',
+ 'spreadsheet.ods',
+ 'presentation.odp'
+)
+
+install_data(templates_data,
+ install_dir: join_paths(datadir, 'nautilus', 'templates')
+) \ No newline at end of file
diff --git a/data/templates/presentation.odp b/data/templates/presentation.odp
new file mode 100644
index 000000000..6095afffb
--- /dev/null
+++ b/data/templates/presentation.odp
Binary files differ
diff --git a/data/templates/spreadsheet.ods b/data/templates/spreadsheet.ods
new file mode 100644
index 000000000..16d4f2348
--- /dev/null
+++ b/data/templates/spreadsheet.ods
Binary files differ
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 0b48c822e..d65d4cf58 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -350,6 +350,11 @@ static void set_search_query_internal (NautilusFilesView *files_view,
static gboolean nautilus_files_view_is_read_only (NautilusFilesView *view);
+static void nautilus_files_view_new_file (NautilusFilesView *directory_view,
+ const char *parent_uri,
+ const char *target_filename,
+ NautilusFile *source);
+
G_DEFINE_TYPE_WITH_CODE (NautilusFilesView,
nautilus_files_view,
ADW_TYPE_BIN,
@@ -2068,9 +2073,26 @@ new_file_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
NautilusFilesView *self)
{
NautilusFilesViewPrivate *priv;
+ gchar *template_name = NULL;
+ g_autofree gchar *template_path = NULL;
+ g_autoptr (GFile) template_location = NULL;
+ g_autofree gchar *name = NULL;
+ g_autoptr (NautilusFile) file = NULL;
priv = nautilus_files_view_get_instance_private (self);
+ template_name = nautilus_new_file_dialog_controller_get_template_name (NAUTILUS_NEW_FILE_DIALOG_CONTROLLER (controller));
+ name = nautilus_file_name_widget_controller_get_new_name (controller);
+
+ if (template_name != NULL)
+ {
+ template_path = g_build_filename (NAUTILUS_DATADIR, "templates", template_name, NULL);
+ template_location = g_file_new_for_path (template_path);
+ file = nautilus_file_get (template_location);
+ }
+
+ nautilus_files_view_new_file (self, NULL, name, file);
+
g_clear_object (&priv->new_file_controller);
gtk_widget_grab_focus (GTK_WIDGET (self));
@@ -2428,6 +2450,7 @@ nautilus_files_view_new_file_with_initial_contents (NautilusFilesView *view,
static void
nautilus_files_view_new_file (NautilusFilesView *directory_view,
const char *parent_uri,
+ const char *target_filename,
NautilusFile *source)
{
NewFolderData *data;
@@ -2445,7 +2468,7 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view,
{
nautilus_files_view_new_file_with_initial_contents (directory_view,
parent_uri != NULL ? parent_uri : container_uri,
- NULL,
+ target_filename,
NULL,
0);
g_free (container_uri);
@@ -2458,7 +2481,7 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view,
nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view),
parent_uri != NULL ? parent_uri : container_uri,
- NULL,
+ target_filename,
source_uri,
new_folder_done, data);