Eto: Bangun string RTF tanpa mengganggu RichTextArea

Dibuat pada 29 Mar 2019  ·  12Komentar  ·  Sumber: picoe/Eto

Ini adalah permintaan peningkatan.

Saya memiliki daftar panjang baris teks, setiap baris dapat memiliki warna yang berbeda. Saya ingin menambahkannya ke RichTextArea . Menggunakan Append berfungsi tetapi kinerjanya tidak bagus.

Akan sangat bagus jika kita dapat memiliki metode untuk membuat string RTF tanpa mengganggu RichTextArea , maka kita dapat mengatur RichTextArea.Rtf ke string yang dibangun.

Perhatikan bahwa meskipun dimungkinkan untuk menggunakan lib lain untuk membuat RTF, tetapi mereka menggunakan kelas/tipe yang berbeda dibandingkan dengan Eto (mis., Font , Color ...), dan saya masih ingin menggunakan metode Append pada RichTextArea .

Komentar yang paling membantu

Hai @katatunix , terima kasih atas permintaannya. Saya sebenarnya telah mengerjakan sesuatu di sepanjang baris ini (semacam TextBuffer) yang memiliki semua api yang sama dengan RichTextArea tetapi memungkinkan Anda membangunnya secara terpisah kemudian menambahkan (atau mengatur) ke RichTextArea.

Satu hal yang saya ingin lakukan adalah membuatnya sehingga dapat dibangun di utas latar belakang, tetapi sayangnya tidak semua platform akan mendukung ini. Aku masih menyelidiki ini sekalipun.

Semua 12 komentar

Hai @katatunix , terima kasih atas permintaannya. Saya sebenarnya telah mengerjakan sesuatu di sepanjang baris ini (semacam TextBuffer) yang memiliki semua api yang sama dengan RichTextArea tetapi memungkinkan Anda membangunnya secara terpisah kemudian menambahkan (atau mengatur) ke RichTextArea.

Satu hal yang saya ingin lakukan adalah membuatnya sehingga dapat dibangun di utas latar belakang, tetapi sayangnya tidak semua platform akan mendukung ini. Aku masih menyelidiki ini sekalipun.

Jika Anda memiliki kode tentang ini, saya ingin melihatnya.

@LaraSQP Saya baru saja mengunggah pekerjaan saya sejauh ini di PR #1507

Karena kontrol RichTextArea hanya menangani beberapa properti (font + gaya, warna depan + belakang), mengapa tidak menulis kelas rtf "sederhana" untuk membuat string rtf dan kemudian memasukkannya ke RichTextArea.Rtf properti?

Sesuatu seperti:

https://www.codeproject.com/Articles/30902/RichText-Builder-StringBuilder-for-RTF

Apakah saya melewatkan sesuatu di sini dan tampil sebagai orang bodoh lagi?

@LaraSQP tidak, itu benar-benar berfungsi. GTK tidak mendukung RTF.

Saya tidak berpikir Eto perlu menyediakan fitur itu secara langsung, karena tidak ada alasan Anda tidak dapat menggunakan pembuat RTF eksternal kemudian memasukkannya ke dalam kendali Eto.

Tidak tahu tentang GTK dan RTF. Itu mengecewakan.

Pembuat RTF eksternal tidak akan berfungsi apa adanya karena masalah yang dibawa oleh pembuat aslinya (kelas/tipe berbeda dibandingkan dengan Eto misalnya, Font, Warna ...) dan, bagaimanapun, aliran RTF harus diubah menjadi sesuatu yang dapat ditampilkan oleh GTK. Jadi, TextBuffer .

Menisik

@LaraSQP Anda _could_ secara teoritis membangun RTF menggunakan alat/api eksternal, lalu memuatnya ke Eto. Anda dapat menggunakan Font/Warna Eto dan menerjemahkannya ke format ramah RTF jika benar-benar diperlukan.

Masalah dengan RTF bagaimanapun adalah bahwa meskipun "standar", itu benar-benar terdiri berbeda tergantung pada platform (setidaknya Mac vs Windows). Nama font yang ditentukan dalam RTF khususnya sangat berbeda. Anda dapat melihat perbedaannya menggunakan TextEdit di Mac vs. WordPad di Windows.

Semoga ini membantu.

Berantakan memang.

Harus dikatakan bahwa Anda telah melakukan pekerjaan yang baik dengan port Linux. Hampir tidak ada penalti kinerja meskipun banyak menggunakan banyak font dan warna.

Kode yang sama pada Windows adalah siput.

Kode yang sama pada Windows adalah siput.

Ya, tidak yakin bagaimana menyiasatinya. FlowDocument sangat lambat.

Karena kinerja di Linux sangat bagus, tahukah Anda bahwa kinerjanya ada di Mac?

@LaraSQP itu harus cukup cepat di macOS juga. dalam pengalaman saya itu hanya WPF yang cukup lambat pada saat ini. Saya ingin menemukan cara untuk membuatnya lebih cepat (;

Dalam hal ini, anggap masalah ini tertutup untuk saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat