Y901x 0.1.7

結局スクロール関連はそのまま公開。
別にイイや、問題があったら後で直せばよいのだし。

ついでに Windows Y901 はリストの次や手前をゴミ箱移動できる機能があるのを思い出した。
ので適当に機能追加、GtkTreeView の手前イテレータ取得は前にやったので簡単だった。

ところで Shift + Delete とかをアクセラレータで処理する方法だが

self.accelgroup0.connect_group(gtk.keysyms.Delete, 0, gtk.ACCEL_VISIBLE, self.on_keydown)
self.accelgroup0.connect_group(gtk.keysyms.Delete, gtk.gdk.SHIFT_MASK, gtk.ACCEL_VISIBLE, self.on_keydown)
self.accelgroup0.connect_group(gtk.keysyms.Delete, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE, self.on_keydown)

という感じで GtkAccelGroup を作って

def on_keydown(self, accelGroup, window, keyval, modifier):
    # メニューに無いキーボード操作まとめて
    if keyval == gtk.keysyms.Delete:
        if modifier == gtk.gdk.SHIFT_MASK:
            self.delete_prev()
        elif modifier == gtk.gdk.CONTROL_MASK:
            self.delete_next()
        else:
            self.delete()

とすれば modifier で振り分けできるようです。
GtkAccelGroup でイチイチ modifier も指定しなきゃいけないのね。
これくらいは勝手にやってもらいたいと思うけど意図があるんだろうな。

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 は引数やドラッグ&ドロップが関係無いから別にイイと思うけど変更したいな。