投稿者「sasakima-nao」のアーカイブ

GtkPlacesSidebar

あれ、今まで Widget ギャラリーページなんてあったかな?
Widget Gallery: GTK+ 3 Reference Manual

Widget 画像をクリックするとそのページにジャンプできる。
これは微妙に便利。

てか GtkPlacesSidebar というものが 3.10 時からあったのか。
このページのおかげで今頃知ったぞ!

しかしどう見ても Nautilus の左ペインそのまんまだが何だこれ。
試してみるのが一番速いな、ということで。

#!/usr/bin/env python3

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, GLib

class SidebarTest(Gtk.Window):
    """
        Nautilus Sidebar
    """
    def __init__(self):
        Gtk.Window.__init__(self)
        # GtkPlacesSidebar
        sidebar = Gtk.PlacesSidebar.new()
        # Select Documents Directory
        doc = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOCUMENTS)
        f = Gio.File.new_for_path(doc)
        sidebar.set_location(f)
        # Add Shortcut
        f = Gio.File.new_for_path("/home/sasakima-nao/doc/html")
        if f.query_exists():
            sidebar.add_shortcut(f)
        # Signal
        sidebar.connect("open-location", self.on_sidebar_open_location)
        # etc...
        #sidebar.set_show_recent(False)
        #sidebar.set_show_other_locations(True)
        #sidebar.set_show_enter_location(True)
        self.add(sidebar)
        self.show_all()

    def do_delete_event(self, event):
        Gtk.main_quit()

    def on_sidebar_open_location(self, sidebar, location, open_flags):
        """
            location @ GFile
        """
        uri = location.get_uri()
        self.set_title(uri)

SidebarTest()
Gtk.main()

sidebar

外付け USB HDD を繋いだら普通に認識までしてくれたぞ。
ブックマークも同じ、本当に Nautilus の左ペインそのまんまじゃないか。
でも何故か 3.18 で「他の場所」部に移動した root が表示される。

ショートカットの追加も可能、ただし実在している必要があるようだ。
一部は非表示にもできるけど基本 Nautilus と同じってことみたい。

うーん、これってどういう場面で使うのだろう?
外部機器の接続監視やサーバーログインを自前でやる必要が無いのはいいが。
オリジナルな「開くダイアログ」以外の使い道が考え付かない DESU。

GtkFlowBox (2)

以前 GtkFlowBox の使い道が解らないとか書いた。
GtkFlowBox | PaePoi

よく考えると Totem のサムネイルに使われていたりする。
そうか、GtkIconView の代わりみたいなものかな。

つまり GtkScrollView を噛ませて画像表示なんかで便利かも。
試しにディレクトリ画像サムネイルを作ってみよう。

#!/usr/bin/env python3

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GLib, Gio, GdkPixbuf

NAE_PATH = "/home/sasakima-nao/pic/game/gf/nae_yuki_ssr"

class FlowBoxTest(Gtk.Window):
    """
        Easy GtkIconView
    """
    def __init__(self):
        Gtk.Window.__init__(self)
        # GtkFlowBox
        flowbox = Gtk.FlowBox.new()
        flowbox.set_valign(Gtk.Align.START)
        self.get_all_picture(flowbox)
        #flowbox.set_selection_mode(Gtk.SelectionMode.MULTIPLE)
        scroll = Gtk.ScrolledWindow.new()
        scroll.add(flowbox)
        # self
        self.index = 0
        self.add(scroll)
        self.resize(400, 300)
        self.show_all()

    def do_delete_event(self, event):
        Gtk.main_quit()

    def get_all_picture(self, flowbox):
        """
            Thumbnail JPEG File
        """
        d = Gio.file_new_for_path(NAE_PATH);
        # Get GFileEnumerator
        enum = d.enumerate_children(
                Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
                Gio.FileQueryInfoFlags.NONE)
        for info in enum:
            # info is GFileInfo
            content_type = info.get_content_type()
            if content_type == "image/jpeg":
                name = info.get_name()
                fullpath = "{0}/{1}".format(NAE_PATH, name)
                thumbnail = GdkPixbuf.Pixbuf.new_from_file_at_scale(fullpath, 100, 100, True)
                image = Gtk.Image.new_from_pixbuf(thumbnail)
                flowbox.add(image)

FlowBoxTest()
Gtk.main()

yuki_nae

