Jump to content
Nokioteca Forum

Winfile Porting...


memoryn70
 Share

Recommended Posts

Ciao a tutti! Ho alcuni quesiti riguardo a un mondo per me nuovo.

Allora intanto ho provato ad eseguire winfile su python 2 e dal punto di vista di esecuzione nessun problema. Bene. Ovviamente grafica distorta ecc...

Grafica: mi dareste consigli su come far sembrare i "10 pixel di contorno su n70" su uno schermo 5 volte più grande? Per la grafica cosa mi consigliate? Fare temi per ogni risoluzione? Vabbè queste saranno le ultime cose.

Librerie: python 2 supporta i pyd dell' 1.4? Dove vanno messi i py delle lib? Cioè di default intendo senza usare sys.path.

Tasti: ok dovrò adattare tutto al touch, ma mantenendo la tastiera (e cosi supporto 2nd / 3rd). Ma come mai con il tastierino virtuale lo scroll è velocissimo? Praticamente non riesco a selezionare niente!!

Display: secondo voi dove è meglio recuperare la grandezza? Io ho pensato semplicemente a s.canvas.size ma non mi ispira molto. Forse meglio sysinfo?

Touch: librerie e codice già pronto?

Accelerometro - cambio orientamento: il supporto al landscape winfile lo ha già pure su 2nd ma li si usa un tasto. Qui come potrei fare? Come sapere arbitrariamente lo stato di rotazione del cell?

Molte domande, troppi dubbi ancora :lmaosmiley::unsure:

Speriamo in qualcuno di voi, anche non pythoniano!!

Grazie mille

Link to comment
Condividi su altri siti

Allora per trovare l'orientamento del cellulare ho trovato questo metodo...ben descritto dalla nokia :)

import sensor
side = sensor.OrientationData()
def reportOrientation():
global side
print sensor.get_logicalname(sensor.DeviceOrientation, side.device_orientation)
side.set_callback(reportOrientation)
side.start_listening()

lo dovrò ovviamente ampliare e mettere nella classe UI

Link to comment
Condividi su altri siti

...

Grafica: mi dareste consigli su come far sembrare i "10 pixel di contorno su n70" su uno schermo 5 volte più grande? Per la grafica cosa mi consigliate? Fare temi per ogni risoluzione? Vabbè queste saranno le ultime cose.

...

Ti sconsiglio vivamente di creare temi per ogni risoluzione... dai 3rd edition in su Symbian supporta il formato SVG e il suo contenitore MIF (ben supportato anche in python)

...

Librerie: python 2 supporta i pyd dell' 1.4? Dove vanno messi i py delle lib? Cioè di default intendo senza usare sys.path.

...

ovvio che i .pyd per la 1.4 non andranno per la 2.0 in quanto andranno ricompilati per il nuovo runtime; i .py o i .pyc vanno inclusi in un file che verrà chiamato lib.zip il quale si troverà nella cartella private della tua applicazione, mentre i pyd vanno in \sys\bin in un drive a scelta durante l'installazione

...

Tasti: ok dovrò adattare tutto al touch, ma mantenendo la tastiera (e cosi supporto 2nd / 3rd). Ma come mai con il tastierino virtuale lo scroll è velocissimo? Praticamente non riesco a selezionare niente!!

...

mai usato il tastierino virtuale di python

...

Display: secondo voi dove è meglio recuperare la grandezza? Io ho pensato semplicemente a s.canvas.size ma non mi ispira molto. Forse meglio sysinfo?

...

appuifw.app.layout(appuifw.EScreen)[0]

ti restituisce l'attuale risoluzione; quindi se passi da portrait (360x640) a landscape (640x360) ti darà come valore una tuple così (640, 360)

...

Touch: librerie e codice già pronto?

...

con Python 2.0 sì

...

Accelerometro - cambio orientamento: il supporto al landscape winfile lo ha già pure su 2nd ma li si usa un tasto. Qui come potrei fare? Come sapere arbitrariamente lo stato di rotazione del cell?

...

ti posto un pezzo di codice che uso (per il canvas) per la rotazione dello schermo, forse più conveniente che usare l'accelerometro...

def handle_redraw(self, rect = None):
 if self.photo.size[0] == self.canvas.size[0]:
# Blit only if display not rotated
 else: 
# Display rotated

self.photo è un'immagine e self.canvas è, ovviamente, il canvas di appuifw richiamato così

def isTouch():
 return appuifw.touch_enabled()

if isTouch():
 self.canvas = Canvas(event_callback = self.event, redraw_callback = self.handle_redraw)
else:
 self.canvas = Canvas(event_callback = None, redraw_callback = self.handle_redraw)

Modificato da madhacker
Link to comment
Condividi su altri siti

waaaa sei un mago!!! :)

hehehe grazie mille...

Beh dovrò usare l'accelerometro per lo switch...oppure forse dai il tuo metodo non è male ma devo ben capire dove inserirlo (credo lo metterò dove avviene il draw di tutto, o meglio l'aggiornamento del canvas).

Ecco a proposito dei moduli c++...potresti mica ricompilare driveinfo, fileutils, msys :)

Dopo di questi non dovrei avere altri problemoni, certo è tutto da regolare hehe

Link to comment
Condividi su altri siti

io ti sconsiglio personalmente di usare l'accelerometro per la rotazione del display; sfrutti la funzione associata alla creazione del canvas

per la msys è già bella e pronta da un bel po'

http://localhostr.com/files/467402/msys.sis

appena posso provo a farti le altre

Grazie! Se proprio non riesci te...proverò io! Ma basta l'sdk 5th? E poi immagino vada anche su 3rd...un po come 2nd e 1st?

Link to comment
Condividi su altri siti

Grazie ti faccio sapere di sicuro! Mi sapresti dire al volo una libreria per accendere - spegnere il bt su 3rd5th? Io ne ho una mia x 2nd ma non credo si possa compilare...

Comunque cerco anche io!! Mi hai già aiutato molto

Ps: ho deciso che farò due versioni separate. tenere tutto in un codice solo diventa impossibile....O perlomeno spezzetterò il codice in più moduli in modo da facilitare...boh hehe

Link to comment
Condividi su altri siti

Dimenticavo:

per gli svg? non so bene come si trattano...ma credo che siano come immagini che si adattano a ogni risoluzione giusto? Cioè se disegno un cerchio di raggio 5 unità (?) su un display piccolo lo vedo in un modo e in quello grande lo vedo uguale? Ma l'immagine, facendo il blit() si adatta automaticamente? Scusate ma sono proprio nuovo su svg :wub: Mif è il contenitore tipo mbm per i bmp ok...cmq preferisco fare tutti svg separati (almeno per ora, si avvicina al metodo 2nd)

Link to comment
Condividi su altri siti

  • 2 settimane dopo...

Prima di incominciare seriamente il porting, devo ancora adattare leggermente il codice. In particolare devo rendere ancora alcune cose molto generalizzate, creando classi/funzioni per gestire tutte le cose che sono dipendenti dalla grandezza dello schermo per esempio.

Faccio un esempio: in alcune funzioni di disegno, viene disegnata la barra laterale. In ogni funzione ho fatto praticamente un copia incolla delle stesse istruzioni, ma ciò oltre che a essere poco efficiente, provoca anche un grosso problema: se cambio qualcosa da una parte devo cambiare dappertutto e magari inavvertitamente aggiungo un bug che da una parte non c'è. Molte cose le avevo già sistemate, ma altre ancora no.

Fatte queste cose direi che rilascio una beta ancora 2nd ed. Poi una versione stabile e poi procedo con il port (credo tra un mesetto forse posterò già qualcosa)

Link to comment
Condividi su altri siti

  • 1 mese dopo...

ancora precedenza ai 2nd?? :P

No! Lavoro in parallelo :)

Adesso mi sa che mi conviene dividere i sorgenti nelle parti in cui ci sono troppe differenze per facilitare il tutto.

Comunque tutto procede benone, solo alcune domande:

1. Come posso implementare lo scrolling delle liste, menu ecc..? Dovrei scrivere io da zero qualcosa? Intendo anche il kinetic scroll!

2. Dove vanno messe i moduli .py© (non pyd) per programmi da provare in shell??

EDIT:: ah! scusate! infatti ho guardato sys.path e sembra bisogna sempre definire una directory...poi vedrò in app standalone!

EDIT2: ah! ora pure i moduli py devono essere case sensitive ;) E devono pure avere la dichiarazione della codifica se hanno caratteri speciali...

Modificato da memoryn70
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy