BayGUI のバックアップソース(No.30)


#contents

*BayGUIとは何か? [#g98d71d1]

OrangePekoe、Mona用 GUI です(いまのところは)。
オブジェクト指向を使って、やりたいことをシンプルに実現します。

-[[サンプルアプリ>BayGUI/samples]]
-[[アプリケーション>BayGUI/applications]]
//-[[IME(日本語入力)>BayGUI/IME]]
-[[GUIビルダー>BayGUI/GuiBuilder]]
-[[質問・FAQ>BayGUI/FAQ]]

***ユーザにやさしいGUIです [#q5400e8d]

-余計な機能はほとんどありません
-マウスとキーボードを使って直感的に操作できます

***アプリ開発者にやさしいGUIです [#u1a2f6f0]

-Java風のシンプルなAPIです
-C++を知っているひとならすぐに習得できます
-Cしか知らない人でもサンプルを見ればすぐに習得できます
-見やすい日本語APIドキュメントもついています

***独自のGUIライブラリーを作ってみたい人にやさしいGUIです [#a05e0ebb]

-移植性を十分に考えた設計になっています
//--シングルプロセス用のOSに依存した部分は10%以下です
//--マルチプロセス用のOSに依存した部分は30%以下です
-コメントが事細かに日本語で入っています
-すべてのコンポーネントは十分にモジュール化されているので改造もすぐにできます
--ウィンドウやボタンのデザイン変更程度なら数行です


**機能&動作仕様 [#q6b4e8d2]

***構造 [#tc5f08b0]

-GUIサーバー+BayGUIライブラリ
-マルチプロセス
-マルチウィンドウ
-キーボード対応
-マウス対応

***互換性 [#v27c3031]

-MonaFormsアプリと共存可能です
-BayGUI0.2.2とBayGUI0.3.Xの互換性はありません
--現状はソースを少量書き換えるだけで対応可能ですが、将来的には未定です

***使用可能な部品一覧 [#w64d8dd2]

-ボタン
-チェックボックス(オンとオフ)
-チェックボックスグループ
-コンテナー(ほかの部品を内部に配置できる部品)
-コントロール(単体部品)
-イメージ(BMPとJPEG)
-ラベル(左寄せ、中央寄せ、右寄せ)
-リストボックス(現状スクロール未対応)
-スクロールバー(現状マウスのドラッグ未対応)
-テキストフィールド(現状1行のみ)
-ウィンドウ(現状各プロセスにつき1つのみ)

***Window操作 [#k35f1e16]

|操作|意味|
|タイトルバーをクリック|ウィンドウを切り替える|
|タイトルバーをドラッグ|ウィンドウを移動させる|
|左上のボタンをクリック|ウィンドウを閉じる|

//***キー操作 [#zc2aadc1]

//|キー操作|意味|
//|ESC|ウィンドウマネージャ終了|
//|ctrl+\|IMEオン・オフ|
//|SPACE|次候補表示(かな漢字変換中)|

***文字コード [#xdba09b8]

-UTF-8です
-JIS第1、第2水準、プロポーショナル表示に対応しています
-AAも表示可能です
-文字コードの自動認識はおこないません

**スクリーンショット [#p7a63690]

&ref(snap01.gif);

**ソースコード [#m8a3a674]

-ソースコードはMona本体に取り込まれています。
-バイナリーは [[MonaADK]] に取り込まれています。

**コメント欄 [#cde0ab7f]
-[[ここ:http://mona.sourceforge.jp/dynamic/pukiwiki/pukiwiki/pukiwiki.php?plugin=attach&pcmd=list&refer=BayGUI]]をみてもらえば分かると思うけど、削除したつもりのファイルも全部残っていてそれらは管理者しか削除することができないから、同じファイル名で消してアップし続けるより、バージョン番号を付けて積み重ねていく方が良いと思いますが。バージョン番号付けるのが面倒なら日付でもいいわけだし。 --  SIZE(10){2004-10-06 (水) 23:02:36}
-ちょっと前に2000年問題で大騒ぎになったばかりで、それをリアルで経験した身としては、年号を2桁で表記するのは感心しない。まだ100年近くある?2000年問題を引き起こしたプログラムを書いた昔の人もあと何十年もあるって思ってたんだろうね。 --  SIZE(10){2004-10-08 (金) 16:54:40}
-表示だけなら人間側の問題ですけどね。内部で4桁なら問題ないかと思います。 -- [[Zakky]] SIZE(10){2004-10-10 (日) 10:22:50}
-ファイル名モナー --  SIZE(10){2004-10-10 (日) 18:56:58}
-マルチプロセス化しないと使ってやらないという意見が多いようなので、今のは破棄予定。 -- [[bayside]] SIZE(10){2004-10-11 (月) 02:55:54}
-ひげぽんにもらったサンプルコードを試してみました(snap02.gif)。 -- [[bayside]] SIZE(10){2004-10-11 (月) 03:38:53}
-マルチプロセス化実験中 -- [[bayside]] SIZE(10){2004-10-12 (火) 12:52:54}
//-BayGUIはCUIシェルと共存できないので、MONITOR.CFGにはOLDSHELL.EX2のかわりにBAYGUI.EX5を指定する必要があります。とりあえず私製コンソールができるまではWindowManager::run中で別プロセスを起動させます。 -- [[bayside]] SIZE(10){2004-10-13 (水) 23:46:45}
// # auto load servers list for MONITOR.BIN
// SERVER=/SERVERS/ELF.BN2
// SERVER=/SERVERS/PE.BN2
// # SERVER=/SERVERS/MONES.EX2
// SERVER=/SERVERS/KEYBDMNG.EX2
// SERVER=/SERVERS/MOUSE.EX2
// # SERVER=/SERVERS/OLDSHELL.EX2
// SERVER=/SERVERS/BAYGUI.EX5
-私製ランチャーができたのでサーバーはいじる必要がありません。 -- [[bayside]] SIZE(10){2004-10-18 (月) 13:30:34}
-ちょっと遊んでみたくて、β18 のBayGui版をダウンロードして、上のスクリーンショットのように、/apps/gversion.ex2 でEnter と押しても反応がありません。どうやって、GUIアプリ起動させたらいいのでしょうか? -- [[Yamami]] SIZE(10){2004-10-18 (月) 18:33:22}
-- すみません。 EX5ですね。自己解決です。 -- Yamami
-- わかりづらかったですね。近いうちにスクリーンショットかえときます。 -- bayside
-双方向リストとイベント系全面書き換えのためにかなりバグバグ orz -- [[bayside]] SIZE(10){2004-10-20 (水) 17:41:27}
-一応重大なバグは大方つぶしたつもり。 -- [[bayside]] SIZE(10){2004-10-21 (木) 09:41:23}
-BayGUIの質問場所は、ここでいいですかね。 -- [[Yamami]] SIZE(10){2004-11-02 (火) 14:20:51}
-1.フォント  フォントの指定はできますか?BayGUI API ドキュメントにはFontクラスが容易されていますが、それを例えばラベルに、どうやって指定すればいいですか? -- [[Yamami]] SIZE(10){2004-11-02 (火) 14:21:58}
-2.Color  色(ラベルの背景色や、前景色の指定)って多分今は未サポートだとは思いますが、サポート予定はありますか? -- [[Yamami]] SIZE(10){2004-11-02 (火) 14:22:48}
-1について。フォントは現状ではMONA-12.MF2固定です。フォントスタイルも固定のみです。太字だけのサポートなら割と簡単にできるので要望があれば追加します。 -- [[bayside]] SIZE(10){2004-11-02 (火) 15:37:46}
-2について。現状はインターフェースがないですが、要望があればすぐに追加できます。 -- [[bayside]] SIZE(10){2004-11-02 (火) 15:38:19}
-GCHATのテキスト入力欄で長い文字列を打つと落ちるようです。念のため報告いたします。 -- [[ひげぽん]] SIZE(10){2004-11-13 (土) 17:35:24}
-GOを移植してほすぃ --  SIZE(10){2004-11-13 (土) 18:32:30}
-現状のテキストバッファーは64バイトしかないので長い文章を打つと落ちます(汗)入力できないようにしないとな・・ -- [[bayside]] SIZE(10){2004-11-13 (土) 19:58:15}
--お時間のあるときにご対応頂けると助かります。-- ひげぽん
-新BayGUIのランチャーはまだ見た目だけ変えた張りぼてです(libgui.aにリンクされています)。 -- [[bayside]] SIZE(10){2004-12-21 (火) 23:51:22}
-複数行テキストボックスのコントロールを添付しておきました。multi.zip 一部のキーが拿捕できないため未実装です。代替TABをつけてみたけどどのキーがいいんでしょうかね? -- [[Hossy]] SIZE(10){2005-01-16 (日) 01:46:28}
-バッファはコンストラクタで動的確保しています。テンプレートでもいいんですけどね。バッファオーバーフローのチェック忘れてた… -- [[Hossy]] SIZE(10){2005-01-16 (日) 01:48:03}
-判定つけました。multi2.zip です。実機テストはしてませんのであしからず。(ぉ -- [[Hossy]] SIZE(10){2005-01-16 (日) 01:52:35}
-Hossyさんありがとうございます。キーの認識の件Mona側の問題であればお知らせください>baysideさん -- [[ひげぽん]] SIZE(10){2005-01-16 (日) 11:57:42}
--キーコードがqemuと実機でぜんぜん違うのが原因です。qemuにあわせるのはよくないと思いますが、一応対策して0.2.1にいれておきます。あとMultiTextFieldはTextAreaと改名して0.2.1にいれさせていただきます。 -- [[bayside]] SIZE(10){2005-01-16 (日) 14:20:51}
--baysideさん、Hossyさんありがとうございました。 -- [[ひげぽん]] SIZE(10){2005-01-16 (日) 15:49:11}
--あらあら、そうでしたか。#define でごまかしながら DELETE HOME END PGUP PGDOWN を実装して、ついでにキャレット移動のコードを整頓してきました。multi3.zip クラス名変え忘れた... -- Hossy
--上書きモードの追加とマウスでのキャレット移動を実装しました。ついでに repaint() を整頓。クラス名も変えました。TextArea.zip です。 -- Hossy
--お疲れ様です。すばらしい!! -- [[ひげぽん]] SIZE(10){2005-01-18 (火) 00:54:42}
-TextArea のほう、こっちの手元で細々と改良してるんですけど、新GUI 移行、ってなにか移行作業いりますか? -- [[Hossy]] SIZE(10){2005-01-26 (水) 20:17:00}
-特にはないですけど、本体も見てもらうと嬉しいかなと(汗)おかしなところがあったらぜひ指摘ください。あともし興味がありましたらエディタの実装をぜひ(汗) -- [[bayside]] SIZE(10){2005-01-26 (水) 23:01:00}
-本体って BayGUI 本体かな?開発環境がないんで、とりあえず各種コントロール群を充実させようかと。さしあたっての目標はエディタだったり…行番号表示に成功・・・ -- [[Hossy]] SIZE(10){2005-01-28 (金) 01:20:18}
-これから先あったらいいと思われるコントロール(暇ができたらそのうち作ります) -- [[bayside]] SIZE(10){2005-01-28 (金) 19:29:19}
--%%CheckBox%%
--%%CheckBoxGroup%%
--%%ScrollBar%%
--Choice
--TabPanel
--Menu
--MenuBar
--MenuItem
--Dialog
-TextArea2.zip 行番号追加。デバッグとか。未実装:「範囲選択・コピーペースト・スクロールバー・undo/redo」こいつら後回し、っと。 -- [[Hossy]] SIZE(10){2005-02-02 (水) 23:44:14}
-Hossyさん精力的ですねぇ(;´Д`) -- [[ひげぽん]] SIZE(10){2005-03-02 (水) 09:45:26}
->baysideさん。バグではないのですが、BayGUI版のとけいが起動時に時刻が表示されるまで時間がかかります。ソースを見る限りではタイマイベント設定のため1秒後にしか表示できていないようです。時刻表示部を関数化して、コンストラクタ内でも表示するとよいのではないでしょうか。 -- [[ひげぽん]] SIZE(10){2005-03-02 (水) 09:49:32}
--残念ながらコンストラクタ内で表示系はまずいです。Window::onStart() が呼ばれたあとでないと、ウィンドウの実体がないため、いろいろと面倒なことになります。あ、でもsetText()するだけならいいか。検討いたします。 -- [[bayside]] SIZE(10){2005-03-02 (水) 11:27:27}
--- ありがとうございます。-- ひげぽん
-一度baysideさんが、本気度の高いアプリケーションを作成してBayGUIをブラッシュアップしてはみるのはどうでしょう。人に使ってもらう前に本格的なアプリケーションを作ってみて不足点などを補った方が良いかと。例えばエディタなど。今のサンプルはあまりにおもちゃ過ぎて「こんなことができます」というのは伝わるものの「こんなことができるんだ!!」という驚きは少ないです。どこまでポテンシャルがあるかが分かりづらいかなと。 -- [[Geesk]] &new{2005-03-26 (土) 14:12:45};
-賛成。サンプルが小さいものだと何ができるかがわかりにくいです。 --  &new{2005-03-26 (土) 22:27:45};
-- ご意見ありがとうございます。baysideさんはただいま旅に出ておりますので回答はしばらくお待ちください。-- ひげぽん
---BayGUIは自分には使いやすいように作っているので、個人的にはこれ以上ブラッシュアップする必要性は感じていません。実際に使っている人からみてこうしてほしいという要望は入れていく予定です。それから、本気度の高いアプリの件ですが、私にはそのようなセンスも体力もありませんので遠慮させていただきます。商用に耐えかねるプログラムを一人でかつ無償で作るのははっきりいって無理です・・・ -- [[bayside]] &new{2005-03-30 (水) 12:40:42};
---無理ですか。。。ありがとうございました。--[[Geesk]]
---もちろん「一緒にこういうの作ろうよ」という申し出でしたら喜んで受けさせていただきます。 -- [[bayside]] &new{2005-03-30 (水) 13:14:36};
-ボタンをクリックした後、ウィンドウ内をクリックするとイベントの発生元が最後にクリックしたボタンになっていると思います。ソースを見たところ、Windowクラスでイベントを拾ったときにeventのイベント元ソースプロパティを初期化すればいいのかな?と思いました。(Window.cppの320行あたりにme->setSource(this);みたいなのがあるといいのかな?) -- [[Renya]] &new{2005-05-02 (月) 19:28:59};
--ご指摘ありがとうございます。次回リリース時には直したいと思います。 -- [[bayside]] &new{2005-05-02 (月) 20:32:35};
-bayguiで動くマインスイーパを作ってみました。http://www.eonet.ne.jp/~mizyo/mine.html -- [[mizyo]] &new{2005-05-04 (水) 11:27:19};

#comment

トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.039 sec.