omg osx api
Esse commit está contido em:
+5
-16
@@ -9,14 +9,10 @@ editor.getSession().setTabSize 2
|
||||
|
||||
filename = null
|
||||
save = ->
|
||||
str = OSX.NSString.stringWithString editor.getSession().getValue()
|
||||
str.writeToFile_atomically filename, true
|
||||
File.write filename, editor.getSession().getValue()
|
||||
|
||||
saveAs = ->
|
||||
panel = OSX.NSSavePanel.savePanel
|
||||
if panel.runModal isnt OSX.NSFileHandlingPanelOKButton
|
||||
return null
|
||||
if file = panel.filenames.lastObject
|
||||
if file = Chrome.savePanel()
|
||||
filename = file
|
||||
App.window.title = _.last filename.split('/')
|
||||
save()
|
||||
@@ -33,15 +29,10 @@ bindKey = (name, shortcut, callback) ->
|
||||
sender: 'editor'
|
||||
|
||||
bindKey 'open', 'Command-O', (env, args, request) ->
|
||||
panel = OSX.NSOpenPanel.openPanel
|
||||
|
||||
if panel.runModal isnt OSX.NSFileHandlingPanelOKButton
|
||||
return null
|
||||
|
||||
if file = panel.filenames.lastObject
|
||||
if file = Chrome.openPanel()
|
||||
filename = file
|
||||
App.window.title = _.last filename.split('/')
|
||||
code = OSX.NSString.stringWithContentsOfFile file
|
||||
code = File.read file
|
||||
env.editor.getSession().setValue code
|
||||
|
||||
bindKey 'saveAs', 'Command-Shift-S', (env, args, request) ->
|
||||
@@ -52,9 +43,7 @@ bindKey 'save', 'Command-S', (env, args, request) ->
|
||||
|
||||
bindKey 'copy', 'Command-C', (env, args, request) ->
|
||||
text = editor.getSession().doc.getTextRange editor.getSelectionRange()
|
||||
pb = OSX.NSPasteboard.generalPasteboard
|
||||
pb.declareTypes_owner [OSX.NSStringPboardType], null
|
||||
pb.setString_forType text, OSX.NSStringPboardType
|
||||
Chrome.writeToPasteboard text
|
||||
|
||||
bindKey 'eval', 'Command-R', (env, args, request) ->
|
||||
eval env.editor.getSession().getValue()
|
||||
|
||||
+8
-20
@@ -9,17 +9,11 @@
|
||||
editor.getSession().setTabSize(2);
|
||||
filename = null;
|
||||
save = function() {
|
||||
var str;
|
||||
str = OSX.NSString.stringWithString(editor.getSession().getValue());
|
||||
return str.writeToFile_atomically(filename, true);
|
||||
return File.write(filename, editor.getSession().getValue());
|
||||
};
|
||||
saveAs = function() {
|
||||
var file, panel;
|
||||
panel = OSX.NSSavePanel.savePanel;
|
||||
if (panel.runModal !== OSX.NSFileHandlingPanelOKButton) {
|
||||
return null;
|
||||
}
|
||||
if (file = panel.filenames.lastObject) {
|
||||
var file;
|
||||
if (file = Chrome.savePanel()) {
|
||||
filename = file;
|
||||
App.window.title = _.last(filename.split('/'));
|
||||
return save();
|
||||
@@ -38,15 +32,11 @@
|
||||
});
|
||||
};
|
||||
bindKey('open', 'Command-O', function(env, args, request) {
|
||||
var code, file, panel;
|
||||
panel = OSX.NSOpenPanel.openPanel;
|
||||
if (panel.runModal !== OSX.NSFileHandlingPanelOKButton) {
|
||||
return null;
|
||||
}
|
||||
if (file = panel.filenames.lastObject) {
|
||||
var code, file;
|
||||
if (file = Chrome.openPanel()) {
|
||||
filename = file;
|
||||
App.window.title = _.last(filename.split('/'));
|
||||
code = OSX.NSString.stringWithContentsOfFile(file);
|
||||
code = File.read(file);
|
||||
return env.editor.getSession().setValue(code);
|
||||
}
|
||||
});
|
||||
@@ -61,11 +51,9 @@
|
||||
}
|
||||
});
|
||||
bindKey('copy', 'Command-C', function(env, args, request) {
|
||||
var pb, text;
|
||||
var text;
|
||||
text = editor.getSession().doc.getTextRange(editor.getSelectionRange());
|
||||
pb = OSX.NSPasteboard.generalPasteboard;
|
||||
pb.declareTypes_owner([OSX.NSStringPboardType], null);
|
||||
return pb.setString_forType(text, OSX.NSStringPboardType);
|
||||
return Chrome.writeToPasteboard(text);
|
||||
});
|
||||
bindKey('eval', 'Command-R', function(env, args, request) {
|
||||
return eval(env.editor.getSession().getValue());
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# This is the CoffeeScript API that wraps all of Cocoa.
|
||||
|
||||
# Handles the UI chrome
|
||||
Chrome =
|
||||
# Returns null or a file path.
|
||||
openPanel: ->
|
||||
panel = OSX.NSOpenPanel.openPanel
|
||||
if panel.runModal isnt OSX.NSFileHandlingPanelOKButton
|
||||
return null
|
||||
panel.filenames.lastObject
|
||||
|
||||
# Returns null or a file path.
|
||||
savePanel: ->
|
||||
panel = OSX.NSSavePanel.savePane
|
||||
if panel.runModal isnt OSX.NSFileHandlingPanelOKButton
|
||||
return null
|
||||
panel.filenames.lastObject
|
||||
|
||||
writeToPasteboard: (text) ->
|
||||
pb = OSX.NSPasteboard.generalPasteboard
|
||||
pb.declareTypes_owner [OSX.NSStringPboardType], null
|
||||
pb.setString_forType text, OSX.NSStringPboardType
|
||||
|
||||
|
||||
|
||||
# Handles the file system
|
||||
File =
|
||||
read: (path) ->
|
||||
OSX.NSString.stringWithContentsOfFile path
|
||||
write: (path, contents) ->
|
||||
str = OSX.NSString.stringWithString contents
|
||||
str.writeToFile_atomically path, true
|
||||
@@ -0,0 +1,37 @@
|
||||
(function() {
|
||||
var Chrome, File;
|
||||
Chrome = {
|
||||
openPanel: function() {
|
||||
var panel;
|
||||
panel = OSX.NSOpenPanel.openPanel;
|
||||
if (panel.runModal !== OSX.NSFileHandlingPanelOKButton) {
|
||||
return null;
|
||||
}
|
||||
return panel.filenames.lastObject;
|
||||
},
|
||||
savePanel: function() {
|
||||
var panel;
|
||||
panel = OSX.NSSavePanel.savePane;
|
||||
if (panel.runModal !== OSX.NSFileHandlingPanelOKButton) {
|
||||
return null;
|
||||
}
|
||||
return panel.filenames.lastObject;
|
||||
},
|
||||
writeToPasteboard: function(text) {
|
||||
var pb;
|
||||
pb = OSX.NSPasteboard.generalPasteboard;
|
||||
pb.declareTypes_owner([OSX.NSStringPboardType], null);
|
||||
return pb.setString_forType(text, OSX.NSStringPboardType);
|
||||
}
|
||||
};
|
||||
File = {
|
||||
read: function(path) {
|
||||
return OSX.NSString.stringWithContentsOfFile(path);
|
||||
},
|
||||
write: function(path, contents) {
|
||||
var str;
|
||||
str = OSX.NSString.stringWithString(contents);
|
||||
return str.writeToFile_atomically(path, true);
|
||||
}
|
||||
};
|
||||
}).call(this);
|
||||
Referência em uma Nova Issue
Bloquear um usuário