标签: osx-lion

如何检测对任何窗口标题栏的点击?

我想检测 NSWindow 上的鼠标向下移动。事实上,我希望通过检测任何 NSWindow 标题栏上的点击来向整个系统添加功能。但是,我没有看到对 NSWindow 中标题栏或镶边等任何内容的访问。我想我可以监听任何点击并进行数学计算,以根据窗口的大小和位置检测点击是否在标题栏中,但我想知道是否有更好的方法。谢谢!

macos event-handling nswindow osx-lion

6
推荐指数
1
解决办法
1944
查看次数

已弃用的 com.apple.eawt.ApplicationListener 的替代方案是什么

Apple 的 Java 中的 ApplicationListener 类已被弃用。还有什么选择呢?

包:com.apple.eawt

java macos osx-lion

6
推荐指数
1
解决办法
3019
查看次数

在OS X Lion下开发Mail.app插件:从哪里开始?

我想在OS X Lion(10.7)下为Apple的默认OS X邮件客户端开发一个自定义插件.我可以在线找到旧版Mail.app的很多插件,以及这些旧版Mail使用的(官方不支持和未记录的)插件架构的一些背景信息,但不是最新版本.

我知道Lion的邮件应用程序有插件,所以我知道可以这样做,但我很难找到如何开始.Xcode为Address Book,Quartz Composer和Installer插件提供模板,但不为Mail插件提供模板.

我特别不想专门使用AppleScripts,因为他们不允许我做我想做的事情:自定义应用程序的界面,视图和工具栏等.

我是一位经验丰富的Objective-C开发人员,并为iOS构建了多个应用程序,因此语言和Xcode不会产生任何问题.

我想我只需要知道1)在哪里/如何开始以及2)如何找到有关Mail.app的插件架构的可靠信息.有人能指出我的文档,示例项目或开发此类插件的教程的方向吗?当然,非常欢迎任何其他评论,提示和技巧.

提前致谢!

email macos plugins objective-c osx-lion

6
推荐指数
1
解决办法
2120
查看次数

使用传递的参数时,防止 AppleScript 脚本更改其自己的修改日期

我有一个 AppleScript 脚本,用于通过 GeekTool 在我的桌面上显示 iTunes 曲目信息。我on runargv过去常常向脚本传递不同的参数,这样我就可以在不复制脚本的情况下显示曲目信息的不同部分(例如,我可以通过运行获得标题,我可以通过运行osascript itunes.scpt title获得艺术家/专辑osascript itunes.scpt album)。

然而,每次我用参数运行脚本时,实际的文件修改日期都会改变——似乎脚本正在向自己写入一些东西或进行某种修改。

这通常不是问题,除了在 OS X 10.7 中,Lion 为超过 2 周未修改的文件引入了文件锁定。一旦我的 iTunes 脚本被操作系统锁定,它在运行时就不能再进行这些不可见的自我更新,而且我的系统日志中充斥着这样的错误:

osascript: couldn't save changes to script /path/to/script: error -54
Run Code Online (Sandbox Code Playgroud)

我可以通过手动修改脚本来临时解决这个问题(例如,添加空行),但两周后它再次崩溃,因为 Lion 锁定了它。

理论上我可以在系统范围内禁用文件锁定来解决这个问题,但我宁愿不这样做——我喜欢它的其他用途。

那么,如何on run argv更改该脚本的修改日期的情况下将参数传递给 AppleScript 文件呢?

这是一个最小的工作示例。如果您从命令行 ( oscascript test.scpt blah)运行它,脚本的修改日期将会改变。

--test.scpt
on run argv
    tell application "iTunes"
        if player state is playing then
            set trck to current track
            set …
Run Code Online (Sandbox Code Playgroud)

applescript osx-lion

6
推荐指数
1
解决办法
1614
查看次数

在OS X 10.7.4上安装NumPy for Python 3.2.3

我已经尝试了几个月来为Python 3安装numpy但是尽管有大量的谷歌搜索,甚至发布到numpy邮件列表,我仍然没有接近解决方案.

我已经设法通过MacPorts安装它但不幸的是,似乎没有Python 3的MatPlotLib端口,这是我试图安装numpy的主要原因...所以我有点卡住...

