Что делает & ldquo; Introspection & rdquo; означает, и как это связано с GOzject Introspection?

Выполните следующие шаги.

Скопируйте файл .desktop, связанный с вашим предпочтительным приложением, скажем app-name.desktop с /usr/share/applications/ до ~/.local/share/applications/. Вы можете сделать это, выполнив следующую команду в Terminal
cp /usr/share/applications/app-name.desktop ~/.local/share/applications/
. Откройте файл .desktop с помощью текстового редактора, например, запустив
gedit ~/.local/share/applications/app-name.desktop
. Посмотрите на строку, начинающуюся с Actions=. Если он есть, добавьте My-Custom-Action; к нему. В противном случае добавьте следующую строку
Actions=My-Custom-Action;
. Напишите следующие строки в конце файла:
[Desktop Action My-Custom-Action]
Name=Name of the Option
Exec=command-you-want-ro-run
Например, если вы хотите открыть текстовый редактор, поставьте gedit вместо command-you-want-ro-run. Сохраните файл. Нажмите «Действия» и найдите приложение. Щелкните правой кнопкой мыши значок приложения и выберите «Добавить в избранное». Он должен быть добавлен в док-станцию ​​Ubuntu.

Теперь, если вы щелкнете правой кнопкой мыши по недавно добавленному значку приложения в доке, вы должны увидеть запись «Имя параметра» в контекстном меню, которая должна работать как ожидалось.

Аналогичным образом вы можете использовать другие опции, добавив новые Desktop Action s и добавив имя действия в строку Actions=. Для получения дополнительной информации см. Это.

7
задан 27 February 2012 в 16:54

2 ответа

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

Вот очень упрощенный пример Python, в котором вы начинаете с класс и добавьте новый атрибут и, используя интроспекцию, проверьте, какие атрибуты доступны в экземпляре объекта.

>>> class MyObject:
...   variable = False

>>> instance = MyObject()

>>> dir(instance)
['__doc__', '__module__', 'variable']

>>> instance.newvariable = "Kittens"

>>> dir(instance)
['__doc__', '__module__', 'newvariable', 'variable']

Итак, в динамических системах вы можете использовать такие вещи, как Python hasattr, чтобы определить, смогут делать то, что вы пытаетесь сделать с ним. Даже если вы не используете его во время выполнения, интроспекция также чрезвычайно полезна для отладки.

Теперь в библиотеках на основе GObjects и GObject. Они на C и в C вы не получаете всю эту симпатичную пушистую управляемую ошибку, вы получаете производительность. Это означает, что встроенная интроспекция отсутствует, и это означает, что сложнее поддерживать внешнее связывание.

Привязки являются API-интерфейсом между вещами на разных языках, что позволяет им работать вместе. Для этого вам нужен общий API, и в этом случае API - это GObject. Но для того, чтобы это сработало, привязка звонящего должна знать, что доступно для него. До того, как GObject Introspection, это должно было быть жестко закодировано в привязках, а это означает, что для каждого набора привязок поддерживается ручной список.

GObject Introspection по существу предоставляет сканер, который может охотиться через текущий источник GObject, с которым вы работаете, и предоставляет вам информацию привязки XML. Затем это обрабатывается связями, и вы получаете API, который просто работает, все время.

Я, конечно, не охватил все здесь, но я пытаюсь дать вам представление о двух темы (интроспекция и почему в ней нуждается GObjects). Если вы хотите узнать больше, на веб-сайте Gnome есть много.

http://blogs.gnome.org/johan/2008/06/01/introduction-to-gobject-introspection/ (Хорошее введение ) https://live.gnome.org/GObjectIntrospection/
9
ответ дан 25 May 2018 в 13:54

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

Вот очень упрощенный пример Python, в котором вы начинаете с класс и добавьте новый атрибут и, используя интроспекцию, проверьте, какие атрибуты доступны на экземпляре объекта.

>>> class MyObject:
...   variable = False

>>> instance = MyObject()

>>> dir(instance)
['__doc__', '__module__', 'variable']

>>> instance.newvariable = "Kittens"

>>> dir(instance)
['__doc__', '__module__', 'newvariable', 'variable']

Итак, в динамических системах вы можете использовать такие вещи, как Python hasattr, чтобы указать, если объект смогут делать то, что вы пытаетесь сделать с ним. Даже если вы не используете его во время выполнения, интроспекция также чрезвычайно полезна для отладки.


Теперь в библиотеках GObjects и GObject. Они на C и в C вы не получаете всю эту симпатичную пушистую управляемую ошибку, вы получаете производительность. Это означает, что встроенная интроспекция отсутствует, и это означает, что сложнее поддерживать внешнюю привязку.

Привязки - это API между вещами на разных языках, которые позволяют им работать вместе , Для этого вам нужен общий API, и в этом случае API - это GObject. Но для того, чтобы это сработало, привязка звонящего должна знать, что доступно для него. До того, как GObject Introspection это должно было быть жестко закодировано в привязках, а это означает, что для каждого набора привязок поддерживается ручной список.

GObject Introspection по существу предоставляет сканер, который может охотиться через текущий источник GObject, с которым вы работаете, и предоставляет вам информацию привязки XML. Затем это обрабатывается привязками, и вы получаете API, который просто работает, все время.

Я, конечно, не охватил все здесь, но я пытаюсь дать вам представление о двух темы (интроспекция и почему в ней нуждается GObjects). Если вы хотите узнать больше, на веб-сайте Gnome есть много.

9
ответ дан 10 August 2018 в 08:00

Другие вопросы по тегам:

Похожие вопросы: