Pagina 1 di 1

Risoluzione Bug #1413283

MessaggioInviato: sabato 20 giugno 2015, 17:11
da Zalone93
Buonasera a tutti, vi scrivo per chiedervi lumi sulla risoluzione di questo bug (#1413283).
Ho scaricato i sorgenti di nautilus per poterci lavorare sopra e purtroppo a questo punto mi sono bloccato.
Nella cartella dei sorgenti, vi sono tantissimi file e a questo proposito volevo chiedervi se qualcuno di voi sa qual'è il file che gestisce la scheda "Apri con" e la scheda "Proprietà" quando si clicca con il tasto destro del mouse su un file.
Avevo pensato come soluzione di copiare la parte di codice che permette di settare come default un programma dalla scheda "Proprietà" a quella "Apri con" ma non so quali sono i sorgenti da analizzare e su cui lavorare.... Spero possiate aiutarmi e vi ringrazio. Vi auguro inoltre buon fine settimana.

Re: Risoluzione Bug #1413283

MessaggioInviato: sabato 20 giugno 2015, 20:02
da rpadovani
Beh, capire dov'è un bug e perché capita fa parte proprio del lavoro di correzione di bug, scrivere il codice è il meno :-)

Comunque, io non ho mai lavorato su Nautilus quindi non ho idea di come sia organizzato.
Inizieri facendo così:
- una volta scaricato il codice, do un'occhiata alla struttura generale delle directory, per capire come funziona il programma nel suo complesso. Ovviamente il codice è nella directory src/
- fatto ciò, cercherei di capire quali file potrebbero interessarmi. In particolare vediamo che c'è un file chiamato nautilus-view-context-menus.xml, che contiene le voci del menù contestuale.
- In particolare c'è questa voce:

Codice: Seleziona tutto
     <item>
        <attribute name="label" translatable="yes">Open With Other _Application</attribute>
        <attribute name="action">view.open-with-other-application</attribute>
        <attribute name="hidden-when">action-disabled</attribute>
      </item>


Ora si tratta di capire cos'è l'azione view.open-with-other-application.

Dove viene usato il file view.open-with-other-application? Verifichiamo con grep: grep -ir nautilus-view-context-menus.xml
Codice: Seleziona tutto
nautilus-view.c:   builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-view-context-menus.xml");


Ecco qua! Vediamo cosa fa nautilus-view.c della azione open-with-other-application:
La assegna a una funzione:
{ "open-with-other-application", action_open_with_other_application } (linea 5558).
Cerchiamo quindi questa funzione, sempre nello stesso file, linea 1080. Vediamo che richiama un'altra funzione, open_with_other_program, qualche linea più sopra, che a sua volta richiama choose_program, dichiarata nella linea 1032.

Vediamo che questa funzione chiama gtk_app_chooser_dialog_new, che come riportato nella documentazione, non ha "Set as default" (https://developer.gnome.org/gtk3/unstab ... ialog.html)

Procedendo allo stesso modo guardi come funziona l'apri con nella scheda delle proprietà (hint, utilizza un file scritto apposta, nautilus-mime-application-chooser.c)

Spero di esserti stato d'aiuto!

Re: Risoluzione Bug #1413283

MessaggioInviato: domenica 21 giugno 2015, 11:41
da Zalone93
Dove si trova questo file?
nautilus-view-context-menus.xml
in che cartella? non sono riuscito a trovarlo :muro:
Comunque per quanto riguarda il meccanismo sei stato molto chiaro! e ti ringrazio :)

Re: Risoluzione Bug #1413283

MessaggioInviato: domenica 21 giugno 2015, 11:47
da Zalone93
I miei sorgenti sono diversi... da quel che ho capito, tu utilizzi i sorgenti di sistema, io invece ho scaricato con
Codice: Seleziona tutto
bzr branch lp:ubuntu/trusty-updates/nautilus
la versione trusty per la 14.04... Infatti alla riga 5558 io ho l'inizializzazione di un ciclo for...

Re: Risoluzione Bug #1413283

MessaggioInviato: domenica 21 giugno 2015, 15:07
da rpadovani
Uh, pensavo avessi scaricato direttamente il codice sorgente:
Codice: Seleziona tutto
bzr branch lp:nautilus


I bug si fixano nel repo principale, poi eventualmente le patch vengono backportate nei vari sistemi attraverso SRU https://wiki.ubuntu.com/StableReleaseUpdates

Re: Risoluzione Bug #1413283

MessaggioInviato: domenica 21 giugno 2015, 15:49
da Zalone93
I bug si fixano nel repo principale, poi eventualmente le patch vengono backportate nei vari sistemi attraverso SRU https://wiki.ubuntu.com/StableReleaseUpdates


Inesperienza pura, :D chiedo scusa, questa cosa non la sapevo, allora riscarico il sorgente principale e lavorerò li ^^
PS. in futuro potrei chiedere aiuto sulla fase di testing e pacchettizzazione del codice corretto... Quindi sarebbe possibile non chiudere questa discussione per non aprirne un'altra successivamente?
Grazie mille :birra:

Re: Risoluzione Bug #1413283

MessaggioInviato: domenica 21 giugno 2015, 16:19
da rpadovani
Se vuoi c'è anche il canale IRC del gruppo sviluppo, #ubuntu-it-dev su Freenode, potresti ottenere supporto anche lì ;-)