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ć).

Zobacz także


Osobiste