Sortowanie gtk.TreeView

W GTK dla obiektu TreeView (Lista) posiadamy parę metod sortowania, wszystkie za pomocą gtk.TreeSortable (chociaż można posortować listę nie zdając sobie z tego sprawy, gdyż model przypisany dla TreeView implementuje funkcje TreeSortable).

Gdy chcemy użyć wbudowanej metody sortowania wystarczy:

model=sometreeview.get_model()
#pobieramy model elementu gtk.TreeView
model.set_sort_column_id(0,gtk.SORT_ASCENDING)

sometreeview to nasz, utworzony wcześniej obiekt gtk.TreeView.
Jaki widać używamy tu funkcji set_sort_column_id i przekazujemy do niej 2 argumenty:

  • id kolumny, według której chcemy sortować naszą liste
  • porządek sortowania – rosnąco lub malejąco (gtk.SORT_ASCENDING albo gtk.SORT_DESCENDING)

Należy zauważyć, że podana metoda jest nieczuła na wielkość znaków.

Jeśli chcemy by użytkownik miał wybór wg której kolumny sortować możemy zmieniać kolumnę sortowania po kliknięciu w nagłówek kolumny:

def on_column_clicked(model,id):

model.set_sort_column_id(id)

i dla każdej kolumny podpiąć jako sygnał:

somecolumn1.connect("clicked",on_column_clicked,1)

gdzie model to model oznacza kolumnę. Dla kolumn funkcja set_sort_column_id ma tylko jeden argument – numer kolumny. Jest to spowodowane zamienny porządkiem sortowania (klikniemy raz – jest rosnąco, klikniemy drugi raz – jest malejąco). Dla pewności możemy dopisać

sometreeview.set_headers_clickable(True)
gdyż glade nie zawsze poprawnie ustawia tą opcję.

Czytaj dalej…

Przejście na KDE

Styczeń 4, 2010 middleofdreams Dodaj komentarz

Ostatnio przesiadłem się na środowisko KDE (w wersji 4.4 beta2). Co mnie do tego skłoniło?

  • Rosnąca z każdym wydaniem stabilność tego środowiska
  • Funkcjonalność coraz bardziej zbliżona do tej z czasów 3.5
  • Ciekawe rozwiązania
  • Świeży i oryginalny wygląd
  • Fakt, że lubię zmiany pod tym względem, poza tym w KDE ciągle się coś zmienia.

Screenshot 04.01.10

Jednym z ciekawych rozwiązań jakie najbardziej podobają mi się w KDE to powiadomienia z tacki systemowej. Wszystkie powiadomienia ładnie się wysuwają i chowają do tacki, a jak ktoś nie zdąży przeczytać to można je spowrotem wysunąć. Dolphin – menedżer plików też wygląda zachęcająco i dość dobrze działa na zdalnych katalogach (przez ssh choćby – na protokole fish). Także niektóre applety plazmy są ciekawe – widok katalogu – pokazany na screenie – pozwala na szybki podgląd i dostęp do plików bez otwierania dolphina.

Oczywiście nie jest to środowisko bez błędów. Nie podoba mi się na przykład zachowywanie ikon aplikacji GTK w tacce. Na zrzucie również widać rozjechaną ikone Pidgina… Kolejną rzeczą jest brak niektórych aplikacji na QT. Dla mnie nie ma póki co komunikatora dorównującego Pidginowi (czekam na Kadu z obsługą XMPP). Dobrego klienta mpd też mam problem znaleźć (korzystam z qmpdclient, ale czasami nie wiedzieć czemu… po prostu się wyłącza), których to pod GTK mamy całe mnóstwo: ario, sonata, gmpc. Inna rzecz… KDE jest ciągle w fazie bardzo intensywnego rozwoju – ma to swoje zalety, ale często dodawanie nowych ficzerów przedkłada się nad łatanie dziur i poprawianie tego co już jest.

Jak się dalej potoczy rozwój KDE – zobaczymy. Póki co używam i jestem zadowolony.

Kategorie:linux Tagi: , , ,

Wprowadzenie do pyGTK

Grudzień 26, 2009 middleofdreams Dodaj komentarz

W wordpressowym kokpicie w tabelce “Najczęściej szukane” zobaczyłem ostatnio jak napisać prostą aplikacje GTK, więc pomyślałem, że mogę i o tym coś napisać, a kto wie – może ten temat się tu rozwinie.

Zakładam, że czytelnik ma jakiekolwiek pojęcie o pythonie albo podobnym języku programowania.

Od czego zacząć pisać pythonową aplikację z użyciem pyGTK? Najlepiej właśnie od interfejsu. Można to robić na 2 sposoby – w samym kodzie programu definiować wszystkie okna, widżety i ich właściwości albo wygodniej – przez Glade. Prosty przykład – stworzenie w Glade jednego okna ze zwykłym Przyciskiem w kodzie wyglądałoby tak:

okno= gtk.Window()
przycisk=gtk.Button()
okno.add(przycisk)
okno.show()

