[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/05 01:38 / Filesize : 262 KB / Number-of Response : 969
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【GUI】wxWidgets(旧wxWindows) その3【サイザー】



1 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 00:06:30 ]
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 www.wxwidgets.org/
wxWindows日本語プロジェクト
 wxwindowsjp.sourceforge.jp/
Let's wxWidgets
dot-gray.s33.xrea.com/
(*)準備中(*)
www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 www.idg.co.jp/sw/back/200102/20010219_01_report.html

307 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 19:06:05 ]
ねぇ、2.6.3のサンプルでpenguinサンプルをビルドして動かしてみたんだけど、
ウィンドウを閉じようとしたら「ハンドルされていないエラーが発生しました」とかいうエラーが
出てしまう。他のOpenGL使うサンプルもみんなそうなんだけど、これってwxWidgetsのバグ?

308 名前:307 mailto:sage [2007/04/13(金) 14:14:50 ]
>>307
原因がわかったぽい。
NVIDIAの提供しているデバッグ用ドライバだとエラーになるっぽい。
通常のGeForceドライバだとエラーにならなかった。

まさかドライバで動作が違うとはね。

309 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:16:38 ]
wxPythonで使ってるんだけど、いわゆるショートカットキー(ホットキー)って
どうやって実装するの?
wxAcceleratorKeyはメニュー用のようだし、wxKeyEventはフォーカスされた
ウィンドウにしかトリガーしない。
リファレンスにもそれっぽい方法は見当たらなかったのだけど。

310 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:24:15 ]
メニューのファイル(F)の"Alt+F"みたいなの?
それだったら"ファイル(&F)"でできるけど。

311 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:50:37 ]
>>310
いや、違うだろ。
グローバルホットキーのことでしょ?
OS依存度高そうだな。


312 名前:307 mailto:sage [2007/04/13(金) 22:01:38 ]
>>308
と思ったら、普通のGLUTアプリでもこけた。
こりゃwxWidgetsとは全然関係のない話で、単にドライバの仕様な予感。
スマンカッタ・・・。

313 名前:309 mailto:sage [2007/04/13(金) 22:18:52 ]
>>311
それもだけど、当面はアプリケーションごとのCtrl+Zで取り消し、みたいなやつ。
wxMenu.Appendでitem="Undo\tCtrl+Z"とすればできるけど
これだとメニューを出せない場合に困るし、どうしたらよいものかと。

314 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 16:11:20 ]
質問です。
条件によってUIを機能しない(ボタンだったら表示が薄くなって押せなくなる)ように
するにはどうすれば良いのでしょうか。
wxWidgetsのサンプルではEVT_UPDATE_UIというイベントを使っているようですが、
真似して試してみたところ上手く行きません。

315 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 16:31:43 ]
Disable()



316 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:19:35 ]
ttp://www.averdevelopment.com/python/wxAGG.html
面白いの見つけた(windows限定みたいだし余り魅力的ではないかも…)
でも
dc = AggDC(wx.PaintDC(self))
b = aggBrush(self.dc.GetBrush())
p = aggPen(self.dc.GetPen())
みたいに使用するのは簡潔でいいと思うけど

def aggBrush(wxBrush):
def aggPen(wxPen):
を使うたびにどこかで定義しないといけないとか、これなら
素直にGDI+を使ったほうが良いかなという気もしないでもない。

というか日本語資料が一件しかないしな…

317 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 13:01:11 ]
そんなもん使うことあるか?
ゲーム作るんならどにみちバッファ直接書いたほうが早いぞ
DirectXより早いぞ

318 名前:デフォルトの名無しさん [2007/05/05(土) 02:07:54 ]

誰か、コレを和訳してないかな?

Cross-Platform GUI Programming with wxWidgets


319 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 06:39:51 ]
wxWidgetsによるプラットホーム非依存なグラフィカルユーザインターフェイスプログラミング

してみたけど。

320 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:16:14 ]
ああ流石に寒いかなと思ってやらなかったのに…

321 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:59:17 ]
だれか、これで2chブラウザつくらないのかな?

322 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:33:23 ]
メリットは?

323 名前:デフォルトの名無しさん [2007/05/06(日) 01:41:18 ]
弱酸性です。

324 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:00:32 ]
>メリット

ネタになるだろ?

だれかやって味噌〜

325 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:25:38 ]
C#の方が簡単だよ



326 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:48:26 ]
>>324
ネタと言うか宣伝だわな

327 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 06:59:32 ]
そんなあふれたもん作ってもしょうがないぽ

328 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 09:40:40 ]
あふれた?

329 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 15:18:54 ]
wxPythonなら Monarchってブラウザがあったらしい
ttp://monarch.sourceforge.jp/

330 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:26:03 ]
輝けジャンケル(Woo! Ohowo!!)空高く(Owo!!)
技と力と心が通う ザビタン(hehe!!)
         イビル(hehe!!)ガブラ(Woo!Ohooho!!)
うなれジャンケル! アクサイザー3!!


331 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:42:18 ]
なんやねん

332 名前:デフォルトの名無しさん [2007/05/06(日) 20:14:11 ]
これの代わりになるものをみんなで作ろう!!

333 名前:デフォルトの名無しさん [2007/05/06(日) 20:16:53 ]
おちつけ!!!!

334 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:25:59 ]
行く道ひとつ Ohowo!! ただひとつ
これが われらの 生きる道

アクサイザー!(Zanzan zazan!) アクサイザー!(Zanzan zazan!)
アクサイザー3!!

335 名前:デフォルトの名無しさん [2007/05/06(日) 21:27:25 ]
これって、あまり人気がないのか?



336 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 03:49:37 ]
wxSocketBase::Callbackが2.8で完全に削除されてるけど
コマンドアプリでイベント処理する場合にはどうすれば?
自作クラスにイベントハンドラを作る方法ってあるの?

ちなみにプログラムの特性上スレッドは却下、同期処理も却下

337 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 04:31:27 ]
EVT_SOCKET(id, func)

338 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 05:09:20 ]
自己解決した

ふふり

339 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:01:03 ]
みんなもっと使おうぜ!!
便利なんだから(?)

340 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:58:07 ]
wxDateTimeについて

システムの時刻とアプリケーションの時刻を独立して管理したいんだけど
wxDateSpanとwxTimeSpanをwxDateTime::Nowに加算すればいいわけですね
問題はアプリケーションで管理すべき時刻とシステム時刻の差の計算はどうすればいいの?
wxDateSpanとwxTimeSpanを2個のwxDateTimeの差から計算するには?

341 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:24:29 ]
あ、自己解決w

342 名前:デフォルトの名無しさん [2007/05/12(土) 16:44:23 ]
これ、人気ないですか?

343 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:18:49 ]
どうしてそう思うの?

344 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:01:48 ]
まだ何も思ってないのでは

345 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:53:13 ]
中身が人気無いというより

コンパイルに数時間かかるし
ドキュメントはほとんど英語しかないし
容量が1G以上いくし
内部構造まで解析できないとバグと仕様の区別が付けられないから不安定だし

まあようするに厨房には無理w



346 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:33:32 ]
メリットは何ですか?

347 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:47:36 ]
環境に左右されない。
でも、コンパイルは各環境で行わないといけない。

MFCの代わり?
(似てるし)


348 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:51:09 ]
>容量が1G以上いくし

まじっすか・・・

349 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:23:23 ]
メリットは

MFCライクだけどMFCをさらに洗練したような感じになってること
完全クロスプラットフォームだからネットワーククライアント関係を作るなら便利
完全に無料だからライセンスを一切気にする必要がない
多国語サポートとかとにかく機能はすさまじく充実してるけどクラス設計が洗練されてて覚えやすい

350 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:30:20 ]
クラス設計が洗練されているというのは
クラスの命名規約やパラメータのパターンやイベント処理方法がすべて統一されているから
ダイアログの表示の仕方を覚えると、フレーム作ったりMDI作ったりする方法がなんとなく想像できる
ちょっとそれらしい名前のクラスリファレンスを見るだけでダイアログを表示する方法と同じ方法で
いろんなものが表示できる

351 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:04:37 ]
デメリット

英語が出来ないと辛い


352 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:36:07 ]
C++のコード読めないとつらい。

当方、wxPython使い。

353 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:49:24 ]
GUI以外のシステム依存機能が大量に入ってて便利な反面
使わない機能も勝手に付いてきて重い

354 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:01:36 ]
重くは無い
でかいけどw

355 名前:デフォルトの名無しさん [2007/05/14(月) 01:55:39 ]
wxJoystickを使ってゲームパッドで操作するアプリを作成中なのですが、
ボタンの押下はポーリングでスキャンする方法しかないのでしょうか??
ボタンを長押ししたりすると、連打してるようになるし、
ボタンをちょっとだけ押しても反応しない時があるので困ってます。。

ボタンが押された時にだけイベントを発生させることはできないのでしょうか?



356 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:41:26 ]
wxJoystick::SetCapture

357 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 10:06:15 ]
すごく・・・おおきいです

358 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:49:10 ]
大きい・・・のか

359 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:10:12 ]
英語が出来ないので、断念 ⇒ Turbo C++ 使い方が良くわからないので断念 ⇒ WinAPIでガリガリ書く
みんなが辿る道

360 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:22:29 ]
英語つっても文学作品じゃないんだから嵩が知れてるでしょ。
やっぱりデカイのが痛い。

361 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:33:18 ]
>>360
デカイと痛いのか。。。

力を抜けよ。

362 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:43:01 ]
Turbo C++ で十分

363 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:45:43 ]
アッー!

364 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:45:59 ]
>>361
いやまて、チ○コじゃなくて、オパーイかも知れんぞ。

365 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 22:22:07 ]
>>364
そっちだって、でかいとジャンプするだけで痛いよ?



366 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 23:01:20 ]
>>359
それはつまり,C++を理解できてない人が打ちのめされたあげく,
Cだけで書こうと思い立つもCすらよく理解できていないからハンドラの扱いが
よくわからなくてWinAPIのサンプルをコピペしてダイアログ作って
テキストボックスに身長を入力したら標準体重を表示するだけの
プログラムの計算ルーチンだけを書いていたら頭の中でガリガリなった
ような気がする状態のことですね。あるある。

367 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:46:53 ]
wxScintillaの内部で利用しているScintillaをさ1.62から
1.71以上にしたいんだけど、どうすればいいの?

368 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 03:07:02 ]
DLLにすればでかくないw
しかしDLLを作るには英語力が必要w

369 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 03:35:10 ]
メモリに読み込んだらサイズは一緒

370 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 04:08:22 ]
メモリ量なら.Netは誰にも負けないw

371 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 10:30:44 ]
wxPython使ってるんでサイズ的には只のテキストファイルだ

372 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 20:22:52 ]
py2exe使うとどえりゃーことになるぜ

373 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 20:42:07 ]
パネル一個のアプリが50MBytes超えるしな。

374 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 20:46:30 ]
まじめにDLLとReleaseモードを組み合わせたパターンだと
ランタイム含めても2MBいくかいかないかだけどな
本体はよっぽとすさまじいシステムでもない限りせいぜい500kbくらいか

375 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 21:32:13 ]
>>373
それpy2exeの話?すげーなそれは・・・



376 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 23:21:42 ]
いわば、pythonとwxpythonの本体もまとめてexeに入れてしまうらしいからね

377 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 01:35:24 ]
今どき50MBくらいへでもないじゃん。

378 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:39:21 ]
そういう問題じゃないだろ・・

379 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:02:13 ]
わざわざPythonを使う理由がわからん
マゾか?w
C++でもJavaでもいいのにw


380 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:19:46 ]
その3つの中でPythonしか知らないからだよっ!

381 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 22:34:24 ]
C++ も Java も REPL が無いのが辛い。俺にとってはかなり致命的。
あと C++ は変則的過ぎるから気持ち悪い。

382 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 22:37:38 ]
統制がとれていないのをマルチパラダイム言語とか言ってごまかしてるからな。
俺はそのカオスさも嫌いじゃないが

383 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 23:03:59 ]
ちなみにwxJavaScriptってのもあるぞw

384 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:29:48 ]
>>382
あれは、ごまかしてるんじゃない。開き直ってるんだ。

385 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 08:58:48 ]
開き直ってるというのも、ちょっとニュアンス合わないな。
それだと、途中からそう考え出したみたいだから。

C++のあのスタンスは最初からだよ。



386 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:21:30 ]
サイズ減らしたいと思ってぐぐってたらこんなの見つけた

ケチケチ wxWidgets
bunysmc.exblog.jp/3647189/


387 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:19:53 ]
くだらねーw
てか公式でランタイムのバイナリ配布すればいいのにね

388 名前:デフォルトの名無しさん [2007/05/23(水) 00:13:34 ]
海外品に頼るな!!
国内産を使え!!
自分に合うのがなければ作れ!!

389 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:31:34 ]
日本の国産品しか使っちゃいけないくらいなら海外に脱出するよ。

