iSpeLL开发日志-2010.06.14

六月 14, 2010
Tags:

在主窗口界面上添加“切换置顶”的按钮,并让它与系统状态菜单,偏好设置里面的控件三者之间同步更新。

这个按钮的类型为Toggle,同步时,通过程序修改它的状态即可。

0

iSpeLL开发日志-2010.06.06

六月 6, 2010
Tags:

加入全局快捷键。代码参考开源项目jumpcut

0

iSpeLL开发日志-2010.06.04

六月 4, 2010
Tags:

为程序添加自动升级功能,使用框架为Sparkle

几点要注意的地方:

  1. appcast.xml文件可以与程序代码放在一起交由SVN管理,避免了再找虚拟空间存放文件的麻烦。但以后每次发布,都需要更新这个文件。这不是最完美的方案,因为程序打包的时候也会把这个多余的文件打进去,但对程序本身并无影响,程序升级依赖的是Info.plist中SUFeedURL所设的URL。
  2. 如果appcast.xml是放在google code上的,注意在项目Info.plist中,SUFeedURL的值必须是appcast.xml在google code上raw filed的地址(只能看到xml内容的那个URL)。
  3. 在把Sparkle框架加入SVN的时候,可以删掉不需要的语言包,以减少程序大小。
0

iSpeLL开发日志-2010.06.01

六月 1, 2010

给设置面板添加多视图,在切换视图的时候使用动画。代码参考开源项目Sequel pro

效果如下:

preferencesmov

0

iSpeLL开发日志-2010.05.31

五月 31, 2010

给程序添加开机启动功能。参考

如果同时打开System Preferences当前帐户的Login Items,可以看到启动列表里面会动态增加或减少iSpeLL这一项。

而且在一台电脑多帐户情况下,可以针对不同帐户开启或关闭这个选项。

0

iSpeLL开发日志-2010.05.29

五月 29, 2010
  1. 添加显示/隐藏 dock图标功能。参考
    原理是:在info.plist加上隐藏dock icon的设置,但是在程序启动的时候,检查Default来决定是否要Suppress这个设置。
    首先,修改info.plist的源代码。两种方法:

    • 在Finder中找到info.plist文件,用文本编辑器打开,在</dict>之前添加:
      
      <key>LSUIElement</key>
      <true/>
      

      一般用户也可以这个方法去自定制任意应用程序,不让它的图标出现在dock上。

    • 或者在Xcode中,打开info.plist,添加Application is agent (UIElement)项,并勾选。
  2. 在设置面板修改显示/隐藏dock图标选项后,弹出Modal对话框,让用户选择更改马上生效还是下次启动程序时生效。参考
  3. 如选择马上生效,则重启程序。参考
    注意:在重启之前必须手动同步defaults,而不能依赖defaults的自动同步周期。否则,更改是不能保存到磁盘上的。
  4. 在dock图标隐藏的状态下运行程序,只能用状态栏菜单来操作。当用户处于其他程序下,而点击状态栏菜单中的打开主窗口功能时,应该打开iSpeLL的主窗口并立即切换过去。不管当前主窗口是否关闭或打开。
    
    [NSApp activateIgnoringOtherApps:TRUE];
    [mainContentWindow makeKeyAndOrderFront:sender];
    
0

iSpeLL开发日志-2010.05.26

五月 26, 2010
  1. 添加状态栏菜单:窗口置顶,打开主窗口,设置,关于,退出。参考
  2. 版本设定。参考
0

iSpeLL开发日志-2010.05.24

五月 24, 2010

使用User Defaults保存一个bool值,决定是否显示mouseover提示框信息。

0

iSpeLL开发日志-2010.05.23

五月 23, 2010

窗口移动后,mouseover的提示框也应该重新生成,需要解决窗口坐标到屏幕作标转换问题。参考
调试mouseover弹出信息时,犯了一个低级错误,如下:


NSPoint buttonPoint = NSMakePoint(NSMidX([self frame]),NSMidY([self frame]));
NSLog(@"%d, %d",buttonPoint.x, buttonPoint.y);

x和y的类型是CGFloat,即float,所以不能用%d去表示。上面的参考不仅帮我解决了坐标点问题,也解决了NSLog格式问题。

0

iSpeLL开发日志-2010.05.22

五月 22, 2010

使用MAAttachedWIndow给搜索框添加MouseOver提示。参考

  1. 研究MAAttachedWIndow使用方法。
  2. 研究MouseOver的实现方式,实现以下两个方法即可。
    
    - (void)mouseEntered:(NSEvent *)theEvent
    - (void)mouseExited:(NSEvent *)theEvent
    

    以及在- (void)awakeFromNib中添加

    
    - (void)awakeFromNib{
    [self addTrackingRect:[self bounds]
    owner:self
    userData:nil
    assumeInside:YES];
    }
    
  3. 要让界面控件响应鼠标移动(是mousemove,不是mouseover)事件,必须调用下面代码:
    [[self window] setAcceptsMouseMovedEvents:YES];
    因为默认情况下窗口是不接收鼠标事件的,这是为性能考虑,毕竟默认情况下,并不是所有的窗口都有必要去关心这个鼠标事件。
    不要把这个与mouseover混淆了。
  4. 还要注意的是,如果在Interface Builder里面有了自定义的NSView子类了,它的下面这个方法是不会被调用的。参考一参考二
    
    - (id)initWithFrame:(NSRect)frame
    
0