Do tego trzeba dodać wszystkie właściwości np:
okno.set_title("Tytuł okna")
okno.resize(400,300)
przycisk.set_label("To jest przycisk")

Z powodu wygody i zmniejszenia ilości samego kodu opisywał będę tworzenie programów opartych o interfejsy robione za pomocą Glade – nawet jeśli właściwości danych widżetów będą się zmieniać – jest to prostsza i wygodniejsza droga. Czytaj dalej…

Odkrywanie połączeń w sieci.

Grudzień 24, 2009 middleofdreams Dodaj komentarz
Czasami mamy wrażenie, że coś zamula nam internet – ładowanie stron staje się mniej responsywne itp. Czy to wina naszego ISP czy coś dzieje się z naszym komputerem – można łatwo sprawdzić. Sniffing. Tak… sniffing też może do tego służyć. Wystarczy pobrać jakiś program do sniffowania i po jego uruchomieniu możemy przejżeć wszystkie aktualne połączenia. Ze swojej strony mogę polecić program Wireshark – jest to darmowy sniffer dostępny zarówno na linuksa i windowsa. Uruchamiamy program, wybieramy interfejs którym jesteśmy podpięci do sieci i już listują się nam wszystkie aktualne połączenia. Mogą się tam znajdować transmisje http, transmisje broadcastowe (np rozgłaszanie się serwera cups po sieci), czy tam inne tcp/ip – komunikatory, jakieś aktualizatory i wszystko co działa w sieci. Przez całą listę połączeń może  być dość ciężko przebrnąć, więc można sobie te dane jakoś ułożyć. W menu Statistics mamy wiele sposobów przedstawienia połączeń – na wykresie, segregowane wg protokołów (IMO najczytelniejszy sposób). Na stronie programu znajduje się wiele przydatnych artykułów na ten temat więc co do samego sniffowania odsyłam tam. Dodam tylko, żeby program wykrywał wszystkie połączenia w sieci (a nie tylko z komputera na którym jest uruchomiony) należy kartę sieciową ustawić na tryb nasłuchu. Można to szybko zrobić tak:

ifconfig nazwa_interfejsu promisc

Niestety na niektórych kartach/sterownikach może to nie działać. Wyłączamy w ten sam sposób dodając jedynie znak “-” przed słowem promisc. Aby sprawdzić czy faktycznie tryb się zmienił wpisujemy

ifconfig nazwa_interfejsu

i na wyjściu powinno pojawić się coś w stylu

UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

Nie muszę chyba mówić, że zwracamy uwagę na słowo PROMISC ;) .

Do czego jeszcze się to może przydać? Wyobraźmy sobie taką sytuacje – wpinamy się gdzieś do internetu – nie ma dhcp i nie mamy pojęcia jaka jest podsieć i jakie IP wolne. Albo (co może zdarzyć się częsciej) dostajemy jakieś urządzenie – ruter, ap, cokolwiek – i chcemy się dostać na jego panel administracyjny: podłączamy się kablem, wpisujemy ip wg instrukcji i.. nie działa, a adresu nie da się w ogóle spingować. Na oba problemy z pomocą przychodzi program Ettercap (możliwe, że wireshark też posiada taką funkcje, ja jednak jej nie znalazłem). Po ściągnięciu i zainstalowaniu uruchamiamy go w konsoli z parametrem

ettercap -C

i pokazuje nam się tekstowy interfejs oparty na ncurses. Teraz wybieramy kolejno Sniff->Unified sniffing; Hosts-> Scan for hosts; Hosts-> Hosts list i jako wynik otrzymujemy listę hostów w sieci.

Kategorie:linux Tagi: , , , ,

Jak linux to na pewno Ubuntu

Grudzień 17, 2009 middleofdreams 10 komentarzy
Ostatnio przeglądając internet zauważyłem dziwną tendencję. Coraz częściej ludzie pod słowem linux widzą ubuntu. Dajmy na to sieć witryn opendesktop.org – programy, motywy, zestawy ikon… wszystko robione pod ubuntu. A to jakieś logo w ikonie, a to program dostosowany tylko pod tą dystrybucje, a to motyw dostępny tylko jako .deb dla ubu. Popularność jest fajna, ale wydaję mi się, że Cannonical przesadził. Tak samo jak bazaar/launchpad – spotykamy się z sytuacją gdy autor jakiegoś kodu jest pytany czy ma konto w ww. launchpadzie. A przecież jest tyle innych dystrybucji, tyle innych systemów kontroli wersji… A ludzie potrafią się ograniczyć do jednego.

Linux to nie tylko Ubuntu.

Osobiście jestem uprzedzony do tej dystrybucji… może pech, ale zawsze miałem z nim jakieś problemy. Jak przychodzi mi instalować u kogoś linuksa i chcę, żeby wszystko działało bez jakiejś dodatkowej konfiguracji to wybieram Mandrivę – spisuje się bardzo dobrze. Teraz do ubuntu mam jeszcze większe zastrzeżenia. Może to i dobry system, ale niech nie działa jako ogłupiacz i nie stara się (pewnie przypadkiem)  pożreć linuksowego rynku od środka.
Na koniec link dla tych co jeszcze nie znają – DistroWatch.com – taki mamy wybór, o!
Kategorie:linux Tagi: , ,