390 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:47:17 ]
日本人は馬鹿が多いから無理だな

391 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 01:05:59 ]
ところで
wxURL<wxHTTPはメインスレッドから呼ぶと非同期通信になってGetInputStreamした段階で必ずreturn NULLしやがりますが
イベント登録も無いし、繋がったタイミングを検出する仕組みが一切ないのですが
これは完全にセカンドスレッドで動かすことを想定してこういう仕様にしたのだろうか?
これだけwxWidgetsじゃないような作りになってて使い物にならん

392 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 02:17:48 ]
まともにLinuxで日本語表示できるようにしてくれ

393 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 08:03:41 ]
何年前のLinuxをお使いですか?

394 名前:デフォルトの名無しさん [2007/05/25(金) 00:38:13 ]
なんで、はやらないんだろう?

395 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:48:09 ]
>>394
デカイから。

Xcb のラッパーの Xlib のラッパーの Gdk のラッパーの Gtk+ のラッパーな
ライブラリなんて普通は使いたくないでしょ。



396 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 01:03:12 ]
つか未だにUTFとかでゴミはいるだろLinuxでは使えん。

397 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:51:34 ]
wxSocketBaseのWaitForRead()するとCPU100%になるんだが
Readでブロックしてしまう前に排他制御したいのでデータの有無を事前に確認したいのだが
このCPU使用率はなんとかできんのか?


398 名前:デフォルトの名無しさん [2007/05/31(木) 10:59:42 ]
これ、MSのSilverLightに食われるんじゃないの?

Windowsは間違いなくそっちの方向へいくし、Macも使えるし、
LinuxはMoonLightでとりあえず自分的にはGTKよりwxWidgetsのほうが
いいなとおもってた口だが、Silverlightのせいでメリットなくなったな。

399 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:15:37 ]
SilverLight と wxWidgets が競合するようなものだと思ってるところが凄い…

400 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 17:29:52 ]
「クルマのカタログスペックでやたら語るくせに、免許に1種と2種の区別があることを知らないみたいなもの」だろ。

401 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 18:01:31 ]
例えばある場所からある場所に移動するのに、どの車でどういう行き方をしてるか話し合ってるときに
新幹線が出来ちゃったんでもうその話は終わりだねって感じじゃん?

402 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 18:30:27 ]
そいつは多分新幹線にも車にも乗ったことないから、乗り物にさえ乗ればどこにでもいけると思ってるんだろうな、という話。

403 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 19:50:09 ]
お前らうざいどっかいけ

404 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:25:04 ]
Silverlight=アドビ システムズの「Flash Player」に対抗するウェブブラウザ用プラグイン

405 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:24:51 ]
ずいぶん前に、公式サンプルのバイナリのサイズがあまりに大きかったので、
WxWidgeに興味がなくなったが、先日v.2.8.4をダウンロードしたら、ずいぶん
サイズが小さくなっている。Windous環境静的リンクで簡単なものなら、EXE
圧縮なしでも1Mくらいになっている。
で、興味がわいてきてお試し中だが、ライブラリが、UNICODEか否か、リンクが
静的か動的か、各OSが準備している部品を使うか否か、Debug版か否か・・
の組み合わせで16種類もあるので、ライブラリ構築にすごく時間がかかった。



406 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 18:01:40 ]
>お願いです。ム板かマ板でやってください。こっちで聞いても泥臭いCocoa使いか
>死亡寸前のPowerPlant使いしか居ません。
>
>日本語での資料の入手のし易さからwxPythonがおすすめかもです。
>本屋でのpython系の本を探ってると結構出てくるし。
>httpはサンプル多いし、GUIもwxPyhtonでそれっぽく造れる。
>
>どっちにしろ、Mac板にはPythonのスキルをもった人間は少ないよ。
>
>ここはMac板です。そうゆう人を隔離するために造られました。
>一掃したら、マカーがPCカテゴリ全体に散らばって収集付かなくなります(>_<)
>
>以下のスレッドでよろしくです。
>
>wxWidgets
>pc11.2ch.net/test/read.cgi/tech/1157727990/
>
>Python
>pc11.2ch.net/test/read.cgi/tech/1181064980/

てわけで、
新人が来るかもしれないので、みなさん準備をしてください。

407 名前:デフォルトの名無しさん [2007/06/15(金) 18:04:25 ]
目立つようにageておきます。
よろしくお願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef