SeeMe」タグアーカイブ

PyGtk Python Protocol Support

今日の SeeMe for Linux バックアップ。
まだ編集も自分の設定を保存もできないのに公開してよいものか?

seeme_t4

seeme4_t4.tar.gz

そういえば今まで GtkListStore を for ループすると何が取れるか知らなかった。

14.2. The TreeModel Interface and Data Stores

の「14.2.7. Python Protocol Support」をよく見ると

gtk.TreeModelRow

コイツなんだね、ということは…

# Default Delete as No append
default_delete = False
if not en.Deleted:
    for row in self.default_liststore:
        uid = row[13]
        if uid == en.UNIQUEID:
            row[0] = False
            default_delete = True
            break
    """ 下記と同じ
    it = self.default_liststore.get_iter_first()
    while it:
        uid = self.default_liststore.get_value(it, 13)
        if uid == en.UNIQUEID:
            self.default_liststore.set_value(it, 0, False)
            default_delete = True
            break
        it = self.default_liststore.iter_next(it)"""

ぐは!今までなんと無駄な処理をしていたことか。
無理に GTK+ の仕様に合わせずとも PyGtk が用意してくれた方法を使ったほうが楽だ。
なんつーか恐るべし PyGtk だと。

strip

今日の SeeMe for Linux バックアップ。

seeme_t3

seeme4_t3.tar.gz

Iinifile クラスで lng を読み込むと糞遅いので又 InifileReader クラスを作ったけど

class InifileReader():
    def __init__(self, filename):
        self.filename = filename

    def __get_value(self, section, key):
        if os.path.exists(self.filename):
            section_in = False
            f = open(self.filename)
            try:
                for linenn in f:
                    line = linenn.strip()
                    if line == "":
                        continue
                    if section_in:
                        if "=" in line:
                            pos = line.index("=")
                            if key == line[:pos]:
                                return line[pos+1:]
                        if len(line) > 2 and line[0] =="[" and line[-1] == "]":
                            return None
                    if len(line) > 2 and line[0] =="[" and line[-1] == "]":
                        if section == line[1:-1]:
                            section_in = True
            finally:
                f.close()
        return None

File オブジェクトでループができてしまうんだ、これはかなり微妙。
StreamReader とか専用のクラスを作っている .NET のほうが遥に解りやすいんですけど。
改行が含まれてしまうので strip() しないと面倒くさいし。

それと .NET をやった後に Python の open() を使うと少し変な気分。
finally で open したファイルを閉じる必要は Python では無いわけだが .NET では必須。
IronPython ではどっち?

Reduce the object named

今日の SeeMe for Linux バックアップ。
まだ GtkTreeView には辿り着けないが大まかな外枠だけは作れた。

seeme4_t2.tar.gz

seeme_t2

今改めて作っていると色々と便利なアイデアが思い浮かぶ。
Y901x では設定で使う GtkNotebook は全部個別に名前を付けたオブジェクトを作成していたが

# GtkNoteBook
self.note = gtk.Notebook()
tab_label = ["カスタムサーチ", "デフォルトサーチ", "標準設定", "バージョン"]
page = []
for i in range(4):
    tab = gtk.Label(tab_label[i])
    page.append(gtk.VBox())
    page[i].set_border_width(10)
    self.note.append_page(page[i], tab)
# page pack
label1 = gtk.Label("test")
page[0].pack_start(label1, False, False)

こんなふうに GtkVBox のポインタをリストすればパッキングはリストの添字で華麗にアクセス!
オブジェクト指向のオブジェクトって結局ポインタですから普通に List に入れられます。
しかも Python は List から取り出すのに型キャストや as 演算子は不要のようです。

タブのラベルは GtkLabel を作るしか無いけどそのためだけにソレに名前を付けるのも無駄だし。
名前付きオブジェクトをなるべく減らしたほうがコードの見通しが絶対にいいですから。

GUI 作成に VC# や Glade を使うと全部名前付きオブジェクトにするしか無いですから。
XAML や GtkUIManager を活用すればかなり減らせるけど少しのアイデアで綺麗にできる。
どうも Glade で作っていた頃の思い込みが消えていないようだ。

後なんとかしたいのはやはり現行版 SeeMe のメイン編集部分である。
あの TextBox や CheckBox をズラズラ並べた配置は作った本人は気に入っていない。
解りやすいとは思うけどもっとスマートにしたい、あれでは XAML もキタナイ。

それと何もアイテムが無い状態ではメイン編集部分を無効状態にしたほうがよさそう。
以上メモ、さて続きをやるか。

Linux Version

やっぱり SeeMe v4 は Linux 版も作ることにした。
別にドロップダウンさせなくともキーとかを変更したくなる場合があるじゃないか。

seeme4welcome

seeme4_t1.tar.gz

単なるバックアップ。
まだ「ようこそ」しか作っていないけど。
需要が全然無いと解っているけど。
ぶっちゃけ mono なんかで作ってしまったベータを引っ込めたいし。

つか私はメインで Ubuntu Linux を使っているんだからこっちのほうが重要だ。
検索バーはドロップさせられないので並べ替え機能はむしろ必要無かったりする。
だから F2 キーで g pygtk とか指定キーを頭に打って検索するのが主だ。
この操作に慣れきってしまったせいで Opera から乗り換えができなくなっている。

というか Ubuntu + PyGtk が現在のメインなんだからコッチをやらないのは変だ。

Linux 版という自分以外に使う人がいないかもなアプリだからこそをやらねば。
UI で少し凝ったことがしたいのでやれるかどうか試してみよう。

PyGtk で上手くいったら WPF でもやってみるという流れなら結構イケそうだし。
GtkTreeView と WPF の ListView は恐ろしく強力だから楽しく作れそう。

そういえば opera6.ini が operaprefs.ini に変名されたのにラベル変更するのを忘れていた。
Opera 10 正式版の設定ディレクトリ構成がどうなるか解らないのに細かく更新してもなぁ…
正式版で直しておきます。

Gtk# で以前作ったベータの C# コードや GUI コードはほとんど参考にならないや。
ほんとに mono なんて「興味を持つキッカケ」以上はやらないほうがいい、時間の無駄。

SeeMe for Windows v4 beta

昨日勢いで SeeMe for Windows v4 beta を公開した、我ながら名前が長い。
というかインストーラ化がやはり不安なので早めに出しておこうと。

てかまだ自分で Windows 7 での動作を確認していない。
ということで再び Ubuntu 9.04 の HDD に戻して…

今後こういう機会が多くなりそうな感じ。
今まで HDD を取り替えしていたけど 2 つ付けて抜き差しだけで変更できるようにすべ。

ドスパラ – BTOオリジナルパソコン Prime(プライム) Prime ALightning AM

のマザーが 690G の頃な古いマシンなんだがメンテナンスが超やりにくい。
HDD を増設するのに一度マザーを外す必要がある、やはり自作のようにいかない。
素直にデュアルブートにしとけばよかったという感じ。

しかしドエリャァ安くなったものだ、Windows 7 はコイツを買って入れるかな。
何とか一時間掛けて HDD をもう一つ付けるのを完了。

Ubuntu のほうをブートして VirtualBox ose 上の Windows 7 を起動。
自分のサイトから SeeMe v4 beta を落としてインストール、なんか変な気分。

よしよし、インストーラは問題なく動くぞと。
よしよし、インストーラ経由ならブロックされずに起動できるぞと。

seeme4b

XP でも問題無さそう、あれ? Dynabook を使っていた頃より凄く早いぞ。
もしかして VirtualBox とか仮想で動かすほうが .NET って早いの?

seeme4bxp

Vista 以外の Windows での動作確認を Ubuntu で行うというのはこれいかに。
やっぱりもう一つマシンを買ったほうがよさそう、しかしもう XP は仮想で十分だ。
ということはやっぱり Windows 7 待ちになってしまうんだよなぁ。
それとも Ubuntu 9.10 の時にするか、悩む。

それにしても Windows 7 で配布ってインストーラしか選べないのかな?メンドクセ。