Я создаю индикаторный апплет для 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();
};
Любая помощь в определении наилучшей функции / виджета / кода для текстового поля будет очень полезна, или даже какое-то направление к достойной документацииэто может помочь ответить на мои вопросы. Спасибо!