EMpathy

De Pontão Nós Digitais

O Empathy e' um aplicativo de chat com diversos protocolos e suporte a audio e video. No Unity do Ubuntu 11.04, este aplicativo faz parte do desktop, podendo ser acessado atravez do icone indicador ou applet no canto superior direito do sistema (icone no formato de uma nuvem de chat).

Empathy Home Page

Ver tambem a pagina wiki VideoConferência

Compilacao Ubuntu 11.04

 Bibliotecas necessárias 

gnome-common >= 2.3.0
gettext
libglib2.0-dev
gtk-doc-tools
libxml2-dev
libtelepathy-glib-dev
libmissioncontrol-client-dev
libtelepathy-farsight-dev
libx11-dev
libgtk2.0-dev
libcanberra-gtk-dev
libgstreamer-plugins-base0.10-dev
libebook1.2-dev
libnotify-dev
libunique-dev
libgnome-keyring-dev

Métodos para obtenção das dependencias

primeiro de tudo:

$ sudo aptitude build-dep empathy

Esse comando instalará várias dependencias, mas nem sempre todas.

então tente para as que faltam:

@ sudo aptitude install <nome da dep>
ou
$ sudo apt-get install <nome da dep>

Eu particularmente prefiro o aptitude ao apt-get

caso ainda faltem dependencias, só pegando na internet e instalando manualmente =/


Videos de Compilação

Video 1 - Primeira tentativa

Video 2 - Instalando Dependências

Video 3 - EMpathy Compilado

Dependencias Adicionais Necessarias via Git

Vala / valac teve que ser instalado do git:

 git clone git://git.gnome.org/vala

Folks teve que ser instalado do git:

 git clone git://git.gnome.org/folks

Libnotify

 git clone git://git.gnome.org/libnotify

Telepathy / telepathy-glib / telepathy-logger

 git clone git://anongit.freedesktop.org/telepathy/telepathy-glib
git clone git://anongit.freedesktop.org/telepathy/telepathy-logger


Gnome-keyring / gcr-3 / p11-kit-1

 git clone git://anongit.freedesktop.org/p11-glue/p11-kit
git clone git://git.gnome.org/gnome-keyring

Erros de Compilacao

Existe um bug no Ubuntu 11.04 natty. Quando rodamos make, o seguinte erro aparece:

 /bin/grep: /lib/x86_64-linux-gnu/libgcrypt.la: No such file or directory
/bin/sed: can't read /lib/x86_64-linux-gnu/libgcrypt.la: No such file or directory
libtool: link: `/lib/x86_64-linux-gnu/libgcrypt.la' is not a valid libtool archive

Para resolver, veja na pagina do bug do Ubuntu: https://bugs.launchpad.net/ubuntu/+source/libgcrypt11/+bug/751142

O que eu terminei fazendo (Usuário:V1z) foi um link simbolico, ja que o pacote libgcrypt ta bugado:

 cd /lib/x86_64-linux-gnu
ln -s /usr/lib/x86_64-linux-gnu/libgcrypt.la

Estudos

O que é Vala

Vala é uma nova linguagem de programacão que tem como objetivo trazer características de uma linguagem de programacão moderna para os desenvolvedores GNOME sem usar uma ABI diferente comparado as aplicacões e bibliotecas escritas em C.

Valac, o compilador Vala, é um compilador "self-hosting" que traduz código Vala para código C e cabecalhos. Valac usa o sistema de tipo do GObject para criar classes e insterfaces declaradas no código-fonte Vala.

A linguagem Vala é parecida com C#, apenas com alguns ajustes para se encaixar melhor no C/GObject.

Valac produz código C e arquivos de cabecalho a partir de código Vala como se você tivesse escrito sua biblioteca ou aplicacão diretamente em C.

Uma boa IDE para desenvolver em Vala é o Mono-Develop

Source-Code

O código está dividido em pastas:

  • /src : Se encontram os principais arquivos de código.
  • /libempathy-gtk : Se encontram os códigos responsáveis pela UI.
  • /libempathy : Se encontram os códigos mais "baixo nível". O código que "faz a coisa funcionar" propiamente dito.
main()

local: /src/empathy.c (linha: 704)


Arquivos/Funcões Importantes (na caça ao bug #645522)
empathy-contact-selector

local: /libempathy-gtk/empathy-contact-selector.c

descrição: Responsável pela seleção de contatos da lista. (Uma forma de reproduzir o bug é selecionando qualquer contato quando a "view offline contacts" estiver ativo.)

empathy-main-window

local: /src/empathy-main-window.c

descrição: Janela principal do EMpathy

Resolvendo o Bug #655270

- trata-se da primeira mensagem CRITICAL. Portanto, fiz:

      diff --git a/src/empathy.c b/src/empathy.c
      index 6e2b165..8ca94ac 100644
      --- a/src/empathy.c
      +++ b/src/empathy.c
      @@ -725,6 +725,7 @@ main (int argc, char *argv[])
             "flags", G_APPLICATION_HANDLES_COMMAND_LINE,
             NULL);
       
      +  g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
         retval = g_application_run (G_APPLICATION (app), argc, argv);
       
         notify_uninit ();

Mais comentarios:

- agora o bug da um coredump q posso usar no ddd
  - ddd empathy core
  - (up up up...) chega-se em empathy_app_finalize, linha
  gtk_widget_destroy(self->window), em empathy.c:175

- isso ainda nao resolveu muita coisa; apenas confirmou a solucao esperada.
  TODO: ver as funcoes de self->window que sao rodadas no destroy.

- vamos entender o que acontece com contrl-F e o [X] ao lado da caixa de texto
  - sera que usando view->find tambem da o mesmo pau? sim!
  - menu item "Find in Contact List"
  - busca no codigo fonte por essa string nao retorna! procurei '\<edit\>'
  - na verdade essa string do menu item esta' em src/empathy-main-window.ui.
    - Isto parece ser do glade, mas e' de GtkUIManager, o qual e' uma versao
      simplificada do esquema xml do glade para apenas menus e toolbars:
        http://live.gnome.org/GnomeLove/UIManagerTutorial
  - Para efeitos do codigo, estamos trabalhando com 'edit_search_contacts'
  - a UI chamou isto de um objeto GtkAction. 
      - GtkAction nao aparece no gnome2 guide.
      - Ver o esquema do GtkUIManager.
      - alias, o empathy nao parece ser uma 100% gnome app, apesar de estar no
        core.

  - Callback: em empathy-main-window.c:1525 
    - main_window_edit_search_contacts_cb (GtkCheckMenuItem  *item,
    - conectado em empathy_main_window_init por empathy_builder_connect, 

     - empathy-main-window.c:2226

	        - empathy_builder_connect (gui, window,.........
			      "edit_search_contacts", "activate", main_window_edit_search_contacts_cb,

          - gui e' um GtkBuilder * (glade?)
          - window e' um EmpathyMainWindow (filho de GtkWindow)

    -  main_window_edit_search_contacts_cb so' chama:
      - empathy_individual_view_start_search(priv->individual_view)
        - individual_view e' um objeto filho de GtkTreeView
          - estou pensando que isto representa os contatos.
        - esta funcao faz a caixa de busca aparecer
          - gtk_widget_show(GTK_WIDGET(priv->search_widget));

          - ** e' exatamente neste estado que nao se pode dar um quit no aplicativo