このブログを検索

2009年11月24日

今日と明日

仕事休みだ!
やることねー!
ひまだ!
すばらしい!

2009年11月22日

ひゃー

ネムぃのバージョンが1.050になったー。

スタートアップからの起動時にネムぃが実行できないバグを修正、
原因はタスクトレイへアイコン追加時に失敗したら例外を投げていたのが原因。
NeGuiでは停止フラグがONの状態でタスクトレイへのアイコン追加に失敗した場合、一定時間停止、再び追加処理、失敗時に一定時間停止…を一定数繰り返すのですがここで正常に追加できなかった場合例外を投げているわけです。
失敗する場合は「タイムアウト」と「タスクバーがまだ存在しない」場合。

本来この例外を止めなきゃいけなかったけどコーディング環境では「常に」タスクバーが生成済みだったのでこの問題が浮上しなかったわけです。
デバッグ時、意図的にExplorerを落として再びタスクバーが生成された場合にうまくアイコンが追加されていたのでここら辺の受け取り処理はうまくいってるもんだとばかり思ってたよ。

今回のバージョンアップの目玉はほとんどこれだけ。
でも機能的には大きな更新だったので1.050に。

後はまぁ、OS情報でエディションを取得+ソース整理。
エディション取得はMSDNライブラリに例があるので打ち込みが面倒なだけで特に問題なし。
問題はソース整理。

NeGuiの識別子や関数のインターフェイスがぐっちゃぐちゃ。
関数にいたってはポインタなのかrefなのか。
統一せねばなー。

2009年11月21日

お、お、お!?

日月仕事で火水休みの変則勤務だー。

それはいいとしてこの間ヘッドフォン買ったんですよ。
まぁ一万くらいだろうと思って適当に買ったら奇跡の三万円。
うあー。

2009年11月16日

ウボァー

Vector登録で以前に登録してるぞボケー、と怒られちゃいました。
あー、そういや登録してたなぁ。

いざ公開しようと思ってもネムぃの最新バージョンは1.022。
ぜんぜんパッケージ版じゃないし次のパッケージで公開しよっと。

2009年11月15日

パンがなければコーラでも飲んどけばいいじゃないか

今日更新した1.021はそんなに重要なアップデートでもないのでパッケージ配布なし。
そろそろネムぃの更新飽きてきたぞー。
とりあえず飽きを忘れるためにVectorライブラリサービスへ登録、掲示板レンタルしたりカウンター設置したり。
そんなこんなしてもやっぱりやる気でない。
NeGuiでもいじろうかなー。

ぬあー。

2009年11月9日

マシュマロってあんましおいしくないと思った

立て続けにネムぃのバージョンアップ。
1.010にアイテムのメモが保持されないバグがあったので1.020もパッケージにて公開。

最近はネムぃの機能からNeGuiに引越しできそうなmoduleを引越し中。
正直GUI以外のmoduleはあんまし移動させたくなかったんですけど今後NeGuiを使用して別ソフトを作る可能性も考えたらpackageまとめておいたほうがいいかと考え決行。
とはいってもNeGuiはネムぃがつくれりゃそれでいいライブラリという位置づけなんで本当に快適に使用できるかは不明なまま一応検証用としてtest.dを作って実行してみた結果がこの画像。





とまぁこんなかんじ。所要時間は10分くらい。
一応ほかのソフトも作れなくもないかなーと思う今日この頃。
下記がそのソース↓


/**

*/
module nemuxi.negui.test;

import nemuxi.negui.allimport;

version(build) {
 pragma(build_def, "EXETYPE NT");
 pragma(build_def, "SUBSYSTEM WINDOWS,5.0");
}

void main() {
 auto aaa=new TestNeGui;
 aaa.execute;
}

class TestNeGui: MainWindow {
 enum CTRL: ITEM_ID {
  HELLO=1,
  EDIT,
  MSGBOX
 }
 private {
  TextLabel label;
  MultiEdit edit;
  Push button;
  
  Font CtrlFont, EditFont;
 }
 this() {
  GUIINFO g;
  super(&g);
 }
 protected override {
  void OnCreate() {
   // メインウィンドウ処理 -------------------------------
   // タイトルバーあり
   caption = true;
   // システムメニューあり
   systemMenu = true;
   // サイズ変更用境界線あり
   frameSize = true;
   // 表示状態
   setShow(SHOW.SHOWNORMAL);
   // 位置とサイズの設定
   move(0, 0, 200, 200);

   // メインウィンドウを親としてラベル作成 ---------------
   label = new TextLabel(this, CTRL.HELLO);
   // 水平位置設定
   label.horizonAlign   = HORIZON_ALIGN.CENTER;
   // 縦位置
   label.verticalCenter = true;
   // 文字設定
   label.text = Text("はろー わーるど");

   // メインウィンドウを親としてエディットボックス作成 ---
   edit = new MultiEdit(this, CTRL.EDIT);
   // 空白にしておく
   edit.text = Text.emptyText;

   // メインウィンドウを親としてボタン作成 ---------------
   button = new Push(this, CTRL.MSGBOX);
   // 文字設定
   button.text = Text("メッセージ表示");

   // フォント生成 ---------------------------------------
   CtrlFont = new Font(Font.STOCK.MESSAGE);
   EditFont = new Font(Font.STOCK.SYSTEM);
   EditFont.pitchAndFamily(Font.PITCH_FAMILY.MODERN);

   // 一括してフォントの設定 -----------------------------
   auto ctrls = new ControlGroup(label, edit, button);
   ctrls.font = CtrlFont;
   // エディットボックスは等幅
   edit.font = EditFont;

   // パネルの設定 ---------------------------------------
   auto panel = new Line(DIRECTION.VERTICAL);
   // ラベルの設定、 あまりの領域
   panel += label;
   panel.sizeInfo(0).absolute = -1;
   // エディットボックスの設定、50%
   panel += edit;
   panel.sizeInfo(1).percent = 50;
   // ボタンの設定、最低限の高さ
   panel += button;
   panel.sizeInfo(2).absolute = button.minContentHeight;
   // それぞれをウィンドウのパネルに設定
   layoutManager.basePanel = panel;
  }

  bool OnCommand(ITEM_ID Id, MESSAGETYPE MessageType, NeGui Sender) {
   if(Sender is button) {
    if(MessageType == Button.EVENT.CLICKED) {
     // メッセージボックス表示
     ShowMessage();
     return true;
    }
   }

   return false;
  }
 }

 private void ShowMessage() {
  // エディットボックスの文字列取得
  auto EditText = edit.text;
  // エディットボックスの改行数取得
  auto LineCount = edit.lineCount-1;
  // 取得文字列から文字列長取得
  auto TextLength = edit.textLength;

  // ダイアログ生成
  auto dialog = new MessageDialog();
  // 表示メッセージを書式付で
  dialog.message = Text(
   "文字列%s%s%s", Text.newline, EditText, Text.newline,
   "%s%s\n", Text.repeat(Text('-'), 40), Text.newline,
   "改行数 = %s\n", LineCount,
   "文字数 = %s\n", TextLength
  );
  // タイトルバーを日時に
  auto time = new DateTime();
  time.format = "[YY]/[M]/[D], [hh]:[mm]:[ss]";
  dialog.text = Text(time);
  // 表示アイコン
  dialog.icon = MessageDialog.ICON.INFORMATION;
  // ボタンの種類
  dialog.button = MessageDialog.BUTTON.OK;
  // 表示
  dialog.show;
 }
}
一応全部で140行くらいでした。

2009年11月7日

寒いでごわす

DMD2.036入れてみたらコンパイル通った。
あっれー?

2009年11月3日

1.000公開

ネムぃを本意じゃないけどまぁいいやと思ってβから1.000に移行しました。
本来ならば1.00β1Aになっていたはずなんだけどね。

今バージョンもDMD最新版ではコンパイルできず2.032を使用。
各モジュールは可能な限り2.035でコンパイル+単体試験はしてるんで早いこと移行したい限りです。

そんだけ。