Carnet d'adresse

Carnet d'adresse Commit Details

Date:2012-01-01 21:16:03 (1 year 5 months ago)
Author:Papymouge
Branch:
Commit:fd9a261ff158340dd34fc4da823ac9b7cf0e1dda
Parents: 512b98a78e19a69844d19f4a096cdaef966cff03
Message:Cada.lua renommer en index.lua

Ajout d'un fichier README
utilisation du require à la place du dofile

File differences

README
1******************************************
2* CARNET D'ADRESSES *
3* *
4* Autor: Papymouge *
5* *
6* Codé en microLua: *
7* Forum microLua : *
8* http://microlua.xooit.fr *
9* Pages du projet: *
10* http://microlua.xooit.fr/t656- *
11* Application-bureautique-Carnet *
12* -d-adresse.htm *
13* http://papymouge.indefero.net/p/ *
14* cada/ *
15******************************************
16
17Gestionnaire d'adresses.
18
19Petit carnet d'adresses électronique.
20
21Tout se controle avec le stylet.
22
cada.lua
1dofile("standard.lua")
2dofile("luaWidget.lua")
3dofile("Clavier.lua")
4
5clavier.activeScreen(clav,true)
6
7_VADRESSE = 0.3
8ad = {}
9
10ad.liste = {}
11ad.liste[1] = {"Nom","Prénom","Téléphone"}
12ad.color = {}
13ad.color.blue = Color.new(10,10,31)
14ad.color.noir = Color.new(0,0,0)
15ad.color.jaune = Color.new(31,31,16)
16ad.color.vertc = Color.new(10,29,18)
17
18fenP = {}
19fenP.parent = luaWidget.newWidget(SCREEN_DOWN)
20ad.tt = {"..","AB","CD","EF","GH","IJ","KL","MN","OP","QR","ST","UV","WX","YZ"}
21for i= 1,14 do
22    fenP[i] = luaWidget.newObj(fenP.parent,TBUTTON,2+((i-1)*18),0,18,15,ad.tt[i],_ACENTER)
23end
24luaWidget.set(fenP.parent,fenP[1],"check",true)
25fenP.liste = luaWidget.newObj(fenP.parent,TTABLEVIEW,0,16,256,156,ad.liste)
26fenP.bModif = luaWidget.newObj(fenP.parent,TBUTTON,70,175,60,15,"Modifier",_ACENTER)
27fenP.bNouv = luaWidget.newObj(fenP.parent,TBUTTON,2,175,60,15,"Nouveau",_ACENTER)
28fenP.bQuit = luaWidget.newObj(fenP.parent,TBUTTON,194,175,60,15,"Quitter",_ACENTER)
29
30fenN = {}
31fenN.parent = luaWidget.newWidget(SCREEN_DOWN)
32fenN[1] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,10,130,15)
33fenN[2] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,30,130,15)
34fenN[3] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,50,130,15)
35fenN[4] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,70,130,15)
36fenN[5] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,90,130,15)
37fenN[6] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,110,130,15)
38fenN[7] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,130,40,15)
39fenN[8] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,150,130,15)
40fenN.bOk = luaWidget.newObj(fenN.parent,TBUTTON,100,170,60,15,"OK",_ACENTER)
41fenN.bNo = luaWidget.newObj(fenN.parent,TBUTTON,170,170,60,15,"Annuler",_ACENTER)
42fenN.bSup = luaWidget.newObj(fenN.parent,TBUTTON,10,170,70,15,"Supprimer",_ACENTER)
43fenN[9] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,10,90,15,"Nom :",_ARIGHT)
44fenN[10] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,30,90,15,"Prénom :",_ARIGHT)
45fenN[11] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,50,90,15,"Tel1 :",_ARIGHT)
46fenN[12] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,70,90,15,"Tel2 :",_ARIGHT)
47fenN[13] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,90,90,15,"E-Mail :",_ARIGHT)
48fenN[14] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,110,90,15,"Adresse :",_ARIGHT)
49fenN[15] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,130,90,15,"Code Postal :",_ARIGHT)
50fenN[16] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,150,90,15,"Ville :",_ARIGHT)
51for i = 9,16 do
52    luaWidget.set(fenN.parent,fenN[i],"cText",coul.blanc)
53    luaWidget.set(fenN.parent,fenN[i],"cFond",coul.noir)
54end
55
56fenPop = {}
57fenPop.parent = luaWidget.newWidget(SCREEN_DOWN)
58fenPop.titre = luaWidget.newObj(fenPop.parent,TTEXTBOX,10,80,236,15,"Titre",_ALEFT)
59fenPop.texte = luaWidget.newObj(fenPop.parent,TTEXTBOX,10,95,236,15,"Texte",_ACENTER)
60fenPop.bOk = luaWidget.newObj(fenPop.parent,TBUTTON,60,115,60,15,"Oui",_ACENTER)
61fenPop.bNo = luaWidget.newObj(fenPop.parent,TBUTTON,120,115,60,15,"Non",_ACENTER)
62fenPop.bCa = luaWidget.newObj(fenPop.parent,TBUTTON,180,115,60,15,"Annuler",_ACENTER)
63luaWidget.set(fenPop.parent,fenPop.titre,"cFond",ad.color.blue)
64luaWidget.set(fenPop.parent,fenPop.titre,"cCadre",ad.color.blue)
65luaWidget.set(fenPop.parent,fenPop.texte,"cFond",ad.color.jaune)
66luaWidget.set(fenPop.parent,fenPop.texte,"cCadre",ad.color.jaune)
67
68ad.popUp = {}
69ad.popUp.create = function(titre,texte,bok,bno,bca)
70    local numB = 0
71    local xx = 98
72    ad.pUp = true
73    luaWidget.set(fenPop.parent,fenPop.titre,"text",titre)
74    luaWidget.set(fenPop.parent,fenPop.texte,"text",texte)
75    if(bok ~= nil) then if(bok) then numB = numB +1 end else bok = false end
76    if(bno ~= nil) then if(bno) then numB = numB +1 end else bno = false end
77    if(bca ~= nil) then if(bca) then numB = numB +1 end else bca = false end
78    if(numB == 0) then
79        luaWidget.set(fenPop.parent,fenPop.bNo,"visible",false)
80        luaWidget.set(fenPop.parent,fenPop.bCa,"visible",false)
81        luaWidget.set(fenPop.parent,fenPop.bOk,"x",96)
82    else
83        xx = 128-(numB*32)
84        luaWidget.set(fenPop.parent,fenPop.bOk,"visible",bok)
85        luaWidget.set(fenPop.parent,fenPop.bNo,"visible",bno)
86        luaWidget.set(fenPop.parent,fenPop.bCa,"visible",bca)
87        if(bok) then luaWidget.set(fenPop.parent,fenPop.bOk,"x",xx) xx = xx + 64 end
88        if(bno) then luaWidget.set(fenPop.parent,fenPop.bNo,"x",xx) xx = xx + 64 end
89        if(bca) then luaWidget.set(fenPop.parent,fenPop.bCa,"x",xx) xx = xx + 64 end
90    end
91end
92
93ad.popUp.show = function()
94    screen.drawFillRect(SCREEN_DOWN,9,79,247,132,ad.color.jaune)
95    luaWidget.show(fenPop.parent)
96end
97
98ad.popUp.held = function()
99    local rep = 0
100    luaWidget.held(fenPop.parent)
101    if(luaWidget.get(fenPop.parent,fenPop.bOk,"check"))then
102        luaWidget.set(fenPop.parent,fenPop.bOk,"check",false)
103        rep = 1
104    end
105    if(luaWidget.get(fenPop.parent,fenPop.bNo,"check"))then
106        luaWidget.set(fenPop.parent,fenPop.bNo,"check",false)
107        rep = 2
108    end
109    if(luaWidget.get(fenPop.parent,fenPop.bCa,"check"))then
110        luaWidget.set(fenPop.parent,fenPop.bCa,"check",false)
111        rep = 3
112    end
113    return rep
114end
115
116ad.desBon = function(x,y)
117    local brun = Color.new(15,8,0)
118    local chair = Color.new(31,16,16)
119    local bleu = Color.new(0,0,31)
120    screen.drawLine(SCREEN_UP,x+3,y+1,x+8,y+1,brun)
121    screen.drawLine(SCREEN_UP,x+2,y+2,x+9,y+2,brun)
122    screen.drawLine(SCREEN_UP,x+1,y+3,x+10,y+3,brun)
123    screen.drawLine(SCREEN_UP,x+1,y+4,x+10,y+4,brun)
124    screen.drawLine(SCREEN_UP,x+1,y+5,x+10,y+5,brun)
125    screen.drawLine(SCREEN_UP,x+2,y+4,x+9,y+4,chair)
126    screen.drawLine(SCREEN_UP,x+2,y+5,x+9,y+5,chair)
127    screen.drawLine(SCREEN_UP,x+1,y+6,x+10,y+6,chair)
128    screen.drawLine(SCREEN_UP,x+1,y+7,x+10,y+7,chair)
129    screen.drawLine(SCREEN_UP,x+1,y+8,x+10,y+8,chair)
130    screen.drawLine(SCREEN_UP,x+1,y+9,x+10,y+9,bleu)
131    screen.drawLine(SCREEN_UP,x+2,y+9,x+9,y+9,chair)
132    screen.drawLine(SCREEN_UP,x,y+10,x+11,y+10,bleu)
133    screen.drawLine(SCREEN_UP,x,y+11,x+11,y+11,bleu)
134    screen.drawLine(SCREEN_UP,x,y+12,x+11,y+12,bleu)
135end
136
137ad.desTel = function(x,y)
138    local rouge = Color.new(31,0,0)
139    local bleu = Color.new(16,31,31)
140    screen.drawFillRect(SCREEN_UP,x+1,y+1,x+10,y+13,rouge)
141    screen.drawLine(SCREEN_UP,x+2,y,x+9,y,rouge)
142    screen.drawFillRect(SCREEN_UP,x+2,y+3,x+4,y+6,bleu)
143    screen.drawFillRect(SCREEN_UP,x+6,y+3,x+8,y+6,bleu)
144    screen.drawFillRect(SCREEN_UP,x+2,y+8,x+4,y+11,bleu)
145    screen.drawFillRect(SCREEN_UP,x+6,y+8,x+8,y+11,bleu)
146end
147
148ad.desMai = function(x,y)
149    local rouge = Color.new(31,16,0)
150    local gris = Color.new(16,16,16)
151    screen.drawLine(SCREEN_UP,x+3,y+1,x+8,y+1,rouge)
152    screen.drawLine(SCREEN_UP,x+2,y+2,x+9,y+2,rouge)
153    screen.drawLine(SCREEN_UP,x+1,y+3,x+10,y+3,rouge)
154    screen.drawLine(SCREEN_UP,x,y+4,x+11,y+4,rouge)
155    screen.drawFillRect(SCREEN_UP,x+2,y+5,x+9,y+12,gris)
156end
157
158ad.carteVisi = function(x,y,ll)
159    screen.drawFillRect(SCREEN_UP,x+1,y+10,x+199,y+89,ad.color.jaune)
160    screen.drawFillRect(SCREEN_UP,x+1,y+1,x+99,y+10,ad.color.jaune)
161    screen.print(SCREEN_UP,x+84,y+2,ad.tt[ad.filtre+1],ad.color.noir)
162    screen.drawLine(SCREEN_UP,x+1,y,x+99,y,ad.color.vertc)
163    screen.drawLine(SCREEN_UP,x+99,y+1,x+99,y+9,ad.color.vertc)
164    screen.drawLine(SCREEN_UP,x+99,y+9,x+199,y+9,ad.color.vertc)
165    screen.drawLine(SCREEN_UP,x+199,y+10,x+199,y+89,ad.color.vertc)
166    screen.drawLine(SCREEN_UP,x+1,y+89,x+199,y+89,ad.color.vertc)
167    screen.drawLine(SCREEN_UP,x,y+1,x,y+89,ad.color.vertc)
168    ad.desBon(x+4,y+14)
169    ad.desTel(x+4,y+38)
170    ad.desMai(x+4,y+70)
171    if(ll ~= nil) then
172        screen.print(SCREEN_UP,x+20,y+16,ll[1].." "..ll[2],ad.color.noir)
173        screen.print(SCREEN_UP,x+20,y+36,"Tel1: "..ll[3],ad.color.noir)
174        screen.print(SCREEN_UP,x+20,y+45,"Tel2: "..ll[4],ad.color.noir)
175        screen.print(SCREEN_UP,x+20,y+58,ll[5],ad.color.noir)
176        screen.print(SCREEN_UP,x+20,y+70,ll[6],ad.color.noir)
177        screen.print(SCREEN_UP,x+20,y+79,ll[7].." "..ll[8],ad.color.noir)
178    end
179end
180
181ad.enreg = function()
182    local fich = io.open("carnet.ad","wt")
183    local i,j
184    for i = 1, #ad.liste do
185        for j=1,8 do
186            fich:write(ad.liste[i][j]..",")
187        end
188        fich:write("\n")
189    end
190    io.close(fich)
191end
192
193ad.ouvre = function()
194    local fich = io.open("carnet.ad","rt")
195    local i, buff, k, l
196    if(fich) then
197        buff = fich:read("*l")
198        while(buff ~= nil) do
199            local ll = {}
200            k,l = string.find(buff,",")
201            ll[1] = string.sub(buff,1,k-1)
202            buff = string.sub(buff,l+1)
203            for i=1,6 do
204                k,l = string.find(buff,",")
205                ll[i+1] = string.sub(buff,1,k-1)
206                buff = string.sub(buff,l+1)
207            end
208            k,l = string.find(buff,",")
209            ll[8] = string.sub(buff,1,k-1)
210            table.insert(ad.liste,ll)
211            luaWidget.addElement(fenP.parent,fenP.liste,{ll[1],ll[2],ll[3]})
212            buff = fich:read("*l")
213        end
214        io.close(fich)
215    end
216end
217
218ad.setToGListe = function()
219    local ll = {}
220    table.insert(ll,{"Nom","Prénom","Téléphone"})
221    local i,buff,a,b,c
222    local ldep = 0
223    a = string.sub(ad.tt[ad.filtre+1],1,1)
224    b = string.sub(ad.tt[ad.filtre+1],-1)
225    for i = 1,#ad.liste do
226        buff = {ad.liste[i][1],ad.liste[i][2],ad.liste[i][3]}
227        if(ad.filtre == 0) then
228            table.insert(ll,buff)
229            if(ldep == 0) then ldep = i end
230        else
231            c = string.sub(buff[1],1,1)
232            if(c == a or c == b)then
233                if(ldep == 0) then ldep = i end
234                table.insert(ll,buff)
235            end
236        end
237    end
238    luaWidget.set(fenP.parent,fenP.liste,"element",ll)
239    ad.ldep = ldep
240end
241
242ad.retPos = function(texte)
243    local i
244    for i=1,#ad.liste do
245        if(ad.liste[i][1]..ad.liste[i][2] > texte) then return i end
246    end
247    return 0
248end
249
250ad.setFiltre = function()
251    local i
252    if(Stylus.newPress and Stylus.Y < 15) then
253        for i = 1,#ad.tt do
254            luaWidget.set(fenP.parent,fenP[i],"check",false)
255        end
256        luaWidget.held(fenP.parent)
257        for i = 1,#ad.tt do
258            if(luaWidget.get(fenP.parent,fenP[i],"check")) then ad.filtre = i-1 end
259        end
260        ad.setToGListe()
261    end
262end
263
264ad.quit = false
265ad.pUp = false
266ad.rpUp = 0
267ad.fen_active = fenP.parent
268ad.showClav = false
269ad.tou = ""
270ad.entrer = 0
271ad.ancienY = 0
272ad.liste = nil
273ad.liste = {}
274ad.filtre = 0
275ad.action = 0
276ad.date = DateTime.new()
277ad.buff = ""
278ad.ldep = 1
279ad.ouvre()
280luaWidget.setSel(fenP.parent,fenP.liste,1)
281
282Debug.ON()
283Debug.setColor(Color.new(31,0,0))
284
285while not ad.quit do
286    Controls.read()
287    luaWidget.show(ad.fen_active)
288    if(ad.pUp) then
289        local rep
290        ad.popUp.show() -- Est-ce que l'on supprime?
291        rep = ad.popUp.held()
292        if(rep > 0) then
293            ad.pUp = false
294            if(rep == 1) then -- Oui on supprime
295                table.remove(ad.liste,position)
296                ad.setToGListe()
297                ad.enreg()
298                ad.fen_active = fenP.parent
299                ad.action = 0
300            --elseif(rep == 2) then -- Non on ne supprime pas
301                -- Bah rien alors
302            end
303        end
304    else
305        luaWidget.held(ad.fen_active)
306        if(ad.action == 0) then ad.setFiltre() end
307    end
308    if(luaWidget.get(fenP.parent,fenP.bNouv,"check")) then
309        luaWidget.set(fenP.parent,fenP.bNouv,"check",false)
310        luaWidget.set(fenN.parent,fenN.bSup,"visible",false)
311        ad.fen_active = fenN.parent
312        for i= 1,8 do
313            luaWidget.set(fenN.parent,fenN[i],"text","")
314        end
315        ad.action = 1
316    end
317    if(luaWidget.get(fenP.parent,fenP.bModif,"check")) then
318        luaWidget.set(fenP.parent,fenP.bModif,"check",false)
319        luaWidget.set(fenN.parent,fenN.bSup,"visible",true)
320        position = (luaWidget.get(fenP.parent,fenP.liste,"pos")-1) + ad.ldep
321        if(ad.liste[position] ~= nil) then
322            for i= 1,8 do
323                luaWidget.set(fenN.parent,fenN[i],"text",ad.liste[position][i])
324            end
325            ad.action = 2
326            ad.fen_active = fenN.parent
327        end
328    end
329    if(luaWidget.get(fenN.parent,fenN.bSup,"check")) then
330        luaWidget.set(fenN.parent,fenN.bSup,"check",false)
331        ad.popUp.create("Suppression contact","Voulez vous supprimer le contact ?",true,true,false)
332        ad.pUp = true
333    end
334    if(luaWidget.get(fenN.parent,fenN.bNo,"check")) then
335        luaWidget.set(fenN.parent,fenN.bNo,"check",false)
336        ad.fen_active = fenP.parent
337        ad.action = 0
338    end
339    if(luaWidget.get(fenP.parent,fenP.bQuit,"check")) then
340        luaWidget.set(fenP.parent,fenP.bQuit,"check",false)
341        ad.quit = true
342    end
343    if(luaWidget.get(fenN.parent,fenN.bOk,"check")) then
344        luaWidget.set(fenN.parent,fenN.bOk,"check",false)
345        ad.fen_active = fenP.parent
346        local nom = luaWidget.get(fenN.parent,fenN[1],"text")
347        local prenom = luaWidget.get(fenN.parent,fenN[2],"text")
348        local tel = luaWidget.get(fenN.parent,fenN[3],"text")
349        if(nom ~= "" or prenom ~= "" or tel ~= "") then
350            if(ad.action ~= 1) then
351                table.remove(ad.liste,position)
352            end
353            local posi = ad.retPos(nom..prenom)
354            if(posi == 0) then posi = #ad.liste+1 end
355            table.insert(ad.liste,posi,{nom,prenom,tel,
356                luaWidget.get(fenN.parent,fenN[4],"text"),luaWidget.get(fenN.parent,fenN[5],"text"),
357                luaWidget.get(fenN.parent,fenN[6],"text"),luaWidget.get(fenN.parent,fenN[7],"text"),
358                luaWidget.get(fenN.parent,fenN[8],"text")})
359            --tri
360            ad.setToGListe()
361            ad.enreg()
362        end
363        ad.action = 0
364    end
365    if(ad.showClav) then
366        clavier.show(clav)
367        if(Stylus.newPress) then ad.tou = clavier.held(clav,Stylus.X,Stylus.Y) end
368    end
369    if(ad.entrer == 0) then
370        for i = 1,8 do
371            if(luaWidget.get(fenN.parent,fenN[i],"check")) then
372                ad.entrer = i
373                if(i == 3 or i == 4 or i == 7) then clavier.activePanel(clav,4)
374                elseif(i == 1) then clavier.activePanel(clav,2)
375                else clavier.activePanel(clav,1) end
376            end
377        end
378    else
379        if(not ad.showClav) then
380            clavier.setText(clav,luaWidget.get(fenN.parent,fenN[ad.entrer],"text"))
381            ad.showClav = true
382            for i= 1,8 do
383                if(i ~= ad.entrer) then
384                    luaWidget.set(fenN.parent,fenN[i+8],"visible",false)
385                end
386                luaWidget.set(fenN.parent,fenN[i],"visible",false)
387            end
388            ad.ancienY = luaWidget.get(fenN.parent,fenN[ad.entrer],"y")
389            luaWidget.set(fenN.parent,fenN[ad.entrer+8],"align",_ALEFT)
390            luaWidget.set(fenN.parent,fenN[ad.entrer+8],"y",45)
391            luaWidget.set(fenN.parent,fenN.bOk,"visible",false)
392            luaWidget.set(fenN.parent,fenN.bNo,"visible",false)
393            if(ad.action == 2) then luaWidget.set(fenN.parent,fenN.bSup,"visible",false) end
394        else
395            if(ad.tou == "Enter" or ad.tou == "Esc") then
396                if(ad.tou == "Enter") then
397                    local buff = clavier.getText(clav)
398                    if(ad.entrer == 1) then buff = string.upper(buff)
399                    elseif(ad.entrer == 2) then
400                        buff = string.upper(string.sub(buff,1,1))..string.lower(string.sub(buff,2))
401                    end
402                    luaWidget.set(fenN.parent,fenN[ad.entrer],"text",buff)
403                end
404                luaWidget.set(fenN.parent,fenN[ad.entrer],"check",false)
405                ad.showClav = false
406                ad.tou = ""
407                for i= 1,8 do
408                    if(i ~= ad.entrer) then
409                        luaWidget.set(fenN.parent,fenN[i+8],"visible",true)
410                    end
411                    luaWidget.set(fenN.parent,fenN[i],"visible",true)
412                end
413                luaWidget.set(fenN.parent,fenN[ad.entrer+8],"align",_ARIGHT)
414                luaWidget.set(fenN.parent,fenN[ad.entrer+8],"y",ad.ancienY)
415                luaWidget.set(fenN.parent,fenN.bOk,"visible",true)
416                luaWidget.set(fenN.parent,fenN.bNo,"visible",true)
417                if(ad.action == 2) then luaWidget.set(fenN.parent,fenN.bSup,"visible",true) end
418                ad.entrer = 0
419            end
420        end
421    end
422    if(ad.action == 0) then
423        position = (luaWidget.get(fenP.parent,fenP.liste,"pos")-1) + ad.ldep
424        ad.carteVisi(28,60,ad.liste[position])
425    elseif(ad.action == 1 or ad.action == 2) then
426        ad.carteVisi(28,60,{luaWidget.get(fenN.parent,fenN[1],"text"),luaWidget.get(fenN.parent,fenN[2],"text"),
427                luaWidget.get(fenN.parent,fenN[3],"text"),luaWidget.get(fenN.parent,fenN[4],"text"),
428                luaWidget.get(fenN.parent,fenN[5],"text"),luaWidget.get(fenN.parent,fenN[6],"text"),
429                luaWidget.get(fenN.parent,fenN[7],"text"),luaWidget.get(fenN.parent,fenN[8],"text")})
430    end
431    screen.print(SCREEN_UP,59,27,"CARNET D'ADRESSES V".._VADRESSE)
432    ad.date = DateTime.getCurrentTime()
433    ad.buff = string.format("%02d/%02d/%04d",ad.date.day,ad.date.month,ad.date.year)
434    screen.drawFillRect(SCREEN_UP,1,1,68,15,ad.color.jaune)
435    screen.drawRect(SCREEN_UP,1,1,68,15,ad.color.vertc)
436    screen.print(SCREEN_UP,4,4,ad.buff,ad.color.noir)
437    ad.buff = string.format("%02d:%02d:%02d",ad.date.hour,ad.date.minute,ad.date.second)
438    screen.drawFillRect(SCREEN_UP,199,1,255,15,ad.color.jaune)
439    screen.drawRect(SCREEN_UP,199,1,255,15,ad.color.vertc)
440    screen.print(SCREEN_UP,202,4,ad.buff,ad.color.noir)
441    screen.print(SCREEN_UP,170,181,"by PAPY (2010)")
442    render()
443end
444
445_VADRESSE = nil
446fenP = nil
447fenN = nil
448fenPop = nil
449luaWidget.del()
450clavier.del()
451position = nil
452ad = nil
453i = nil
clavier.lua
1dofile("libClavier.lua")
2
3clav = clavier.new()
4clavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
5clavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
6clavier.addKey(clav,1,2,"")
7clavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
8clavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
9clavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
10clavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
11clavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
12clavier.addKey(clav,1,3,"a")
13clavier.addKey(clav,1,3,"A")
14clavier.addKey(clav,1,3,"&")
15clavier.addKey(clav,1,3,"")
16clavier.addKey(clav,2,3,"z")
17clavier.addKey(clav,2,3,"Z")
18clavier.addKey(clav,2,3,"é")
19clavier.addKey(clav,2,3,"")
20clavier.addKey(clav,3,3,"e")
21clavier.addKey(clav,3,3,"E")
22clavier.addKey(clav,3,3,"ê")
23clavier.addKey(clav,3,3,"+")
24clavier.addKey(clav,4,3,"r")
25clavier.addKey(clav,4,3,"R")
26clavier.addKey(clav,4,3,"è")
27clavier.addKey(clav,4,3,"-")
28clavier.addKey(clav,5,3,"t")
29clavier.addKey(clav,5,3,"T")
30clavier.addKey(clav,5,3,"à")
31clavier.addKey(clav,5,3,"1")
32clavier.addKey(clav,6,3,"y")
33clavier.addKey(clav,6,3,"Y")
34clavier.addKey(clav,6,3,"ù")
35clavier.addKey(clav,6,3,"2")
36clavier.addKey(clav,7,3,"u")
37clavier.addKey(clav,7,3,"U")
38clavier.addKey(clav,7,3,"\'")
39clavier.addKey(clav,7,3,"3")
40clavier.addKey(clav,8,3,"i")
41clavier.addKey(clav,8,3,"I")
42clavier.addKey(clav,8,3,"_")
43clavier.addKey(clav,8,3,"")
44clavier.addKey(clav,9,3,"o")
45clavier.addKey(clav,9,3,"O")
46clavier.addKey(clav,9,3,"ç")
47clavier.addKey(clav,9,3,"")
48clavier.addKey(clav,10,3,"p")
49clavier.addKey(clav,10,3,"P")
50clavier.addKey(clav,10,3,"=")
51clavier.addKey(clav,10,3,"")
52clavier.addKey(clav,1,4,"q")
53clavier.addKey(clav,1,4,"Q")
54clavier.addKey(clav,1,4,"(")
55clavier.addKey(clav,1,4,"")
56clavier.addKey(clav,2,4,"s")
57clavier.addKey(clav,2,4,"S")
58clavier.addKey(clav,2,4,")")
59clavier.addKey(clav,2,4,"")
60clavier.addKey(clav,3,4,"d")
61clavier.addKey(clav,3,4,"D")
62clavier.addKey(clav,3,4,"~")
63clavier.addKey(clav,3,4,"/")
64clavier.addKey(clav,4,4,"f")
65clavier.addKey(clav,4,4,"F")
66clavier.addKey(clav,4,4,"{")
67clavier.addKey(clav,4,4,"*")
68clavier.addKey(clav,5,4,"g")
69clavier.addKey(clav,5,4,"G")
70clavier.addKey(clav,5,4,"}")
71clavier.addKey(clav,5,4,"4")
72clavier.addKey(clav,6,4,"h")
73clavier.addKey(clav,6,4,"H")
74clavier.addKey(clav,6,4,"[")
75clavier.addKey(clav,6,4,"5")
76clavier.addKey(clav,7,4,"j")
77clavier.addKey(clav,7,4,"J")
78clavier.addKey(clav,7,4,"]")
79clavier.addKey(clav,7,4,"6")
80clavier.addKey(clav,8,4,"k")
81clavier.addKey(clav,8,4,"K")
82clavier.addKey(clav,8,4,"#")
83clavier.addKey(clav,8,4,"")
84clavier.addKey(clav,9,4,"l")
85clavier.addKey(clav,9,4,"L")
86clavier.addKey(clav,9,4,"^")
87clavier.addKey(clav,9,4,"")
88clavier.addKey(clav,10,4,"m")
89clavier.addKey(clav,10,4,"M")
90clavier.addKey(clav,10,4,"%")
91clavier.addKey(clav,10,4,"")
92clavier.addKey(clav,1,5,"")
93clavier.addKey(clav,1,5,"")
94clavier.addKey(clav,1,5,"<")
95clavier.addKey(clav,1,5,"")
96clavier.addKey(clav,2,5,"w")
97clavier.addKey(clav,2,5,"W")
98clavier.addKey(clav,2,5,">")
99clavier.addKey(clav,2,5,"")
100clavier.addKey(clav,3,5,"x")
101clavier.addKey(clav,3,5,"X")
102clavier.addKey(clav,3,5,"?")
103clavier.addKey(clav,3,5,"(")
104clavier.addKey(clav,4,5,"c")
105clavier.addKey(clav,4,5,"C")
106clavier.addKey(clav,4,5,",")
107clavier.addKey(clav,4,5,")")
108clavier.addKey(clav,5,5,"v")
109clavier.addKey(clav,5,5,"V")
110clavier.addKey(clav,5,5,".")
111clavier.addKey(clav,5,5,"7")
112clavier.addKey(clav,6,5,"b")
113clavier.addKey(clav,6,5,"B")
114clavier.addKey(clav,6,5,";")
115clavier.addKey(clav,6,5,"8")
116clavier.addKey(clav,7,5,"n")
117clavier.addKey(clav,7,5,"N")
118clavier.addKey(clav,7,5,":")
119clavier.addKey(clav,7,5,"9")
120clavier.addKey(clav,8,5,"")
121clavier.addKey(clav,8,5,"")
122clavier.addKey(clav,8,5,"!")
123clavier.addKey(clav,8,5,"")
124clavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
125clavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
126clavier.addKey(clav,9,5,"\"")
127clavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
128clavier.addKey(clav,10,5,"")
129clavier.addKey(clav,10,5,"")
130clavier.addKey(clav,10,5,"@")
131clavier.addKey(clav,1,6,"MAJ",1,2,nil,coul.bleuf)
132clavier.addKey(clav,1,6,"MIN",1,1,nil,coul.bleuf)
133clavier.addKey(clav,1,6,"abc",1,1,nil,coul.bleuf)
134clavier.addKey(clav,1,6,"abc",1,1,nil,coul.bleuf)
135clavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
136clavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
137clavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
138clavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
139clavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
140clavier.addKey(clav,3,6,"")
141clavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
142clavier.addKey(clav,4,6,"")
143clavier.addKey(clav,4,6,"")
144clavier.addKey(clav,4,6,"+")
145clavier.addKey(clav,4,6,"")
146clavier.addKey(clav,5,6,"Espace",3,-4)
147clavier.addKey(clav,5,6,"Espace",3,-4)
148clavier.addKey(clav,5,6,"/")
149clavier.addKey(clav,5,6,"0")
150clavier.addKey(clav,6,6,"")
151clavier.addKey(clav,6,6,"")
152clavier.addKey(clav,6,6,"-")
153clavier.addKey(clav,6,6,".")
154clavier.addKey(clav,7,6,"")
155clavier.addKey(clav,7,6,"")
156clavier.addKey(clav,7,6,"*")
157clavier.addKey(clav,7,6,"=")
158clavier.addKey(clav,8,6,"")
159clavier.addKey(clav,8,6,"")
160clavier.addKey(clav,8,6,"$")
161clavier.addKey(clav,8,6,"")
162
163clavier.modScreen(clav,2,2,7)
1clav = libClavier.new()
2libClavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
3libClavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
4libClavier.addKey(clav,1,2,"")
5libClavier.addKey(clav,1,2,"Esc",nil,-1,nil,coul.bleuf)
6libClavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
7libClavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
8libClavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
9libClavier.addKey(clav,9,2,"Del",2,-2,nil,coul.bleuf)
10libClavier.addKey(clav,1,3,"a")
11libClavier.addKey(clav,1,3,"A")
12libClavier.addKey(clav,1,3,"&")
13libClavier.addKey(clav,1,3,"")
14libClavier.addKey(clav,2,3,"z")
15libClavier.addKey(clav,2,3,"Z")
16libClavier.addKey(clav,2,3,"é")
17libClavier.addKey(clav,2,3,"")
18libClavier.addKey(clav,3,3,"e")
19libClavier.addKey(clav,3,3,"E")
20libClavier.addKey(clav,3,3,"ê")
21libClavier.addKey(clav,3,3,"+")
22libClavier.addKey(clav,4,3,"r")
23libClavier.addKey(clav,4,3,"R")
24libClavier.addKey(clav,4,3,"è")
25libClavier.addKey(clav,4,3,"-")
26libClavier.addKey(clav,5,3,"t")
27libClavier.addKey(clav,5,3,"T")
28libClavier.addKey(clav,5,3,"à")
29libClavier.addKey(clav,5,3,"1")
30libClavier.addKey(clav,6,3,"y")
31libClavier.addKey(clav,6,3,"Y")
32libClavier.addKey(clav,6,3,"ù")
33libClavier.addKey(clav,6,3,"2")
34libClavier.addKey(clav,7,3,"u")
35libClavier.addKey(clav,7,3,"U")
36libClavier.addKey(clav,7,3,"\'")
37libClavier.addKey(clav,7,3,"3")
38libClavier.addKey(clav,8,3,"i")
39libClavier.addKey(clav,8,3,"I")
40libClavier.addKey(clav,8,3,"_")
41libClavier.addKey(clav,8,3,"")
42libClavier.addKey(clav,9,3,"o")
43libClavier.addKey(clav,9,3,"O")
44libClavier.addKey(clav,9,3,"ç")
45libClavier.addKey(clav,9,3,"")
46libClavier.addKey(clav,10,3,"p")
47libClavier.addKey(clav,10,3,"P")
48libClavier.addKey(clav,10,3,"=")
49libClavier.addKey(clav,10,3,"")
50libClavier.addKey(clav,1,4,"q")
51libClavier.addKey(clav,1,4,"Q")
52libClavier.addKey(clav,1,4,"(")
53libClavier.addKey(clav,1,4,"")
54libClavier.addKey(clav,2,4,"s")
55libClavier.addKey(clav,2,4,"S")
56libClavier.addKey(clav,2,4,")")
57libClavier.addKey(clav,2,4,"")
58libClavier.addKey(clav,3,4,"d")
59libClavier.addKey(clav,3,4,"D")
60libClavier.addKey(clav,3,4,"~")
61libClavier.addKey(clav,3,4,"/")
62libClavier.addKey(clav,4,4,"f")
63libClavier.addKey(clav,4,4,"F")
64libClavier.addKey(clav,4,4,"{")
65libClavier.addKey(clav,4,4,"*")
66libClavier.addKey(clav,5,4,"g")
67libClavier.addKey(clav,5,4,"G")
68libClavier.addKey(clav,5,4,"}")
69libClavier.addKey(clav,5,4,"4")
70libClavier.addKey(clav,6,4,"h")
71libClavier.addKey(clav,6,4,"H")
72libClavier.addKey(clav,6,4,"[")
73libClavier.addKey(clav,6,4,"5")
74libClavier.addKey(clav,7,4,"j")
75libClavier.addKey(clav,7,4,"J")
76libClavier.addKey(clav,7,4,"]")
77libClavier.addKey(clav,7,4,"6")
78libClavier.addKey(clav,8,4,"k")
79libClavier.addKey(clav,8,4,"K")
80libClavier.addKey(clav,8,4,"#")
81libClavier.addKey(clav,8,4,"")
82libClavier.addKey(clav,9,4,"l")
83libClavier.addKey(clav,9,4,"L")
84libClavier.addKey(clav,9,4,"^")
85libClavier.addKey(clav,9,4,"")
86libClavier.addKey(clav,10,4,"m")
87libClavier.addKey(clav,10,4,"M")
88libClavier.addKey(clav,10,4,"%")
89libClavier.addKey(clav,10,4,"")
90libClavier.addKey(clav,1,5,"")
91libClavier.addKey(clav,1,5,"")
92libClavier.addKey(clav,1,5,"<")
93libClavier.addKey(clav,1,5,"")
94libClavier.addKey(clav,2,5,"w")
95libClavier.addKey(clav,2,5,"W")
96libClavier.addKey(clav,2,5,">")
97libClavier.addKey(clav,2,5,"")
98libClavier.addKey(clav,3,5,"x")
99libClavier.addKey(clav,3,5,"X")
100libClavier.addKey(clav,3,5,"?")
101libClavier.addKey(clav,3,5,"(")
102libClavier.addKey(clav,4,5,"c")
103libClavier.addKey(clav,4,5,"C")
104libClavier.addKey(clav,4,5,",")
105libClavier.addKey(clav,4,5,")")
106libClavier.addKey(clav,5,5,"v")
107libClavier.addKey(clav,5,5,"V")
108libClavier.addKey(clav,5,5,".")
109libClavier.addKey(clav,5,5,"7")
110libClavier.addKey(clav,6,5,"b")
111libClavier.addKey(clav,6,5,"B")
112libClavier.addKey(clav,6,5,";")
113libClavier.addKey(clav,6,5,"8")
114libClavier.addKey(clav,7,5,"n")
115libClavier.addKey(clav,7,5,"N")
116libClavier.addKey(clav,7,5,":")
117libClavier.addKey(clav,7,5,"9")
118libClavier.addKey(clav,8,5,"")
119libClavier.addKey(clav,8,5,"")
120libClavier.addKey(clav,8,5,"!")
121libClavier.addKey(clav,8,5,"")
122libClavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
123libClavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
124libClavier.addKey(clav,9,5,"\"")
125libClavier.addKey(clav,9,5,"Enter",2,-3,nil,coul.bleuf)
126libClavier.addKey(clav,10,5,"")
127libClavier.addKey(clav,10,5,"")
128libClavier.addKey(clav,10,5,"@")
129-- libClavier.addKey(clav,10,5,"")
130libClavier.addKey(clav,1,6,"MAJ",1,2,nil,coul.bleuf)
131libClavier.addKey(clav,1,6,"MIN",1,1,nil,coul.bleuf)
132libClavier.addKey(clav,1,6,"abc",1,1,nil,coul.bleuf)
133libClavier.addKey(clav,1,6,"abc",1,1,nil,coul.bleuf)
134libClavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
135libClavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
136libClavier.addKey(clav,2,6,"123",1,4,nil,coul.bleuf)
137libClavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
138libClavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
139libClavier.addKey(clav,3,6,"")
140libClavier.addKey(clav,3,6,".;!",1,3,nil,coul.bleuf)
141libClavier.addKey(clav,4,6,"")
142libClavier.addKey(clav,4,6,"")
143libClavier.addKey(clav,4,6,"+")
144libClavier.addKey(clav,4,6,"")
145libClavier.addKey(clav,5,6,"Espace",3,-4)
146libClavier.addKey(clav,5,6,"Espace",3,-4)
147libClavier.addKey(clav,5,6,"/")
148libClavier.addKey(clav,5,6,"0")
149libClavier.addKey(clav,6,6,"")
150libClavier.addKey(clav,6,6,"")
151libClavier.addKey(clav,6,6,"-")
152libClavier.addKey(clav,6,6,".")
153libClavier.addKey(clav,7,6,"")
154libClavier.addKey(clav,7,6,"")
155libClavier.addKey(clav,7,6,"*")
156libClavier.addKey(clav,7,6,"=")
157libClavier.addKey(clav,8,6,"")
158libClavier.addKey(clav,8,6,"")
159libClavier.addKey(clav,8,6,"$")
160libClavier.addKey(clav,8,6,"")
161
162libClavier.modScreen(clav,2,2,7)
index.lua
1require("standard")
2_VADRESSE = 0.33
3ad = {}
4
5ad.libs = loadLib({"luaWidget","libClavier"})
6
7dofile("Clavier.lua")
8
9if(_VDBUS ~= nil) then
10    ad.dbus = true
11end
12
13libClavier.activeScreen(clav,true)
14
15ad.liste = {}
16ad.liste[1] = {"Nom","Prénom","Téléphone"}
17-- ad.liste[2] = {"","",""}
18ad.color = {}
19ad.color.blue = Color.new(10,10,31)
20ad.color.noir = Color.new(0,0,0)
21ad.color.jaune = Color.new(31,31,16)
22ad.color.vertc = Color.new(10,29,18)
23
24--****************************************
25--Fenetre principale
26--****************************************
27fenP = {}
28fenP.parent = luaWidget.newWidget(SCREEN_DOWN)
29ad.tt = {"..","AB","CD","EF","GH","IJ","KL","MN","OP","QR","ST","UV","WX","YZ"}
30for i= 1,14 do
31    fenP[i] = luaWidget.newObj(fenP.parent,TBUTTON,2+((i-1)*18),0,18,15,ad.tt[i],_ACENTER)
32end
33luaWidget.set(fenP.parent,fenP[1],"check",true)
34fenP.liste = luaWidget.newObj(fenP.parent,TTABLEVIEW,0,16,256,156,ad.liste)
35fenP.bModif = luaWidget.newObj(fenP.parent,TBUTTON,70,175,60,15,"Modifier",_ACENTER)
36fenP.bNouv = luaWidget.newObj(fenP.parent,TBUTTON,2,175,60,15,"Nouveau",_ACENTER)
37fenP.bQuit = luaWidget.newObj(fenP.parent,TBUTTON,194,175,60,15,"Quitter",_ACENTER)
38
39--****************************************
40--Fenetre d'ajout / modification d'adresse
41--****************************************
42fenN = {}
43fenN.parent = luaWidget.newWidget(SCREEN_DOWN)
44fenN[1] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,10,130,15)
45fenN[2] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,30,130,15)
46fenN[3] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,50,130,15)
47fenN[4] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,70,130,15)
48fenN[5] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,90,130,15)
49fenN[6] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,110,130,15)
50fenN[7] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,130,40,15)
51fenN[8] = luaWidget.newObj(fenN.parent,TTEXTBOX,100,150,130,15)
52fenN.bOk = luaWidget.newObj(fenN.parent,TBUTTON,100,170,60,15,"OK",_ACENTER)
53fenN.bNo = luaWidget.newObj(fenN.parent,TBUTTON,170,170,60,15,"Annuler",_ACENTER)
54fenN.bSup = luaWidget.newObj(fenN.parent,TBUTTON,10,170,70,15,"Supprimer",_ACENTER)
55fenN[9] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,10,90,15,"Nom :",_ARIGHT)
56fenN[10] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,30,90,15,"Prénom :",_ARIGHT)
57fenN[11] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,50,90,15,"Tel1 :",_ARIGHT)
58fenN[12] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,70,90,15,"Tel2 :",_ARIGHT)
59fenN[13] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,90,90,15,"E-Mail :",_ARIGHT)
60fenN[14] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,110,90,15,"Adresse :",_ARIGHT)
61fenN[15] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,130,90,15,"Code Postal :",_ARIGHT)
62fenN[16] = luaWidget.newObj(fenN.parent,TTEXTBOX,8,150,90,15,"Ville :",_ARIGHT)
63for i = 9,16 do
64    luaWidget.set(fenN.parent,fenN[i],"cText",coul.blanc)
65    luaWidget.set(fenN.parent,fenN[i],"cFond",coul.noir)
66end
67
68--****************************************
69--Fenetre popUp
70--****************************************
71fenPop = {}
72fenPop.parent = luaWidget.newWidget(SCREEN_DOWN)
73fenPop.titre = luaWidget.newObj(fenPop.parent,TTEXTBOX,10,80,236,15,"Titre",_ALEFT)
74fenPop.texte = luaWidget.newObj(fenPop.parent,TTEXTBOX,10,95,236,15,"Texte",_ACENTER)
75fenPop.bOk = luaWidget.newObj(fenPop.parent,TBUTTON,60,115,60,15,"Oui",_ACENTER)
76fenPop.bNo = luaWidget.newObj(fenPop.parent,TBUTTON,120,115,60,15,"Non",_ACENTER)
77fenPop.bCa = luaWidget.newObj(fenPop.parent,TBUTTON,180,115,60,15,"Annuler",_ACENTER)
78luaWidget.set(fenPop.parent,fenPop.titre,"cFond",ad.color.blue)
79luaWidget.set(fenPop.parent,fenPop.titre,"cCadre",ad.color.blue)
80luaWidget.set(fenPop.parent,fenPop.texte,"cFond",ad.color.jaune)
81luaWidget.set(fenPop.parent,fenPop.texte,"cCadre",ad.color.jaune)
82
83ad.popUp = {}
84ad.popUp.create = function(titre,texte,bok,bno,bca)
85    local numB = 0
86    local xx = 98
87    ad.pUp = true
88    luaWidget.set(fenPop.parent,fenPop.titre,"text",titre)
89    luaWidget.set(fenPop.parent,fenPop.texte,"text",texte)
90    if(bok ~= nil) then if(bok) then numB = numB +1 end else bok = false end
91    if(bno ~= nil) then if(bno) then numB = numB +1 end else bno = false end
92    if(bca ~= nil) then if(bca) then numB = numB +1 end else bca = false end
93    if(numB == 0) then
94        luaWidget.set(fenPop.parent,fenPop.bNo,"visible",false)
95        luaWidget.set(fenPop.parent,fenPop.bCa,"visible",false)
96        luaWidget.set(fenPop.parent,fenPop.bOk,"x",96)
97    else
98        xx = 128-(numB*32)
99        luaWidget.set(fenPop.parent,fenPop.bOk,"visible",bok)
100        luaWidget.set(fenPop.parent,fenPop.bNo,"visible",bno)
101        luaWidget.set(fenPop.parent,fenPop.bCa,"visible",bca)
102        if(bok) then luaWidget.set(fenPop.parent,fenPop.bOk,"x",xx) xx = xx + 64 end
103        if(bno) then luaWidget.set(fenPop.parent,fenPop.bNo,"x",xx) xx = xx + 64 end
104        if(bca) then luaWidget.set(fenPop.parent,fenPop.bCa,"x",xx) xx = xx + 64 end
105    end
106end
107
108ad.popUp.show = function()
109    screen.drawFillRect(SCREEN_DOWN,9,79,247,132,ad.color.jaune)
110    luaWidget.show(fenPop.parent)
111end
112
113ad.popUp.held = function()
114    local rep = 0
115    luaWidget.held(fenPop.parent)
116    if(luaWidget.get(fenPop.parent,fenPop.bOk,"check"))then
117        luaWidget.set(fenPop.parent,fenPop.bOk,"check",false)
118        rep = 1
119    end
120    if(luaWidget.get(fenPop.parent,fenPop.bNo,"check"))then
121        luaWidget.set(fenPop.parent,fenPop.bNo,"check",false)
122        rep = 2
123    end
124    if(luaWidget.get(fenPop.parent,fenPop.bCa,"check"))then
125        luaWidget.set(fenPop.parent,fenPop.bCa,"check",false)
126        rep = 3
127    end
128    return rep
129end
130
131ad.desBon = function(x,y)
132    local brun = Color.new(15,8,0)
133    local chair = Color.new(31,16,16)
134    local bleu = Color.new(0,0,31)
135    screen.drawLine(SCREEN_UP,x+3,y+1,x+8,y+1,brun)
136    screen.drawLine(SCREEN_UP,x+2,y+2,x+9,y+2,brun)
137    screen.drawLine(SCREEN_UP,x+1,y+3,x+10,y+3,brun)
138    screen.drawLine(SCREEN_UP,x+1,y+4,x+10,y+4,brun)
139    screen.drawLine(SCREEN_UP,x+1,y+5,x+10,y+5,brun)
140    screen.drawLine(SCREEN_UP,x+2,y+4,x+9,y+4,chair)
141    screen.drawLine(SCREEN_UP,x+2,y+5,x+9,y+5,chair)
142    screen.drawLine(SCREEN_UP,x+1,y+6,x+10,y+6,chair)
143    screen.drawLine(SCREEN_UP,x+1,y+7,x+10,y+7,chair)
144    screen.drawLine(SCREEN_UP,x+1,y+8,x+10,y+8,chair)
145    screen.drawLine(SCREEN_UP,x+1,y+9,x+10,y+9,bleu)
146    screen.drawLine(SCREEN_UP,x+2,y+9,x+9,y+9,chair)
147    screen.drawLine(SCREEN_UP,x,y+10,x+11,y+10,bleu)
148    screen.drawLine(SCREEN_UP,x,y+11,x+11,y+11,bleu)
149    screen.drawLine(SCREEN_UP,x,y+12,x+11,y+12,bleu)
150end
151
152ad.desTel = function(x,y)
153    local rouge = Color.new(31,0,0)
154    local bleu = Color.new(16,31,31)
155    screen.drawFillRect(SCREEN_UP,x+1,y+1,x+10,y+13,rouge)
156    screen.drawLine(SCREEN_UP,x+2,y,x+9,y,rouge)
157    screen.drawFillRect(SCREEN_UP,x+2,y+3,x+4,y+6,bleu)
158    screen.drawFillRect(SCREEN_UP,x+6,y+3,x+8,y+6,bleu)
159    screen.drawFillRect(SCREEN_UP,x+2,y+8,x+4,y+11,bleu)
160    screen.drawFillRect(SCREEN_UP,x+6,y+8,x+8,y+11,bleu)
161end
162
163ad.desMai = function(x,y)
164    local rouge = Color.new(31,16,0)
165    local gris = Color.new(16,16,16)
166    screen.drawLine(SCREEN_UP,x+3,y+1,x+8,y+1,rouge)
167    screen.drawLine(SCREEN_UP,x+2,y+2,x+9,y+2,rouge)
168    screen.drawLine(SCREEN_UP,x+1,y+3,x+10,y+3,rouge)
169    screen.drawLine(SCREEN_UP,x,y+4,x+11,y+4,rouge)
170    screen.drawFillRect(SCREEN_UP,x+2,y+5,x+9,y+12,gris)
171end
172
173ad.carteVisi = function(x,y,ll)
174    screen.drawFillRect(SCREEN_UP,x+1,y+10,x+199,y+89,ad.color.jaune)
175    screen.drawFillRect(SCREEN_UP,x+1,y+1,x+99,y+10,ad.color.jaune)
176    screen.print(SCREEN_UP,x+84,y+2,ad.tt[ad.filtre+1],ad.color.noir)
177    screen.drawLine(SCREEN_UP,x+1,y,x+99,y,ad.color.vertc)
178    screen.drawLine(SCREEN_UP,x+99,y+1,x+99,y+9,ad.color.vertc)
179    screen.drawLine(SCREEN_UP,x+99,y+9,x+199,y+9,ad.color.vertc)
180    screen.drawLine(SCREEN_UP,x+199,y+10,x+199,y+89,ad.color.vertc)
181    screen.drawLine(SCREEN_UP,x+1,y+89,x+199,y+89,ad.color.vertc)
182    screen.drawLine(SCREEN_UP,x,y+1,x,y+89,ad.color.vertc)
183    ad.desBon(x+4,y+14)
184    ad.desTel(x+4,y+38)
185    ad.desMai(x+4,y+70)
186    if(ll ~= nil) then
187        screen.print(SCREEN_UP,x+20,y+16,ll[1].." "..ll[2],ad.color.noir)
188        screen.print(SCREEN_UP,x+20,y+36,"Tel1: "..ll[3],ad.color.noir)
189        screen.print(SCREEN_UP,x+20,y+45,"Tel2: "..ll[4],ad.color.noir)
190        screen.print(SCREEN_UP,x+20,y+58,ll[5],ad.color.noir)
191        screen.print(SCREEN_UP,x+20,y+70,ll[6],ad.color.noir)
192        screen.print(SCREEN_UP,x+20,y+79,ll[7].." "..ll[8],ad.color.noir)
193    end
194end
195
196ad.enreg = function()
197    local fich = io.open("carnet.ad","wt")
198    local i,j
199    for i = 1, #ad.liste do
200        for j=1,8 do
201            fich:write(ad.liste[i][j]..",")
202        end
203        fich:write("\n")
204    end
205    io.close(fich)
206end
207
208ad.ouvre = function()
209    local fich = io.open("carnet.ad","rt")
210    local i, buff, k, l
211    if(fich) then
212        buff = fich:read("*l")
213        while(buff ~= nil) do
214            local ll = {}
215            k,l = string.find(buff,",")
216            ll[1] = string.sub(buff,1,k-1)
217            buff = string.sub(buff,l+1)
218            for i=1,6 do
219                k,l = string.find(buff,",")
220                ll[i+1] = string.sub(buff,1,k-1)
221                buff = string.sub(buff,l+1)
222            end
223            k,l = string.find(buff,",")
224            ll[8] = string.sub(buff,1,k-1)
225            table.insert(ad.liste,ll)
226            luaWidget.addElement(fenP.parent,fenP.liste,{ll[1],ll[2],ll[3]})
227            buff = fich:read("*l")
228        end
229        io.close(fich)
230    end
231end
232
233ad.setToGListe = function()
234    local ll = {}
235    table.insert(ll,{"Nom","Prénom","Téléphone"})
236    local i,buff,a,b,c
237    local ldep = 0
238    a = string.sub(ad.tt[ad.filtre+1],1,1)
239    b = string.sub(ad.tt[ad.filtre+1],-1)
240    for i = 1,#ad.liste do
241        buff = {ad.liste[i][1],ad.liste[i][2],ad.liste[i][3]}
242        if(ad.filtre == 0) then
243            table.insert(ll,buff)
244            if(ldep == 0) then ldep = i end
245        else
246            c = string.sub(buff[1],1,1)
247            if(c == a or c == b)then
248                if(ldep == 0) then ldep = i end
249                table.insert(ll,buff)
250            end
251        end
252    end
253    luaWidget.set(fenP.parent,fenP.liste,"element",ll)
254    ad.ldep = ldep
255end
256
257ad.retPos = function(texte)
258    local i
259    for i=1,#ad.liste do
260        if(ad.liste[i][1]..ad.liste[i][2] > texte) then return i end
261    end
262    return 0
263end
264
265ad.setFiltre = function()
266    local i
267    if(Stylus.newPress and Stylus.Y < 15) then
268        for i = 1,#ad.tt do
269            luaWidget.set(fenP.parent,fenP[i],"check",false)
270        end
271        luaWidget.held(fenP.parent)
272        for i = 1,#ad.tt do
273            if(luaWidget.get(fenP.parent,fenP[i],"check")) then ad.filtre = i-1 end
274        end
275        ad.setToGListe()
276    end
277end
278
279ad.quit = false
280ad.pUp = false
281ad.rpUp = 0
282ad.fen_active = fenP.parent
283ad.showClav = false
284ad.tou = ""
285ad.entrer = 0
286ad.ancienY = 0
287ad.liste = nil
288ad.liste = {}
289ad.filtre = 0
290ad.action = 0
291ad.date = DateTime.new()
292ad.buff = ""
293ad.ldep = 1
294ad.ouvre()
295luaWidget.setSel(fenP.parent,fenP.liste,1)
296
297Debug.ON()
298Debug.setColor(Color.new(31,0,0))
299
300while not ad.quit do
301    Controls.read()
302    luaWidget.show(ad.fen_active)
303    if(ad.pUp) then
304        local rep
305        ad.popUp.show() -- Est-ce que l'on supprime?
306        rep = ad.popUp.held()
307        if(rep > 0) then
308            ad.pUp = false
309            if(rep == 1) then -- Oui on supprime
310                table.remove(ad.liste,position)
311                ad.setToGListe()
312                ad.enreg()
313                ad.fen_active = fenP.parent
314                ad.action = 0
315            --elseif(rep == 2) then -- Non on ne supprime pas
316                -- Bah rien alors
317            end
318        end
319    else
320        luaWidget.held(ad.fen_active)
321        if(ad.action == 0) then ad.setFiltre() end
322    end
323    if(luaWidget.get(fenP.parent,fenP.bNouv,"check")) then
324        luaWidget.set(fenP.parent,fenP.bNouv,"check",false)
325        luaWidget.set(fenN.parent,fenN.bSup,"visible",false)
326        ad.fen_active = fenN.parent
327        for i= 1,8 do
328            luaWidget.set(fenN.parent,fenN[i],"text","")
329        end
330        ad.action = 1
331    end
332    if(luaWidget.get(fenP.parent,fenP.bModif,"check")) then
333        luaWidget.set(fenP.parent,fenP.bModif,"check",false)
334        luaWidget.set(fenN.parent,fenN.bSup,"visible",true)
335        position = (luaWidget.get(fenP.parent,fenP.liste,"pos")-1) + ad.ldep
336        if(ad.liste[position] ~= nil) then
337            for i= 1,8 do
338                luaWidget.set(fenN.parent,fenN[i],"text",ad.liste[position][i])
339            end
340            ad.action = 2
341            ad.fen_active = fenN.parent
342        end
343    end
344    if(luaWidget.get(fenN.parent,fenN.bSup,"check")) then
345        luaWidget.set(fenN.parent,fenN.bSup,"check",false)
346        ad.popUp.create("Suppression contact","Voulez vous supprimer le contact ?",true,true,false)
347        ad.pUp = true
348    end
349    if(luaWidget.get(fenN.parent,fenN.bNo,"check")) then
350        luaWidget.set(fenN.parent,fenN.bNo,"check",false)
351        ad.fen_active = fenP.parent
352        ad.action = 0
353    end
354    if(luaWidget.get(fenP.parent,fenP.bQuit,"check")) then
355        luaWidget.set(fenP.parent,fenP.bQuit,"check",false)
356        ad.quit = true
357    end
358    if(luaWidget.get(fenN.parent,fenN.bOk,"check")) then
359        luaWidget.set(fenN.parent,fenN.bOk,"check",false)
360        ad.fen_active = fenP.parent
361        local nom = luaWidget.get(fenN.parent,fenN[1],"text")
362        local prenom = luaWidget.get(fenN.parent,fenN[2],"text")
363        local tel = luaWidget.get(fenN.parent,fenN[3],"text")
364        if(nom ~= "" or prenom ~= "" or tel ~= "") then
365            if(ad.action ~= 1) then
366                table.remove(ad.liste,position)
367            end
368            local posi = ad.retPos(nom..prenom)
369            if(posi == 0) then posi = #ad.liste+1 end
370            table.insert(ad.liste,posi,{nom,prenom,tel,
371                luaWidget.get(fenN.parent,fenN[4],"text"),luaWidget.get(fenN.parent,fenN[5],"text"),
372                luaWidget.get(fenN.parent,fenN[6],"text"),luaWidget.get(fenN.parent,fenN[7],"text"),
373                luaWidget.get(fenN.parent,fenN[8],"text")})
374            --tri
375            ad.setToGListe()
376            ad.enreg()
377        end
378        ad.action = 0
379    end
380    if(ad.showClav) then
381        libClavier.show(clav)
382        if(Stylus.newPress) then ad.tou = libClavier.held(clav,Stylus.X,Stylus.Y) end
383    end
384    if(ad.entrer == 0) then
385        for i = 1,8 do
386            if(luaWidget.get(fenN.parent,fenN[i],"check")) then
387                ad.entrer = i
388                if(i == 3 or i == 4 or i == 7) then libClavier.activePanel(clav,4)
389                elseif(i == 1) then libClavier.activePanel(clav,2)
390                else libClavier.activePanel(clav,1) end
391            end
392        end
393    else
394        if(not ad.showClav) then
395            libClavier.setText(clav,luaWidget.get(fenN.parent,fenN[ad.entrer],"text"))
396            ad.showClav = true
397            for i= 1,8 do
398                if(i ~= ad.entrer) then
399                    luaWidget.set(fenN.parent,fenN[i+8],"visible",false)
400                end
401                luaWidget.set(fenN.parent,fenN[i],"visible",false)
402            end
403            ad.ancienY = luaWidget.get(fenN.parent,fenN[ad.entrer],"y")
404            luaWidget.set(fenN.parent,fenN[ad.entrer+8],"align",_ALEFT)
405            luaWidget.set(fenN.parent,fenN[ad.entrer+8],"y",45)
406            luaWidget.set(fenN.parent,fenN.bOk,"visible",false)
407            luaWidget.set(fenN.parent,fenN.bNo,"visible",false)
408            if(ad.action == 2) then luaWidget.set(fenN.parent,fenN.bSup,"visible",false) end
409        else
410            if(ad.tou == "Enter" or ad.tou == "Esc") then
411                if(ad.tou == "Enter") then
412                    local buff = libClavier.getText(clav)
413                    if(ad.entrer == 1) then buff = string.upper(buff)
414                    elseif(ad.entrer == 2) then
415                        buff = string.upper(string.sub(buff,1,1))..string.lower(string.sub(buff,2))
416                    end
417                    luaWidget.set(fenN.parent,fenN[ad.entrer],"text",buff)
418                end
419                luaWidget.set(fenN.parent,fenN[ad.entrer],"check",false)
420                ad.showClav = false
421                ad.tou = ""
422                for i= 1,8 do
423                    if(i ~= ad.entrer) then
424                        luaWidget.set(fenN.parent,fenN[i+8],"visible",true)
425                    end
426                    luaWidget.set(fenN.parent,fenN[i],"visible",true)
427                end
428                luaWidget.set(fenN.parent,fenN[ad.entrer+8],"align",_ARIGHT)
429                luaWidget.set(fenN.parent,fenN[ad.entrer+8],"y",ad.ancienY)
430                luaWidget.set(fenN.parent,fenN.bOk,"visible",true)
431                luaWidget.set(fenN.parent,fenN.bNo,"visible",true)
432                if(ad.action == 2) then luaWidget.set(fenN.parent,fenN.bSup,"visible",true) end
433                ad.entrer = 0
434            end
435        end
436    end
437    if(ad.action == 0) then
438        position = (luaWidget.get(fenP.parent,fenP.liste,"pos")-1) + ad.ldep
439        ad.carteVisi(28,60,ad.liste[position])
440    elseif(ad.action == 1 or ad.action == 2) then
441        ad.carteVisi(28,60,{luaWidget.get(fenN.parent,fenN[1],"text"),luaWidget.get(fenN.parent,fenN[2],"text"),
442                luaWidget.get(fenN.parent,fenN[3],"text"),luaWidget.get(fenN.parent,fenN[4],"text"),
443                luaWidget.get(fenN.parent,fenN[5],"text"),luaWidget.get(fenN.parent,fenN[6],"text"),
444                luaWidget.get(fenN.parent,fenN[7],"text"),luaWidget.get(fenN.parent,fenN[8],"text")})
445    end
446    screen.print(SCREEN_UP,59,27,"CARNET D'ADRESSES V".._VADRESSE)
447    ad.date = DateTime.getCurrentTime()
448    ad.buff = string.format("%02d/%02d/%04d",ad.date.day,ad.date.month,ad.date.year)
449    screen.drawFillRect(SCREEN_UP,1,1,68,15,ad.color.jaune)
450    screen.drawRect(SCREEN_UP,1,1,68,15,ad.color.vertc)
451    screen.print(SCREEN_UP,4,4,ad.buff,ad.color.noir)
452    ad.buff = string.format("%02d:%02d:%02d",ad.date.hour,ad.date.minute,ad.date.second)
453    screen.drawFillRect(SCREEN_UP,199,1,255,15,ad.color.jaune)
454    screen.drawRect(SCREEN_UP,199,1,255,15,ad.color.vertc)
455    screen.print(SCREEN_UP,202,4,ad.buff,ad.color.noir)
456    screen.print(SCREEN_UP,170,181,"by PAPY (2010)")
457    render()
458end
459
460--*************************************
461--* Si _VDBUS existe alors on envois un message
462--* comportant nom, prenom, tel1, tel2, adresse
463--*************************************
464if(ad.dbus) then
465    local buff = {}
466    buff.nom = ad.liste[position][1]
467    buff.prenom = ad.liste[position][2]
468    buff.tel1 = ad.liste[position][3]
469    buff.tel2 = ad.liste[position][4]
470    buff.email = ad.liste[position][5]
471    buff.adr = ad.liste[position][6]
472    buff.cp = ad.liste[position][7]
473    buff.ville = ad.liste[position][8]
474    DBus.newMess("cada",buff,2)
475end
476
477_VADRESSE = nil
478luaWidget.del(fenP.parent)
479luaWidget.del(fenN.parent)
480luaWidget.del(fenPop.parent)
481fenP = nil
482fenN = nil
483fenPop = nil
484unloadLib(ad.libs)
485delStandard()
486position = nil
487ad = nil
488i = nil
libClavier.lua
1dofile("standard.lua")
2_VCLAVIER = 2.01
3clavier = {}
4coul = {}
5coul.blanc = Color.new(31,31,31)
6coul.noir = Color.new(0,0,0)
7coul.bleu = Color.new(0,0,31)
8coul.bleuf = Color.new(1,3,15)
9coul.bleuv = Color.new(1,29,19)
10
11clavier.new = function()
12    local cla = {}
13    local i,j
14    for i= 1,6 do
15        cla[i] = {}
16        for j= 1,10 do
17            cla[i][j] = {}
18            -- cla[i][j][1] = {}
19            --[[
20            cla[i][j][1].t = "" --Texte du panneau [x]
21            cla[i][j][1].cc = coul.blanc --Couleur du cadre
22            cla[i][j][1].cf = coul.bleu --Couleur du fond
23            cla[i][j][1].cs = coul.blanc --Couleur du fond selectionné
24            cla[i][j][1].ct = coul.blanc --Couleur du texte
25            cla[i][j][1].op = 0 --Activation du panneau x si > 0
26            ]]
27        end
28    end
29    cla.ta = 1 --Panneau actif
30    cla.rep = Timer.new() --Timer de repetition
31    cla.xscr = 1 --Pos x de l'ecran
32    cla.yscr = 1 --Pos y de l'ecran
33    cla.lon = 1 --Longueur de l'ecran en case
34    cla.ascr = false --Affichage de l'ecran
35    cla.cc = coul.blanc --Couleur du cadre de l'ecran
36    cla.cf = coul.noir --Couleur du fond de l'ecran
37    cla.ct = coul.blanc --Couleur du texte de l'ecran
38    cla.text = "" --Texte entrer au clavier
39    return cla
40end
41
42clavier.del = function(cla)
43    if(cla == nil) then
44        clavier = nil
45        coul = nil
46        _VCLAVIER = nil
47    else cla = nil end
48end
49
50clavier.addKey = function(cla,x,y,text,nbc,op,cc,cf,cs,ct)
51    local key = {}
52    if(type(text) == "number") then text = string.char(text) end
53    key.t = text --Texte du panneau [x]
54    if(cc == nil) then key.cc = coul.blanc
55    else key.cc = cc end --Couleur du cadre
56    if(cf == nil) then key.cf = coul.bleu
57    else key.cf = cf end --Couleur du fond
58    if(cs == nil) then key.cs = coul.bleuv
59    else key.cs = cs end --Couleur du fond selectionné
60    if(ct == nil) then key.ct = coul.blanc
61    else key.ct = ct end --Couleur du texte
62    if(op == nil) then key.op = 0
63    else key.op = op end --Activation du panneau x si > 0
64    if(nbc == nil) then key.nbc = 1
65    else key.nbc = nbc end --Nb de case recouverte par la touche
66    key.app = false --La touche n'est pas appuyer
67    table.insert(cla[y][x],key)
68end
69
70clavier.nbPanel = function(cla)
71    local i,j
72    local nbp = 0
73    for i = 1,6 do
74        for j= 1,10 do
75            if(#cla[i][j] > nbp) then nbp = #cla[i][j] end
76        end
77    end
78    return nbp
79end
80
81clavier.modKey = function(cla,x,y,panneau,text,nbc,op,cc,cf,cs,ct)
82    if(text ~= nil) then cla[y][x][panneau].t = text end --Texte du panneau [x]
83    if(cc ~= nil) then cla[y][x][panneau].cc = cc end --Couleur du cadre
84    if(cf ~= nil) then cla[y][x][panneau].cf = cf end --Couleur du fond
85    if(cs ~= nil) then cla[y][x][panneau].cs = cs end --Couleur du fond selectionné
86    if(ct ~= nil) then cla[y][x][panneau].ct = ct end --Couleur du texte
87    if(op ~= nil) then cla[y][x][panneau].op = op end --Activation du panneau x si > 0
88    if(nbc ~= nil) then cla[y][x][panneau].nbc = nbc end --Nb de case recouverte par la touche
89end
90
91clavier.delKey = function(cla,x,y,panneau)
92    table.remove(cla[y][x],panneau)
93end
94
95clavier.modScreen = function(cla,x,y,lon,cc,cf,ct)
96    cla.xscr = x
97    cla.yscr = y
98    cla.lon = lon
99    if(cc ~= nil) then cla.cc = cc end --Couleur du cadre
100    if(cf ~= nil) then cla.cf = cf end --Couleur du fond
101    if(ct ~= nil) then cla.ct = ct end --Couleur du texte
102end
103
104clavier.activeScreen = function(cla,active)
105    if active then cla.ascr = true
106    else cla.ascr = false end
107end
108
109clavier.setText = function(cla,text)
110    cla.text = text
111end
112
113clavier.getText = function(cla)
114    return cla.text
115end
116
117clavier.activePanel = function(cla,numPanel)
118    local maxP = clavier.nbPanel(cla)
119    if(numPanel > 0 and numPanel < maxP+1) then
120        cla.ta = numPanel
121    end
122end
123
124clavier.show = function(mat)
125    local i,j,x,y,xx,yy,buff,lon
126    local pan = mat.ta
127    for i = 1,6 do
128        y = ((i-1)*25)+42
129        for j = 1,10 do
130            -- Debug.print(i.."."..j.."."..pan) render()
131            if(mat[i][j][pan] ~= nil) then
132                if(mat[i][j][pan].t ~= "") then
133                    x = ((j-1)*25)+3
134                    lon = (mat[i][j][pan].nbc -1)*25
135                    if(mat[i][j][pan].app) then
136                        screen.drawFillRect(SCREEN_DOWN,x+1,y+1,x+23+lon,y+23,mat[i][j][pan].cs)
137                        if(mat.rep:time() >= 200) then
138                            mat.rep:reset()
139                            mat[i][j][pan].app = false
140                        end
141                    else
142                        screen.drawFillRect(SCREEN_DOWN,x+1,y+1,x+23+lon,y+23,mat[i][j][pan].cf)
143                    end
144                    screen.drawRect(SCREEN_DOWN,x,y,x+24+lon,y+24,mat[i][j][pan].cc)
145                    xx = 12-(string.len(mat[i][j][pan].t)*3)+x + math.floor(lon/2)
146                    yy = y +9
147                    -- if(type(mat[i][j][pan].t) == "string") then buff = mat[i][j][pan].t
148                    -- else buff = string.char(mat[i][j][pan].t) end
149                    buff = mat[i][j][pan].t
150                    screen.print(SCREEN_DOWN,xx,yy,buff,mat[i][j][pan].ct)
151                end
152            end
153        end
154    end
155    if(mat.ascr) then
156        y = ((mat.yscr -1)*25)+42
157        x = ((mat.xscr -1)*25)+3
158        lon = (mat.lon)*25
159        screen.drawFillRect(SCREEN_DOWN,x+1,y+1,x+lon-2,y+23,mat.cf)
160        screen.drawRect(SCREEN_DOWN,x,y,x+lon-1,y+24,mat.cc)
161        lon = math.floor((lon-8)/6)
162        buff = string.sub(mat.text,-lon)
163        screen.print(SCREEN_DOWN,x+3,y+9,buff,mat.ct)
164    end
165end
166
167clavier.held = function(mat,x,y)
168    local i,j,xx,yy,lon
169    local pan = mat.ta
170    local kre
171    local result = ""
172    for i = 1,6 do
173        yy = 42+((i-1)*25)
174        for j = 1,10 do
175            xx = 3+((j-1)*25)
176            if(mat[i][j][pan] ~= nil) then
177                if(mat[i][j][pan].t ~= "") then
178                    lon = (mat[i][j][pan].nbc)*25
179                    kre = square(xx,yy,xx+lon,yy+25)
180                    if(estDedans(x,y,kre)) then
181                        if(mat[i][j][pan].op == 0) then
182                            result = mat[i][j][pan].t
183                            mat.text = mat.text..result
184                        elseif(mat[i][j][pan].op > 0) then mat.ta = mat[i][j][pan].op
185                        else
186                            if(mat[i][j][pan].op == -4) then
187                                result =" "
188                                mat.text = mat.text..result
189                            elseif(mat[i][j][pan].op == -2) then
190                                mat.text = string.sub(mat.text,1,-2)
191                                result = mat[i][j][pan].t
192                            else result = mat[i][j][pan].t end
193                        end
194                        mat[i][j][pan].app = true
195                        mat.rep:start()
196                    end
197                end
198            end
199        end
200    end
201    return result
202end
luaWidget.lua
1     de création et gestion de GUI ]]
2
3V_LUAWIDGET = 0.52
4
5luaWidget = {}
6luaWidget.tabobj = {}
7luaWidget.tabwidget = {}
8luaWidget.tabwidget.nb = 0
9TBUTTON = 1 -- type bouton
10TTEXTBOX = 2 -- type textBox
11TCHECKBOX = 3 -- type checkBox
12TRADIOBUTTON = 4 -- type radio Button
13TLINK = 5 -- type lien
14TNUMUPDOWN = 6 -- type numeric UpDown
15TPROGRESSBAR = 7 -- type barre de progression
16TLISTVIEW = 8 -- type liste
17TTABLEVIEW = 9 -- type tableview
18TCOMBOBOX = 10 -- type combobox
19
20_ALEFT = 1 -- Alignement à gauche
21_ARIGHT = 2 -- Alignement à droite
22_ACENTER = 3 -- Alignement au centre
23_ATRONQ = 4 -- Aligne à gauche et tronque la phrase si elle est trop grande
24
25_BSTART = 1
26_BSELECT = 2
27_BA = 3
28_BB = 4
29_BX = 5
30_BY = 6
31
32luaWidget.newWidget = function(scr)
33    luaWidget.tabwidget.nb = luaWidget.tabwidget.nb +1
34    luaWidget.tabobj[luaWidget.tabwidget.nb] = {}
35    luaWidget.tabwidget[luaWidget.tabwidget.nb] = {}
36    luaWidget.tabwidget[luaWidget.tabwidget.nb].scr = scr
37    return luaWidget.tabwidget.nb
38end
39
40luaWidget.widgetHide = function(widget,hide)
41    local show = not hide
42    local obj, i
43    for i, obj in pairs(luaWidget.tabobj[widget]) do
44        obj.visible = show
45    end
46end
47
48luaWidget.changeScreen = function(widget, scr)
49    luaWidget.tabwidget[widget].scr = scr
50end
51
52luaWidget.newObj = function (parent, typeobj, x, y, width, height, opt1, opt2, opt3, opt4)
53    local obj = {}
54    local i
55    obj.type = typeobj
56    obj.parent = parent
57    obj.x = x
58    obj.y = y
59    obj.width = width
60    obj.height = height
61    obj.text = ""
62    obj.element = {}
63    obj.image = 0
64    obj.min = 0
65    obj.max = 0
66    obj.pos = 0
67    obj.inc = 1
68    obj.cFond = Color.new(31,31,31)
69    obj.cCadre = Color.new(0,0,0)
70    obj.cText = obj.cCadre
71    obj.cFleche = obj.cCadre
72    obj.cSel = Color.new(15,15,31)
73    obj.cTextSel = Color.new(27,27,27)
74    obj.visible = true
75    obj.active = true
76    obj.check = false
77    obj.newPress = false
78    obj.doubleClick = false
79    obj.align = _ALEFT
80    obj.num = #luaWidget.tabobj[parent] + 1
81    if(obj.type == TBUTTON) then
82        obj.cCadre = Color.new(31,31,31)
83        obj.cFond = Color.new(20,20,20)
84        obj.cText = Color.new(31,31,31)
85        if(opt1 ~= nil) then obj.text = opt1 end
86        if(opt2 ~= nil) then obj.align = opt2 end
87        if(opt3 ~= nil) then obj.min = opt3 end
88        if(opt4 ~= nil) then obj.image = Image.load(opt4,VRAM) end
89    elseif(obj.type == TTEXTBOX) then
90        if(opt1 ~= nil) then obj.text = opt1 end
91        if(opt2 ~= nil) then obj.align = opt2 end
92        if(opt3 ~= nil) then
93            if(opt3) then
94            -- Calcul du nombre de ligne affichable
95                obj.max = math.floor((obj.height-4)/10)
96            end
97        end
98    elseif(obj.type == TLINK) then
99        if(opt1 ~= nil) then obj.text = opt1 end
100        obj.cText = Color.new(3,0,30)
101        obj.width = string.len(obj.text)*6
102        obj.height = 9
103    elseif(obj.type == TRADIOBUTTON) then
104        if(opt1 ~= nil) then
105            for i=1,#opt1 do
106                local buff = {}
107                buff.text = opt1[i]
108                buff.check = false
109                table.insert(obj.element,buff)
110                obj.height = #obj.element * 11
111            end
112        end
113        if(opt2 ~= nil) then obj.align = opt2 end
114    elseif(obj.type == TCHECKBOX) then
115        obj.cSel = Color.new(0,0,0)
116        if(opt1 ~= nil) then obj.text = opt1 end
117        if(opt2 ~= nil) then obj.align = opt2 end
118    elseif(obj.type == TNUMUPDOWN) then
119        obj.width = 10
120        obj.height = 20
121        if(opt1 ~= nil) then obj.min = opt1 end
122        if(opt2 ~= nil) then obj.max = opt2 end
123        if(opt3 ~= nil) then obj.pos = opt3 end
124    elseif(obj.type == TPROGRESSBAR) then
125        if(opt1 ~= nil) then obj.text = opt1 end
126        if(opt2 ~= nil) then obj.max = opt2 end
127    elseif(obj.type == TLISTVIEW) then
128        if(opt1 ~= nil) then
129            for i=1,#opt1 do
130                local buff = {}
131                    buff.text = opt1[i]
132                    table.insert(obj.element,buff)
133            end
134            obj.max = #obj.element
135            obj.pos = 1
136        end
137        obj.min = 1
138    elseif(obj.type == TCOMBOBOX) then
139        local xx,yy,wd,hg
140        if(obj.height > 96) then obj.height = 90 end
141        if(obj.height+obj.y > 192) then
142            xx = obj.x
143            yy = obj.y-(obj.height-11)
144            wd = obj.width
145            hg = obj.height-10
146            obj.height = 11
147            table.insert(luaWidget.tabobj[parent],obj)
148            obj.min = luaWidget.newObj(parent,TLISTVIEW,xx,yy,wd,hg,opt1)
149        else
150            xx = obj.x
151            yy = obj.y+11
152            wd = obj.width
153            hg = obj.height-11
154            obj.height = 11
155            table.insert(luaWidget.tabobj[parent],obj)
156            obj.min = luaWidget.newObj(parent,TLISTVIEW,xx,yy,wd,hg,opt1)
157        end
158        luaWidget.set(obj.parent,obj.min,"visible",false)
159    elseif(obj.type == TTABLEVIEW) then
160        local i
161        obj.pos = 0
162        if(opt1 ~= nil) then
163            if(opt1[0] ~= nil) then
164                for i =0, #opt1 do
165                    table.insert(obj.element,opt1[i])
166                end
167            else
168                obj.element = opt1
169            end
170            local tab = {}
171            local taillecol = math.floor((obj.width -10) / #obj.element[1])
172            for i = 1, #obj.element[1] do
173                table.insert(tab, taillecol)
174            end
175            obj.element[0] = tab
176            obj.max = #obj.element -1
177            obj.pos = 1
178        end
179        if(opt2 ~= nil) then
180            obj.element[0] = opt2
181        end
182    end
183    if(obj.type ~= TCOMBOBOX) then table.insert(luaWidget.tabobj[parent],obj) end
184    return obj.num
185end
186
187luaWidget.del = function(parent, objet)
188    local i,j
189    if(objet ~=nil) then
190        luaWidget.tabobj[parent][objet].type = 0
191        luaWidget.tabobj[parent][objet].element = 0
192        if(luaWidget.tabobj[parent][objet].image ~= 0) then Image.destroy(luaWidget.tabobj[parent][objet].image) end
193    elseif(parent ~= nil) then
194
195    else
196        -- tabobj = nil
197        TBUTTON = nil
198        TTEXTBOX = nil
199        TCHECKBOX = nil
200        TRADIOBUTTON = nil
201        TLINK = nil
202        TNUMUPDOWN = nil
203        TLISTVIEW = nil
204        TPROGRESSBAR = nil
205        TTABLEVIEW = nil
206        TCOMBOBOX = nil
207        _ALEFT = nil
208        _ARIGHT = nil
209        _ACENTER = nil
210        _BSTART = nil
211        _BSELECT = nil
212        _BA = nil
213        _BB = nil
214        _BX = nil
215        _BY = nil
216        V_LIBGUI = nil
217        if(#luaWidget.tabobj > 0) then
218            for i = 1, #luaWidget.tabobj do
219                for j =1,#luaWidget.tabobj[i] do
220                    luaWidget.del(luaWidget.tabobj[i][j])
221                end
222            end
223        end
224        luaWidget = nil
225    end
226end
227
228luaWidget.set = function(parent, obj, opt, value)
229    local i
230    if(luaWidget.tabobj[parent][obj][opt] ~= nil or opt == "multiline" or opt == "dimcol") then
231        if(opt == "image") then
232            if(luaWidget.tabobj[parent][obj].image ~=0) then
233                Image.destroy(luaWidget.tabobj[parent][obj].image)
234                luaWidget.tabobj[parent][obj][opt] = Image.load(value,VRAM)
235            else luaWidget.tabobj[parent][obj][opt] = Image.load(value,VRAM) end
236        elseif(opt == "element") then
237            if(luaWidget.tabobj[parent][obj].type == TCOMBOBOX) then
238                luaWidget.set(parent,luaWidget.tabobj[parent][obj].min,"element",value)
239            end
240            for i=1,#luaWidget.tabobj[parent][obj].element do
241                table.remove(luaWidget.tabobj[parent][obj].element)
242            end
243            for i=1,#value do
244                local buff = {}
245                if(luaWidget.tabobj[parent][obj].type == TRADIOBUTTON) then
246                    buff.text = value[i]
247                    buff.check = false
248                    table.insert(luaWidget.tabobj[parent][obj].element,buff)
249                    luaWidget.tabobj[parent][obj].height = #luaWidget.tabobj[parent][obj].element * 11
250                elseif(luaWidget.tabobj[parent][obj].type == TLISTVIEW) then
251                    buff.text = value[i]
252                    table.insert(luaWidget.tabobj[parent][obj].element,buff)
253                elseif(luaWidget.tabobj[parent][obj].type == TTABLEVIEW) then
254                    table.insert(luaWidget.tabobj[parent][obj].element,value[i])
255                end
256            end
257            --******************** LISTVIEW ********************
258            if(luaWidget.tabobj[parent][obj].type == TLISTVIEW) then
259                luaWidget.tabobj[parent][obj].max = #luaWidget.tabobj[parent][obj].element
260                luaWidget.tabobj[parent][obj].pos = 1
261            --******************** TABLEVIEW ********************
262            elseif(luaWidget.tabobj[parent][obj].type == TTABLEVIEW) then
263                local tab = {}
264                local i
265                local taillecol = math.floor((luaWidget.tabobj[parent][obj].width -10) / #luaWidget.tabobj[parent][obj].element[1])
266                for i = 1, #luaWidget.tabobj[parent][obj].element[1] do
267                    table.insert(tab, taillecol)
268                end
269                luaWidget.tabobj[parent][obj].element[0] = tab
270                luaWidget.tabobj[parent][obj].max = #luaWidget.tabobj[parent][obj].element -1
271                luaWidget.tabobj[parent][obj].pos = 1
272            end
273        elseif(opt == "min") then
274            luaWidget.tabobj[parent][obj].min = value
275            if(luaWidget.tabobj[parent][obj].pos < value) then luaWidget.tabobj[parent][obj].pos = value end
276        elseif(opt == "max") then
277            luaWidget.tabobj[parent][obj].max = value
278            if(luaWidget.tabobj[parent][obj].pos > value) then luaWidget.tabobj[parent][obj].pos = value end
279        elseif(opt == "pos") then
280            if(value > luaWidget.tabobj[parent][obj].max) then value = luaWidget.tabobj[parent][obj].max end
281            if(value < luaWidget.tabobj[parent][obj].min) then value = luaWidget.tabobj[parent][obj].min end
282            luaWidget.tabobj[parent][obj].pos = value
283        elseif(opt == "multiline" and luaWidget.tabobj[parent][obj].type == TTEXTBOX) then
284            if(value) then
285                luaWidget.tabobj[parent][obj].max = math.floor((luaWidget.tabobj[parent][obj].height-4)/10)
286            else
287                luaWidget.tabobj[parent][obj].max = 0
288            end
289        elseif(opt == "height" and luaWidget.tabobj[parent][obj].type == TTEXTBOX) then
290            if(luaWidget.tabobj[parent][obj].max > 0) then
291                luaWidget.tabobj[parent][obj].max = math.floor((value-4)/10)
292            end
293        elseif(opt == "dimcol") then
294            luaWidget.tabobj[parent][obj].element[0] = value
295        else
296            luaWidget.tabobj[parent][obj][opt] = value
297        end
298        if(luaWidget.tabobj[parent][obj].type == TLINK and opt == "text") then
299            luaWidget.tabobj[parent][obj].width = string.len(luaWidget.tabobj[parent][obj].text)*6
300        end
301    end
302end
303
304luaWidget.get = function(parent, obj, opt)
305    if(opt == "multiline" and luaWidget.tabobj[parent][obj].type == TTEXTBOX) then
306        if(luaWidget.tabobj[parent][obj].max > 0) then return true
307        else return false end
308    elseif(opt == "dimcol" and luaWidget.tabobj[parent][obj].type == TTABLEVIEW) then
309        return luaWidget.tabobj[parent][obj].element[0]
310    else
311        return luaWidget.tabobj[parent][obj][opt]
312    end
313end
314
315luaWidget.assocButton = function(parent, obj,bouton)
316    if(luaWidget.tabobj[parent][obj].type == TBUTTON) then
317        luaWidget.tabobj[parent][obj].min = bouton
318    end
319end
320
321luaWidget.move = function(parent, obj, x, y)
322    if(x+luaWidget.tabobj[parent][obj].width > 256) then x = 256-luaWidget.tabobj[parent][obj].width end
323    if(y+luaWidget.tabobj[parent][obj].height > 192) then y = 192-luaWidget.tabobj[parent][obj].height end
324    if(x<0) then x = 0 end
325    if(y<0) then y = 0 end
326    luaWidget.tabobj[parent][obj].x = x
327    luaWidget.tabobj[parent][obj].y = y
328end
329
330luaWidget.getSel = function(parent, obj)
331    local i, result = 0,0
332    if(luaWidget.tabobj[parent][obj].type == TRADIOBUTTON) then
333        for i=1,#luaWidget.tabobj[parent][obj].element do
334            if(luaWidget.tabobj[parent][obj].element[i].check) then result = luaWidget.tabobj[parent][obj].element[i].text end
335        end
336    elseif(luaWidget.tabobj[parent][obj].type == TLISTVIEW) then
337        result = luaWidget.tabobj[parent][obj].element[luaWidget.tabobj[parent][obj].pos].text
338    elseif(luaWidget.tabobj[parent][obj].type == TCOMBOBOX) then
339        result = luaWidget.get(parent,obj,"text")
340    end
341    return result
342end
343
344luaWidget.setSel = function(parent, obj, sel)
345    local i
346    if(luaWidget.tabobj[parent][obj].type == TRADIOBUTTON) then
347        if(type(sel) == "number") then
348            if(luaWidget.tabobj[parent][obj].element[sel] ~= nil) then
349                for i= 1, #luaWidget.tabobj[parent][obj].element do
350                    luaWidget.tabobj[parent][obj].element[i].check = false
351                end
352                luaWidget.tabobj[parent][obj].element[sel].check = true
353            end
354        else
355            for i= 1, #luaWidget.tabobj[parent][obj].element do
356                luaWidget.tabobj[parent][obj].element[i].check = false
357                if(luaWidget.tabobj[parent][obj].element[i].text == sel) then luaWidget.tabobj[parent][obj].element[i].check = true end
358            end
359        end
360    elseif(luaWidget.tabobj[parent][obj].type == TLISTVIEW) then
361        if(sel < 1) then sel = 1 end
362        if(sel > #luaWidget.tabobj[parent][obj].element) then sel = #luaWidget.tabobj[parent][sel].element end
363        luaWidget.tabobj[parent][obj].pos = sel
364    elseif(luaWidget.tabobj[parent][obj].type == TCOMBOBOX) then
365        luaWidget.setSel(parent,luaWidget.tabobj[parent][obj].min,sel)
366        luaWidget.set(parent,obj,"text",luaWidget.getSel(parent,luaWidget.tabobj[parent][obj].min))
367    end
368end
369
370luaWidget.addElement = function(parent,obj,element)
371    if(luaWidget.tabobj[parent][obj].type == TLISTVIEW) then
372        local buff = {}
373        buff.text = element
374        table.insert(luaWidget.tabobj[parent][obj].element,buff)
375        luaWidget.tabobj[parent][obj].max = luaWidget.tabobj[parent][obj].max+1
376    end
377    if(luaWidget.tabobj[parent][obj].type == TTABLEVIEW) then
378        table.insert(luaWidget.tabobj[parent][obj].element,element)
379        luaWidget.tabobj[parent][obj].max = #luaWidget.tabobj[parent][obj].element -1
380        luaWidget.tabobj[parent][obj].pos = #luaWidget.tabobj[parent][obj].element -1
381    end
382end
383
384luaWidget.show = function(widget)
385    local obj, a
386    local scr = luaWidget.tabwidget[widget].scr
387    local ombre = Color.new(10,10,10)
388    for a, obj in pairs(luaWidget.tabobj[widget]) do
389        if(obj.visible) then
390            if(obj.type == TBUTTON) then
391                local add, xx, yy, ximg, wimg
392                local bout = ""
393                if(obj.min == _BSTART) then bout = "START"
394                elseif(obj.min == _BSELECT) then bout = "SELECT"
395                elseif(obj.min == _BA) then bout = "A"
396                elseif(obj.min == _BB) then bout = "B"
397                elseif(obj.min == _BX) then bout = "X"
398                elseif(obj.min == _BY) then bout = "Y"
399                end
400                if(obj.width > obj.height) then wimg = obj.height-6 else wimg = obj.width-6 end
401                if(obj.image ~= 0) then Image.scale(obj.image, wimg, wimg) end
402                screen.drawFillRect(scr, obj.x, obj.y, obj.x+obj.width, obj.y+obj.height, obj.cFond)
403                if obj.check then add = 1 else add = 0 end
404                screen.drawRect(scr, obj.x-add, obj.y-add, obj.x+obj.width-add, obj.y+obj.height-add, obj.cCadre)
405                screen.drawRect(scr, obj.x-1, obj.y-1, obj.x+obj.width, obj.y+obj.height, ombre)
406                local buff = string.gsub(obj.text,"%%B",bout)
407                buff = string.sub(buff,1,(obj.width-6)/6)
408                if (obj.align == _ACENTER) then
409                    xx = math.floor(obj.width/2)-(string.len(buff)*3)+obj.x
410                    if(obj.image ~= 0) then
411                        ximg = math.floor(obj.width/2)-(wimg/2)+obj.x
412                    end
413                elseif (obj.align == _ARIGHT) then
414                    xx = obj.x+ obj.width -(string.len(buff)*6)-6
415                    if(obj.image ~= 0) then ximg = obj.x+4 end
416                else
417                    xx = obj.x+4
418                    if(obj.image ~= 0) then ximg = obj.width + obj.x - wimg -4 end
419                end
420                yy = obj.y+math.floor((obj.height/2)-4.5)+1
421                if(obj.image ~= 0) then screen.blit(scr, ximg+add, obj.y+3+add, obj.image) end
422                screen.print(scr,xx+1+add,yy+1+add,buff,ombre)
423                screen.print(scr,xx+add,yy+add,buff,obj.cText)
424            elseif(obj.type == TTEXTBOX) then
425                screen.drawFillRect(scr, obj.x, obj.y, obj.x+obj.width, obj.y+obj.height, obj.cFond)
426                screen.drawRect(scr, obj.x, obj.y, obj.x+obj.width, obj.y+obj.height, obj.cCadre)
427                local buff = {}
428                local posx = obj.x+2
429                local posy = obj.y+math.floor((obj.height/2)-4.5)+1
430                if(obj.max > 0) then posy = obj.y+math.floor((obj.height/2)-(5*obj.max))+1 end
431                local maxcavi = (obj.width-6)/6
432                if(obj.max == 0) then
433                    if string.len(obj.text) > maxcavi then
434                        local buft = string.sub(obj.text,0,maxcavi)
435                        local w=0
436                        local ww
437                        while w~= nil do
438                            ww = w
439                            w = string.find(buft, "%s",w+1)
440                        end
441                        buft = string.sub(buft,0,ww-1)
442                        table.insert(buff,buft)
443                    else table.insert(buff,obj.text) end
444                else
445                    if string.len(obj.text) > maxcavi then
446                        local buft = string.sub(obj.text,0,maxcavi)
447                        local w=0
448                        local ww, i, dep
449                        for i = 1, obj.max do
450                            while w~= nil do
451                                ww = w
452                                w = string.find(buft, "%s",w+1)
453                            end
454                            table.insert(buff,string.sub(buft,0,ww-1))
455                            dep = ww+1
456                            buft = string.sub(obj.text,dep,dep+maxcavi)
457                        end
458                    else table.insert(buff,obj.text) end
459                end
460                local i
461                for i= 1, #buff do
462                    if obj.align == _ARIGHT then
463                        posx = (obj.x+obj.width)-3-(string.len(buff[i])*6)
464                    elseif obj.align == _ACENTER then
465                        posx = (math.floor(obj.width/2)-(string.len(buff[i])*3))+obj.x
466                    elseif obj.align == _ATRONQ and obj.max < 1 then
467                        local maxcara = math.floor((obj.width-4)/6)
468                        local deb = math.floor(maxcara/3)
469                        if(deb<1) then deb = 1 end
470                        local dep = deb+3-maxcara
471                        if(string.len(obj.text) > maxcara) then
472                            buff[i] = string.sub(obj.text,1,deb).."..."..string.sub(obj.text,dep)
473                        end
474                    end
475                    screen.print(scr,posx,posy+((i-1)*10),buff[i],obj.cText)
476                end
477            elseif(obj.type == TCHECKBOX) then
478                local xx = obj.x
479                local yy = obj.y
480                if (obj.align == _ARIGHT) then xx = obj.x+(string.len(obj.text)*6)+4 end
481                screen.drawFillRect(scr,xx,yy,xx+10,yy+10, obj.cFond)
482                screen.drawRect(scr, xx+1, yy+1, xx+11, yy+11, ombre)
483                screen.drawRect(scr, xx, yy, xx+10, yy+10, obj.cCadre)
484                if (obj.align == _ARIGHT) then
485                    screen.print(scr, obj.x, obj.y+2, obj.text, obj.cText)
486                else
487                    screen.print(scr, obj.x+14, obj.y+2, obj.text, obj.cText)
488                end
489                if obj.check then
490                    screen.drawLine(scr, xx+2, yy+3, xx+8, yy+9, obj.cSel)
491                    screen.drawLine(scr, xx+8, yy+3, xx+2, yy+9, obj.cSel)
492                    screen.drawLine(scr, xx+2, yy+2, xx+8, yy+8, obj.cSel)
493                    screen.drawLine(scr, xx+8, yy+2, xx+2, yy+8, obj.cSel)
494                end
495            elseif(obj.type == TRADIOBUTTON) then
496                local xx = obj.x
497                local yy
498                local i, j
499                for i=1,#obj.element do
500                    yy = obj.y+((i-1)*11)
501                    if (obj.align == _ARIGHT) then xx = obj.x+obj.width-10 end
502                    --Contour du cercle
503                    screen.drawLine(scr,xx+3,yy,xx+7,yy,obj.cCadre)
504                    screen.drawLine(scr,xx+2,yy+1,xx+8,yy+1,obj.cCadre)
505                    screen.drawLine(scr,xx+1,yy+2,xx+9,yy+2,obj.cCadre)
506                    for j=3,6 do
507                    screen.drawLine(scr,xx,yy+j,xx+10,yy+j,obj.cCadre)
508                    end
509                    screen.drawLine(scr,xx+1,yy+7,xx+9,yy+7,obj.cCadre)
510                    screen.drawLine(scr,xx+2,yy+8,xx+8,yy+8,obj.cCadre)
511                    screen.drawLine(scr,xx+3,yy+9,xx+7,yy+9,obj.cCadre)
512                    -- remplissage du cercle
513                    screen.drawLine(scr,xx+3,yy+1,xx+7,yy+1,obj.cFond)
514                    screen.drawLine(scr,xx+2,yy+2,xx+8,yy+2,obj.cFond)
515                    screen.drawLine(scr,xx+1,yy+3,xx+9,yy+3,obj.cFond)
516                    screen.drawLine(scr,xx+1,yy+4,xx+9,yy+4,obj.cFond)
517                    screen.drawLine(scr,xx+1,yy+5,xx+9,yy+5,obj.cFond)
518                    screen.drawLine(scr,xx+1,yy+6,xx+9,yy+6,obj.cFond)
519                    screen.drawLine(scr,xx+2,yy+7,xx+8,yy+7,obj.cFond)
520                    screen.drawLine(scr,xx+3,yy+8,xx+7,yy+8,obj.cFond)
521                    -- Check
522                    if obj.element[i].check then
523                        screen.drawLine(scr,xx+4,yy+2,xx+6,yy+2,obj.cSel)
524                        screen.drawLine(scr,xx+3,yy+3,xx+7,yy+3,obj.cSel)
525                        screen.drawLine(scr,xx+2,yy+4,xx+8,yy+4,obj.cSel)
526                        screen.drawLine(scr,xx+2,yy+5,xx+8,yy+5,obj.cSel)
527                        screen.drawLine(scr,xx+3,yy+6,xx+7,yy+6,obj.cSel)
528                        screen.drawLine(scr,xx+4,yy+7,xx+6,yy+7,obj.cSel)
529                    end
530                    --texte
531                    if (obj.align == _ARIGHT) then
532                        xx = (obj.x+obj.width)-((string.len(obj.element[i].text)*6)+14)
533                        screen.print(scr, xx, yy+1, obj.element[i].text, obj.cText)
534                    else
535                        screen.print(scr, obj.x+14, yy+1, obj.element[i].text, obj.cText)
536                    end
537                end
538            elseif(obj.type == TLINK) then
539                local color = obj.cText
540                if obj.check then color = obj.cTextSel end
541                screen.print(scr, obj.x, obj.y,obj.text, color)
542                screen.drawLine(scr, obj.x, obj.y+8, obj.x+(string.len(obj.text)*6)+2, obj.y+8, color)
543            elseif(obj.type == TNUMUPDOWN) then
544                screen.drawFillRect(scr,obj.x,obj.y,obj.x+10,obj.y+20,obj.cFond)
545                screen.drawRect(scr,obj.x,obj.y,obj.x+10,obj.y+10,obj.cCadre)
546                screen.drawRect(scr,obj.x,obj.y+10,obj.x+10,obj.y+20,obj.cCadre)
547                -- Fleche haut
548                screen.drawLine(scr,obj.x+4,obj.y+2,obj.x+4,obj.y+8,obj.cFleche)
549                screen.drawLine(scr,obj.x+5,obj.y+2,obj.x+5,obj.y+8,obj.cFleche)
550                screen.drawLine(scr,obj.x+3,obj.y+3,obj.x+7,obj.y+3,obj.cFleche)
551                screen.drawLine(scr,obj.x+2,obj.y+4,obj.x+8,obj.y+4,obj.cFleche)
552                -- Fleche bas
553                screen.drawLine(scr,obj.x+4,obj.y+12,obj.x+4,obj.y+18,obj.cFleche)
554                screen.drawLine(scr,obj.x+5,obj.y+12,obj.x+5,obj.y+18,obj.cFleche)
555                screen.drawLine(scr,obj.x+3,obj.y+16,obj.x+7,obj.y+16,obj.cFleche)
556                screen.drawLine(scr,obj.x+2,obj.y+15,obj.x+8,obj.y+15,obj.cFleche)
557            elseif(obj.type == TPROGRESSBAR) then
558                local pourcent = math.floor((obj.pos*100)/obj.max)
559                local buff
560                local xx, yy
561                screen.drawFillRect(scr,obj.x,obj.y,obj.x+obj.width,obj.y+obj.height,obj.cFond)
562                screen.drawRect(scr,obj.x,obj.y,obj.x+obj.width,obj.y+obj.height,obj.cCadre)
563                --HORIZONTAL
564                if obj.pos>0 then
565                    xx = (obj.pos*(obj.width-1))/obj.max
566                    screen.drawFillRect(scr,obj.x+1,obj.y+1,obj.x+xx,obj.y+obj.height-1,obj.cSel)
567                end
568                buff = string.gsub(obj.text, "%%P", pourcent)
569                buff = string.gsub(buff, "%%p", obj.pos)
570                buff = string.gsub(buff, "%%m", obj.max)
571                buff = string.sub(buff,0,(obj.width-4)/6)
572                xx = (obj.width/2) - (string.len(buff)*3) + obj.x
573                yy = (obj.height/2) - 3 + obj.y
574                screen.print(scr,xx,yy,buff,obj.cText)
575            elseif(obj.type == TLISTVIEW) then
576                local xx1 = obj.x
577                local xx2 = obj.x+obj.width
578                local yy1 = obj.y
579                local yy2 = obj.y+obj.height
580                local adx = 0
581                local i, texte, posSel, ldep, lfin
582                local nbelem = table.maxn(obj.element)
583                local nbliaff = math.floor((obj.height - 2)/10)
584                screen.drawFillRect(scr, xx1, yy1, xx2, yy2, obj.cFond)
585                screen.drawRect(scr, xx1, yy1, xx2, yy2, obj.cCadre)
586                posSel = obj.pos
587                ldep = posSel - math.floor(nbliaff/2)
588                if ldep <1 then ldep = 1 end
589                lfin = ldep + nbliaff-1
590                if lfin > nbelem then lfin = nbelem end
591                if (lfin-ldep)<(nbliaff-1) then ldep = lfin-nbliaff+1 end
592                if ldep <1 then ldep = 1 end
593                if(obj.image ~= 0) then adx = 14 else adx = 2 end
594                for i=ldep, lfin do
595                    texte = string.sub(obj.element[i].text,0,(xx2-xx1-13-adx)/6)
596                    if i == posSel then
597                        screen.drawFillRect(scr,xx1+1,yy1+1+((i-ldep)*10),xx2-10,yy1+11+((i-ldep)*10),obj.cSel)
598                        screen.print(scr,xx1+adx,yy1+2+((i-ldep)*10),texte,obj.cTextSel)
599                    else
600                        screen.print(scr,xx1+adx,yy1+2+((i-ldep)*10),texte,obj.cText)
601                    end
602                    if (obj.image ~= 0 and obj.element[i].img > 0) then
603                        screen.blit(scr,xx1+2,yy1+1+((i-ldep)*10),obj.image,1+(obj.element[i].img-1)*10,1,10,10)
604                    end
605                end
606                xx1 = xx2-10
607                -- Fleche haut
608                screen.drawLine(scr,xx1+4,yy1+2,xx1+4,yy1+8,obj.cFleche)
609                screen.drawLine(scr,xx1+5,yy1+2,xx1+5,yy1+8,obj.cFleche)
610                screen.drawLine(scr,xx1+3,yy1+3,xx1+7,yy1+3,obj.cFleche)
611                screen.drawLine(scr,xx1+2,yy1+4,xx1+8,yy1+4,obj.cFleche)
612                -- Fleche bas
613                screen.drawLine(scr,xx1+4,yy2-2,xx1+4,yy2-8,obj.cFleche)
614                screen.drawLine(scr,xx1+5,yy2-2,xx1+5,yy2-8,obj.cFleche)
615                screen.drawLine(scr,xx1+3,yy2-4,xx1+7,yy2-4,obj.cFleche)
616                screen.drawLine(scr,xx1+2,yy2-5,xx1+8,yy2-5,obj.cFleche)
617                -- Curseur
618                if obj.max > 0 then
619                    ep_curs = ((yy2-10)-(yy1+10))/obj.max
620                    po_curs = math.floor(ep_curs*(obj.pos-1))+10+yy1
621                    ep_curs = math.floor(ep_curs)
622                    if ep_curs == 0 then ep_curs = 1 end
623                    screen.drawFillRect(scr,xx1+1,po_curs,xx1+9,po_curs+ep_curs,obj.cSel)
624                end
625                -- Cadre fleche
626                screen.drawLine(scr,xx1,yy1+9,xx1+10,yy1+9,obj.cCadre)
627                screen.drawLine(scr,xx1,yy2-10,xx2,yy2-10,obj.cCadre)
628                -- Cadre
629                screen.drawRect(scr,xx1,yy1,xx2,yy2,obj.cCadre)
630            elseif(obj.type == TTABLEVIEW) then
631                local xx1 = obj.x
632                local xx2 = obj.x+obj.width
633                local yy1 = obj.y
634                local yy2 = obj.y+obj.height
635                screen.drawFillRect(scr,xx1,yy1,xx2,yy2,obj.cFond)
636                screen.drawRect(scr,xx1,yy1,xx2,yy2,obj.cCadre)
637                screen.drawLine(scr,xx1,yy1+11,xx2,yy1+11,obj.cCadre)
638                xx1 = xx2-10
639                yy1 = yy1+11
640                -- Fleche haut
641                screen.drawLine(scr,xx1+4,yy1+2,xx1+4,yy1+8,obj.cFleche)
642                screen.drawLine(scr,xx1+5,yy1+2,xx1+5,yy1+8,obj.cFleche)
643                screen.drawLine(scr,xx1+3,yy1+3,xx1+7,yy1+3,obj.cFleche)
644                screen.drawLine(scr,xx1+2,yy1+4,xx1+8,yy1+4,obj.cFleche)
645                -- Fleche bas
646                screen.drawLine(scr,xx1+4,yy2-2,xx1+4,yy2-8,obj.cFleche)
647                screen.drawLine(scr,xx1+5,yy2-2,xx1+5,yy2-8,obj.cFleche)
648                screen.drawLine(scr,xx1+3,yy2-4,xx1+7,yy2-4,obj.cFleche)
649                screen.drawLine(scr,xx1+2,yy2-5,xx1+8,yy2-5,obj.cFleche)
650                -- Curseur
651                local nbliaff = math.floor((obj.height - 15)/10)
652                if obj.max > 0 then
653                    ep_curs = ((yy2-10)-(yy1+10))/obj.max
654                    po_curs = math.floor(ep_curs*(obj.pos-1))+10+yy1
655                    ep_curs = math.floor(ep_curs)
656                    if ep_curs == 0 then ep_curs = 1 end
657                    screen.drawFillRect(scr,xx1+1,po_curs,xx1+9,po_curs+ep_curs,obj.cSel)
658                end
659                -- Cadre fleche
660                screen.drawLine(scr,xx1,yy1+9,xx1+10,yy1+9,obj.cCadre)
661                screen.drawLine(scr,xx1,yy2-10,xx2,yy2-10,obj.cCadre)
662                -- Cadre
663                screen.drawRect(scr,xx1,yy1,xx2,yy2,obj.cCadre)
664                -- Séparation des colonnes
665                if(obj.element[0] ~= nil) then
666                    local i
667                    yy1 = obj.y
668                    xx1 = obj.x
669                    for i=1, (#obj.element[0]-1) do
670                        if(xx1 < xx2) then
671                            screen.drawLine(scr,xx1+obj.element[0][i],yy1,xx1+obj.element[0][i],yy2,obj.cCadre)
672                        end
673                        xx1 = xx1 + obj.element[0][i]
674                    end
675                -- Texte
676                    local j,text,cx
677                    local xnbelem = #obj.element[1]
678                -- Titre
679                    cx = obj.x
680                    for j=1, xnbelem do
681                        text = string.sub(obj.element[1][j],1,math.floor((obj.element[0][j]-4)/6))
682                        if(cx+(string.len(text)*6) < xx2) then
683                            screen.print(scr,cx+2,yy1+2,text,obj.cText)
684                        end
685                        cx = cx + obj.element[0][j]
686                    end
687                -- reste
688                    yy1 = yy1+12
689                    local posSel, ldep, lfin
690                    local ynbelem = #obj.element
691                    posSel = obj.pos
692                    ldep = posSel - math.floor(nbliaff/2)
693                    if(ldep < 2) then ldep = 2 end
694                    lfin = ldep + nbliaff-1
695                    if lfin > ynbelem then lfin = ynbelem end
696                    if((lfin-ldep) < (nbliaff-1)) then ldep = lfin-nbliaff+1 end
697                    if(ldep < 2) then ldep = 2 end
698                    for i=ldep, lfin do
699                        cx = obj.x
700                        -- Selection
701                        if(i == posSel+1) then
702                            screen.drawFillRect(scr,cx+1,yy1+((i-ldep)*10),xx2-10,yy1+12+((i-ldep)*10),obj.cSel)
703                        end
704                        -- texte
705                        for j=1, xnbelem do
706                            text = string.sub(obj.element[i][j],1,math.floor((obj.element[0][j]-4)/6))
707                            if(cx+(string.len(text)*6) < xx2) then
708                                screen.print(scr,cx+2,yy1+2+((i-ldep)*10),text,obj.cText)
709                            end
710                            cx = cx + obj.element[0][j]
711                        end
712                    end
713                end
714            elseif(obj.type == TCOMBOBOX) then
715                local xx = obj.x
716                local yy = obj.y
717                local buff = obj.text
718                screen.drawFillRect(scr, xx, yy, xx+obj.width, yy+12, obj.cFond)
719                screen.drawRect(scr, xx, yy, xx+obj.width, yy+12, obj.cCadre)
720                screen.drawLine(scr, xx+obj.width-12, yy, xx+obj.width-12, yy+12, obj.cCadre)
721                buff = string.sub(buff,1,(obj.width-18)/6)
722                screen.print(scr,xx+2,yy+2,buff,obj.cText)
723                xx = xx+obj.width-12
724                screen.drawLine(scr, xx+2, yy+6, xx+10, yy+6, obj.cCadre)
725                screen.drawLine(scr, xx+3, yy+7, xx+9, yy+7, obj.cCadre)
726                screen.drawLine(scr, xx+4, yy+8, xx+8, yy+8, obj.cCadre)
727                screen.drawLine(scr, xx+5, yy+9, xx+7, yy+9, obj.cCadre)
728            end
729        end
730    end
731end
732
733luaWidget.held = function(widget)
734    local obj, i, kre
735    for i, obj in pairs(luaWidget.tabobj[widget]) do
736        if(obj.visible and obj.active) then
737            if(obj.type == TBUTTON) then
738                local ok = false
739                if(Keys.newPress.A and obj.min == _BA) then ok = true end
740                if(Keys.newPress.B and obj.min == _BB) then ok = true end
741                if(Keys.newPress.X and obj.min == _BX) then ok = true end
742                if(Keys.newPress.Y and obj.min == _BY) then ok = true end
743                if(Keys.newPress.Start and obj.min == _BSTART) then ok = true end
744                if(Keys.newPress.Select and obj.min == _BSELECT) then ok = true end
745                if(ok) then obj.check = not obj.check end
746            end
747            local kre = square(obj.x, obj.y, obj.x+obj.width, obj.y+obj.height)
748            if estDedans(Stylus.X, Stylus.Y, kre) and (luaWidget.tabwidget[widget].scr == SCREEN_DOWN) then
749                if(Stylus.newPress) then
750                    obj.newPress = true
751                    obj.check = not obj.check
752                    if(obj.type == TRADIOBUTTON) then
753                        local i,numelem
754                        for i=1,#obj.element do obj.element[i].check = false end
755                        numelem = math.floor((Stylus.Y-obj.y)/11)+1
756                        obj.element[numelem].check = true
757                    elseif(obj.type == TNUMUPDOWN) then
758                        if((Stylus.Y-obj.y)<10) then obj.pos = obj.pos+obj.inc
759                        else obj.pos = obj.pos-obj.inc end
760                        if(obj.pos < obj.min) then obj.pos = obj.min end
761                        if(obj.pos > obj.max) then obj.pos = obj.max end
762                    elseif(obj.type == TLISTVIEW) then
763                        if(Stylus.X < obj.x+obj.width-10) then
764                            local numelem = math.floor((Stylus.Y-obj.y)/10)
765                            local nbliaff = math.floor((obj.height - 2)/10)
766                            local ldep = obj.pos - math.floor(nbliaff/2)
767                            if ldep <1 then ldep = 1 end
768                            local lfin = ldep + nbliaff-1
769                            if lfin > obj.max then lfin = obj.max end
770                            if (lfin-ldep)<(nbliaff-1) then ldep = lfin-nbliaff+1 end
771                            if ldep <1 then ldep = 1 end
772                            numelem = numelem + ldep
773                            if(numelem <= obj.max) then obj.pos = numelem end
774                        else
775                            if(Stylus.Y < obj.y+10) then
776                                obj.pos = obj.pos-1
777                                if(obj.pos < 1) then obj.pos = 1 end
778                            elseif(Stylus.Y > obj.y+obj.height-10) then
779                                obj.pos = obj.pos+1
780                                if(obj.pos > obj.max) then obj.pos = obj.max end
781                            end
782                        end
783                    elseif(obj.type == TTABLEVIEW) then
784                        local nblaff = math.floor((obj.height-15)/10)
785                        if(Stylus.X < obj.x+obj.width-10) then
786                            local numelem = math.floor((Stylus.Y-(obj.y+12))/10)
787                            local nbliaff = math.floor((obj.height - 2)/10)
788                            local ldep = obj.pos - math.floor(nbliaff/2)
789                            if ldep <1 then ldep = 1 end
790                            local lfin = ldep + nbliaff-1
791                            if lfin > obj.max then lfin = obj.max end
792                            if (lfin-ldep)<(nbliaff-1) then ldep = lfin-nbliaff+1 end
793                            if ldep <1 then ldep = 1 end
794                            numelem = numelem + ldep
795                            if(numelem <= obj.max and numelem > 0) then obj.pos = numelem end
796                        else
797                        -- if(Stylus.X > obj.x+obj.width-10) then
798                            if(Stylus.Y > obj.y+11 and Stylus.Y < obj.y+21) then
799                                obj.pos = obj.pos-1
800                                if(obj.pos < 1) then obj.pos = 1 end
801                            elseif(Stylus.Y > obj.y+obj.height-10) then
802                                obj.pos = obj.pos+1
803                                if(obj.pos > obj.max) then obj.pos = obj.max end
804                                -- if(obj.pos + (nblaff-1) > obj.max) then obj.pos = obj.max - (nblaff-1) end
805                                -- if(obj.pos < 1) then obj.pos = 1 end
806                            end
807                        end
808                    elseif(obj.type == TCOMBOBOX) then
809                        local ok = false
810                        if(obj.pos == 1) then
811                            if(Stylus.X > obj.x+obj.width-12 and Stylus.Y > obj.y+obj.height-12)
812                            then ok = true end
813                        else
814                            if(Stylus.X > obj.x+obj.width-12 and Stylus.Y < obj.y +12)
815                            then ok = true end
816                        end
817                        if(ok) then
818                            luaWidget.tabobj[widget][obj.min].visible = not luaWidget.tabobj[widget][obj.min].visible
819                            local i, ob
820                            for i, ob in pairs(luaWidget.tabobj[widget]) do
821                                if(ob.num ~= obj.num and ob.num ~= luaWidget.tabobj[widget][obj.min].num) then
822                                    ob.active = not ob.active
823                                end
824                            end
825                        end
826                    end
827                elseif(Stylus.doubleClick) then
828                    if(obj.type == TLISTVIEW and Stylus.X > obj.x+obj.width-10) then
829                        -- Pas bon
830                    else
831                        obj.doubleClick = true
832                    end
833                elseif(Stylus.deltaY ~= 0) then
834                    local tmp = math.floor(Stylus.deltaY/3)
835                    if(obj.type == TLISTVIEW and Stylus.X > obj.x+obj.width-10) then
836                        obj.pos = obj.pos+tmp
837                        if(obj.pos > obj.max) then obj.pos = obj.max end
838                        if(obj.pos < 1) then obj.pos = 1 end
839                    end
840                else
841                    obj.newPress = false
842                end
843            end
844            if(obj.type == TCOMBOBOX) then
845                if(luaWidget.tabobj[widget][obj.min].doubleClick) then
846                    obj.text = luaWidget.getSel(widget,obj.min)
847                    luaWidget.tabobj[widget][obj.min].visible = false
848                    luaWidget.tabobj[widget][obj.min].doubleClick = false
849                    local i
850                    for i, ob in pairs(luaWidget.tabobj[widget]) do
851                        ob.active = true
852                    end
853                end
854            end
855        end
856    end
857end
858
859luaWidget.DblClk = function(widget)
860    local obj, i, kre
861    for i, obj in pairs(luaWidget.tabobj[widget]) do
862        if(obj.visible and obj.active) then
863            local kre = square(obj.x, obj.y, obj.x+obj.width, obj.y+obj.height)
864            if estDedans(Stylus.X, Stylus.Y, kre) then
865                if(obj.type == TLISTVIEW and Stylus.X > obj.x+obj.width-10) then
866                    -- Pas bon
867                else
868                    obj.doubleClick = true
869                end
870            end
871        end
872    end
873end
standard.lua
1_VSTANDARD = 0.1
2
3function square(x1, y1, x2, y2)
4    local k_re = {"x1", "y1", "x2", "y2"}
5    k_re.x1 = x1
6    k_re.y1 = y1
7    k_re.x2 = x2
8    k_re.y2 = y2
9    return k_re
10end
11
12function estDedans(x,y,carre)
13    local res = false
14    if x > carre.x1 and x < carre.x2 then
15        if y > carre.y1 and y < carre.y2 then
16            res = true
17        end
18    end
19    return res
20end
21

Archive Download the corresponding diff file

Branches