📄 carbonuienhancer.java
字号:
fgAboutActionName.getChars(0, l, buffer, 0);
int str= OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, buffer, l);
OS.InsertMenuItemTextWithCFString(menu, str, (short) 0, 0, kHICommandAbout);
OS.CFRelease(str);
// add separator between About & Preferences
OS.InsertMenuItemTextWithCFString(menu, 0, (short) 1, OS.kMenuItemAttrSeparator, 0);
// enable pref menu
OS.EnableMenuCommand(menu, kHICommandPreferences);
// disable services menu
OS.DisableMenuCommand(menu, kHICommandServices);
// wizard menu
l= fgWizardActionName.length();
buffer= new char[l];
fgWizardActionName.getChars(0, l, buffer, 0);
str= OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, buffer, l);
OS.InsertMenuItemTextWithCFString(menu, str, (short) 3, 0, kHICommandWizard);
OS.CFRelease(str);
// NAT test menu
l= fgNatTestActionName.length();
buffer= new char[l];
fgNatTestActionName.getChars(0, l, buffer, 0);
str= OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, buffer, l);
OS.InsertMenuItemTextWithCFString(menu, str, (short) 4, 0, kHICommandNatTest);
OS.CFRelease(str);
OS.InsertMenuItemTextWithCFString(menu, 0, (short) 5, OS.kMenuItemAttrSeparator, 0);
// restart menu
l= fgRestartActionName.length();
buffer= new char[l];
fgRestartActionName.getChars(0, l, buffer, 0);
str= OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, buffer, l);
OS.InsertMenuItemTextWithCFString(menu, str, (short) 6, 0, kHICommandRestart);
OS.CFRelease(str);
OS.InsertMenuItemTextWithCFString(menu, 0, (short) 7, OS.kMenuItemAttrSeparator, 0);
}
// schedule disposal of callback object
display.disposeExec(
new AERunnable() {
public void runSupport() {
commandCallback.dispose();
// stopSidekick();
}
}
);
}
private static void stopSidekick()
{
try
{
Runtime.getRuntime().exec(new String[]{"osascript", "-e", "tell application \"Azureus\" to quit"});
}
catch (IOException e)
{
Debug.printStackTrace(e);
}
}
int appleEventProc(int nextHandler, int theEvent, int userData) {
int eventClass = OS.GetEventClass(theEvent);
// int eventKind = OS.GetEventKind(theEvent);
// System.out.println("appleEventProc " + OSXtoString(eventClass) + ";"
// + OS.GetEventKind(theEvent) + ";" + OSXtoString(theEvent) + ";"
// + OSXtoString(userData));
// Process teh odoc event
if (eventClass == OS.kEventClassAppleEvent) {
int[] aeEventID = new int[1];
if (OS.GetEventParameter(theEvent, OS.kEventParamAEEventID, OS.typeType,
null, 4, null, aeEventID) != OS.noErr) {
return OS.eventNotHandledErr;
}
// System.out.println("EventID = " + OSXtoString(aeEventID[0]));
if (aeEventID[0] != kAEOpenDocuments && aeEventID[0] != kURLEventClass) {
return OS.eventNotHandledErr;
}
EventRecord eventRecord = new EventRecord();
OS.ConvertEventRefToEventRecord(theEvent, eventRecord);
OS.AEProcessAppleEvent(eventRecord);
if (true)
return OS.noErr;
}
return OS.eventNotHandledErr;
}
private static String OSXtoString(int i) {
char[] c = new char[4];
c[0] = (char)((i >> 24) & 0xff);
c[1] = (char)((i >> 16) & 0xff);
c[2] = (char)((i >> 8) & 0xff);
c[3] = (char)(i & 0xff);
return new String(c);
}
final static Object target = new Object() {
int openDocProc(int theAppleEvent, int reply, int handlerRefcon) {
AEDesc aeDesc = new AEDesc();
EventRecord eventRecord = new EventRecord();
OS.ConvertEventRefToEventRecord(theAppleEvent, eventRecord);
try {
int result = OSXAccess.AEGetParamDesc(theAppleEvent,
OS.kEventParamDirectObject, typeAEList, aeDesc);
if (result != OS.noErr) {
Debug.out("OSX: Could call AEGetParamDesc. Error: " + result);
return OS.noErr;
}
} catch (java.lang.UnsatisfiedLinkError e) {
Debug.out("OSX: AEGetParamDesc not available. Can't open sent file");
return OS.noErr;
}
int[] count = new int[1];
OS.AECountItems(aeDesc, count);
//System.out.println("COUNT: " + count[0]);
if (count[0] > 0) {
String[] fileNames = new String[count[0]];
int maximumSize = 80; // size of FSRef
int dataPtr = OS.NewPtr(maximumSize);
int[] aeKeyword = new int[1];
int[] typeCode = new int[1];
int[] actualSize = new int[1];
for (int i = 0; i < count[0]; i++) {
if (OS.AEGetNthPtr(aeDesc, i + 1, OS.typeFSRef, aeKeyword, typeCode,
dataPtr, maximumSize, actualSize) == OS.noErr) {
byte[] fsRef = new byte[actualSize[0]];
OS.memcpy(fsRef, dataPtr, actualSize[0]);
int dirUrl = OS.CFURLCreateFromFSRef(OS.kCFAllocatorDefault, fsRef);
int dirString = OS.CFURLCopyFileSystemPath(dirUrl,
OS.kCFURLPOSIXPathStyle);
OS.CFRelease(dirUrl);
int length = OS.CFStringGetLength(dirString);
char[] buffer = new char[length];
CFRange range = new CFRange();
range.length = length;
OS.CFStringGetCharacters(dirString, range, buffer);
OS.CFRelease(dirString);
fileNames[i] = new String(buffer);
}
if (OS.AEGetNthPtr(aeDesc, i + 1, typeText, aeKeyword, typeCode,
dataPtr, maximumSize, actualSize) == OS.noErr) {
byte[] urlRef = new byte[actualSize[0]];
OS.memcpy(urlRef, dataPtr, actualSize[0]);
fileNames[i] = new String(urlRef);
}
//System.out.println(fileNames[i]);
}
TorrentOpener.openTorrents(fileNames);
}
return OS.noErr;
}
int toolbarToggle(int nextHandler, int theEvent, int userData) {
int eventKind = OS.GetEventKind(theEvent);
if (eventKind != OS.kEventWindowToolbarSwitchMode) {
return OS.eventNotHandledErr;
}
int[] theWindow = new int[1];
OS.GetEventParameter(theEvent, OS.kEventParamDirectObject,
OS.typeWindowRef, null, 4, null, theWindow);
int[] theRoot = new int[1];
OS.GetRootControl(theWindow[0], theRoot);
final Widget widget = Display.getCurrent().findWidget(theRoot[0]);
if (!(widget instanceof Shell)) {
return OS.eventNotHandledErr;
}
final Shell shellAffected = (Shell) widget;
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
int type;
Long l = (Long) shellAffected.getData("OSX.ToolBarToggle");
if (l == null || l.longValue() == 0) {
type = SWT.Collapse;
} else {
type = SWT.Expand;
}
Event event = new Event();
event.type = type;
event.display = widget.getDisplay();
event.widget = widget;
shellAffected.notifyListeners(type, event);
shellAffected.setData("OSX.ToolBarToggle", new Long(
type == SWT.Collapse ? 1 : 0));
}
});
return OS.noErr;
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -