GtkTreeView Scroll

何を今頃だが昨日旧 Blog の「ぱぇぽぃ」を削除した。
月単位で逆アクセスがまだ百を越えていたので意図的な放置だったんですが…
流石に三年前の「あの頃の私」が書いた記事は情報が古すぎると思ったもので。

なんたってバリバリな「 Windows 以外の OS なんて知らないよ!」なデルヒャァ屋だったし。
今になって考えればキャーリックスが大失敗に終わったのは当然過ぎて笑える結果。
mono で WindowsForm よりはマシだったがせめて GTK+ にすればよかったのに。

他にサイトの一部を整理したり、伴って外部リンクしていたコードの Blog 起こしとか。
さぼっていたわけじゃないんですけど Blog で書くようなネタが作れなかった。

ということで久々にコードを。

Y901x のリストが再生開始時に選択行が見えない場合がある。
ということでリストアップしたら表示配位内にスクロールさせようと考えた。

何故この時期に Y901x をやっているんだと言わないでくれい。
自分が作ったアプリの中ではやはり一番コイツを使うんだよということで。

Windows 版 Y901 ではやっていたんですけどね、Cinema は忘れた。
一つ上と一つ下を残すようにしないと次をクリックしにくいんで結構考える。
正直メンドイ、WPF ListView の ScrollIntoView メソッドみたいなのは無いかな?

Gtk::ScrolledWindow – Ruby-GNOME2 Project Website

Ruby だが value は upper – page_size 以下にしなければいけないとか見つかるんだが
そうすると何故かうまくいかないので無視こいて

def selection_scroll(self):
    """
        def __on_selection_changed(self, selection):
        を利用だと上手くいかない
    """
    # Get GtkAdjustment
    adjustment = self.view.get_vadjustment()
    # calc
    n = self.__get_select_num()
    if n == -1:
        return
    page_size = adjustment.get_property("page_size")
    column_height = self.column1.cell_get_size(gtk.gdk.Rectangle())[4]
    # 計算値
    sc = column_height * n
    # 現在の表示範囲に入っているか検証
    v = adjustment.get_value()
    h = page_size + v - (column_height * 2)
    if sc == 0.0:
        adjustment.set_value(sc)
    elif sc < v:
        adjustment.set_value(sc - column_height)
    elif sc >= h:
        adjustment.set_value(sc - page_size + (column_height * 2))

def __get_select_num(self):
    model, it = self.selection.get_selected()
    if it:
        path = model.get_path(it)
        return path[0]
    return -1

def __on_size_request(self, widget, event=None):
    self.selection_scroll()

てな感じでリストアップしたらこのメソッドを呼んでやる。
というところまでできた、まだ検証が甘いので今日はここまで。

Cryptic Specifications as Google

shword

マジで Google のボットやデータベース開発者の意図がワカラン。
少なくとも日本人なら誰も検索しないような単語での結果を無謀にも先取り…の結果かな?
cjk 出身の中の人さん、もっとガンバってくださいよ。

あ、minipoli は Windows 7 でイケましたよ。
と、翻訳に苦しみそうな行で意図的に書くのは私のイケナイ部分です。

minipoli v1.6.0

minipoli を約一年ぶりに更新しました

minipoli ヘルプ – L’Isola di Niente

インストーラは結局 orca での方法で、まあいいや。
実はまだ Windows 7 RC でのインストールチェックはしていないけど大丈夫だろう。
明日 Ubuntu に一端戻すのでそのときに VirtualBox で。

よしよし、これで Windows 7 が出ても安心だ(Cinema は???
とはいえ何も新機能を付けないで更新は変なので

「単なるクリップボードコピー」

というフザけたコマンドを思いついて入れてみた。
きっと何かに使えるだろう(それだけカヨ!

というか minipoli って実はソースコードのほうが重要だったり。
実行ファイルとソースのダウンロード数があまり違わないのはコレだけという現実。
本当に皆さんこんなのから始めてくださいよ。

ということで関数のキャメルケースに統一や変数名の変更なんかをやっておいた。
全置換しただけなんだけど…

ということで、そういえば当時ライバル視していた ○lipName は?
一年ぶりにサイトを覗いたら相変わらず地味過ぎる更新をしまくっていて吹いた。
このスクリプトや Web アプリばかりになった時代にこういう人もいるんだなぁ。

msi

Vista 状態の今はとりあえず minipoli を msi インストーラ化しようと考えた。
作るのは SeeMe で一度作ったので簡単だったけど「送る」がまったく反応しない…
Palepoli でリンク先を調べるとなんだこりゃ?

pale

「リンク先」がグレーアウトしているのはそういうことか。
そりゃ実体へのリンクじゃないならコマンドライン引数なんか無意味だわ。
なのにプロパティには引数の指定項目が…この msi を作った開発者ってバカなの?
検索すると、あぁ皆さんご苦労様。

アドバタイズショートカットではなく、普通のショートカットを作成する: .NET Tips: C#, VB.NET, Visual Studio

どっちをやっても私の環境では下記エラーダイアログが出るだけなんですけど…
と思ったけど Orca で開いていたのを閉じるだけだった、皆さん気をつけて。

err

どっちにしろメンドイ。
Visual Studio のプロパティだけでなんとかできないか模索しているが駄目っぽい。
Windows での開発ってマジでもう嫌!Linux ならシェルスクリプトだけでなんとかなるのに。

てか、コレをどうにかするより別のインストーラを探したほうがよさそうな雰囲気。
SeeMe は引数やドラッグ&ドロップが関係無いから別にイイと思うけど変更したいな。

Align left

今日の SeeMe for Linux バックアップ。
はもうヤメにしてトップページにベータとして公開することにした。

しかし Windows 版の About をタブにしたのは失敗だったかな…
なるべく見た目を共通にも GTK+ では GtkAboutDialog を使うのが普通だ。
Windows はこういうのを提供しないのか?知らないだけで有るのだろうか?

それと最初は国際化を狙って日本語部分を strs.py に分けて作っていたんだけど…
面倒だし英語サイトを作る語学力は無いし需要は微妙このうえないし。
Windows 版と表記が違うというのは避けたいのでやはりリテラルで済ませるかと。

それにしてもコードでウィジェット配置は面倒だ。
GtkLabel を GtkTable 内で左寄せするにはどうすればいいのか?

label2 = gtk.Label("標準のサーチエンジン UNIQUEID")
label3 = gtk.Label("Speed Dial サーチエンジン UNIQUEID")
label2.set_alignment(0.0, 0.5)
label3.set_alignment(0.0, 0.5)
table.attach(label2, 0, 1, 0, 1, gtk.FILL)
table.attach(label3, 0, 1, 1, 2, gtk.FILL)

今試したら上記みたくすればイケそう、あまり試していないので問題あるかも。
HTML の table タグは左寄せがデフォルトなのに何故中央配置がデフォルトなんだろう?

それとラヂオボタングループをインデントさせたいのだがどうすれば?
GtkBox の set_spacing では上下左右全部の指定しかできないんだよね。
mono で作った時は GtkHBox を挟んで左側に空文字を置くというアホな方法を使ったけど。
左だけにマージンを指定するにはやはりそういう方法しか無いのかな?意外と難しい。