Gnome Shell Extension Library Начинающий, где определен button.connect()?
Я изучаю API расширения Gnome для удовольствия. Мои вопросы выделены жирным шрифтом ниже. Любые предложения приветствуются! Кажется, используются две основные библиотеки:
- Примечания к скале (если есть)
- Использование: Ubuntu 16.4.3 LTS x64
- Использование: GNOME Shell 3.18.5
- Кажется, две основные библиотеки используются с
JS
привязки для расширений:
Примечание: я использую по умолчанию
gnome-shell-extension-tool --create-extension
на этот вопрос.
Вопрос
Мне интересно, есть ли ссылка на библиотеку JS в Gnome? (Это то, что мы пишем расширения) для сайта Gnome Ext.
Немного глубже вопрос
По мере того, как я это делаю, многое меняется, и мне еще предстоит выяснить, как: button.connect
работает, или где это проходит?
1. Обновление: перед публикацией я искал через Clutter
Индекс API и нашел несколько connect
слов, но я не могу понять, как это работает - кнопка является St
пример, Clutter
это скорее вызов функции для подключения signals
, а не применять элементы пользовательского интерфейса, если я далеко?.
Я ничего не могу найти с
connect
в полном индексе API я что-то упустил?button
является примеромSt.Btn
(или действительно,St.Button
) пример.St.Button
это ребенокSt.Btn
почему бы нам не создать экземпляр дочернего объекта? Это кажется более правильным. ( Ссылка, см. Иерархия объектов)
пример
// Why is St.Bin created and not St.Button?
// Somehow it knows it's a button? Yet St.Bin has two subclasses:
// - StButton
// - StScrollView
button = new St.Bin({
style_class: 'panel-button', // <-- Inherited from StWidget
reactive: true, // <-- Inherited from StWidget
can_focus: true, // <-- Inherited from StWidget
x_fill: true,
y_fill: false,
track_hover: true // <-- Inherited from StWidget
});
// ...
button.connect('button-press-event', _showHello);
Конец
Ниже приведены "Заметки", которые я предпринял, чтобы попытаться обработать это мысленно, я оставляю это здесь, если кто-то еще заинтересован в том же Возможно, это может помочь.
Только примечания / Не имеет значения, если не заинтересован в теме
/**
* -----------------------------------------------------------------
* Purpose: Create a top panel button (Empty Icon by Default).
* -----------------------------------------------------------------
* StBin is a simple container with one actor, the hierarchy inherits
* more from StWidget, see the graph below. This is common for the
* St Items.
*
* -----------------------------------------------------------------
* Structure: Making Sense of the Object
* -----------------------------------------------------------------
* GObject
* ╰── GInitiallyUnowned
* ╰── ClutterActor
* ╰── StWidget <-- Properties Inherited
* ╰── StBin
* ╰── StButton <-- Item we Created
*
* - StWidget Parent Properties Used:
* style_class, reactive, can_focus,track_hover
* - StBin Properties Used:
* x_fill, y_fill
*
* -----------------------------------------------------------------
* Answers: What's Happening
* -----------------------------------------------------------------
* - Creates a Single Element
* - Parameters pass do the following:
* - style_class: refers to your stylesheets.css, aka .panel-button styles`
* - reactive: ST Parameter which allows responding to Mouse Clicks.
* - can_focus: ST Parameter which allows responding to Keyboard.
* - x_fill: (Default false)
* Whether the child should fill the horizontal allocation
* - y_fill: (Default false, shouldnt need to be here)
* Whether the child should fill the vertical allocation
* - track_hover: ST Parameter which allows Reacting to Mouse Hover.
*
* -----------------------------------------------------------------
* References
* -----------------------------------------------------------------
* StBin: https://developer.gnome.org/st/stable/StBin.html
* StWidget (Inherited): https://developer.gnome.org/st/stable/StWidget.html
* - See the Properties
* -----------------------------------------------------------------
*/
button = new St.Bin({
style_class: 'panel-button',
reactive: true,
can_focus: true,
x_fill: true,
y_fill: false,
track_hover: true
});