尝试从setup.py文件构建时,我一直收到同样的错误.我在下面列出了终端输出.

谢谢你尽你所能的帮助,

亚当.

这是终端输出:

lipo: can't figure out the architecture type of: /var/folders/zj/7xymy_2n3s71ws30v3v_qnlw0000gn/T//ccbRr0Hj.out
failure.
removing: _configtest.c _configtest.o
Running from numpy source directory.Traceback (most recent call last):
  File "setup.py", line 214, in <module>
    setup_package()
  File "setup.py", line 207, in setup_package
    configuration=configuration )
  File "/Users/adammcnicol/Downloads/numpy-1.6.2rc1/build/py3k/numpy/distutils/core.py", line 186, in setup
    return old_setup(**new_attr)
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/distutils/dist.py", line 917, in run_commands
    self.run_command(cmd)
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/distutils/dist.py", line 936, in run_command
    cmd_obj.run()
  File "/Users/adammcnicol/Downloads/numpy-1.6.2rc1/build/py3k/numpy/distutils/command/build.py", line 37, in run …
Run Code Online (Sandbox Code Playgroud)

install numpy matplotlib python-3.x osx-lion

6
推荐指数
1
解决办法
1万
查看次数

mysql客户端中的命令历史记录仅显示多行查询的最后一行

我在Screen/Tmux中使用Mysql的命令行客户端,来自OSX的Terminal.app中的Bash.当使用向上箭头重新显示以前运行的跨越多行的查询时,当光标位于终端的最后一行时,mysql命令历史记录中的命令被"截断"或截断.当我在Ubuntu工作站上使用相同的工具时,这种情况永远不会发生

以下是所发生情况的直观表示:

输入一些查询; 没错.

+-------------------------------------------+
|mysql>                                     |
|mysql>                                     |
|mysql>                                     |
|mysql>select * from tables where legs = 4 a|
|nd colour = 'green';                       |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

运行它,结果显示:

+-------------------------------------------+
|| 2 | ....... | ..... |                    |
|+---+---------+-------+                    |
| x rows in set (0.00 sec)                  |
|                                           |
|mysql>                                     |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

按[向上箭头]重新显示上一个查询会让我:

+-------------------------------------------+
|| 2 | ....... | ..... |                    |
|+---+---------+-------+                    |
| x rows in set (0.00 sec)                  |
|                                           |
|nd colour = 'green';                       |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

再次点击[向上箭头],我得到: …

mysql gnu-screen readline tmux osx-lion

6
推荐指数
1
解决办法
2313
查看次数

glewInit()在macOS上失败

所以我有一段代码在ubuntu机器上运行良好,但在xcode或终端上没有这样做.我正在尝试在xcode上运行它,但它在main上失败:

"使用未声明的标识符glewInit;你的意思是glutInit吗?" "函数调用的参数太少,预期2,有0"

代码冗长是由我的教授编写的,它运行在ubuntus上.但是由于这些错误,我认为原因是......好吧,明确的标识符,包括缺失.因此,在谷歌搜索之后我发现glewInit是glew库的一部分 - >所以我下载了代码并将其安装在我的机器上,其中包括:

make sudo -s make install

已成功安装到我的/ usr/include/GL中.现在,当我输入xcode #include或只是#include时,编译器抛出找不到glew.h(虽然我可以在usr/include/GL中看到自己的文件).

这是代码:

#include "include/Angel.h"

// The rotation  around z axis
GLfloat  Theta = 0.0; // Angle (in degrees)
GLfloat  step = 0.01; // Incremental
GLuint  locTheta;  
enum { CW = 0, CCW = 1};
int direction = CW;  // Direction

//Scale along x and y axes
GLfloat ScaleFactor[2] = {1.0, 1.0};
GLuint locScale;

const int NumPoints = 4;
void init();
void display( void );
void reshape( GLsizei …
Run Code Online (Sandbox Code Playgroud)

c++ opengl osx-lion

6
推荐指数
1
解决办法
4834
查看次数

Mac上的gcc 4.7.3和gdb 7.6 - 奇怪的踩踏问题

我最近通过MacPorts在我的OS X 10.7系统上安装了GCC 4.7.3GDB 7.6,以便能够编译C++ 11代码.我不能使用Apple的自制clang ++和gdb,因为它不允许我正确调试标准模板库代码(例如,如果我取消引用列表迭代器,程序崩溃).

现在,通过新的GCC/GDB组合,我在进入函数时遇到了一些奇怪的问题.拿这个最小的例子:

#include <stdio.h>

class A {
public:
    virtual void testMethod() {
        printf("test in A\n");
    }
};

void test(A &a) {
    printf("asdf\n");
    a.testMethod(); // here, stepping works with -std=c++11
}

int main() {
    A a;
    a.testMethod();
    test(a);
    a.testMethod();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我编译代码g++ -O0 -ggdb test.cpp,GDB根本不会介入A::testMethod.我可以通过指定内部的代码行来设置断点A::testMethod,但不能通过指定方法名称(b A::testMethod())来设置断点.

更奇怪的是,如果我编译,如果g++ -O0 -ggdb -std=c++11 test.cpp从中调用,GDB会进入testMethod void test().从主要的,踩踏仍然不起作用.但是,现在,我可以通过仅指定方法名称来设置断点.

此外,一旦我在GDB中启动程序,我就会收到GDB警告,如相关问题中所述.无论是否指定,都会显示这些警告-std=c++11.

warning: Could not …
Run Code Online (Sandbox Code Playgroud)

gdb macports osx-lion c++11 gcc4.7

6
推荐指数
1
解决办法
2075
查看次数

设置launchctl limit maxfiles 512无限制导致错误:"maxfiles"的硬限制和软限制都不能无限制

我的终端http://d.pr/1pE5的屏幕截图

我正在学习本教程:

http://blog.ghostinthemachines.com/2010/01/19/mac-os-x-fork-resource-temporarily-unavailable/

它告诉我按照我在屏幕截图中遵循的过程的地方:

[laptop:~ user]$ launchctl limit maxproc 512 1024

[laptop:~ user]$ launchctl limit maxfiles 512 unlimited

[laptop:~ user]$ launchctl limit

我正在尝试执行以下设置:

launchctl limit maxfiles 512无限制

我的系统(狮子)告诉我,我在做什么是错的,而且很傻,但它已经设置无限......所以我不知道发生了什么,或者为什么它会这样做.

我应该继续并给它一个特定的价值吗?

macos osx-lion

5
推荐指数
1
解决办法
4032
查看次数

在基于视图的NSOutlineView中更改NSTableCellView的objectValue不会传播到dataSource

我使用基于视图NSOutlineView来显示和选择科学应用程序的分层结构项.

基于视图的NSOutlineView

大纲列中的每一行代表一个项目,由项目特定图标表示(图片中全部相同),一个复选框,显示项目是否被选中,以及项目名称.我需要图标,复选框和名称出现在同一个单元格中,因此我使用的是基于视图的NSOutlineView.

我已经实现了NSOutlineViewDataSource协议来向大纲视图提供数据.

该方法outlineView:objectValueForTableColumn:byItem:提供具有属性BOOL selected和的自定义对象NSString *name.

我在IB中的自定义表单元格视图组成如下:

IB中基于视图的NSOutlineView

我将复选框值objectValue.selected和标签值绑定到objectValue.name.

正如我所希望的那样,大纲视图很好地显示了objectValue提供的名称和选择状态.

但是,如果我更改复选框的状态,则outlineView:setObjectValue:forTableColumn:byItem:在我的dataSource中不会触发NSOutlineViewDataSource协议中定义的方法以提供新更改的对象值.请注意,如果我不使用单元格的自定义视图,则此方法有效.

我通过在传递的对象objectValue.selectedsetSelected方法中插入NSLog语句来检查单击复选框时是否实际更改了表格单元格视图objectValue.该selected成员正确更改状态.

如何将objectValue后面的更改传播到我的dataSource模型?我检查了NSOutlineView的委托方法,但找不到通过我的复选框发信号通知单元格视图的objectValue的方法(即单元格视图已"结束编辑").我还缺少其他一些基本观点吗?

cocoa objective-c nsoutlineview nstableview osx-lion

5
推荐指数
1
解决办法
1823
查看次数