オープンソースなアウトラインプロセッサを一から作る日記

もう一回整理

昨日ディレクトリを分けたらpy2exe用のsetup.pyの書き方がわからなくなってしまったので、ルートに戻しました。その関係でちょっとゴニョゴニョしたものをRev.32でコミットしました。これからwx版をマージします。

本文・タイトル編集と保存

ノードを選択した際に本文がエディタに表示される仕組みと、本文やタイトルを編集した情報がノードに保管される仕組みはできました。アウトラインプロセッサとしては、これができないとおなはしにならないわけですが。保存に関しては一応できるんですが、今…

GUIの見た目について

ここまでにLinux上とWindows上でそれぞれGtkとwxWidgetsを使って合計4種類の実行環境ができたわけですが、これをスクリーンショットで見てみます。Linuxはテーマをいくらでも変えられるのでこういう比較はあまり意味がないかもしれませんが、Gtkとwxの比較と…

Windowsでも動かしてみる

まだPyGtk版の半分くらいしかできてませんが、早めにwxPython版のWindowsでの動作確認をしてみます。wxPythonのインストールは簡単です。最初はwxWidgetsを入れてからwxPythonを入れるという手順を踏まなければならないと思い込んでいたのですが、Pythonが入…

TreeStoreをwxにも実装してみた

というわけで作ってみました。実際に使っているメソッドだけの実装なんで手抜きもいいとこですが、こんな感じです(部分)。 class AoisoWxTreeStore(): def __init__(self, treeCtrl): self.treeCtrl = treeCtrl def set_value(self, iter, column, value): p…

Pythonソースコードのパッケージ化

AOISOMEで書いてきたwxPython版のソースをAOISORAにマージすることにします。その前に既存のGtk版AOISORAのソースを整理しました。ファイル名やクラス名でGtk版とわかるようにしたのに加え、ディレクトリ分けをおこないました。フォルダを分けた際にimport文…

Windows上でAttachUnknownControlで配置したウィジェットのSizeがおかしい問題

バグなのか仕様なのかわかりませんが、Windowsの場合はこのような記述が必要なようです。 panel = xrc.XRCCTRL(self, "ID_TREE_PANEL") self.treeCtrl = AoisoWxTreeCtrl(panel) app.res.AttachUnknownControl("ID_TREE_CTRL", self.treeCtrl, panel) panel.…

閃いた

ふと、AOISORAのlogic.pyでgtkをimportしてないことに気づいた。実際にはその中で使っているiterはGtkTreeIterだしmodelはGtkTreeStoreなんだけど、型に甘いpythonにとってはそんなの関係ない。どこかでCreateしたりしてるわけじゃないので。ということは、…

GUIツールキット選びの難しさ

先ほどwxPythonのTreeCtrl周りのソースを書いてみて実感しました。よく「開発のしやすさはGtk、ユーザの使いやすさはwxWidgets」と言われますが、本当にそのとおりですね。やはりツールキット選びは永遠の課題です。というわけでwxWidgetsでのエレガントなコ…

AOISOMEコミットしました

TreeCtrlをカスタムウィジェット化 ダミーのTree表示(アイコン付き) 各種イベントハンドラを追加 以上の内容をコミット(Rev.24)。

wxTreeCtrlについて

ノードの追加方法とかデータやテキストとの関連性とかその辺のドキュメントを読んでいたんですが、印象としてはちょっと設計が古く、GtkやSwingよりはMFCとかVCLに近いと感じました。wxTreeCtrlにノード(Item)を追加する際に、テキストと画像とデータを引数…

エディタについて

ちょっと休憩して、エディタについて書きます。 開発中のアウトラインプロセッサのエディタ部の話じゃなくて、コーディングに使用するエディタの話です。AOISOのコードはvimで書いています。僕は巷で言うvimmerではないので、そんなにvimに詳しいわけでも使…

XRCedでカスタムウィジェット

Gtkでやったときの経験上、wx.TreeCtrlは派生クラスを作った方がいいでしょう。 import wx class AoisoWxTreeCtrl(wx.TreeCtrl): def __init__(self, parent): wx.TreeCtrl.__init__(self, parent) return XRCed上では?マークのカスタムウィジェット(wx用語…

XRCedにしよう

wxGladeを使っていたらすぐに問題にぶつかった。wxGladeでは、ボタンなどの画像の指定がファイル名でしかできない(多分)。Gladeのようにstock画像を呼び出せない。最終的にはすべての画像アイコンを自作する予定なのでそれはそれでもいいのかもしれないが…

wxGladeをPythonで使う方法

Gladeの場合はPythonのスクリプトから*.gladeファイルを直接読み込んで使うが、wxGladeの場合はwxGladeからPythonファイルをジェネレートしてそれを使う。こっちの方が全部Pythonで読めて便利かも。しかし、wxGladeでGUIいじる度にジェネレートするとすればP…

sizerメモ

画面リサイズに追随するかどうかの決め手になるパラメータはProportionとwxEXPAND。Sizerの方向に関してはProportionが0だと固定、1以上だとリサイズに追随。通常の2分割の場合は片方が0、もう一方が1になる。3分割以上を使う場合は、広げたいペインだけ1に…

AOISORA 0.0.4 リリースしました。

次の作業に入る前に一旦今の状態(Rev.21)をAOISORA-0.0.4としてリリースします。0.0.3からの目だった変更点はツリー上にアイコンが表示されるようになったくらいですが、内部的にはかなり変わっています。また、今のところ文字化けして実質使えないのですが…

wxPythonも使ってみるか

カテゴリをちょっと変更しました。さて、PyGtkでの開発のめどはたったんですが、py2exeの豆腐問題とか、GtkのダイアログはWindowsユーザには馴染めないとか、いろんな課題が残されています。元々Linuxで使うためのソフトとして開発をしているわけですが、配…

TreeViewにアイコン表示

やることは、TreeViewの生成時に column = gtk.TreeViewColumn() column.set_title('item') render_pixbuf = gtk.CellRendererPixbuf() column.pack_start(render_pixbuf,expand=False) column.add_attribute(render_pixbuf,'pixbuf',c.COL_ICON) render_tex…

続・XRCedで生成されたソースについて

なんかジェネレートされたPythonファイルはいらないような気がしてきた。Gladeと同じようにXMLを読み込むところからコーディングしても別に手間じゃないし、自分で書いたソースの方が読みやすい。 シンプルなFrameならxrcファイルとAppクラスだけでいける。 …

XRCedで生成されたソースについて

XRCedでGUIを作ったら、xrcファイルとpythonファイルが作られるわけですが、このpythonファイルをどうするかが問題です。直接編集すると次回ジェネレートするときに困ります。しかし良く見てみると大事なことはだいたいxrcファイルに書いてあるので、GUIを作…

AOISOMEリセット&コミットしました

AOISOMEの方は一旦クリアし、XRCedで作成したファイルだけの状態にしました(Rev.22)。これからの予定としては ボタンでTreeViewにノード追加するイベント テスト用ファイルの読み書き あたりをやってみます。その際に、AoisoNodeクラスは既存のものを使いま…

py2exe

作業マシンのFeodraを8にアップグレード中なので久しぶりにWindowsを起動。PythonアプリもWindows用にはやはりexe形式の方が配布しやすいので、py2exe用のスクリプトを書いてみました。 いろんなサイトを参考にした結果こんな感じで。 from distutils.core i…

TODO 2007.12.29

ツリービューにアイコンを表示。とりあえず第一階層とそれ以外で違うアイコンを表示してみようか。 TreeModelあたりが気に入らない。モデルなのにGtkに依存するのはどうなのか? Gtkってビューでしょ? 例えば「やっぱwxWidgetsで行こう!」となったときに流用…

どこに何を書くか

しばらく間があきました。TreeViewの派生ウィジェットを作ったところで、既存コードの整理をすることにします。まず、MainWindowに依存しすぎているという問題をどうにかしたいんですが、Gladeを使っているとどうしても仕方ない部分が多いようです。たとえば…

AOISORA、でした

12/9の日記で1AOISOMEコミットと書きましたがコミットしたのはAOISORAでした。うーむ、プロジェクトの管理がよくわからなくなってます。近々名称も含め整理しようかな。みなさん、プロトタイプやテスト用のコードをSourceForgeで管理するときはどうしてるん…

AOISOMEコミットしました

早速、TreeViewをカスタムウィジェット化したAOISOMEをsorceforge.jpのリポジトリにコミットしました(Rev.18)。と言っても現時点ではカスタムウィジェットはTreeViewそのままです。そのうちMainWindowからTreeView関連のコードを移していきたいと思います。T…

PyGtk+Gladeでカスタムウィジェットを使う

先日の日記で「うまくいかない」と書いたのですが、原因がわかりました。参考にしていたソースはこちらなんですが、このサンプルではメインウィジェットがSimpleGladeAppというクラスを継承していてその中でやっている処理があったため、シンプルな記述でカ…

Gladeとカスタムウィジェット

今は一旦ある程度動いているソースをバラして書き直しているところです。というのも、これまでGladeでGUIデザインをする際にカスタムウィジェットというのを使えることを知らず、デフォルトのGtkウィジェットしか使えないようだからと仕方なくそれらを張り付…

PyGtkを使っています。

今回、どういう言語でどういうGUIツールキットを使うのかには散々悩みました。Swing、Qt+C++、wxWidgets+C++、SWT、Lazarus+FreePascal、Gtk+C・・・。 いろいろ悩んだ挙句、最後の最後くらいにスクリプト言語でいいんじゃないかと思い立ち、PythonかRubyでG…