
*MalonNote v1.6

MalonNote は、ちょっとしたメモをすばやく保存・検索できるようにするアプリケーションです。
メモデータはテキストデータで保存されるので MalonNote が気に入らなくなってしまっても
情報を流用することができます。

Wiki を知っている方は「ローカル一人 Wiki」のようなものと思っていただければ良いと思います。
Wiki の影響を強く受けていますのでデータ形式もWiki 互換となるようにしました。

メモを取る環境によってOSが変わることもあると思います。ですからMalonNoteはWindows, Linux, MacOS Xの
３つのプラットフォームに対応しています。
メモデータを持ち歩ければどこでも同じようにメモを利用できます。

*動作環境
-Windows XP, Windows 2000
-Linux 要gtk+-2.0, GNOME
-MacOS X 10.3以降

*インストール方法

**Mac の場合
mnote.app(あるいはmnote)のアイコンをアプリケーションフォルダにコピーしてください

**Windows の場合
mnote.exeを任意のディレクトリにコピーしてください

**UNIXの場合
mnoteを任意のディレクトリにコピーしてください
ただし、gtk2.0がインストールされている必要があります。

*使い方


**初めて使用する場合

初めて起動する場合、メモデータを保存するディレクトリを訪ねてきます。

お好みの空ディレクトリを指定して下さい。



**検索
1行入力用のテキストボックスに検索文字列を入力して、リターンキーを押すと
検索文字列を親として、検索結果がツリー状に表示されます。
尚、以下の特殊なキーワードを使用することで全件表示と分類検索が可能です。

-全件表示
    「malon-all」とテキストボックスに入力してください

-分類検索
    「malon-type:xxxx」とテキストボックスに入力してください。
    xxxxに分類の行（メモ内のTYPEの行）に含まれる文字を指定してください

**新しいメモの作成
メニューから「New」を選択してください。

 ※機種依存文字（丸数字やローマ数字）を含んでいる場合はエラーメッセージが表示され
 　正常に保存されませんので、再度メモを開いて機種依存文字を取り除いてください

**メモの修正
検索ツリー上から修正したいメモを選択し、メニューから「Edit」を選択してください

 ※機種依存文字（丸数字やローマ数字）を含んでいる場合はエラーメッセージが表示され
 　正常に保存されませんので、再度メモを開いて機種依存文字を取り除いてください

**メモの削除
削除したいメモをツリーから選択し、メニューから「Remove」を選択してください。
メモに対応するファイルも一緒に削除されます。

**検索結果の削除
削除したい検索文字列をツリーから選択し、メニューから「Remove」を選択してください。
データファイルは削除されません。


**メモの件名修正
修正したいメモをツリーから選択し、件名を再度クリックしてください。


**メモの分類
メニューから「Group by TYPE」を選択してください。
すべてのメモから"TYPE"と書かれた行を解析して、その種類ごとに分類表示します。
メモの数が多いと若干時間がかかります。

**メモディレクトリの追加
メニューから「Add memo directory」を選択してください。
ディレクトリ選択ダイアログが表示されるので、メモデータが入っているディレクトリ
あるいは、これからメモを作成するディレクトリを指定してください。
新規にタブが作成されメモディレクトリを切り替えることができます。

**メモディレクトリの削除
メニューから「Remove memo directory」を選択してください。
選択されたタブが削除されます。メモデータディレクトリ自体は残ったままになります。

**検索ツリーの操作
「Tree」メニューから以下の機能を選択できます。

-Expand All
    すべての検索ツリーを開きます。

-Collapse All
    すべての検索ツリーを折りたたみます。

-Clear All
    すべての検索ツリーを消去します。（起動時の状態に戻ります）


*メモフォーマット

基本的にフリーフォーマットですが、最初の4行は
以下のフォーマットを崩さないようにしてください。

:''DATE'':YYYY/MM/DD HH:MI:SS

:''TYPE'':メモの種別（任意の単語。/で区切ることも可 例:memo/todo/参考）
----
本文

また、Wikiとの互換性を保つため本文には以下のような
Wikiテキスト整形フォーマットを推奨します。

