Powiadomienia w gBlip

gBlip od dzisiaj potrafi powiadamiać użytkownika o skierowanych do niego wiadomościach. Jeśli z jakiegoś powodu program jest nieaktywny lub schowanych pojawi się dymek z otrzymaną wiadomością tuż nad ikonką w tray’u. Ponadto sama ikonka zyska małą kopertę w dolnym prawym rogu. A wygląda to mniej więcej tak:

Powiadomienie

Niestety, w obecnej chwili gBlip nie jest kompatybilny z Windowsem. Spróbujemy coś na to poradzić w najbliższym czasie. Na szczęście doskonale radzi sobie pod systemem Ubuntu. :)

Desktop Art dla Rhythmboxa

Właśnie odkryłem bardzo miłą dla oka wtyczkę dla odtwarzacza Rhythmbox, która wyświetla okładkę płyty wraz z informacjami o aktualnie wyświetlanym utworze na pulpicie. Wygląda to jak na poniższym obrazku:

Wtyczka Desktop Art

Wtyczka okupuje dolną część pulpitu i można ją dość swobodnie konfigurować (położenie, wielkość, kolory). Autorem tego cuda jest Mathias Nedrebø, który udostępnił ją wszystkim poprzez repozytorium SVN.

Oto procedura instalacyjna (za stroną autora):

mkdir -p $HOME/.gnome2/rhythmbox/plugins/
cd $HOME/.gnome2/rhythmbox/plugins/
svn co http://nedrebo.org/svn/rhythmbox/desktop-art

Po powyższych czynnościach wystarczy zrestartować Rhythmboxa i uaktywnić wtyczkę w menu Edit | Plugins, gdzie się ją również konfiguruje.

UPDATE:

Ponieważ strona autora przestała działać możecie plugin zaciągnąć ode mnie:
Plugin Desktop-Art

Zespół gBlipa się rozszerza :)

gBlip LogoPrace nad nową wersją 0.1.5 gBlipa wreszcie nieco przyspieszą. Chcę serdecznie powitać nowego członka zespołu deweloperskiego. Witaj Vigrid na pokładzie! :)
Wczoraj odbyliśmy wstępną sesję pair-coding, z której wyszło kilka ciekawych wniosków. Po pierwsze, kod gBlipa nie należy do najczytelniejszych i eleganckich. Doszliśmy do wniosku, że to co do tej pory pisałem samemu wymaga pewnego refaktoringu, aby potem było łatwiejsze w utrzymaniu. Druga sprawa to fakt, że kod wymaga posprzątania - czyli usunięcia nieużywanych fragmentów. Byłem sam zdziwiony, jak dużo zostawiłem nieużywanego kodu. To pewnie zasługa tego, że chciałem jak najszybciej zrobić coś w miarę używalnego. :) Kolejny wniosek tyczy się samego Pythona - jest to bardzo wygodny język, który pozwala na dość swobodne kodowanie, ale także dość niechlujne. Postanowiliśmy wspólnie wypracować styl i konwencje kodowania w Pythonie, aby kod nie wyglądał miejscami jak bagno. W Pythonie najbardziej brakuje mi dobrej enkapsulacji, co prowadzi do powstawania różnych dziwnych konstrukcji. Podczas wspólnej sesji wyszło na jaw, że np. w ogóle nie korzystam z “prywatnych” pól klasy. O kwiatki w takim przypadku nie trudno. Także kodując w Pythonie trzeba się “trzymać za mordę”. :) Tyle jeśli chodzi o wnioski.

Świeże spojrzenie Vigrida na moje wypociny dało mi kolejną lekcję pokory. :) Mam nadzieję, że teraz wspólnymi siłami doprowadzimy gBlipa do porządku i jego rozwój nieco przyspieszy.

Dzięki Vigrid za dołączenie do teamu! :D

gBlip 0.1.4

Działający gBlip w wersji 0.1.4gBlip w wersji 0.1.4 jest już do pobrania z repozytorium. Można to zrobić np. za pomocą komendy:

svn co https://gblip.svn.sourceforge.net/svnroot/gblip/tags/0.1.4/ gBlip-0.1.4

która to utworzy podkatalog gBlip-0.1.4 z wersją 0.1.4. Przy okazji dodam, że oficjalne wersje znajdują się w podkatalogu tags repozytorium. Kolejne będą tam sukcesywnie umieszczane.

Zmiany w wersji 0.1.4

