diff options
Diffstat (limited to 'Mozo')
| -rw-r--r-- | Mozo/MainWindow.py | 16 | ||||
| -rw-r--r-- | Mozo/util.py | 10 |
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: |
