[Gfoss] Porting VTerrain plugin to QGis 2.01 ...

Salve,

sto effettuando il porting di VTerrain plugin alla versione 2.01 di QGis.

Ho aggiunto con successo il file Metadata.txt e il plugin è ora visibile ed eseguibile, ma al run viene ritornato il messaggio di errore:

File “.qgis2/python/plugins\VTerrain\VTerrain.py”, line 180, in run
if name.endsWith(“.bt”):
AttributeError: ‘unicode’ object has no attribute ‘endsWith’

Qualche suggerimento … ?

Saluti e grazie

Roberto

probabilmente prima name era una QString ora e’ una semplice str di python => devi trovare la funzione equivalente in python per il controllo che vuoi eseguire (if name.endsWith(“.bt”):slight_smile:

purtroppo eliminare QString e soprattutto QStringList vuol dire spesso trovare le funzioni equivalenti in python con conseguenti cambi di logica => dover ritestare il plugin!

QString e str sono due classi differenti… alla lunga molto simili e non avrai difficolta’ a trovare l’equivalenti… stessa cosa per QStringLIst, a meno di non aver usato pesantemente i metodi che ti pemette QStrignList

In genre non e’ mai consigliabile legarsi mani e piedi ai tipi di dati di librerie esterne… specie quando queste sono librerie legate alla visualizzazione

python e’ gia’ potente di per se… le Qt le lascerei giusto quando serve interagire con Qt o con QGIS

ciao ginetto

···

2013/9/24 Geo DrinX <geodrinx@gmail.com>

Salve,

sto effettuando il porting di VTerrain plugin alla versione 2.01 di QGis.

Ho aggiunto con successo il file Metadata.txt e il plugin è ora visibile ed eseguibile, ma al run viene ritornato il messaggio di errore:

File “.qgis2/python/plugins\VTerrain\VTerrain.py”, line 180, in run
if name.endsWith(“.bt”):
AttributeError: ‘unicode’ object has no attribute ‘endsWith’

Qualche suggerimento … ?

Saluti e grazie

Roberto


Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666 iscritti al 22.7.2013

probabilmente prima name era una QString ora e' una semplice str di python

=> devi trovare la funzione equivalente in python per il controllo che vuoi
eseguire (if name.endsWith(".bt"):slight_smile:

Il codice sorgente è questo:

   name = layer.source();
   if name.endsWith(".bt"):

...eccetera

come comportarsi, in questo caso ? Mah.

Roberto

Il giorno Tue, 24 Sep 2013 12:50:38 +0200
Geo DrinX <geodrinx@gmail.com> ha scritto:

......
Il codice sorgente è questo:

   name = layer.source();
   if name.endsWith(".bt"):

...eccetera

come comportarsi, in questo caso ? Mah.

provato: if '.bt' in name: ?

sarebbe meglio garantirsi che siano proprio gli ultimi caratteri; in
perl ci sono degli appositi operatori, in python purtroppo non so, ma
penso che una rapida ricerca in google possa risolvere :slight_smile:

Roberto

ciao,
giuliano

non capisco la domanda… name e’ una str di python… prima invece era una QString, perche’ era quel che restituisce layer.source(), ma con le SIP2.0 c’e’ una mappatura diretta tra QStriung e str (pero’ non sono la stessa classe e dunque non hanno gli stessi metodi)

che so, prova con una regexp (piu’ sicura) o come ha suggerito giuliano

ciao ginetto

···

2013/9/24 Geo DrinX <geodrinx@gmail.com>

probabilmente prima name era una QString ora e’ una semplice str di python => devi trovare la funzione equivalente in python per il controllo che vuoi eseguire (if name.endsWith(“.bt”):slight_smile:

Il codice sorgente è questo:

name = layer.source();
if name.endsWith(“.bt”):

…eccetera

come comportarsi, in questo caso ? Mah.

Roberto

Thank you all. I solved !

I inserted a code like this:

if QGis.QGIS_VERSION_INT < 10900:
if name.endsWith(“.bt”):
fileTemp.write (’ <Surface_Type>0</Surface_Type>\n’ )
else:
if (name[-3:] == (“.bt”)):
fileTemp.write (’ <Surface_Type>0</Surface_Type>\n’ )

And… it works in both versions.

Now I had other problem: I have a new 1.0 version of VTerrain plugin and I want to upload it in the repository, but… my “edit” button is hidden…

Qualcuno puo’ aiutarmi (Someone can help me) ?

Roberto

···

Il giorno 24 settembre 2013 14:37, giulianc51 <giulianc51@gmail.com> ha scritto:

Il giorno Tue, 24 Sep 2013 12:50:38 +0200
Geo DrinX <geodrinx@gmail.com> ha scritto:

Il codice sorgente è questo:

name = layer.source();
if name.endsWith(“.bt”):

…eccetera

come comportarsi, in questo caso ? Mah.

provato: if ‘.bt’ in name: ?

sarebbe meglio garantirsi che siano proprio gli ultimi caratteri; in
perl ci sono degli appositi operatori, in python purtroppo non so, ma
penso che una rapida ricerca in google possa risolvere :slight_smile:

Roberto

ciao,
giuliano


Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666 iscritti al 22.7.2013