TextView and Entry

There are two widgets in maemomm for text entry, both of which are inherited from gtkmm equivalents, but with extra Hildon-specific additions.

Entry

A Hildon::Entry is a widget that shows a single-line text entry field, enabling the user to enter freeform text. You can set the placeholder text that is shown when the widget is not focused and is empty. A Hildon::Entry is derived from a Gtk::Entry.

Entry reference

Example

This example shows a simple window that contains a Hildon::Entry, a Hildon::Button and a Gtk::Label. The Hildon::Entry has placeholder text set, which disappears when text is entered into the widget. When the Hildon::Button is clicked, or the Hildon::Entry is activated, the current text in the Hildon::Entry is sent to standard output.

Figure 5.8. Entry

Entry

Source Code

File: examplewindow.h

#ifndef _MAEMOMM_EXAMPLEWINDOW_H
#define _MAEMOMM_EXAMPLEWINDOW_H

#include <hildonmm/window.h>
#include <hildonmm/button.h>
#include <hildonmm/entry.h>
#include <gtkmm/table.h>
#include <gtkmm/label.h>

class ExampleWindow : public Hildon::Window
{
  public:
    ExampleWindow();
    virtual ~ExampleWindow();

  private:
    // Signal handlers:
    void on_button_clicked();
    void on_entry_activated();

    // Child widgets:
    Gtk::Table table_;
    Hildon::Button button_;
    Gtk::Label label_;
    Hildon::Entry entry_;
};

#endif /* _MAEMOMM_EXAMPLEWINDOW_H */

File: main.cc

#include <hildonmm.h>
#include "examplewindow.h"

int main(int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);
  Hildon::init();

  ExampleWindow window;
  kit.run(window); //Shows the window and returns when it is closed.

  return 0;
}

File: examplewindow.cc

#include "examplewindow.h"
#include <iostream>

ExampleWindow::ExampleWindow() :
  table_(2, 2),
  button_(Gtk::Hildon::SIZE_HALFSCREEN_WIDTH | Gtk::Hildon::SIZE_FINGER_HEIGHT,
    Hildon::BUTTON_ARRANGEMENT_VERTICAL,
    "Click me!",
    "to print text in entry"),
  label_("Hildon::Entry example"),
  entry_(Gtk::Hildon::SIZE_HALFSCREEN_WIDTH | Gtk::Hildon::SIZE_FINGER_HEIGHT)
{
  set_title("Hildon::Entry example");

  table_.attach(button_, 0, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK);
  table_.attach(label_, 0, 1, 1, 2);
  table_.attach(entry_, 1, 2, 1, 2);

  entry_.set_placeholder("This is placeholder text");

  add(table_);

  button_.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clicked));
  entry_.signal_activate().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_activated));

  show_all();
}

ExampleWindow::~ExampleWindow()
{
}

void ExampleWindow::on_button_clicked()
{
  std::cout << "Button clicked. Current entry text=\"" << entry_.get_text() << "\"." << std::endl;
}

void ExampleWindow::on_entry_activated()
{
  std::cout << "Entry activated. Current text=\"" << entry_.get_text() << "\"." << std::endl;
}

TextView

Hildon::TextView is the multi-line equivalent to Hildon::Entry. As with Hildon::Entry, Hildon:TextView is derived from its gtkmm equivalent, in this case Gtk::TextView. The placeholder text functionality that exists in Hildon::Entry, where text can be shown by the widget when it is empty and the widget is not focused, is also present in Hildon::TextView.

[Note] Note
Although Hildon::TextView is derived from Gtk::TextView, Gtk::TextView::get_buffer() and Gtk::TextView::set_buffer() must never be used to get/set the buffer in this widget. Hildon::TextView::get_buffer() and Hildon::TextView::set_buffer() must be used instead.

TextView reference

Example

This example shows a simple window that contains a Hildon::TextView, a Hildon::Button and a Gtk::Label. The Hildon::TextView has placeholder text set, which disappears when text is entered into the widget. Clicking the Hildon::Button , or activating the Hildon::Entry, sends the current text in the Hildon::TextView to standard output.

Figure 5.9. TextView

TextView

Source Code

File: examplewindow.h

#ifndef _MAEMOMM_EXAMPLEWINDOW_H
#define _MAEMOMM_EXAMPLEWINDOW_H

#include <hildonmm/window.h>
#include <hildonmm/button.h>
#include <hildonmm/text-view.h>
#include <gtkmm/table.h>
#include <gtkmm/label.h>

class ExampleWindow : public Hildon::Window
{
  public:
    ExampleWindow();
    virtual ~ExampleWindow();

  private:
    // Signal handlers:
    void on_button_clicked();

    // Child widgets:
    Gtk::Table table_;
    Hildon::Button button_;
    Gtk::Label label_;
    Hildon::TextView textview_;
};

#endif /* _MAEMOMM_EXAMPLEWINDOW_H */

File: main.cc

#include <hildonmm.h>
#include "examplewindow.h"

int main(int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);
  Hildon::init();

  ExampleWindow window;
  kit.run(window); // Shows the window and returns when it is closed.

  return 0;
}

File: examplewindow.cc

#include "examplewindow.h"
#include <iostream>

ExampleWindow::ExampleWindow() :
  table_(2, 2, true),
  button_(Gtk::Hildon::SIZE_HALFSCREEN_WIDTH | Gtk::Hildon::SIZE_FINGER_HEIGHT,
    Hildon::BUTTON_ARRANGEMENT_VERTICAL,
    "Click me!",
    "to print text in textview"),
  label_("Hildon::TextView example")
{
  set_title("Hildon::TextView example");

  table_.attach(button_, 0, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK);
  table_.attach(label_, 0, 1, 1, 2);
  table_.attach(textview_, 1, 2, 1, 2);

  textview_.set_placeholder("This is placeholder text");

  add(table_);

  button_.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clicked));

  show_all();
}

ExampleWindow::~ExampleWindow()
{
}

void ExampleWindow::on_button_clicked()
{
  std::cout << "Button clicked. Current textview text=\"" << textview_.get_buffer()->get_text() << "\"." << std::endl;
}