From bc8ce3855e7d50966660f822077ede164a889362 Mon Sep 17 00:00:00 2001 From: Heliguy Date: Mon, 23 Sep 2024 14:09:57 -0400 Subject: [PATCH] Implement valid name checks --- src/snapshot_page/new_snapshot_dialog.py | 3 ++- src/snapshot_page/snapshot_box.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/snapshot_page/new_snapshot_dialog.py b/src/snapshot_page/new_snapshot_dialog.py index efc0a9f..345862a 100644 --- a/src/snapshot_page/new_snapshot_dialog.py +++ b/src/snapshot_page/new_snapshot_dialog.py @@ -65,7 +65,8 @@ class NewSnapshotDialog(Adw.Dialog): GLib.idle_add(lambda *_, row=row: row.check_button.set_active(False)) def valid_checker(self): - valid = len(self.selected_rows) > 0 and len(self.name_entry.get_text().strip()) > 0 + text = self.name_entry.get_text().strip() + valid = len(self.selected_rows) > 0 and len(text) > 0 and not("/" in text or "\0" in text) self.create_button.set_sensitive(valid) def get_total_fraction(self): diff --git a/src/snapshot_page/snapshot_box.py b/src/snapshot_page/snapshot_box.py index f344278..0f4077e 100644 --- a/src/snapshot_page/snapshot_box.py +++ b/src/snapshot_page/snapshot_box.py @@ -1,7 +1,7 @@ from gi.repository import Adw, Gtk, GLib, Gio from .host_info import HostInfo from .error_toast import ErrorToast -import os, subprocess, json +import os, subprocess, json, re @Gtk.Template(resource_path="/io/github/flattool/Warehouse/snapshot_page/snapshot_box.ui") class SnapshotBox(Gtk.Box): @@ -60,10 +60,19 @@ class SnapshotBox(Gtk.Box): self.toast_overlay.add_toast(ErrorToast(_("Could not write data"), str(e)).toast) def on_rename(self, widget): + if not self.valid_checker(): + return + self.update_json('name', self.rename_entry.get_text().strip()) self.load_from_json() self.rename_menu.popdown() + def valid_checker(self, *args): + text = self.rename_entry.get_text().strip() + valid = not ("/" in text or "\0" in text) and len(text) > 0 + self.apply_rename.set_sensitive(valid) + return valid + def on_trash(self, button): error = [None] path = f"{self.snapshots_path}{self.folder}" @@ -116,4 +125,5 @@ class SnapshotBox(Gtk.Box): self.load_from_json() self.apply_rename.connect("clicked", self.on_rename) self.rename_entry.connect("activate", self.on_rename) + self.rename_entry.connect("changed", self.valid_checker) self.trash_button.connect("clicked", self.on_trash)