aboutsummaryrefslogtreecommitdiff
path: root/nautilus-newfile.py
blob: 0af4831e68af8b54dc8b35fb65eccbe124cb80de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import os, gi
gi.require_version('Adw', '1')
gi.require_version("Gtk", "4.0")
from gi.repository import Nautilus, GObject, Adw, Gtk, Gio
from typing import List

@Gtk.Template(filename=os.path.join(__file__, "../new-file-dialog.ui"))
class NewFileDialog(Adw.Dialog):
    fileinfo:Gio.FileInfo = None
    __gtype_name__ = "NewFileDialog"
    name_entry: Adw.EntryRow = Gtk.Template.Child()

    def __init__(self, fileinfo):
        super().__init__()
        self.fileinfo = fileinfo

    @Gtk.Template.Callback()
    def on_create_clicked(self, _):
        f: Gio.File = (self.fileinfo.get_location())
        f.get_child(self.name_entry.get_text()).create(Gio.FileCreateFlags(0), None)
        self.close()

class NautilusNewfile(GObject.GObject, Nautilus.MenuProvider):
    def show_dialog(self, _, fileinfo):

        dialog = NewFileDialog(fileinfo)
        dialog.present()

    def get_background_items(self, fileinfo: Gio.FileInfo) -> List[Nautilus.MenuItem]:

        menuitem = Nautilus.MenuItem(
            name="ExampleMenuProvider::Foo2",
            label="New File...",
        )
        menuitem.connect('activate', self.show_dialog, fileinfo)

        return [menuitem,]