سؤال

أحاول الحفاظ على تبعيات إلى الحد الأدنى عن برنامج يسهم انه صغير محرر النص.

جتك Textview لا يبدو أن تأتي مع المدمج في وظيفة التراجع.هل هناك أي إشارة تنفيذ كنت في عداد المفقودين حتى الآن ؟ الجميع الكتابة الخاصة بهم وظيفة التراجع عن TextView الحاجيات ؟

سأكون سعيد عن أي نموذج التعليمات البرمجية الأكثر سعيد عن الثعبان نموذج التعليمات البرمجية كما هو مشروعنا في بيثون.

هل كانت مفيدة؟

المحلول

بقدر ما أعرف, GTK TextView لا تشمل وظيفة التراجع.حتى بينما أنا لست على دراية مع بيثون مكتبة GTK, أعتقد أنها لا تملك واحدة.

روبي-GNOME2 المشروع عينة محرر النص الذي لديه وظيفة التراجع/إعادة.أساسا يتم الاتصال insert_text و delete_range إشارات TextView القطعة وتسجيل الأحداث والبيانات المرتبطة بها في قائمة.

نصائح أخرى

كما follwow المتابعة:لقد استدار gtksourceview تراجع آلية بايثون: http://bitbucket.org/tiax/gtk-textbuffer-with-undo/

بمثابة قطرة في استبدال gtksourceview هذا التراجع

(المرجع هنا ، ولكن انطلاق فتح معرف لا يعمل بعد الآن)

اعتمادا على مدى التبعية نفورا من أنت و ما هو نوع من محرر النص أنت المبنى ، GtkSourceView ويضيف تراجع/الإعادة بين أشياء أخرى كثيرة.جدا يستحق النظر إذا كنت تريد بعض من غيرها الميزات ويقدم.

استخدام GtkSource

.

  • [Cmnd] + [Z] التراجع (الافتراضي)
  • [Cmnd] + [Shift] + [Z] الإعادة (الافتراضي)
  • [Cmnd] + [Y] من أجل إعادة (المضافة يدويا)

على سبيل المثال:

#!/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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top