Komodo projects look like file managers, but don't always offer the same functionality directly. Here's a macro that makes a copy of the current selected file in a project. To use it, create a new macro in the Komodo toolbox, copy this code, paste it in the macro, and save it. Then you can select a file, double-click the macro icon (or assign it to a keybinding), and Komodo will create a copy of the file called "Copy of <basename>.<extension>".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | try {
var pv = document.getElementById('projectview');
var part = pv.getSelectedItem();
if (!part) {
ko.dialogs.alert("No file selected");
return;
} else if (part.type != 'file') {
ko.dialogs.alert("Only files can be copied. Current item is: " +
part.type);
return;
}
var osPathSvc = Components.classes["@activestate.com/koOsPath;1"].getService(Components.interfaces.koIOsPath);
var fileObj = part.getFile();
var dirName = fileObj.dirName;
var baseName = fileObj.baseName;
var copyPath = osPathSvc.join(dirName, "Copy of " + baseName);
if (osPathSvc.exists(copyPath)) {
ko.dialogs.alert("File '" + copyPath + "' already exists, not copying");
return;
}
var shUtilSvc = Components.classes["@activestate.com/koShUtil;1"].getService(Components.interfaces.koIShUtil);
shUtilSvc.copyfile(fileObj.path, copyPath);
var p = ko.projects.manager.getSelectedProject();
if (!p.live) {
ko.dialogs.alert("Project "
+ p.name
+ " isn't live, so you'll have to manually add the copied file");
} else {
ko.projects.manager.refreshView();
}
} catch(ex) {
ko.dialogs.alert("Error: " + ex);
}
|
This works with files only, not directories and other project parts. It also points out that new files in non-live projects have to be explicitly added.
To use this macro, create a new macro in your toolbox (I creatively call mine "duplicate file"), paste this code into the macro, select a file, and run the macro.
Doesn't seem to work in Komodo IDE 6
I've written a new macro to work with Komodo 6 in http://code.activestate.com/recipes/577562-a-komodo-macro-for-duplicating-the-current-file-in/