Code Blocks

Il Componente RichText

Nell'editor di menu aggiungere i comandi del menu file e riordinarli, poi aggiungere il menu Modifica e inserire due voci:

    File        Modifica
      Apri        grassetto
      Salva       corsivo
      Esci

Usare i quattro pulsanti di direzione per modificare la posizione di una voce di menu

Gestori degli eventi generati dai comandi di Menu

Nel pannello di gestione del progetto (Management) aprire la scheda "Resources". In questa scheda premere il quadratino con il segno "+" accanto alla voce "Tools". Premere il quadratino con il segno "+" accanto alla voce wxMenuBar. Ripetere questa operazione per ogni voce di menu.

Gestore dell'evento Apri

Aggiungere un componente FileDialog. La sua icona appare accanto alle icone dell'editor di menu e dell'editor della barra di stato.

Nel file dell'applicazione viene aggiunta la seguente riga:

FileDialog1 = new wxFileDialog(this,
      _("Select file"),
      wxEmptyString,
      wxEmptyString,
      wxFileSelectorDefaultWildcardStr,
      wxFD_DEFAULT_STYLE,
      wxDefaultPosition,
      wxDefaultSize,
      _T("wxFileDialog")
      );

Dalla quale si vede che viene creato il puntatore FileDialog1 ad una istanza di classe FileDialog. Il significato dei parametri richiesti è il seguente:

Nel pannello Proprietà/Eventi aprire la scheda Eventi. Accanto alla riga EVT_MENU, nella casella a discesa, scegliere -- Add New handler --. Assegnare il nome al gestore: "onApri".

Code Blocks prepara l'intestazione della funzione di gestione dell'evento, che bisogna completare.

void RichTextFrame::onApri(wxCommandEvent& event)
{
    FileDialog1 = new wxFileDialog(this, wxT("Apri File"), wxT(""), wxT(""), wxT("*.txt|*.cpp"), wxOPEN);
    int risposta = FileDialog1->ShowModal();
      if (risposta==wxID_OK) {
          this->RichTextCtrl1->LoadFile(FileDialog1->GetPath());
      }
}
Gestore dell'evento Salva

Selezionare la voce di menu Salva (nella scheda Resources) e nel pannello di gestione degli eventi associare un nuovo gestore di evento: denominarlo onSalva.

void RichTextFrame::onSalva(wxCommandEvent& event)
{
    FileDialog1 = new wxFileDialog(this, wxT("Salva File"), wxT(""), wxT(""), 
                                   wxT("File di Testo (*.txt)|*.txt"), wxSAVE);
    int risposta = FileDialog1->ShowModal();
      if (risposta==wxID_OK)
          this->RichTextCtrl1->SaveFile(FileDialog1->GetPath());
}

Applicare i comandi del menu "Modifica", consultando il riferimento ai membri della classe RichText

Suggerimento: i metodi per applicare il grassetto sono BeginBold() e EndBold()

Associare i gestori di evento alle due voci di menu. Il gestore dell'evento "onGrassetto" può applicarsi al testo selezionato, oppure ad un intervallo indicato durante la composizione del testo. In questo esempio si assume che si desidera scegliere, durante la composizione del testo, i punti in cui si desidera iniziare e terminare il testo in grassetto.

Scrivere il gestore dell'evento onGrassetto:

void RichTextFrame::onGrassetto(wxCommandEvent& event)
{
    if (!grassetto) {
            RichTextCtrl1->BeginBold();
            grassetto= true;
    } else {
            RichTextCtrl1->EndBold();
            grassetto= false;
    }
}

Per questo caso, occorre dichiarare una variabile della classe grassetto che commuta dallo stato "grassetto=true" allo stato "grassetto=false".

Barra degli strumenti

Aggiungere un componente ToolBar

Doppio clic sull'icona che è comparsa sulla riga accanto al pulsante "Menu Editor"

Nel riquadro di dialogo premere il pulsante New, modificare la label in "Copia"

Premere il pulsante "Bitmap"

Nella casella "Art ID", scegliere "wxART_COPY"

Premere Ok

premere il pulsante New, modificare la label in "Incolla"

Premere il pulsante "Bitmap"

Nella casella "Art ID", scegliere "wxART_PASTE"

Premere Ok, Ok.


Nel Pannello Resources selezionare (nel ramo Tools) l'elemento "Copia". Nel pannello di gestione degli eventi si possono definire le azioni sul clic del mouse o sul clic con il tasto destro (RCLICKED).

Associare un nuovo gestore all'evento EVT_TOOL. Denominarlo "onCopia"

Selezionare l'icona "Incolla" e associare un gestore di evento. Denominarlo "onIncolla"

Completare i due gestori:

void RichTextFrame::onCopia(wxCommandEvent& event)
{
    RichTextCtrl1->Copy();
}

void RichTextFrame::onIncolla(wxCommandEvent& event)
{
    RichTextCtrl1->Paste();
}