私が貢献しているプログラムの依存関係を最小限に抑えようとしていますが、これは小さなテキストエディタです。GTK TextViewで元に戻す
GTK Textviewには、組み込みの元に戻す機能が付属していないようです。これまでに欠けていたリファレンス実装はありますか?誰もがTextViewウィジェット用に独自の元に戻す機能を書いていますか?
私たちのプロジェクトがPythonで書かれているので、私はサンプルコードについては満足しています。
私が貢献しているプログラムの依存関係を最小限に抑えようとしていますが、これは小さなテキストエディタです。GTK TextViewで元に戻す
GTK Textviewには、組み込みの元に戻す機能が付属していないようです。これまでに欠けていたリファレンス実装はありますか?誰もがTextViewウィジェット用に独自の元に戻す機能を書いていますか?
私たちのプロジェクトがPythonで書かれているので、私はサンプルコードについては満足しています。
私が知る限り、GTK TextViewには元に戻す機能はありません。だから私はPythonのGTKライブラリに慣れていないが、私はそれがないと思うだろう。
Ruby-GNOME2プロジェクトには、元に戻す/やり直し機能を持つsample text editorがあります。基本的にTextViewウィジェットのinsert_textとdelete_range信号に接続し、イベントと関連データをリストに記録しています。
依存関係をどのようにしているのか、作成しているテキストエディタの種類によっては、GtkSourceViewは他の多くのものにアンドゥ/リドゥを追加します。あなたが他のもののいくつかをしたい場合は、非常に価値があるfeaturesがあります。 follwowアップとして
:私は、Pythonにgtksourceviewのアンドゥ・メカニズムを移植:ドロップイン置換gtksourceview年代については、こちら(OPを
を元に戻すが、オープン-idが動作しませんランチパッドとしてhttp://bitbucket.org/tiax/gtk-textbuffer-with-undo/
がありますもう)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
gi.require_version('GtkSource', '3.0')
from gi.repository import GtkSource
import os
class TreeviewWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="TreeviewWindow")
self.set_size_request(300, 300)
self.connect("key-press-event", self._key_press_event)
self.mainbox = Gtk.VBox(spacing=10)
self.add(self.mainbox)
self.textbuffer = GtkSource.Buffer()
textview = GtkSource.View(buffer=self.textbuffer)
textview.set_editable(True)
textview.set_cursor_visible(True)
textview.set_show_line_numbers(True)
self.mainbox.pack_start(textview, True, True, 0)
self.show_all()
def _key_press_event(self, widget, event):
keyval_name = Gdk.keyval_name(event.keyval)
ctrl = (event.state & Gdk.ModifierType.CONTROL_MASK)
if ctrl and keyval_name == 'y':
if self.textbuffer.can_redo():
self.textbuffer.do_redo(self.textbuffer)
def main(self):
Gtk.main()
if __name__ == "__main__":
base = TreeviewWindow()
base.main()