BayGUI のバックアップ差分(No.13)



#contents
 
 *BayGUIとは何か?
 
 OrangePekoe、Mona用 GUI です(いまのところは)。
 オブジェクト指向を使って、やりたいことをシンプルに実現します。
 
 -[[BayGUI API ドキュメント>http://bayside.upper.jp/upload/baygui_apidoc/]]
 -[[開発者向け>BayGUI/developper]]
 -[[コーディングガイドライン>BayGUI/guideline]]
 -[[制限事項>BayGUI/errata]]
 -[[サンプルアプリ>BayGUI/samples]]
 -[[アプリケーション>BayGUI/applications]]
 -[[IME(日本語入力)>BayGUI/IME]]
 -[[議論/BayGUI]]
 -[[質問・FAQ>BayGUI/FAQ]]
 
 ***ユーザにやさしいGUIです
 
 -余計な機能はほとんどありません
 -マウスとキーボードを使って直感的に操作できます
 
 ***アプリ開発者にやさしいGUIです
 
 -Java風のシンプルなAPIです
 -C++を知っているひとならすぐに習得できます
 -Cしか知らない人でもサンプルを見ればすぐに習得できます
 -見やすい日本語APIドキュメントもついています
 
 ***独自のGUIライブラリーを作ってみたい人にやさしいGUIです
 
 -移植性を十分に考えた設計になっています
 --シングルプロセス用のOSに依存した部分は10%以下です
 --マルチプロセス用のOSに依存した部分は30%以下です
 -コメントが事細かに日本語で入っています
 -すべてのコンポーネントは十分にモジュール化されているので改造もすぐにできます
 --ウィンドウやボタンのデザイン変更程度なら数行です
 
 **お知らせ
 
 -MonaADKに組み込まれました。
 -MonaCVSに取り込まれました。
 -GLAUNCH.EX5からアプリを起動できるようになりました。
 -IME(日本語入力)機能がつきました。
 
 **Mona0.2.0バンドルBayGUIとMona0.3.0バンドルBayGUIの相違点。
 
 ***アプリ利用者向け
 
 -ウィンドウのシェードボタンがなくなる
 -複数行テキスト入力部品が追加される
 
 ***開発者向け
 
 -BayGUIサーバーが廃止され、GUIサーバーと通信を行うようになる
 --上記に伴いMonaFormsアプリとBayGUIアプリを混在させることが可能になる
 -すべての部品は個別のウィンドウとして管理される
 --上記に伴い部品ごとのクリッピングがまともになる
 --各部品の描画はオフスクリーンに行われ、親ウィンドウを更新することで表示が更新される
 -Mona0.2.1 からのバックポート
 --TextArea クラスが追加される
 --Graphics::drawCircle() が追加される
 --Graphics::fillCircle() が追加される
 
 リファクタリング
 
 -Fontクラスの削除
 --Graphics::setFontStyle()が追加される
 -Icon、Bitmapクラスの削除
 --ビットマップのデコードはImageクラスで行うように変更される
  Bitmap *b = new Bitmap("hoge"); → Image *b = new Image("hoge");
 -messages.hの削除
 --GUIサーバーのものを使用する
 -FontManagerの名称変更
 --FontMetricsになる
 --シングルトンはDLL使用時に問題があるので廃止
  FontManager::getInstance()->getWidth("hoge");
      ↓
  FontMetrics fm;
  fm.getWidth("hoge");
 -なんでもかんでも関数にvirtualをつけていましたが、virtual関数が削減される
 -なんでもかんでも変数をprotectedにしていましたが、なるべくprivateに変更される
 -文字列はchar*からStringクラスを使うように変更される
 --エンコーディングを考慮したマルチバイト文字をStringクラス内で扱うようにして移植性や使いやすさをあげます
 ---String::getBytes() でchar*が取れます
 ---String::toCharArray() でwchar*が取れます
 ---String[int index] でwcharが取れます
 ---String::length() はwstrlen()に相当します
 ---Windowsではwcharは2バイトですが、BayGUIではUCS-4を考慮して4バイトです
 ---[[もなーフォント>MNF]] も文字コードは4バイトです(いまのところ上位2バイトは使ってませんが)
 
 **更新履歴
 
 -2004/10/10
 --マルチプロセス化完了
 -2004/10/12
 --壁紙対応(MONAWALL.BM2固定)
 -2004/10/19
 --Container, ListBox, WindowManagerを双方向リストを使うように全面書き換え
 -2004/10/20
 --GRUNNER.EX5がコマンド履歴に対応
 --GLAUNCH.EX5追加(アプリケーションランチャー)
 -2004/11/11
 --IME(日本語入力)対応
 -2004/12/20
 --新BayGUIに移行
 
 **機能&動作仕様
 
 -マルチプロセス
 --シングルプロセス用のシンプルなものもあります
 -マルチウィンドウ
 
 ***Window操作
 
 |操作|意味|
 |タイトルバーをクリック|ウィンドウを切り替える|
 |タイトルバーをドラッグ|ウィンドウを移動させる|
 |左上のボタンをクリック|ウィンドウを閉じる|
 |右上のボタンをクリック|ウィンドウをアイコン化する|
 
 ***キー操作
 
 |キー操作|意味|
 |ESC|ウィンドウマネージャ終了|
 |ctrl+\|IMEオン・オフ|
 |SPACE|次候補表示(かな漢字変換中)|
 
 ***文字コード
 
 -デフォルト文字コードはUTF-8です
 -デフォルトフォントは第1、第2水準、プロポーショナル表示に対応しています
 -文字コードの自動認識はおこないません
 
 **スクリーンショット
 
 ***旧BayGUI
 
 &ref(snap01.gif);
 
 ***新BayGUI
 
 &ref(snap02.gif);
 -開発中のファイラー
 
 #ref(snap02.gif)
 
 -お遊びに半透過ウィンドウにしてみた図
 
 #ref(snap02.png)
 
 **ソースコード
 
 バイナリーは [[MonaADK]] に取り込まれています。
 
 -&ref(baygui2-041101.zip);
 
 **コメント欄
 -[[ここ: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}
 
 #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.043 sec.