月曜日, 10月 31, 2011

Beagleboard

最近BeagleBoard-xMなるものを購入しました。ARMを積んでUbuntuを動かすことの出来るボードでこの手のものとしては安くかつ簡単に使うことができます。導入の仕方はいろいろなページに詳しく書かれていますので割愛させていただきます。

参考までにBeagleBoardを使うために購入したもののリストと参考にしたサイトのリストを載せておきます。
PLANEXのWiFiアダプターは最新のカーネルならばさすだけであっけなく使えます。Ubuntuの導入も仮想マシンなどでx86 Ubuntu環境を用意しておけば最初に紹介したサイトであっけなく導入できますので簡単です。
USBシリアル変換機はMac OS X対応とはうたっていませんが、FTDIのサイトからMac用のドライバを入手できますし、Linuxならばつなぐだけで簡単に使えます。

土曜日, 8月 13, 2011

Emacs 23.3.50 フルスクリーン Lion 対応版

Lionのフルスクリーンに対応したパッチを書いてみました。このパッチはインライン入力パッチを当てたbzr HEAD向けに書いてあります。でも、たぶん23.3のリリース版でも行けるとはおいもます。

このパッチを当てる前に次のパッチを当ててください。ツールバーは非表示をお勧めします。表示しているとおかしくなるかもしれません。




=== modified file 'lisp/term/ns-win.el'
--- lisp/term/ns-win.el 2011-08-11 15:25:25 +0000
+++ lisp/term/ns-win.el 2011-08-11 15:29:03 +0000
@@ -912,6 +912,13 @@

(declare-function ns-emacs-info-panel "nsfns.m" ())

+(defun ns-fullscreen-toggle ()
+ (interactive)
+ (ns-fullscreen-toggle-cocoa))
+
+(declare-function ns-fullscreen-toggle "nsfns.m" ())
+
+
(defun ns-do-emacs-info-panel ()
(interactive)
(ns-emacs-info-panel))

=== modified file 'src/nsfns.m'
--- src/nsfns.m 2011-08-11 15:25:25 +0000
+++ src/nsfns.m 2011-08-11 16:03:46 +0000
@@ -2089,6 +2089,25 @@
else
error ("%s", SDATA (result));
}
+
+DEFUN ("ns-fullscreen-toggle-cocoa",Fns_fullscreen_toggle_cocoa,Sns_fullscreen_toggle_cocoa, 0, 0, 0,
+ doc: /* Toggle cooca full-screen */)
+ ()
+{
+ struct frame *sf = SELECTED_FRAME ();
+ check_ns();
+ if(sf)
+ {
+ BLOCK_INPUT;
+ EmacsView *view = (EmacsView*)FRAME_NS_VIEW(sf);
+ EmacsWindow *window = (EmacsWindow*)[view window];
+ [window toggleFullScreen:nil];
+
+ UNBLOCK_INPUT;
+ }
+ return 0;
+}
+
#endif


@@ -2665,6 +2684,7 @@
defsubr (&Sns_list_colors);
#ifdef NS_IMPL_COCOA
defsubr (&Sns_do_applescript);
+ defsubr (&Sns_fullscreen_toggle_cocoa);
#endif
defsubr (&Sxw_color_defined_p);
defsubr (&Sxw_color_values);

=== modified file 'src/nsmenu.m'
--- src/nsmenu.m 2011-06-16 15:31:16 +0000
+++ src/nsmenu.m 2011-08-11 17:00:38 +0000
@@ -1000,6 +1000,7 @@
-------------------------------------------------------------------------- */
{
[[FRAME_NS_VIEW (f) toolbar] setVisible: NO];
+ [[FRAME_NS_VIEW (f) window] setToolbar:nil];
}

void
@@ -1069,6 +1070,10 @@
#undef TOOLPROP
}

+ NSWindow *win = [FRAME_NS_VIEW (f) window];
+ if ([win toolbar] != toolbar)
+ [win setToolbar:toolbar];
+
if (![toolbar isVisible])
[toolbar setVisible: YES];


=== modified file 'src/nsterm.h'
--- src/nsterm.h 2011-08-11 15:25:25 +0000
+++ src/nsterm.h 2011-08-11 17:11:56 +0000
@@ -95,6 +95,9 @@
{
NSPoint grabOffset;
}
+
+- (BOOL) isFullScreen;
+
@end



=== modified file 'src/nsterm.m'
--- src/nsterm.m 2011-08-11 15:25:25 +0000
+++ src/nsterm.m 2011-08-11 17:09:55 +0000
@@ -1176,7 +1176,17 @@
/* constrain to screen if we can */
if (screen)
{
- NSSize sz = [screen visibleFrame].size;
+ NSSize sz = NSMakeSize(0,0);
+ if([[window className] compare:@"EmacsWindow"] == NSOrderedSame){
+ EmacsWindow *ew = (EmacsWindow *)window;
+ if([ew isFullScreen]){
+ sz = [screen frame].size;
+ sz.height += 22;
+ }
+ }
+ if(sz.width == 0 && sz.height == 0){
+ sz = [screen visibleFrame].size;
+ }
NSSize ez = { wr.size.width - sz.width, wr.size.height - sz.height };
if (ez.width > 0)
{
@@ -5156,6 +5166,7 @@
win = [[EmacsWindow alloc]
initWithContentRect: r
styleMask: (NSResizableWindowMask |
+ NSTitledWindowMask |
NSMiniaturizableWindowMask |
NSClosableWindowMask)
backing: NSBackingStoreBuffered
@@ -5187,8 +5198,8 @@
toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier:
[NSString stringWithFormat: @"Emacs Frame %d",
ns_window_num]];
- [win setToolbar: toolbar];
- [toolbar setVisible: NO];
+ /* [win setToolbar: toolbar];
+ [toolbar setVisible: NO]; */
#ifdef NS_IMPL_COCOA
toggleButton = [win standardWindowButton: NSWindowToolbarButton];
[toggleButton setTarget: self];
@@ -5221,6 +5232,13 @@

[self allocateGState];

+ NSApplicationPresentationOptions options = [NSApp currentSystemPresentationOptions];
+ [NSApp setPresentationOptions: options |
+ NSApplicationPresentationFullScreen |
+ NSApplicationPresentationAutoHideToolbar];
+ [win setCollectionBehavior:[win collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary];
+
+
ns_window_num++;
return self;
}
@@ -5725,6 +5743,27 @@
[super mouseDragged: theEvent];
}

+-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
+{
+ if ([self isFullScreen]) {
+ NSRect result = [[NSScreen mainScreen] frame];
+ result.size.height += 22;
+ if([self toolbar])
+ result.size.height -= 32;
+ [[self delegate] windowWillResize:self toSize:result.size]; /* ad-hock implemention */
+ return result;
+ } else {
+ [[self delegate] windowWillResize:self toSize:frameRect.size]; /* ad-hock implemention */
+ return [super constrainFrameRect:frameRect toScreen:aScreen];
+ }
+}
+
+- (BOOL) isFullScreen
+{
+ BOOL inFullScreen = ([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask;
+ return inFullScreen;
+}
+
@end /* EmacsWindow */




火曜日, 8月 02, 2011

アップデート

ご無沙汰しております。正月以来ですから八ヶ月ぶりですね。

さて、今月中にQt BSch3VとRemovable Disk Cleanerのアップデートを予定しています。Removable Disk Cleanerのほうはバグ修正の小規模なアップデートですが、Qt-BSch3Vのほうはかなりのコードを書き直しています。古い、Q3Supportが必要なコードを完全に排除し、Carbonのコードも排除しましたので、次回から64bit Cocoaアプリケーションになります。リファクタリングが主ですので機能の追加はないか、あっても小規模にとどまる予定です。ただ、もしQt-BSch3Vを改造する場合には見通しがよくなっていると思います。

そういえば「備え」と「Export for Webmail」の頒布は終了しました。これらは、私自身が使っていないためメンテナンスを継続することが出来ないことと、最近のMac OS Xの標準機能でも十分対応できることから終了とさせていただきました。

木曜日, 1月 06, 2011

あけましておめでとうございます

2011年もよろしくお願いします。

さて、新年早々 Removable Disk Cleaner をアップデートしました。今までのバージョンはネットワークドライブをマウントした状態で起動できなかったので、その対策です。ネットワークドライブは選択できないようになっています。もう少し機能を向上させてからリリースしたかったのですが、ほかにもTO DOがたまっているのでとりあえずバグ修正だけです。