Dcopexport
Kadu
Spis treści |
Co robi ten moduł?
Moduł dcopexport eksportuje pewne funkcje Kadu (jak np. wysyłanie wiadomości, zmiany w konfiguracji) do uruchomionego na Twoim komputerze serwera DCOP (podsystem komunikacji międzyprocesowej środowiska KDE). Umożliwia to m. in. korzystanie z Kadu z poziomu innego programu (bez klepania w klawiaturę czy dotykania myszki). Moduł ten działa zasadniczo poprawnie w środowisku KDE, choć przy poprawnie (tzn. z zależnościami) zainstalowanym pakiecie kdelibs powiniem działać z innymi środowiskami graficznymi. Kompletna lista udostępnionych funkcji poniżej, została ona podana w sposób charakterystyczny dla DCOP (dla nie-oczywistych funkcji podano obok wyjaśnienie):
ASYNC sendMessage (const QString &uin, const QString &message)
</dt>- wysyła wiadomość do użytkownika (nie będzie zapamiętana w historii)</dd>
ASYNC sendMessageWithHistory (const QString &uin, const QString &message)
</dt>- wysyła wiadomość dodając ją następnie do historii</dd>
ASYNC sendFile (const QString &uin, const QString &path)
</dt>- inicjuje wysyłanie pliku zadanego przez path do użytkownika uin</dd>
bool sendUserSMS (const QString &sender, const QString &altnick, const QString &message)
</dt>- wysyła wiadomość SMS do podanej osoby (wg podanego pola "Wyświetl"), zwraca prawdę jeśli udało się zainicjować wysyłanie</dd>
bool sendSMS (const QString &sender, const QString &number, const QString &message)
</dt>- wysyła wiadomość SMS na podany numer, zwraca prawdę jeśli udało się zainicjować wysyłanie</dd>
QStringList getGroups ()
</dt>- zwraca listę grup użytkowników</dd>
QStringList getUsersInGroup (QString group)
</dt>- zwraca listę użytkowników w grupie</dd>
QStringList getUserInfo (QString uin)
</dt>- Zwraca listę informacji o kontakcie w postaci "NazwaPola: Wartość", dostępne pola: Uin, Nick, AltNick, FirstName, LastName, Mobile, Email, Status, Desc, IP</dd>
QString description()
</dt>- zwraca aktualny opis</dd>
ASYNC setDescription(QString desc)
</dt>- ustawia opis</dd>
ASYNC setOnline () ASYNC setOnline (const QString& desc) bool isOnline () ASYNC setBusy () ASYNC setBusy (const QString& desc) bool isBusy () ASYNC setInvisible () ASYNC setInvisible (const QString& desc) bool isInvisible () ASYNC setOffline () ASYNC setOffline (const QString& desc) bool isOffline ()
</dt>- funkcje do obsługi statusu</dd>
ASYNC setFriendsOnly (bool b) bool isFriendsOnly ()
</dt>- funkcje obsługi "tylko dla znajomych"</dd>
int openChat (QString uins)
</dt>- otwiera okno rozmowy z użytkownikiem</dd>
ASYNC openSearchDialog (QString uin)
</dt>- otwiera okno wyszukiwania informacji o użytkowniku</dd>
ASYNC showHistory (QString uins)
</dt>- pokazuje okno z zapisem rozmów z użytkownikiem bądź zapisem konferencji - wtedy numery uczestników konferencji powinny być oddzielone przecinkami</dd>
ASYNC showMessage (QString type, QString text)
</dt>- Kadu-powiadomienie zadaną metodą (dymki, dźwięki, migajace okno)</dd>
QStringList getMessageTypes ()
</dt>- zwraca dostępne metody powiadamiania</dd>
QString readEntry (const QString &group, const QString &name, const QString &def = QString::null) int readNumEntry (const QString &group, const QString &name, int def = 0) double readDoubleNumEntry (const QString &group, const QString &name, double def = 0.0) bool readBoolEntry (const QString &group, const QString &name, bool def = false) ASYNC writeEntry(const QString &group, const QString &name, const QString &value)
</dt>- obsługa konfiguracji - czytanie i pisanie do pliku konfiguracyjnego</dd>
ASYNC openUrl (const QString& url)
</dt>- otwiera okienko rozmowy z użytkownikami, parametr ma postać gg://UIN[,UIN,...]</dd>
bool exportUserList()
</dt>- eksportuje listę kontaktów na serwer - zwraca prawdę, jeśli udało się zainicjować wysyłanie</dd>
bool sendUserSMS (const QString &sender, const QString &altnick, const QString &message)
</dt>- wysyła wiadomość SMS do podanej osoby (wg podanego pola "Wyświetl"), zwraca prawdę jeśli udało się zainicjować wysyłanie</dd>
bool sendSMS (const QString &sender, const QString &number, const QString &message)
</dt>- wysyła wiadomość SMS na podany numer, zwraca prawdę jeśli udało się zainicjować wysyłanie</dd>
ASYNC sendFile (const QString &uin, const QString &path)
</dt>- inicjuje wysyłanie pliku zadanego przez path do użytkownika uin</dd>
QStringList getUserInfo (QString uin)
</dt>- Zwraca listę informacji o kontakcie w postaci NazwaPola: Wartość, dostępne pola: Uin, Nick, AltNick, FirstName, LastName, Mobile, Email, Status, Desc, IP</dd>
QString passwordHash (QString s)
</dt>- Zwraca łańcuch potraktowany symetryczną funkcją do zaciemniania hasła</dd>
ASYNC quit ()
</dt>- zakończenie Kadu</dd>
Co moduł może zrobić dla mnie?
Moduł ten pomoże Ci zautomatyzować pewne czynności wykonywane z Kadu i dowolnym innym programem. Jeśli jesteś programistą C++, powłoki (shella) lub np. Pythona możesz wykorzystać moduł do komunikacji z Kadu poprzez system DCOP. Dla przykładu dla poziomu powłoki da się zrobić to w ten sposób:
dcop kadu kadu sendMessage 123456 'witaj, świecie!' dcop kadu kadu setBusy 'nie przeszkadzać, bo ubiję'
a dla Pythona (przy obecności odpowiednich modułów-bibliotek Pythona, tj. pakietu PyKDE) może to wyglądać tak:
from kdecore import *
import dcopext
import sys
# ta linia nie wiem po co jest
KCmdLineArgs.init (sys.argv, KAboutData ("a", "a", "a"))
kapp = KApplication ()
kadu = dcopext.DCOPObj ("kadu", kapp.dcopClient (), "kadu")
kadu.setBusy ()
kadu.setDescription ("ala ma kota")
Programując w C++ najlepiej zajrzeć na stronę API DCOP
Ponadto Kadu wraz z modułem dcopexport umożliwia reagowanie na linki na stronach WWW typu gg://1234567, tj. po kliknięciu na taki link w przeglądarce Konqueror, Firefox lub Opera pojawia się okienko rozmowy z odpowiednim numerem - aby to działało, uruchom w oknie konfiguracji modułu odpowiednie skrypty instalacyjne.
Ponadto z poziomu Konquerora jest możliwe ustawiania opisu. Najpierw uruchom instalację tejże możliwości, a następnie skorzystaj z nowej opcji w menu kontekstowym (prawy klawisz) Działania (Actions) - Ustaw jako opis w Kadu. Możesz w ten sposób ustawić linki ze stron WWW, lokalizacje plików na serwerach FTP i zapewne jeszcze w innych sytuacjach.
Co ja mogę zrobić dla tego modułu?
Jeśli jesteś programistą (co w przypadku języków skryptowych jest naprawdę łatwe i szybkie!), napisz zgrabne funkcjonalne skrypty do zadań specjalnych i opublikuj je. Jeśli jesteś użytkownikiem, skontaktuj się z najbliższym programistą i zapytaj czy i jak można zrobić interesującą Cię rzecz.
Problemy
Jeśli zobaczysz taki komunikat
ERROR: Couldn't attach to DCOP server!
znaczy to, że próbujesz łączyć się z serwerem DCOP (częścią składową środowiska KDE), ale program dcop (lub inny) nie umie zlokalizować Twojego serwera DCOP.
Aby rozwiąć ten problem, zajrzyj do pliki$HOME/.DCOPserver_$HOSTNAME_$DISPLAY
gdzie $HOSTNAME to nazwa Twojego komputera z uruchomionym serwerem X-ów, a $DISPLAY to numer wyświetlacza serwera X (zwykle 0). Następnie ustaw zmienną środowiskową DCOPSERVER na wartość pierwszej linii z tego pliku. Dla przykładu w powłoce bash można to zrobić w następujący sposób:
$ DCOPSERVER=$(head -1 $HOME/.DCOPserver_$HOSTNAME_$DISPLAY) dcop kadu kadu
Jeśli widzisz błąd
DCOPClient::attachInternal. Attach failed Could not open network socket
znaczy to że nie możesz otworzyć gniazdka do komunikacji z serwerem DCOP. Sprawdź uprawnienia do pliku, użytkownik 0 (root) może zawsze otworzyć gniazdko.
Jeśli pojawi się komunikat
DCOPClient::attachInternal. Attach failed Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed
to jest to związane z polityką bezpieczeństwa XServer'a i wątpię, żeby dało się rozwiązać pozytywnie (ale trzeba to obadać).
