summaryrefslogtreecommitdiff
path: root/Mozo
diff options
context:
space:
mode:
Diffstat (limited to 'Mozo')
-rw-r--r--Mozo/MainWindow.py16
-rw-r--r--Mozo/util.py10
2 files changed, 26 insertions, 0 deletions
diff --git a/Mozo/MainWindow.py b/Mozo/MainWindow.py
index 31b2135..070c738 100644
--- a/Mozo/MainWindow.py
+++ b/Mozo/MainWindow.py
@@ -270,11 +270,26 @@ class MainWindow:
name = '<small><i>' + html.escape(item.get_name()) + '</i></small>'
self.item_store.append((show, icon, name, item))
+ def _renameToNameBased(self, file_path, extension):
+ try:
+ keyfile = GLib.KeyFile()
+ keyfile.load_from_file(file_path, util.KEY_FILE_FLAGS)
+ name = keyfile.get_string(GLib.KEY_FILE_DESKTOP_GROUP, 'Name')
+ name = util.sanitizeFileName(name)
+ except Exception:
+ return file_path
+ new_file_id = util.getUniqueFileId(name, extension)
+ new_path = os.path.join(os.path.split(file_path)[0], new_file_id)
+ if new_path != file_path:
+ os.rename(file_path, new_path)
+ return new_path
+
#this is a little timeout callback to insert new items after
#mate-desktop-item-edit has finished running
def waitForNewItemProcess(self, process, parent_id, file_path):
if process.poll() is not None:
if os.path.isfile(file_path):
+ file_path = self._renameToNameBased(file_path, '.desktop')
self.editor.insertExternalItem(os.path.split(file_path)[1], parent_id)
return False
return True
@@ -286,6 +301,7 @@ class MainWindow:
if os.path.isfile(broken_path):
os.rename(broken_path, file_path)
if os.path.isfile(file_path):
+ file_path = self._renameToNameBased(file_path, '.directory')
self.editor.insertExternalMenu(os.path.split(file_path)[1], parent_id)
return False
return True
diff --git a/Mozo/util.py b/Mozo/util.py
index 72df83e..a9bde70 100644
--- a/Mozo/util.py
+++ b/Mozo/util.py
@@ -18,6 +18,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import os
+import re
import xml.dom.minidom
import gi
gi.require_version('Gtk', '3.0')
@@ -41,6 +42,15 @@ def fillKeyFile(keyfile, items):
elif isinstance(item, str):
keyfile.set_string(DESKTOP_GROUP, key, item)
+def sanitizeFileName(name):
+ name = name.strip()
+ name = re.sub(r'[/\\<>:"|?*\x00-\x1f]', '-', name)
+ name = name.replace(' ', '-')
+ name = name.strip('.')
+ if not name:
+ name = 'mozo-made'
+ return name
+
def getUniqueFileId(name, extension):
append = 0
while 1: