Есть ли функция javascript для добавления общего текстового поля в апплеты расширения Gnome? - PullRequest
2 голосов
/ 06 ноября 2019

Я создаю индикаторный апплет для Ubuntu в форме расширения Gnome. Я использую javascript (с которым у меня нет особого опыта).

Цель состоит в том, чтобы на панели была иконка, которая при нажатии просто открывает маленькое окно (подключенное к панели какменю) с текстовым полем, которое позволяет пользователю вводить текст (список задач, случайные мысли и т. д.). Повторное нажатие на значок удаляет окно и так далее. Текст должен быть сохранен между сессиями.

Моя проблема (кроме нахождения очень небольшого количества ресурсов для создания апплетов Gnome) состоит в том, что я не могу понять, какова функция для создания текстового полябудет.

Я пытался просмотреть различные доступные St.Widgets, но не могу найти подходящий.

Используя приведенный ниже код, я могу создать значок, поместить его впанель и создать всплывающее меню по щелчку (вместе с некоторыми тестовыми уведомлениями, чтобы опробовать функции). Однако я не могу создать текстовое поле ввода.

const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const St = imports.gi.St;
const Lang = imports.lang;

const Notes_Indicator = new Lang.Class({
    Name: 'Notes.indicator',
    Extends: PanelMenu.Button   ,

        _init: function(){
            this.parent(0.0);

            let Icon = new St.Icon({icon_name: 'accessories-text-editor-symbolic', style_class: 'system-status-icon'});          

            this.actor.add_child(Icon);

            let menuItem = new PopupMenu.PopupMenuItem('Show a notification?');
            menuItem.actor.connect('button-press-event', function(){ Main.notify('Notification', 'Hello World !') });

            let switchItem = new PopupMenu.PopupSwitchMenuItem("Show another notification?");
            switchItem.connect("toggled", function(){ Main.notify('Notification', 'Hello World !') });

            this.menu.addMenuItem(menuItem);
            this.menu.addMenuItem(switchItem);

        //Create generic text input box.

        }
});

function init() {
    log ('Extension initalized');
};

function enable() {
    log ('Extension enabled');

    let _indicator =  new Notes_Indicator();
    Main.panel._addToPanelBox('Notes', _indicator, 1, Main.panel._rightBox);
};

function disable(){
    log ('Extension disabled');
    indicator.destroy();
};

Любая помощь в определении наилучшей функции / виджета / кода для текстового поля будет очень полезна, или даже какое-то направление к достойной документацииэто может помочь ответить на мои вопросы. Спасибо!

...