Gcounter 0.9

Grudzień 7, 2009 middleofdreams Dodaj komentarz

0.9 is out. Just some small bugfixes (mainly with tray icon) and one new feature – now you can configure notification time.  As always you can download it from here or directly from here.

Kategorie:English Tagi: , ,

Webmin

Grudzień 5, 2009 middleofdreams Dodaj komentarz

Webmin – to oprogramowanie, które pewnie każdy administrator linuksowy zna choćby z samej nazwy. Ja sam mimo posiadania małego serwerka na linuksie poznałem Webmina pare dni temu. W największym skrócie jest to oprogramowanie, które pozwala na sterowanie serwerem z poziomu przeglądarki www. Całość  jest napisana w perlu na zasadzie modułów – które można dowolnie doinstalowywać. Dzięki takiemu rozwiązaniu możemy monitorować lub zarządzać dowolnymi usługami. Do dyspozycji mamy konfiguracje od usług typowo serwerowych (apache, mysql, dhcp i wiele tym podobnych) po elementy związane z samym systemem (init, bootloader, aktualizacja systemu, procesy… i wszystko co można sobie wyobrazić). Dodatkowymy ciekawostkami są opcje takie jak przeglądarka plików na serwerze, ściaganie plików z oraz na niego czy tunel HTTP.

Sam webmin jest również wysoce konfigurowalny. O utrzymywaniu aplikacji na wysokim poziomie bezpieczeństwa i wąskim zakresie dostepu przypominać chyba nie musze ;)

Webmin to oczywiście oprogramowanie opensource. A wszystko do pobrania ze strony domowej projektu.

Kategorie:linux Tagi: , ,

Łączenie obrazów w film.

Grudzień 3, 2009 middleofdreams Dodaj komentarz

Jeśli chcemy stworzyć animację złożoną z kilku obrazów najlepiej skleić całość w jednym pliku avi. Można do tego użyć złożonych programów przeznaczonych własnie do takich celów, ale można też dużo prościej – mencoder. Mencoder jest częścią pakietu mplayer – który jak wiadomo jest świetnym odtwarzaczem. Teraz załóżmy że mamy 700 obrazów nazwanych od animacja001.png do animacja700.png. Przechodzimy w konsoli do katalogu gdzie się one znajdują i po prostu wydajemy polecenie:

mencoder “mf://animacja*.png” -mf fps=25 -o moja_animacja.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=1500

Teraz małe wyjaśnienie. Pierwsza opcja to po prostu ścieżka do plików png. Przypominam, że gwiazdka (*) oznacza dowolny ciąg znaków – w naszym przypadku liczby od 001 do 700. Opcja fps=25 oznacza ilość klatek na sekunde. Jak wiadomo by uzyskać płynny obraz najlepiej jest używać około 25 klatek. Parametr -o to plik wynikowy – nasz wygenerowany film. Natomiast -ovc lavc oznacza bibliotekę wideo, której użyjemy do konwersji.

Następnie ustawiamy jej opcje przez -lavcopts. Jedną z nich oraz najbardziej nas interesującą jest wybór kodeka wideo i bitrate. Te ustawienia nie są wymagane – bez ich podania mencoder sam sobie wybierze co chce.

Właściwie to tyle. Wpisujemy, naciskamy enter i czekamy na nasz film.

Kategorie:linux Tagi: , , , ,

Chrome OS

Listopad 29, 2009 middleofdreams Dodaj komentarz

Jakoś tak wyszło, że mam trzeci post z rzędu o Google. Niedługo trzeba było czekać żeby po udostępnieniu źródeł Chrome OS ktoś stworzył własnego forka. Jeden z pracowników firmy Dell opublikował wersję systemu przystosowaną do netbooków Mini 10v. Nie za szybko na taki krok? Fakt, że jest Dell zaznacza, że udostępnił system w celach testowych, ale moim zdaniem projekt Chromium OS jest w zbyt wczesnej fazie rozwoju by bawić się w takie modyfikacje. Kolejny dowód na to co Google robi z ludźmi?

Kategorie:linux Tagi: , ,

Aktualizacja kanału rozwojowego Chrome

Listopad 19, 2009 middleofdreams Dodaj komentarz

Skoro już o Google mowa to parę dni temu została wydana nowa rozwojowa wersja przeglądarki Chrome – również dla linuksa. Tym razem zmieniło się stosunkowo dużo. Między innymi:

  • Rozszerzenia działają (skrypty z userscripts.org)
  • Dodano obsługę synchronizacji (chociaż u mnie póki co jest to opcja niedostępna)
  • Obsługa flashowych filmików już nie jest problematyczna.
  • Poprawiono bug z podpowiedziami przy włączonej kompozycji.

Osobiście brakuje mi już tylko obsługi Gears – ktora pod Firefoksem działa coraz lepiej. Oby tak dalej

Kategorie:linux Tagi: , ,