そろそろ新しい 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 等の処理をお忘れなく。