Associare un'icona ad un plugin

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Associare un'icona ad un plugin

Michela Coletta
Buongiorno!
Non riesco ad associrare l'icona al plugin.
Quando su Qgis seleziono dal menu dei plugins quello che sto creando, non mi esce alcuna icona avendo opportunamente indicato nel file dell'esecuzione del plugin il percorso dell'icona.
Vi riporto di seguito il frammento di codice:

 def initGui(self):
  # create action
  self.action = QAction(QIcon(':/plugins/Max_covering/icona.png'), 'Max Covering', self.iface.mainWindow())
  self.action.setWhatsThis('Configuration for Max Covering plugin')
  QObject.connect(self.action, SIGNAL('triggered()'), self.run)
  # Create about button
  self.helpaction = QAction(QIcon(":/iconhelp.png"), "About", self.iface.mainWindow())
  self.helpaction.setWhatsThis("Help for Max Covering")
  QObject.connect(self.helpaction, SIGNAL("activated()"), self.helprun)
  # add toolbar button and menu item
  self.iface.addToolBarIcon(self.action)
  self.iface.addPluginToMenu('&Max Covering', self.action)
  self.iface.addPluginToMenu("&Max Covering", self.helpaction)

Come potete notare ho provato in 2 modi diversi, in self.action specificando tutto il precorso e in self.helpaction ho specificato sl il nome dell'icona purtroppo non mi funziona in nessuno dei 2 modi, eppure nella cartella del plugin ho i 2 file .png spceificati nel codice.
Qualcuno può aiutarmiiii???

Grazie in anticipo

--
Michela

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011
Reply | Threaded
Open this post in threaded view
|

Re: Associare un'icona ad un plugin

mando
prova con questo per non diventare matta con i path e simili:

import os

....
......

def initGui(self):
icon_plugin = ('%s%s') % (filepath, os.path.join(os.sep, 'icons','miaIcona.png'))
self.actionPlugin = QAction(QIcon(icon_plugin), "Mio plugin", self.iface.mainWindow())
self.actionPlugin.setWhatsThis("Il mio plugin")
QObject.connect(self.actionPlugin, SIGNAL("activated()"), self.runPlugin)

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011
Reply | Threaded
Open this post in threaded view
|

Re: Associare un'icona ad un plugin

Giuseppe Sucameli-2
In reply to this post by Michela Coletta
Salve Michela,

2011/5/2 Michela Coletta <[hidden email]>
  self.action = QAction(QIcon(':/plugins/Max_covering/icona.png'), 'Max Covering', self.iface.mainWindow())

i due punti (:) all'inizio del percorso indicano che è una risorsa, non un semplice
percorso ad un file.

Puoi eliminare i due punti ed inserire il percorso completo come ha già scritto Luca,
oppure creare un file di risorse resources.qrc ed aggiungerci le icone che vuoi caricare.

Ti basterà copiare il file resources.qrc da un'altro plugin e modificarlo con QtCreator
che offre un'interfaccia grafica per la modifica di tali file.

Una volta creato il file .qrc generi il relativo file .py delle risorse in questo modo
pyrcc4 -o resources_rc.py resources.qrc

quindi ti basterà includere nel tuo codice python l'istruzione
import resources_rc
che caricherà il modulo con le risorse.

Ti chiederai perché complicarsi la vita in questo modo:
creare il file di risorse, compilarlo, importarlo nel codice.

1. Immagina di avere un'icona che usi nei posti più disparati.
Se avessi il percorso all'icona hardcoded nel codice e vorresti cambiarla dovresti
modificare tutti i file che contengono il percorso all'icona.
Avendo un file di risorse ti basterà cambiare quello senza dover modificare il codice
del tuo programma.

2. Altro caso, immagina di avere più file di risorse con temi di icone differenti.
Potresti passare da uno all'altro semplicemente modificando l'istruzione
import resources_rc
che carica il tuo file di risorse nel progetto, senza dover modificare tutti i percorsi
che hai nel tuo codice.

Capisco che inserire il path nel codice è più semplice, ma una volta che hai preso
la mano con i file di risorse vedrai che in fin dei conti non sono così complicati da
utilizzare.

Grazie in anticipo

--
Michela

Saluti.

--
Giuseppe Sucameli


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011