Как установить каталог по умолчанию в Komodo из расширения?
Я работаю над расширением KomodoIDE/KomodoEdit, которое создает новый файл, а затем открывает его на новой вкладке редактирования, используя
...
var obsvc = Components.classes["@mozilla.org/observer-service;1"].
getService(Components.interfaces.nsIObserverService);
...
Display.initWithPath(Target.path);
Display.append(what);
try {
obsvc.notifyObservers(null, 'open-url', "file://" + Display.path);
} catch (e) {
alert(e);
}
это работает, но мне также хотелось бы, чтобы каталог по умолчанию Komodo был в том же каталоге, где находится этот файл, но я не вижу способа сделать это автоматически.
Я нашел doCommand...
ko.commands.doCommand('cmd_openDirectory')
но это только запускает диалоговое окно файла, которое просит пользователя выбрать каталог. Я хотел бы сделать что-то, чтобы установить это программно, используя что-то вроде...
obsvc.notifyObservers(null, 'open-directory', "file://" + Display.path);
(что я знаю, не работает, но это своего рода идея).
2 ответа
Я только что обнаружил, что у объекта ko.places.manager есть функция, чтобы установить каталог оконной панели Places по умолчанию. Ниже приведен пример того, как я его использовал. Для URI должен быть задан полный путь к каталогу, а в случае Windows обратная косая черта должна быть экранирована...
function SetPlace(ko, uri) {
try {
ko.places.manager.openDirURI("file:///" + uri.replace(/\\/g, "\\\\") );
} catch(e) {
alert("Could not set place to: " + uri.replace(/\\/g, "\\\\") + "\n" + e);
}
}
Интерфейс nsIFile обеспечивает это:
// Get current working directory
var file = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).
get("CurProcD", Components.interfaces.nsIFile);
Служба предпочтений Komodo также будет вариант:
var gprefs = Components.classes["@activestate.com/koPrefService;1"].
getService(Components.interfaces.koIPrefService).prefs;
gprefs.setStringPref("mruDirectory", "Display.path);
Рекомендации