そろそろ新しい Fedora が出るので準備をしなければ。
ベータが出ているようなので試す、面倒だから久々に仮想マシン。
Boxes(qemu-kvm) はやはり超簡単というか全自動です。
Fedora on Fedora なら 3D デスクトップもストレスが無いのが嬉しい。
細かい指定はできないけどテスト目的には十分すぎる。
ただ Live 中はフル HD なのを認識したのにインストール後は SXGA に。
相変わらずよく解らない認識をする、フル HD 固定だとそれも困るわけですが。
筆者はウインドウモードで使うので 1440×900 に固定。
インストール直後に生 XML から iso を排除する必要はなくなったみたい。
Boxes の設定画面[デバイス]の CD/DVD の所で取り外しできる。
Alt+Space がウインドウメニューに割り当てされているや。
US キーボードなのでコレで入力切り替えできないと不便なんだよ。
まあ設定で簡単に変えられるのでちゃっちゃと変更。
いやぁ、見事に GtkHeaderBar 化されて…
っておい Eye of GNOME さん、あんたが一番メニューバー邪魔でしょ。
これ以上の変更点レビューは正式版の時に。
とにかく Gedit はメニューバーが無いので以前の自作プラグイン達は使えない。
Apps/Gedit/PythonPluginHowTo – GNOME Wiki!
残念ながら 2014.11.16 現在チュートリアルは以前のままだ。
Gedit 3.12 をスルーしたおかげで日本語の先人を見つけた。
うぇーん、GNOME 3.12 にしたら、自家製Linespacing が動かないよー | (まだ無題 ; そのうち変更するかも)
メニュー項目は GMenu 化、GtkApplication 側に登録。
ハンドラは GAction として GtkWindow 側に登録するみたい。
GtkUIManager 関連を消すのを忘れているみたいですけど。
なんか上手くいかないので QuickOpen のソースを参考に少し作り替え。
*.plugin ファイルは以前と同じでいいようです。
#-*- coding:utf-8 -*- from gi.repository import GObject, Gedit, Gtk, Gio class TestTestAppActivatable(GObject.Object, Gedit.AppActivatable): """ Set GMenu and Accelerator """ app = GObject.property(type=Gedit.App) def __init__(self): GObject.Object.__init__(self) def do_activate(self): # Set Accelerator # (key, action name[win.xxxxx], parameter or None) self.app.add_accelerator("<Control>B", "win.action_name", None) # Append Menu self.menu_ext = self.extend_menu("tools-section") item = Gio.MenuItem.new("imouto", "win.action_name") self.menu_ext.append_menu_item(item) def do_deactivate(self): # Remove Accelerator self.app.remove_accelerator("win.action_name", None) class TestTest(GObject.Object, Gedit.WindowActivatable): """ Set GAction """ __gtype_name__ = "TestTest" window = GObject.property(type=Gedit.Window) def __init__(self): GObject.Object.__init__(self) def do_activate(self): # Set Action # (action name, parameter or None) action = Gio.SimpleAction.new("action_name", None) action.connect('activate', self.on_activate) self.window.add_action(action) def do_deactivate(self): # Remove Action self.window.remove_action("action_name") def do_update_state(self): pass def on_activate(self, action, data=None): self.messagebox("Yamete Oni-chan") def messagebox(self, text): dlg = Gtk.MessageDialog( self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, text) r = dlg.run() dlg.destroy()
こんな感じで。
とりあえずアクション名を決める。
GtkApplication 側で使う場合は win.xxxxx と接頭子を付ける。
こうしないとメニューがアクティブにならなかった。
次はアクション名にアクセラレータキーに紐付ける
そしてメニューに表示する文字列を決め GMenu を作成。
それをメニューのどこかに突っ込む。
file-section, tools-section, view-section-2 等々。
本体側は先程のアクション名で GAction を作る。
シグナルハンドラをセットし本体に登録、コッチは簡単だね。
後は今迄どおりでいいみたい。
Eye of GNOME プラグインは変更しなくてもいいかな?と思ったけどダメだった。
と思ったら *.plugin の Loader=python3 書き換えだけでイケた。
Python3 なので unicode 等の処理をお忘れなく。