40.1.2.4. Scintilla

Odkazy:

Tak a dostali jsme se ke komponentě textového editoru Scintilla. Tento objekt se jmanuje Wx::StyledTextCtrl. Scintilla je sofistikovaný editor pro editaci textu. Má rozsáhlé možnosti nastavení a dovede takové věci jako: barevnou syntaxi, počítání řádků, sbalování a rozbalování bloků kód a mnohé další.

Příklad 40.6. Nejjednodušší editor se Scintillou

#!/usr/bin/env ruby
require 'rubygems'
require 'wx'

class Editor < Wx::Frame
  def initialize
    super nil
    @scintilla = Wx::StyledTextCtrl.new self
  end
end

class App < Wx::App
  def on_init
    frame = Editor.new
    frame.show
  end
end

app = App.new.main_loop

Takto jednoduchý program není použitelný. Neimplementovali jsme ani nejzákladnější dvě oprace, tedy načtění textu ze souboru a zápis textu zpět do souboru.

Nahrávání a zápis do souborů (Load and save to file).

StyledTextCtrl.load_file
StyledTextCtrl.save_file

Samotný text mohu do objektu dostat metodami:

StyledTextCtrl.add_text
StyledTextCtrl.append_text
StyledTextCtrl.insert_text
StyledTextCtrl.clear_all

Jednoduché vložení textu pomocí insert_text je v následující ukázce. Nejdříve vymažu veškerý stávající obsah pomocí clear_all a poté vložím nový.

def initialize
    super nil
    @scintilla = Wx::StyledTextCtrl.new self
    @scintilla.clear_all
    @scintilla.insert_text(0, 'ěšč Předloha')
end

A teď zkusíme načíst soubor. Zatím zadáme jméno přímo do programu.

def initialize
    super nil
    @scintilla = Wx::StyledTextCtrl.new self
    @scintilla.load_file 'redit.rbw'
end

Než pokročím dál, potřebuji se naučit odchytávat událost ukončení editoru, a správně na ni zareagovat uložením rozpracovaného souboru.

def initialize
    …
    # Bind events to code and/or methods
    evt_close :on_close
end

def on_close
    puts "Zavírám rámec editoru!"
    destroy
end

Varování

Pokud spouštíme aplikaci na MS Windows pomoci Ruby(GUI), není standardní výstup definován a například příkaz puts způsobí havárii programu.

Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .