Porting VTerrain plugin to QGis 2.01 ...

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Porting VTerrain plugin to QGis 2.01 ...

geodrinx
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

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Porting VTerrain plugin to QGis 2.01 ...

Luigi Pirelli-2
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"):)

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 <[hidden email]>
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

_______________________________________________
[hidden email]
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


_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Porting VTerrain plugin to QGis 2.01 ...

geodrinx




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"):)

Il codice sorgente è questo:

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

...eccetera
 
come comportarsi, in questo caso ?  Mah.


Roberto

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Porting VTerrain plugin to QGis 2.01 ...

Giuliano Curti
Il giorno Tue, 24 Sep 2013 12:50:38 +0200
Geo DrinX <[hidden email]> 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 :-)


> Roberto

ciao,
giuliano

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Porting VTerrain plugin to QGis 2.01 ...

Luigi Pirelli-2
In reply to this post by geodrinx
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 <[hidden email]>




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"):)

Il codice sorgente è questo:

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

...eccetera
 
come comportarsi, in questo caso ?  Mah.


Roberto


_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Porting VTerrain plugin to QGis 2.01 ...

geodrinx
In reply to this post by Giuliano Curti
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 <[hidden email]> ha scritto:
Il giorno Tue, 24 Sep 2013 12:50:38 +0200
Geo DrinX <[hidden email]> 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 :-)


> Roberto

ciao,
giuliano

_______________________________________________
[hidden email]
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


_______________________________________________
[hidden email]
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