
إضافات لـ cree.py
إضافات (Plugins) لـ cree.py
تسمح بنية cree.py بتعريف مصادر متعددة يحددها المستخدم لمعلومات تحديد الموقع الجغرافي. تُعرَّف هذه المصادر كإضافات (plugins) ويمكن تثبيتها في creepy عن طريق نسخها إلى مجلد plugins داخل دليل التثبيت.
أنشئ طلب سحب (pull request) لإضافة جديدة إذا أردت مشاركتها مع مستخدمين آخرين، وسأتحقق منها وأدمجها في المستودع.
تحتاج إضافات creepy إلى 3 ملفات على الأقل:
تم بناء بنية الوحدة بمساعدة yapsy (http://yapsy.sourceforge.net.)
يرجى تضمين المعلومات التالية في ملف plugin_name.yapsy-plugin الخاص بك
[Core]
Name = Plugin Name
Module = plugin_name
[Documentation]
Author =
Version =
Website =
Description =
هو ملف بايثون الذي يحتوي على منطق الإضافة. يجب أن يوسّع (extend) الصنف InputPugin وتنفيذ عدد من الدوال على الأقل، لذا يجب تعريفه كما يلي (انظر التعليقات الداخلية):
from models.InputPlugin import InputPlugin
class PluginName(InputPlugin):
name="plugin_name"
'''
If your plugin configuration needs to invoke a wizard
(for example for oAuth authorization) this must be set to true
'''
hasWizard=True
def searchForTargets(self, search_term):
'''
Parameters
----------
search_term : str
The search term that the user entered in the New Project wizard. It could be a mail, id,
username, full name, it is the plugin's responsibility to differentiate between
different types if needed
Accepts a string parameter from the user and performs a search in the respective service/source
for identifying possible targets to be included in the process.
Returns a list of dictionaries, one for each identified target or an empty list if no results were
found. The dictionaries need to include the following keys :
target = {'pluginName':'Plugin Name',
'targetUserid' : 'The userid of the target in the service/source',
'targetUsername' : 'The username of the target in the service/source',
'targetPicture' : 'the filename of the profile picture of the target ( profile_pic_targetUserid )',
'targetFullname' : 'The full name of the target'}
'''
your_code_here()
def runConfigWizard(self):
'''
If your plugin's configuration needs a wizard, create it here. You need to save the configuration
values to the plugin's config file before returning.
Access to the plugin configuration file is offered through the
readConfiguration(category) method that is inhereted from from the InputPlugin. This returns a tuple
config,options where
-- config is the ConfigObj file that you can use to save the configuration by
calling it's write() method
-- options is the dictionary containing your configuration category options.
'''
def isConfigured(self):
'''
Returns a tuple. The first element is True or False, depending if the plugin is configured or not. The second
element contains an optional message for the user
'''
def returnLocations(self, target, search_params):
'''
Parameters
----------
target : dict
search_params : dict
Returns a list of location dictionaries (or empty list if no locations were found) for the specified
target using the specified search parameters
Target is a dictionary with information as defined in searchForTargets and search_params is a
dictionary with search parameters that you would have defined as available in your configuration file
(see plugin_name.conf below).
The location dictionary needs to contain the following keys :
loc = {'plugin' : 'twitter'
'context' : 'Context of the location"
'infowindow' : "HTML with information in the location to be shown in the infoWindow on the map"
'date' : 'a datetime.datetime object with information on when the gelocation was created'
'lat' : 'latitude of the location'
'lon' : 'longitude of the location'
'shortName' : 'short name describing the location, empty string if not available'}
'''
إذا كانت إضافتك تحتاج إلى وحدات خارجية غير موزعة مع بايثون، فيجب عليك توضيح ذلك صراحةً للمستخدمين، ويفضَّل مع إرشادات حول كيفية تثبيت التبعيات على كل منصة.
يحتوي الملف على جميع خيارات الإعدادات الخاصة بك ويجب أن يتضمن الأقسام التالية (قد يكون بعضها أو كلها فارغًا):
[string_options]
key1 = value
[boolean_options]
key2 = True
key3 = False
[search_string_options]
key4 = some value
[search_boolean_options]
key5 = True
سيظهر string_options وboolean_options كخيارات إعدادات في مربع حوار إعدادات الإضافة (Plugin Configuration).
سيتوفر search_string_options وsearch_boolean_options كخيارات بحث في معالج المشروع الجديد (New Project Wizard).
إذا احتجت إلى إخفاء قيمة في الواجهة الرسومية (أي كلمات المرور، رموز الوصول، إلخ)، فقم ببادئة المفتاح بـ hidden_ وسيتكفل cree.py بذلك.
إذا أردت أن تحظى خيارات الإعدادات لديك بأسماء أكثر ودًّا للمستخدم في الواجهة الرسومية، يمكنك توفير تسميات (labels) لها هنا. على سبيل المثال، باستخدام ملف conf أعلاه كمرجع، يمكن أن يبدو ملف plugin_name.labels الخاص بك كما يلي:
[labels]
key1 = Label For Key 1
key2 = Label For Key 2
key3 = Label For Key 3
key4 = Label For Key 4
key5 = Label For Key 5
إذا لم تحدد تسمية لمفتاح، فسيظهر المفتاح نفسه في الواجهة الرسومية بدلاً من ذلك.
اجمع جميع الملفات أعلاه في مجلد باسم plugin_name وانسخ المجلد إلى دليل plugins الخاص بالتطبيق المثبَّت. بهذه البساطة!