A to co zmieniło się w najnowszej wersji w stosunku do 0.1.3:

  • usunięty bug związany ze źle zawijającym się statusem zalogowanego (#5)
  • dodano menu podręczne w ikonce powiadomień [pokaż/ukryj i zakończ] (#3)
  • blokada wysyłania zbyt długich wiadomości (#6)
  • usunięty bug związany z zaśmiecaniem cudzych kokpitów wiadomościami zalogowanego (#8)
  • teraz program pobiera status zalogowanego na początku, gdy nie ma go na kokpicie (#9)
  • poprawka dotycząca liczenia długości wiadomości zawierającej znaki Unicode (#11)
  • dodane awatary do listy wiadomości (#2)
  • dodane awatary do listy obserwowanych i obserwujących (#2)
  • wczytywanie awatara zalogowanego (#2)
  • poprawka rozpoznawania URLi w wiadomościach
  • kilka zmian w logice pod kątem wczytywania obrazków (m.in. cache)

W nawiasach znajdują się numery bugów z systemu śledzenia błędów. Zachęcam także wszystkich użytkujących gBlipa o rejestrację w tym systemie i zgłaszanie bugów oraz pomysłów do kolejnych wersji. Dziękuję także wszystkim, którzy już z systemu skorzystali. :)
Miłego użytkowania nowej wersji!

Lista wiadomości - problemy i rozwiązania

Miałem szczerą chęć wypuścić kolejną oficjalną wersję gBlipa jeszcze w tym tygodniu, czyli przed moim kolejnym wyjazdem do UK. Niestety, napotkałem na problem wymagający dość dużo pracy programistycznej. Mowa o liście wiadomości, a konkretnie o możliwości klikania na linki w tychże wiadomościach (czy np. na ksywki użytkowników).

Problem

W obecnej wersji gBlipa lista wiadomości funkcjonuje jako widżet gtk.TreeView ze źródłem danych gtk.ListStore. Jest to bardzo wygodna kontrolka, ale (o ile się nie mylę) niewystarczająca dla gBlipa. Miałem cichą nadzieję, że jest to komponent mocno konfigurowalny, ale akurat wspomnianych wymagań nie spełnia. Okazuje się, że elementy znajdujące się w komórkach listy nie mają obsługi klikania. Po prostu są głuche na zdarzenia myszy, czy ogólnie na jakiekolwiek inne zdarzenia. Elementy te, zwane gtk.CellRendererXxxx (gdzie Xxxx oznacza typ wyświetlanej zawartości) potrafią tylko rysować zawartość. Przynajmniej tak to wygląda na dzisiejszy stan mojej wiedzy. Nie widziałem też innej aplikacji, która umiałaby jakoś sobie z tym ograniczeniem poradzić. Być może można napisać własny CellRenderer z potrzebną funkcjonalnością, ale ja nie potrafię tego zrobić. Z tego też powodu nadeszła dość poważna decyzja - trzeba przepisać listę wiadomości od nowa.

Proponowane rozwiązanie

Postanowiłem zrezygnować całkowicie z używania TreeView na rzecz mieszaniny innych widżetów. Myślę tutaj o gtk.Table z dwoma kolumnami na (1) awatar + (2) wiadomość i n-wierszami reprezentującymi kolejne wiadomości. Awatar będzie wyświetlany przez zwykły gtk.Image, natomiast samą wiadomość planuję wyświetlać za pomocą kontrolki gtk.TextView. Obawiam się jednej rzeczy związanej z tym rozwiązaniem - że będzie dość mało wydajne i pamięciożerne. Widżet gtk.TextView jest dość “ciężkim” narzędziem, więc może dość mocno obciążyć program. Czas oczywiście zweryfikuje moją tezę… Póki co nie mam innego pomysłu.

Konsekwencje

Jak pisałem na początku, chciałem wypuścić wersję 0.1.4 jeszcze w tym tygodniu. Z powodu dość drastycznych zmian w kodzie gBlipa postanowiłem wypuścić wersję 0.1.4 bez wsparcia dla klikania linków. W ten sposób każdy będzie mógł korzystać z tej w miarę stabilnej wersji, kiedy ja będę walczył z napisaniem od nowa listy wiadomości. Zatem możliwość klikania linków zostaje oficjalnie przesunięta do wersji 0.1.5, kiedy będzie napisany nowy komponent listy wiadomości. Jutro zostanie wypuszczona nieco zubożona (względem planowanej) wersja 0.1.4 programu gBlip, a prace nad kolejną wersją ruszą już w poniedziałek (jeśli dam radę).

PS. Jeśli ktoś z Was ma inny pomysł jak rozwiązać powyższy problem - walcie śmiało w komentarzach, na blipie czy po prostu emailem.