GtkIconView より圧倒的に簡単だった。
専用のセルレンダラは不要で Widget をそのまま使える。
便利というより簡単で判り易いという使い道みたい。
いや、どんな Widget でも入れられるメリットもある。

でもデータの入れ替えが頻繁な場合は逆に面倒臭くなるなと。
「ドキュメント/ビューアーキテクチャ」とはいったい何だったのか。

ってデータをほとんど入れ替えないならコッチのほうがいいよね。
ということで、優木苗(cv日高里菜)は本当にカワイイです(gf は放置中

ELECOM BM-IB016BK

MacBook Air 13inch を持ち歩く用のバッグが欲しい。

今まで汎用の緩衝材で包んでデイバッグや旅行鞄に入れていた。
それで充分な歩度でしか持ち歩かなかったけど変に機会が増えてきた。
さすがになんとかしたくなってきたということで。

希望は本体ギリギリの小さなサイズで取手付き。
ポケットがあって電源アダプタと WiMax ルーターを入れられる。
旅行鞄に入れる場合あり、緩衝材のかわりに鞄をそのまま代用できる。

いや、鞄in鞄の用途がメインで単体での持ち運びも可能という一石二鳥にしたい。
ということで見た目はどうでもよい、小さくてソフト素材でポケットと取手付き。
安ければいうことない。

で、試しにこんなのを買ったのでレビュー。
帯に[PCインナーバッグ]と書いてある、まさしくソレ用。
Mac 専用品は見た目はいいけど希望どおりのものが無いという…

実物の見た目は本当にショボい、電車でそのまま持ち歩きの人はヤメとけ。
車なら問題ないしサイズは自転車のカゴにスッポリ収まるレベル。
取手は意外に持ちやすい。

width-300x269

サイズは希望ピッタリ、書類をついでに入れる余裕が少しあり。
汎用ながら実は MacBook Air を基準に合わせているのかもしれない。
緩衝材もこれ以上あると厚ぼったいくらいある。

height-300x160

鞄in鞄には少し厚いかも、キズの心配は無いに等しいですけど。
スマホやデジカメを仕込める厚さはないな(マテ!

pocket-300x256

電源アダプタ断線の心配がなさそうなデカいポケット。
Mac は完全にマウス不要なのでコレ以上のポケット容量はいらない。

Amazon のレビューを見ると約千円の鞄に何を求める?の人もいる。
けれどだいたい筆者と同じ用途で購入しているみたいね。

取っ手が小さく余計なものがないインナー兼アウターなバッグ。
うん希望どおり、MacBook Air は持ち歩くと人気の理由が解る。
しかしこんなやっすい鞄をレビューしてどうする俺。

JavaScript clientWidth

あけましておめでとうございます。

さて元旦からいきなりですが。
iOS9 Safari Bug | PaePoi
やっとコレの回避策が解りました。

【Javascript】ブラウザの表示領域サイズ取得について – すたら日記

うおぉ、document.documentElement.clientWidth を使うのか!
古いページだけどモバイル Safari でもこのメソッドは使えるようです。
window.innerWidth のバグじゃなかったのね。

ついでに、window.outerWidth は Safari で使えないようだ。
それはもうどうでもよくて。

早速パソコン表示は 728px バナーに戻すとしよう。
よしよし元通り、パソコン用でモバイルバナーはやはり変だったし。

チェック用途の実験ページも書き換えて。
ソースはパソコンで Ctrl+U ね(手抜き)
画面サイズ取得

safari_width

あれ?キチンと window.innerWidth で取得できている。
試しに document.documentElement.clientWidth をコメントアウト。
やはり駄目、取得後ならイケるみたいだが理由はワカンネエ!
レスポンシブ・ウェブデザインってムズい!

以下おまけ。

aqua

無料ガチャでアクアきたー!
って水属性ばかり強くなってどないせーと、風と光をくれよ…
特攻は HR 2 人、まあいいかお年玉をもらった。

keyboard shortcuts

プログラミング気分ではないし Mac でも。
たまにしか使わないとキーボードショートカットを忘れる…
ええいソレなら

Mac OS と GNOME キーボード操作対応表 – L’Isola di Niente

ということでこんなページを作った。
多分もう仕事以外で Windows は使わないからページ整理のついでだが。

しかしこうしてみると本当に同じような進化をしているよね。
今後キーボードを使う OS はこんな感じに収束されるのだろう。