Aggiungere smileys animati con Pidgin? Certo!

Il piccione parlante
Il piccione parlante

UPDATE 30/05/09: ho riscritto la patch da zero in seguito alle modifiche recenti nel ramo di sviluppo, gli effetti sono gli stessi ma il procedimento seguito diverso :-)

Con pidgin, se cerco di aggiungere uno smiley ricevuto da un amico ai miei smileys, ho come effetto che viene salvato solo il primo frame, in pratica perde l’animazione.

Irritante.

Più irritante se penso che questo problema c’è da tempo immemore ma gli sviluppatori continuano a chiudere il ticket con stato: wontfix, perché il GdkPixBuf (non sviluppato da loro) non supporta il salvataggio in gif.

Bene, siccome mi ero rotto il cazzo di questa cosa, e un po’ per sfida, ho scritto una patch che utilizza un metodo non troppo pulito, ma che permette di aggiungere sto coso.

Come provarla?

Il metodo più semplice è quello di installare la versione di pidgin del mio repository, oppure se siete smanettoni dovrete applicare la patch al sorgente che dovete prendere dal ramo di sviluppo (attraverso monotone), applicarla, compilare ed installare pidgin! :-) [se avete bisogno di info a riguardo, contattatemi]

Per gli utenti di windows: la patch funziona (credo) anche per win, solo che non ve la posso compilare, dovrete farlo voi :-P

Problemi noti:

  • La patch permette di aggiungere uno smiley, non di salvarlo come immagine. Almeno per il momento. La nuova versione della patch (v0.6) permette anche di salvarli su file :-)
  • L’ho testata un pochino, ma non è mai sufficiente: ho bisogno di feedback ragazzi, datevi da fare e provatela!
  • Utilizzerà un po’ più memoria. Beh a dire il vero si parla magari di una 50ina di kB con un migliaio di smileys visualizzati, ma sono pignolo :-P
  • L’ho testata solo sul ramo di sviluppo (attualmente la 2.6.0dev), se qualcuno vuole portarla al ramo stabile (2.5.5) è il benvenuto :-)

Nerd area: come funziona funzionava (prima della v0.7)

Al momento della ricezione dello smiley, lo stream di dati viene salvato come file all’interno della cartella ~/.purple/remote_smiley_cache, con un nome univoco e nel formato originale inviato dal nostro contatto.

Viene creata una corrispondenza smiley_visualizzato<==>file_in_cache, in modo che al momento in cui faccio tasto destro sullo smiley e clicco su Aggiungi smiley personalizzato, lui non vada a chiedere al GdkPixBuf di salvarglielo, piuttosto gli chiedo di andare a leggere il contenuto del file in cache e di salvarlo tra gli smileys personalizzati.

Leggetevi la patch per maggiori info. Lo so, non è commentata, ma il codice di pidgin purtroppo non lo è mai, quindi ho semplicemente seguito lo stile attuale.

24 commenti su “Aggiungere smileys animati con Pidgin? Certo!”

  1. Grazie, ti farò sapere se funziona e se rintraccio problemi!

    sei un grande, in una notte mi hai fatto contento due volte senza star qui a compilare xD (@) :-D

  2. Ciao, ci sono dei problemi con il salvataggio delle emoticon animate. La patch non funziona, ho provato da due pc differenti, uno fresco fresco di installazione e non viene neanche creata la cartella ~/.purple/remote_smiley_cache

    Cheers (Y)

  3. @MastroPino: ciao, c’è un problema. Come puoi leggere qui, hanno semi-implementato la caratteristica, ma facendo a modo loro, senza utilizzare la mia patch.
    Il problema è che la loro versione SALVA gli smileys animati, mentre non li AGGIUNGE.
    Un workaround è quello di salvarli da qualche parte, e poi aggiungerli a mano.
    Oppure aspettare che qualche sviluppatore di pidgin (oppure anche io) aggiunga anche la funzionalità di aggiunta.

    :-) come si suol dire, ho fatto lavoro per nulla!

  4. Mi da anche con salva lo stesso errore di sempre, ovvero

    Tipo di file sconosciuto

    Verrà utilizzato il formato predefinito PNG.

    :(

    Sò che non dipende da te, ma tu vedi che lavori fanno!

  5. Uso la versione del tuo repository, ecco cmq l’output:

    m7p@evolution-desktop:~$ dpkg -s pidgin | grep Version
    Version: 1:2.6.0~mtn20090527-1~frasten0

    (@)

  6. Hum… ho appena ricompilato ed installato la mia versione del repo, e non sembra aver problemi nel salvataggio…
    Giusto per chiarire: stai provando a salvare uno smiley di un altro contatto? Non uno scritto da te, vero?
    Perché in tal caso sì, non permette di salvarlo animato.
    Chiedi ad un tuo amico di mandarti uno smiley animato e riprova, in questo caso.

    In caso contrario, sto pensando a cosa potrebbe essere la causa…

  7. @MastroPino: che versione di pidgin stai utilizzando? Compilata da te? Presa dal mio repo?
    In tal caso, mi diresti che versione ti da nell’About di Pidgin?
    E questo comando da shell?

    dpkg -s pidgin | grep Version
  8. Capisco, si io facevo prove mandando a me stesso emoticon animate, adesso ho provato con un contatto e posso salvare, ma non usare direttamente, esattamente come dicevi tu! Scusa la gaff e il disturbo! O:-)

  9. Io ti faccio pubblcità ogni giorno con tutti i contatti che usano pidgin… e per quelli che non lo usano, il plugin plus, che tutti snobbano, è un ottimo incentivo!

    Grazie ancora del lavoro che fai per la comunità! (Y)

  10. @MastroPino: novità!!! Dalla versione che ho appena uppato nel mio repository (1:2.6.0~mtn20090529-1~frasten1) ho inserito la nuova patch v0.7 che ho creato, appositamente per le recenti modifiche. Permette di aggiungere gli smileys animati. O almeno, a me funziona :-P
    Fatemi sapere se è tutto ok anche per voi!!!

  11. Ciao, ho provato ad applicare la tua patch (v 0.7) a pidgin 2.5.7, ma non funziona e da errore al momento della compilazione.
    Ecco l’output:
    cc -DHAVE_CONFIG_H -I. -I../../pidgin -I.. -DBR_PTHREADS=0 -DDATADIR=\”/usr/share\” -DLIBDIR=\”/usr/lib/pidgin/\” -DLOCALEDIR=\”/usr/share/locale\” -DSYSCONFDIR=\”/etc\” -I../libpurple -I../../libpurple/ -I.. -I../.. -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -Wall -DPURPLE_DISABLE_DEPRECATED -DPIDGIN_DISABLE_DEPRECATED -DFINCH_DISABLE_DEPRECATED -DGNT_DISABLE_DEPRECATED -Waggregate-return -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Werror-implicit-function-declaration -Wextra -Wno-sign-compare -Wno-unused-parameter -Wformat-security -Werror=format-security -Winit-self -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes -Wpointer-arith -Wundef -Wp,-D_FORTIFY_SOURCE=2 -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_REENTRANT -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_REENTRANT -I/usr/include/startup-notification-1.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -g -g -O2 -g -O2 -c ../../pidgin/gtkimhtml.c
    ../../pidgin/gtkimhtml.c:3829: error: expected declaration specifiers or ‘…’ before ‘GtkIMHtmlImageSave’
    ../../pidgin/gtkimhtml.c: In function ‘gtk_imhtml_custom_smiley_save’:
    ../../pidgin/gtkimhtml.c:3831: error: ‘save’ undeclared (first use in this function)
    ../../pidgin/gtkimhtml.c:3831: error: (Each undeclared identifier is reported only once
    ../../pidgin/gtkimhtml.c:3831: error: for each function it appears in.)
    ../../pidgin/gtkimhtml.c: In function ‘gtk_imhtml_image_clicked’:
    ../../pidgin/gtkimhtml.c:3872: error: ‘save’ undeclared (first use in this function)
    make[4]: *** [gtkimhtml.o] Error 1
    make[4]: Leaving directory `/build/buildd/pidgin-2.5.7/build/pidgin’
    make[3]: *** [all-recursive] Error 1
    make[3]: Leaving directory `/build/buildd/pidgin-2.5.7/build/pidgin’
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/build/buildd/pidgin-2.5.7/build’
    make[1]: *** [all] Error 2
    make[1]: Leaving directory `/build/buildd/pidgin-2.5.7/build’
    make: *** [debian/stamp-makefile-build] Error 2
    dpkg-buildpackage: failure: debian/rules build gave error exit status 2
    ******************************************************************************

    Spero possa essere d’aiuto in qualche modo, fammi sapere (anche via mail)
    Grazie ciao ^^

  12. @echelon89: certo, la patch è per il ramo di sviluppo 2.6.0.
    Però solo la versione 0.7 della mia patch utilizza alcuni structs nuovi, mentre la v0.6 potrebbe funzionare anche sul ramo 2.5.*.

    Prova a vedere se funziona backportata anche su quel ramo e fammi sapere :-) (non l’ho testato).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

:o) :-D :-( ;-) :-P =-O 8-) :-/ O:-) :-! >:o C:-) :-(|) O-) :@ :-[ (B) (^) (P) (@) (O) (D) :-S ;-( (C) (&) :-$ (E) (~) :-* (I) (L) (8) (T) (G) (F) (*) (N) (Y) (U) (W)