-行頭がスペースで始まると、その行はそまま表示されます。
-アスタリスク(*)を行頭に書くと、大見出しになります。
-アスタリスク2個(**)を行頭に書くと小見出しになります。
- -を行頭に書くと箇条書きになります。
-http://www.maloninc.com/のようなURLは自動的にリンクになります。
-file://hoge.txtのようなものも自動的にリンクになります。
-[[]]でくくった文字列は他のメモを検索するリンクになります。
-{{}}でくくった文字列をファイル名とするファイルを開きます。
 ただし、ファイルはメモデータディレクトリ上のdocsディレクトリ内にあるものに限定されます。
 docsディレクトリは必要に応じて自分で作成してください。
-行頭がカンマで始まる行は表になります。たとえば

 ,品名,価格
 ,牛乳,100
 ,プリン,120

 は以下のような表になります。（ただし、前後に空行を入れてください）
 +-------+---+
 |牛乳   |100|
 +-------+---+
 |プリン |120|
 +-------+---+

**メモの文字コードと改行コードについて
メモの文字コードはEUCコードで改行コードはLFになります。


**新規メモフォーマットのカスタマイズ
メモディレクトリにnew.templateという名称でファイルを作成することで
新規メモのデフォルトフォーマットを定義できます。
パッケージに添付のnew.templateはバグ管理に利用できるサンプルとなっています。


*バグの報告

**メールでの報告
バグを発見した場合には以下のメールアドレスまでご連絡ください。

    hiroyuki@maloninc.com

また、以下の点について記載していただけますと大変助かります。

-OSの種類とバージョン（例: MacOS X 10.2）
-バグの事象を再現させる方法（例：同じ文字で検索を何回か繰り返すと強制終了する）

以下のファイルを取得できる場合は添付していただけますと非常に助かります。
-Windowsであれば、C:\Documents and Settings\All Users\Documents\DrWatson\drwtsn32.log
-MacOS Xであれば、/User/あなたのユーザー名/Library/Logs/CrashReporter/mnote.crash.log
-UNIXであれば、coreファイル

**sourceforgeを使える方
以下のURLからバグトラッカーへ登録していただけます助かります。
http://sourceforge.jp/projects/malonnote/tracker/


*開発者向けの情報

**GUIライブラリ
Macだけではなくて、UNIXやWindowsでも稼動させるためにクロスプラットフォームのGUIライブラリであるwxWidgets(旧名:wxWindows)を
使用しています。wxWidgetsについては以下のURLを参照してください。

-wxWindows本家
http://www.wxwindows.org/

-wxWindows日本語プロジェクト
http://wxwindowsjp.sourceforge.jp/

-wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
※このサイトを見て初めてwxWidgesを知りました。高林哲さんに感謝。

**設計思想

MalonNoteを構成するオブジェクトはMVC(Model-View-Controller)モデルで
作られています。
筆者のMVCモデルの理解を以下にまとめます。

-Model（ロジック）
    アプリケーションロジックを担当する。
    ただし、データの表示方法については実装しない。（それはViewの役割）

-View（表示）
    Modelの状態を表示する。また、ControllerからModelの状態変更通知を受けた場合には
    再表示する。
    ViewはModelの状態を変更するような処理は行わない。（それはControllerの役割）

-Controller（イベント処理）
    Viewで発生したイベントに応じてModelの状態を変更し、Viewへ状態変更を通知する。


**各クラスの機能

-mnModelクラス（Model）
    メモデータであるWikiファイルやデータの管理と検索結果の管理を行います。

-mnFrameクラス, mnNotePanelクラス（View）
    mnFrameクラスはwxNotebookをメンバーに持つクラスで、wxNotebookにタブを追加したり
    削除することを担当します。
    mnNotePanelクラスはmnModelの内容（状態）をツリーやテキストボックスに表示します。

-mnFrameControllerクラス, mnNotePanelController（Controller）
    mnFrameControllerクラスはmnFrame上で発生したイベントを処理します。
    mnNotePanelControllerクラスはmnNotePanel上で発生したイベントを処理し、mnModelの状態を変更したり、
    mnNotePanelへmnModelの状態変更を通知する役割を担います。


*謝辞
-wxWidgetsを開発している方に感謝。(www.wxwindows.org)
-高林哲さんに感謝。wxWidgetsの記事を書いていなければ、MalonNoteは存在しなかったでしょう。(http://namazu.org/~satoru/)
-MASさんに感謝。MASさんの「ひとりWiki」が大変参考になりました。(http://www2u.biglobe.ne.jp/~MAS/index.html)
-Hitomiさんに感謝。りんごちゃんのアイコンを生み出してくれました。