Konfigurační dialog pro plugin
Nejprve je potřeba vytvořit v hlavním souboru pluginu (plugin.py) další třídu, která bude představovat jeho konfigurační rozhraní.
class config:
def __init__(self,main):
self.main=main
self.config={}
Pak musíme při inicializaci pluginu Jabbimu říct, že má náš plugin konfigurační dialog. To uděláme nastavením proměnné self.configDialog na následujícím místě pluginu:
class Plugin(plugins.PluginBase):
def __init__(self, main, homedir, plugindir):
...........
self.configDialog=config(self)
...........
if main:
...........
Teď už můžeme přidávat položky do konfiguračního dialogu. Každá položka konfiguračního dialogu představuje jednu položku v pythonním slovníku self.config třídy config, kde tato položka je rovněž slovník (dict). Každá položka musí obsahovat tyto klíče:
- "type" - udává typ položky
- "label" - popisek položky, který uvidí uživatel
- "value" - standardní hodnota položky, která bude použita při vytvoření konfiguračního souboru spjatého s dialogem
Položky můžeme v dialogu třídit těmito klíči:
- groupbox - název QGroupBoxu, ve kterém položka bude.
self.config['sendMessages']={'type':'boolean','label':self.main.tr("Send message automaticaly"),'value':'True',"groupbox":self.main.tr("Messages")} - tab - název tabu, ve kterém položka bude
Groupboxy i taby se vytvářejí automaticky.
Další doplňující klíče:
- tooltip - přiradí položce tooltip
- disabled - přítomnost tohoto klíče zajistí to, že bude položka deaktivována a nebude s ní možno pracovat
Ukážeme si příklady všech položek a popíšeme všechny možné typy.
1. Zaškrtávací tlačítko (type boolean)
self.config['sendMessages']={'type':'boolean','label':self.main.tr("Send message automaticaly"),'value':'True'}
U typy boolean lze použít ještě tyto nepovinné klíče:
- "enable" - seznam položek konfiguračního dialogu, jejichž editace se má povolit při zaškrtnutí tlačítka.
self.config['sendMessages']={'type':'boolean','label':self.main.tr("Send message automaticaly"),'value':'True',"enable":["sendMessagesPrivate","sendMessagesGroup"]}
self.config['sendMessagesPrivate']={'type':'boolean','label':self.main.tr("Send only private messages"),'value':'True'}
self.config['sendMessagesGroup']={'type':'boolean','label':self.main.tr("Send only group messages"),'value':'True'}
- "disable" - opak enable; seznam položek, které se mají stát needitovatelnými, pokud se tlačítko zaškrtne
- "show" - seznam položek, které se mají zobrazit, pokud se tlačítko zaškrtne
- "hide" - seznam položek, které nemají být vidět, pokud je tlačítko zaškrtnuté
2. Radio button (zaškrtávací tlačítko s omezeným výběrem) (type boolean-radio)
self.config['rosterMode']={'type':'boolean-radio','label':'','value':'normal','options':{'normal':self.main.tr('Normal'),'compact':self.main.tr('Compact')}}
Klíč options udává jednotlivé radio buttony, ze kterých může uživatel vybírat. Slovník pod klíčem options má jako klič hodnotu daného radio buttonu a jako proměnnou popis k radio buttonu. Value musí být jednen z klíčů radio buttonu. Do konfiguračního souboru je ukládán vždy klíč volby options, nikdy ne popis.
3. Jednořádkové vstupní pole (QLineEdit) (type text-single)
self.config['resource']={'type':'text-single','label':self.main.tr("Resource:"),'value':'jabbim'}
4. Víceřádkové vstupní pole (QTextEdit) (type text-multi)
self.config['awayMessage']={'type':'text-multi','label':self.main.tr("Away text"),'value':self.main.tr("I'm not here since [last].")}
5. Vstupní pole pro hesla (type text-private)
self.config['passwd']={'type':'text-private','label':preferencesWindow.tr("Password:"),'value':''}
6. Rozbalovací seznam
self.config['player']={'type':'list-single','label':self.main.tr("Player"), 'items':{'Winamp':self.main.tr('winamp')}, 'value':'winamp'}
Pro klíč items platí stejné podmínky jako pro options u Radio buttonů.
7. Celočíselné hodnoty (QSpinBox) (type number-spin)
self.config['priority']={'type':'number-spin','label':self.main.tr("Priority:"),'value':'0'}
Zobrazí vstupní pole, do nějž lze zadat pouze celá čísla.
8. Seznam Jabber ID (type jid-list)
T0 B3 C0NT1N|_|3D
