GTK и JavaScript

Пример программы

Программа переворачивает введенный текст задом наперед.

screenshot.png

Макет интерфейса создан с помощью Glade и имеет следующую структуру:

  • GtkWindow (окно программы)
    • GtkBox (контейнер, в котором вертикально размещены два элемента)

В коде программы загружаем этот макет из файла “reverse.ui”, получаем нужные элементы интерфейса по их идентификаторам и определяем необходимые обработчики событий:

#!/usr/bin/env gjs

// Подключение библиотеки GTK3.
imports.gi.versions.Gtk = '3.0';
const Gtk = imports.gi.Gtk;

// Инициализация GTK.  Вместо null могут быть переданы аргументы
// командной строки.
Gtk.init(null);

// Загрузка интерфейса из файла Glade.
let builder = new Gtk.Builder();
builder.add_from_file('reverse.ui');

// Нужные далее элементы интерфейса.
let window = builder.get_object('window');
let text = builder.get_object('text');
let reverseButton = builder.get_object('reverse_button');

// Возвращает перевернутую строку str.
function reverseString(str) {
    return str.split("").reverse().join("");
}

// Обработка нажатия на кнопку.
reverseButton.connect('clicked', () => {
    // GtkTextBuffer хранит текст и связанные с ним аттрибуты.  При
    // использовании однострочного поля ввода GtkEntry можно просто
    // получить строку, для многострочного ввода с помощью GtkTextView
    // нужно использовать буфер.
    let buffer = text.buffer;
    let str = buffer.get_text(buffer.get_start_iter(),
                              buffer.get_end_iter(),
                              true);
    buffer.set_text(reverseString(str), -1);
});

// Завершение работы при закрытии окна.
window.connect('destroy', () => {
    Gtk.main_quit();
});

// Показать окно.
window.show();

// Запустить цикл обработки событий Gtk.
Gtk.main();

Запуск программы

Скачать файлы reverse.ui (макет интерфейса) и reverse.js (код программы).

Для запуска можно использовать интерпретатор gjs:

gjs reverse.js

Или сделать файл программы исполняемым и запустить:

chmod +x reverse.js
./reverse.js

Второй способ возможен за счет того, что в первой строке скрипта указан требуемый интерпретатор.

Автор: М. А. Крышень

Created: 2020-02-14 Пт 10:13

Validate