EMpathy: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
(resolvendo bug 655270)
Sem resumo de edição
 
(5 revisões intermediárias por um outro usuário não estão sendo mostradas)
Linha 96: Linha 96:
*/libempathy : Se encontram os códigos mais "baixo nível". O código que "faz a coisa funcionar" propiamente dito.
*/libempathy : Se encontram os códigos mais "baixo nível". O código que "faz a coisa funcionar" propiamente dito.


===== Arquivos/Funcões Importantes (na caça ao [https://bugzilla.gnome.org/show_bug.cgi?id=645522 bug])  =====
====== main()  ======


====== empathy / main()  ======
local: /src/empathy.c (linha: 704)
 
 
===== Arquivos/Funcões Importantes (na caça ao [https://bugzilla.gnome.org/show_bug.cgi?id=645522 bug #645522])  =====


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


====== empathy-contact-selector  ======
====== empathy-contact-selector  ======
Linha 114: Linha 116:
descrição: Janela principal do EMpathy
descrição: Janela principal do EMpathy


======  ======
 


[[Category:Lab_Macambira]]
[[Category:Lab_Macambira]]


== Resolvendo o Bug #[https://bugzilla.gnome.org/show_bug.cgi?id=655270 655270] ==
== Resolvendo o Bug #[https://bugzilla.gnome.org/show_bug.cgi?id=655270 655270] ==


Solucao esperada:
<pre>
* o mesmo callback usado ao clicar no 'X' deve ser usado no quit.
- trata-se da primeira mensagem CRITICAL. Portanto, fiz:
 
 
 
Resolvendo esse bug:
* trata-se da primeira mensagem CRITICAL. Portanto, fiz:


       diff --git a/src/empathy.c b/src/empathy.c
       diff --git a/src/empathy.c b/src/empathy.c
Linha 142: Linha 138:
         notify_uninit ();
         notify_uninit ();


* agora o bug da um coredump q posso usar no ddd
Mais comentarios:
   * ddd evince core
 
   * (up up up...) chega-se em empathy_app_finalize, linha
- 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
   gtk_widget_destroy(self->window), em empathy.c:175


* isso ainda nao resolveu muita coisa; apenas confirmou a solucao esperada.
- 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.


* vamos entender o que acontece com contrl-F e o [X] ao lado da caixa de texto
   - Callback: em empathy-main-window.c:1525
   * sera que usando view->find tambem da o mesmo pau? sim!
    - main_window_edit_search_contacts_cb (GtkCheckMenuItem  *item,
  * menu item "Find in Contact List"
    - conectado em empathy_main_window_init por empathy_builder_connect,  
  * 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.
  Acho que isto e' do glade ou de outro GUI builder.
  * Para efeitos do codigo, estamos trabalhando com 'edit_search_contacts'
  * a UI chamou isto de um objeto GtkAction.
      * Bate com o gnome2 guide? Nao! parece q e' algo mais baixo nivel que glade.
      * alias, o empathy nao parece ser uma gnome app.


  * Callback: em empathy-main-window.c:1525
    - empathy-main-window.c:2226
    * 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,.........
        - empathy_builder_connect (gui, window,.........
      "edit_search_contacts", "activate", main_window_edit_search_contacts_cb,
      "edit_search_contacts", "activate", main_window_edit_search_contacts_cb,


           * gui e' um GtkBuilder * (glade?)
           - gui e' um GtkBuilder * (glade?)
           * window e' um EmpathyMainWindow (filho de GtkWindow)
           - 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
</pre>

Edição atual tal como às 15h43min de 25 de julho de 2011

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