BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
htmlandpixel
Root
/
usr
/
share
/
gnome-shell
/
extensions
/
desktop-icons@gnome-shell-extensions.gcampax.github.com
📤 Upload
📝 New File
📁 New Folder
Close
Editing: templateManager.js
/* DING: Desktop Icons New Generation for GNOME Shell * * Copyright (C) 2020 Sergio Costas (rastersoft@gmail.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ const Gio = imports.gi.Gio; const GLib = imports.gi.GLib; const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); const DesktopIconsUtil = Me.imports.desktopIconsUtil; var TemplateManager = class { constructor() { this._templates = []; this._templatesEnumerateCancellable = null; this._templateDir = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_TEMPLATES); if (this._templateDir == GLib.get_home_dir()) this._templateDir = null; this.updated = true; if (this._templateDir != null) { this._templateGFile = Gio.File.new_for_path(this._templateDir); this._monitor = this._templateGFile.monitor_directory(Gio.FileMonitorFlags.NONE, null); this._monitorId = this._monitor.connect("changed", () => { this._refreshTemplates(); }); this._refreshTemplates(); } else { this._templateGFile = null; this._monitorId = null; } } destroy() { if (this._monitorId) this._monitor.disconnect(this._monitorId); this._monitorId = null; } getTemplates() { let templates = []; for(let template of this._templates) { let data = {}; data["icon"] = template.get_icon(); let name = template.get_name(); let offset = DesktopIconsUtil.getFileExtensionOffset(name, false); data["name"] = name.substring(0, offset); data["extension"] = name.substring(offset); data["file"] = name; templates.push(data); } this.updated = false; return templates; } _refreshTemplates() { if (this._templatesEnumerateCancellable) this._templatesEnumerateCancellable.cancel(); this._templatesEnumerateCancellable = new Gio.Cancellable(); this._templateGFile.enumerate_children_async( DesktopIconsUtil.DEFAULT_ATTRIBUTES, Gio.FileQueryInfoFlags.NONE, GLib.PRIORITY_DEFAULT, this._templatesEnumerateCancellable, (source, result) => { try { let fileEnum = source.enumerate_children_finish(result); this._templates = []; let info; while ((info = fileEnum.next_file(null))) { if (info.get_file_type() != Gio.FileType.DIRECTORY) this._templates.push(info); } this.updated = true; } catch(e) { global.log(`Exception while reading templates ${e}`); } } ); } getTemplateFile(name) { if (this._templateGFile == null) return null; let template = Gio.File.new_for_path(GLib.build_filenamev([this._templateDir, name])); if (template.query_exists(null)) return template; else return null; } }
Save
Cancel