=== modified file 'lisp/term/ns-win.el'
--- lisp/term/ns-win.el 2010-04-16 06:58:56 +0000
+++ lisp/term/ns-win.el 2010-06-03 09:11:14 +0000
@@ -894,6 +894,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 2010-04-16 06:58:56 +0000
+++ src/nsfns.m 2010-06-03 09:08:00 +0000
@@ -2096,6 +2096,24 @@
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 setFullScreen:![window isFullScreen]];
+ UNBLOCK_INPUT;
+ }
+ return 0;
+}
+
#endif
@@ -2672,6 +2690,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/nsterm.h'
--- src/nsterm.h 2010-04-16 06:58:56 +0000
+++ src/nsterm.h 2010-06-03 09:26:01 +0000
@@ -94,7 +94,13 @@
@interface EmacsWindow : NSWindow
{
NSPoint grabOffset;
+ BOOL fullScreen;
+ NSRect windowSize;
}
+
+- (void) setFullScreen: (BOOL)fullscreen;
+- (BOOL) isFullScreen;
+
@end
=== modified file 'src/nsterm.m'
--- src/nsterm.m 2010-05-28 02:22:49 +0000
+++ src/nsterm.m 2010-06-03 09:40:02 +0000
@@ -1151,7 +1151,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)
{
@@ -5689,6 +5699,47 @@
[super mouseDragged: theEvent];
}
+-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
+{
+ if ([self isFullScreen]) {
+ NSRect result = [[NSScreen mainScreen] frame];
+ result.size.height+= 22;
+ [[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];
+ }
+}
+
+- (void) setFullScreen: (BOOL)newfullscreen
+{
+ fullScreen = newfullscreen;
+ if(fullScreen)
+ {
+ [NSApp setPresentationOptions:NSApplicationPresentationAutoHideDock | NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationDisableMenuBarTransparency];
+ NSRect rect = [[self screen] frame];
+ rect.origin.y = 0;
+ rect.origin.x = 0;
+ rect.size.height += 22;
+ windowSize = [self frame];
+ [self setMovableByWindowBackground:YES];
+ [self setFrame:rect display:YES animate:YES];
+ [self setFrameOrigin:NSMakePoint(0,100)];
+ }
+ else
+ {
+ [self setFrame:windowSize display:YES animate:YES];
+ [NSApp setPresentationOptions:0];
+ //[[self delegate] windowWillResize:self toSize:[self frame].size];
+ }
+}
+
+- (BOOL) isFullScreen
+{
+ return fullScreen;
+}
+
@end /* EmacsWindow */
木曜日, 6月 03, 2010
Cocoa Emacs 23.2.50 フルスクリーン
勉強がてらEmacsフルスクリーンパッチを書いてみました。既に他の方がやっておられるので二番煎じにはなりますが、若干手法が違います。また、Snow Leopardから導入されたAPIを利用しているのでSnow Leopard以降でしか動きません。あまりテストはしていないので自己責任でお使いください。
木曜日, 5月 20, 2010
Cocoa Emacs 23.2.50 inline patch
現在のCocoa EmacsのInline patchはけっこう落ちやすいです。原因をようやく特定して修正に成功したのでパッチをおいておきます。最新のSVNのパッチを当てた上でさらにこのパッチを当ててください。
ただ単にemacs_eventがNULLの場合があって、そのときにアクセスすると落ちるようですね。
=== modified file 'src/nsterm.m'
--- src/nsterm.m 2010-04-16 12:26:35 +0000
+++ src/nsterm.m 2010-05-19 15:11:30 +0000
@@ -3918,7 +3918,7 @@
struct frame *emacsframe = SELECTED_FRAME ();
- if (mac_store_change_input_method_event())
+ if (emacs_event && mac_store_change_input_method_event())
{
emacs_event->kind = NS_NONKEY_EVENT;
emacs_event->code = KEY_MAC_CHANGE_INPUT_METHOD;
ただ単にemacs_eventがNULLの場合があって、そのときにアクセスすると落ちるようですね。
月曜日, 3月 15, 2010
金曜日, 2月 12, 2010
iTunes
今日はちょっとしたAppleScriptを載せておきます。
それはそうとQt-BSch3Vのリリース版でツールバーの挙動がおかしいですね。デバッグ中には正常に動いているので気づきませんでした。どうもQtをStatic Linkすると駄目なようです。次のリリースでは直したいところですが、うまい解決法が思いつかないので少々お待ちください。
iTunesのウインドウを最大化するためのスクリプトです。MacのiTunesはディスプレイサイズが変わったときにウインドウサイズが適切な大きさにならずにサイズを変更できなくなるので作りました。
tell application "Finder"
set displayBounds to bounds of window of desktop
end tell
set winBounds to bounds of window 1 of application "iTunes"
set item 2 of displayBounds to 22
set bounds of window 1 of application "iTunes" to displayBounds
"iTunes"になっている部分を他のソフトウエアの名前に変えればそのまま動く気がします。
火曜日, 2月 09, 2010
新しいプロジェクトを作った方が、、
Qt-BSch3Vですが新しいプロジェクトを作って全面的に書き換えた方が良い気がしてきました。現在C++で書かれている部分もフォームエディタ等を使うように書き換えた方がメンテナンス性もよく、コードが短くなります。一般的にコードが短い=バグが少ない、ですのでこのほうが良さそうですね。問題は作業量がものすごく増えることですが、とりあえず試すだけ試していけそうならその方向で試してみようと思います。
月曜日, 2月 08, 2010
Qt-BSch3V 0.47.002
ライブラリエディタ等を含んだVersion 0.47.002が本日公開予定です。ライブラリエディタ等がこのBlogのスクリーンショットにあるようなバージョンではなく、挙動がおかしな部分もありますが、とりあえずつかえるバージョンをリリースすることにしました。Version 0.47.003は再来週には公開したいですね。そのときまでに、挙動がおかしな部分を地道に直しておきたいと思います。
日曜日, 2月 07, 2010
Qt-LCoVのQt3Support排除中
現在Qt-LCoVからQt3Support依存を排除中です。現在Vectorに公開依頼中のVersion 0.47.002は水魚堂さんで頒布されているソースのごくごく一部を改変したもので外見がQt-BSch3Vにマッチしていません。
Qt3Supportを排除する上で面倒なのがQ3ToolbarとQ3ScrollView。この二つはアーキテクチャが大きく変わっており単純にQToolbarとQScrollViewに置き換えて一部を直すだけでは使えません。Qtのドキュメントとデモを参照しつつ試行錯誤しながら試すしかありません。なお、Qt-BSch3Vは、この影響でスクロールの挙動が少し変わりました。以前は部品を隅っこまで持って行けば自動スクロールしたのですが、現在はその機能がありません。そのうち実装したいと思いますが今はまだBSch3Vの全容を理解していないのでまだまだかかりそうです。
とりあえず開発目標は以下の通りです。
- Q3Supportの排除
- Windows版のBSch3Vで作ったファイルを読めるようにする。
- Macにあわせた挙動にする。
まだまだしばらくかかりそうですね。いつまでモチベーションが続くか分かりませんが、続く限り開発して行こうと思います。
ffmpegによるオーディオ変換
つまらないShell Scriptですが、いくつか変換用スクリプトを載せておきます。FFmpegは複雑すぎてよく分かりませんね。
- FLVやMP4の動画から音楽ファイルをそのまま取り出す。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "extractaudio [input] [output]"
exit 1
fi
ffmpeg -i "${1}" -acodec copy "${2}"
- iPodやiTunesで再生可能な音楽ファイル(AAC)に変換する。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "${0} [input] [output]"
exit 1
fi
ffmpeg -i "${1}" -vn -acodec libfaac -ac 2 -ar 44100 -ab 128k "${2}"
しかし、シェルスクリプトはこういうときに便利ですね。PerlやPythonを使うまでもないけどAliasじゃ無理な場合に重宝します
土曜日, 2月 06, 2010
木曜日, 2月 04, 2010
Qt-BSch3V Modified 0.47.002
インストーラー化は諦めてQtをstatic linkすることにしました。ファイルサイズは大きくなりますが、Macの単純コピーでインストールできる利点を生かすにはStatic Linkしかありませんので。
という訳で0.47.002をVectorに公開申請しました。今度はライブラリエディタ等を含んだバージョンです。まだ、ライブラリエディタ等は手を入れていないので直すべき点が多くありますが、ライブラリエディタがないと使いにくいソフトですので早急にリリースすることにしました。ついでにBSch3Vにおいてコマンドキーを押すと選択が解除され、コピーができない問題にも対処しました。
そういえば更新回数がすでに去年と一昨年の回数を上回っていますね。
水曜日, 2月 03, 2010
火曜日, 2月 02, 2010
Qt-BSch3V Modified 周辺ソフトウエア
周辺ソフトウエアもとりあえずビルドは通りました。アイコンを設定したくらいしか変更は入れてないませんけどね。ソースコードを整理してBSch3Vのコマンドキーで選択が解除される問題の解決版と一緒にリリースしたいと思います。もし、ソースからビルドできる場合はapplications.cppの778行目の関数を以下のように訂正していただければなおります。
void ApplicationWindow::keyPressEvent ( QKeyEvent * e )
{
switch(e->key()){
case Qt::Key_S:
ToolSelector();
break;
default:
break;
}
}
日曜日, 1月 31, 2010
BSch3Vの周辺ソフトウエア
木曜日, 1月 28, 2010
Qt-BSch3V Modified
先ほどVectorに公開依頼をしました。なんとファイルサイズはBZip2圧縮で168.4MBもあります。そのうち150MBはQtのソースコードで15MBはQtのバイナリファイルだと思われます。別に欲しい人はメールで問い合わせてもらうことにしてもGPL的には構わないはずですが、一番確実な方法にしておきました。
iPad
Mac OS XではなくiPhone OSが来るだろうと思っていたら、やっぱりiPhone OSでした。このままMac OS 11はiPhone OSベースにでもなるんでしょうかね。さすがにパーソナルコンピュータのくくりではマルチタスクがないと無理でしょうけど。
私は今、iPod touchを音楽を聴く用途よりもドキュメントビューワーやWebブラウザとして使うことの方が多いので、私の用途にはマッチしそうです。それでも、まだまだ2年前に買った初代iPod touchが現役なので買うつもりはありませんが(当時5万円もしましたし)、これが寿命を迎えた頃に買いたいと思います。
火曜日, 1月 26, 2010
リリースしたいけど
Qt-BSch3Vですが、Vectorに公開申請してからQtのソースコード入れていないことに気づきました。GPLのため含めないとまずいので公開までしばしお待ちください。Qtのライセンスの確認しておきます。初回はQt-BSch3Vだけでライブラリエディタ等は含まれない予定です。含めていたらいつまでも公開できない気がするので。
しかし、QtをDynamic Linkすると、結構ファイルサイズが大きいですね。サイズが44MBほどあります。回路図エディタだけなら、全部一つのパッケージに入れてしまえばいいですが、ライブラリエディタもリリースしたときには共有した方が良さそうです。インストーラー付きにするかもしれません。もしくはQtは各自ダウンロードしてもらうようにするかですね。
日曜日, 1月 17, 2010
水曜日, 1月 06, 2010
Cocoa と Apple Event
Apple Eventを使おうと思ったのですが、Apple Scriptとの対応関係がよくわかりません。ならば直接Apple Scriptを実行してしまえとNSAppleScriptなんていうクラスを利用しています。AppleScriptとAppleEventはどこへ向かうのでしょうかね。Apple製ソフトウエアでもAppleScript非対応なんて言うのもありますし。もちろんUI Scriptingなんて方法があるのは知っていますけど。
登録:
投稿 (Atom)








