# HG changeset patch # User viric@llimona # Date 1147985987 -7200 # Node ID 6371497b4e532e9a1e60db35ee47a12a4be33990 Init from svn. The wxpython is the final one. diff -r 000000000000 -r 6371497b4e53 add2db.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/add2db.py Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + + +import sys,shelve + +dbase = shelve.open('vortoj-ru-ca.sdb') + +print "Showing keys:" +for a in dbase.keys(): + print a + +print("Tajpu vorton por aldoni al la listo:"), +key = raw_input() + +if key == "": + print "Fino." + sys.exit() + +print("Tajpu tradukon por %s:" % key), +traduko = raw_input() + +dbase[key] = traduko + +print "Showing new keys:" +for a in dbase.keys(): + print a +dbase.close() diff -r 000000000000 -r 6371497b4e53 change-tables-mysql.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/change-tables-mysql.sh Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,2 @@ +#!/bin/bash +mysql -u lingvigilouser -p -h vicerveza lingvigilo < taula-mysql.sql diff -r 000000000000 -r 6371497b4e53 forigi-korektitajn-frazojn.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forigi-korektitajn-frazojn.py Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import MySQLdb,sys + +database = 'lingvigilo' +dbuser = 'lingvigilouser' +dbpass = 'carrinclo' +dbtable = 'frazoj_ru_ca' + +if (len(sys.argv) != 2): + print "Uzo: " + sys.argv[0] + " " + print "Parametro :" + print " 0 Ne korektitaj" + print " 1 Ĝustaj" + print " 2 Malĝustaj" + print " 3 Nekutimaj" + sys.exit(1) +else: + korekteco=sys.argv[1] + +db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database) + +cursor = db.cursor() + +cursor.execute('DELETE FROM ' + dbtable + ' WHERE korekta='+sys.argv[1]) + +db.close() diff -r 000000000000 -r 6371497b4e53 frazoj2mysql --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frazoj2mysql Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,43 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sys,string,os,MySQLdb,re + +database = 'lingvigilo' +dbuser = 'lingvigilouser' +dbpass = 'carrinclo' +dbtable = 'frazoj_ru_ca' + +db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database) + +cursor = db.cursor() + +if (len(sys.argv) != 2): + print "Diru nomon de dosiero." + sys.exit() +else: + sourcefile=sys.argv[1] + + +# Read txt +file = open(sourcefile, 'r') + +for line in file: + # Traiem l'INTRO final + line = line.rstrip('\n') + + # Arreglem cometes simples per a sql + line = re.sub(r"'",r"\'", line) + + # Separem per \t + words = string.split(line, '\t') + + print "Aldonante:", words[0], '=>', words[1] + + cursor.execute('INSERT INTO ' + dbtable + + ' (vorto,frazo) '+ + 'VALUES(\'%s\',\'%s\');' % (words[0], words[1])) + +db.close() + +file.close() diff -r 000000000000 -r 6371497b4e53 taula-mysql.sql --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/taula-mysql.sql Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,27 @@ +drop table if exists vortoj_ru_ca; + +create table vortoj_ru_ca ( + id int not null auto_increment, + vorto tinytext not null, + tipo tinytext not null, + traduko tinytext default NULL, + param1 tinytext default NULL, + param2 tinytext default NULL, + primary key (id) +) TYPE=MyISAM; + +drop table if exists frazoj_ru_ca; + +create table frazoj_ru_ca ( + id int not null auto_increment, + vorto tinytext not null, + frazo tinytext not null, + korekta integer not null default 0, + klarigo tinytext default null, + korektisto tinytext default null, + -- 0 = nekorektita + -- 1 = gxusta + -- 2 = malgxusta + -- 3 = nekutima + primary key (id) +) TYPE=MyISAM; diff -r 000000000000 -r 6371497b4e53 tkinter/lingvigilo.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tkinter/lingvigilo.py Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,112 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + + +from Tkinter import * +from tkSimpleDialog import * +import sys,time,random,string,MySQLdb + +# Configuració +legi_el = 'mysql' + +# Conf - mysql +database = 'lingvigilo' +dbuser = 'lingvigilouser' +dbpass = 'carrinclo' +dbtable_vortoj = 'vortoj_ru_ca' +dbtable_frazoj = 'frazoj_ru_ca' + +# Conf - fitxer +dbasefile = 'vortoj-ru-ca.txt' +frazodosiero = 'frazoj.txt' + +# Prendre les paraules d'una base de dades MySQL +def getMySQL(): + db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass, + db=database) + cursor = db.cursor() + cursor.execute("SELECT * FROM "+dbtable_vortoj) + res_vortoj = cursor.fetchall() + res_vortoj_unicode = [] + for vorto in res_vortoj: + vorto_vorto = unicode(vorto[1],'utf8') + vorto_tipo = unicode(vorto[2],'utf8') + vorto_traduko = unicode(vorto[3],'utf8') + + # Paràmetres opcionals + if vorto[4] == None: + vorto_param1 = '' + else: + vorto_param1 = unicode(vorto[4],'utf8') + + if vorto[5] == None: + vorto_param2 = '' + else: + vorto_param2 = unicode(vorto[5],'utf8') + + res_vortoj_unicode.append( + (vorto_vorto, vorto_tipo, vorto_traduko, + vorto_param1, vorto_param2)) + db.close() + return res_vortoj_unicode + +# Prendre les paraules d'un fitxer +def getFile(): + dbase = open(dbasefile,"r") + + lines = dbase.readlines() + dbase.close() + + res_vortoj = [] + for line in lines: + line = line.rstrip('\n') + vortoj = string.split(unicode(line.rstrip('\n'),'utf8'),'\t') + res_vortoj.append(vortoj) + + return res_vortoj + +if legi_el == 'file': + print "Legante vortojn el dosiero..." + vortoj = getFile() +else: + print "Legante vortojn el MySQLa datumbazo..." + vortoj = getMySQL() + +print "Legitaj", len(vortoj), "vortoj." + +def AldoniFrazonDosieren(vorto,teksto): + outfile = open(frazodosiero,"a") + + lineout = vorto + "\t" + teksto +"\n" + outfile.write(lineout.encode('utf8')) + + outfile.close() + +def AldoniFrazonDatumbazen(vorto,teksto): + db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass, + db=database) + cursor = db.cursor() + print ("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)" + " VALUES('%s', '%s');" % (vorto, teksto)) + cursor.execute("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)"+ + " VALUES('%s', '%s');" % (vorto.encode('utf8'), + teksto.encode('utf8'))) + db.close() + + +def LoopFunction(): + index = random.randint(0, len(vortoj)-1) + vorto = vortoj[index][0] + teksto = askstring("Frazilon", "Skribu frazon por vorto '%s'" % vorto) + if teksto == None: + print 'Fi del programa' + sys.exit() + AldoniFrazonDatumbazen(vorto, teksto) + root.after(1*1000,LoopFunction) + + +# Main program +root=Tk() +root.after(10,LoopFunction) +Message(root, text='Programo por lerni lingvon').pack(); +root.mainloop() diff -r 000000000000 -r 6371497b4e53 txt2db.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/txt2db.py Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import shelve,string,os + + +sourcefile = 'vortoj-ru-ca.txt' +dbfile = 'vortoj-ru-ca.sdb' +try: + os.remove(dbfile) +except: + print "File '%s' doesn't exist. Creating..." % dbfile +else: + print "File '%s' exist. Wipping..." % dbfile + +dbase = shelve.open(dbfile) + +# Read txt +file = open(sourcefile, 'r') + +for line in file: + line = line.rstrip('\n') + words = string.split(line, '\t') + print "Adding:", words[0], '=>', words[2] + dbase[words[0]] = words[2] + +file.close() + +dbase.close() diff -r 000000000000 -r 6371497b4e53 vortoj-ru-ca.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vortoj-ru-ca.txt Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,256 @@ +шкаф nom armari +спать nom dormir нсв +с друзья'ми exp amb amics +по'сле+gen prep després +нра'виться verb agradar нсв понра'вится +ла'дно adv d'acord +понра'виться verb agradar св нра'вится +дари'ть verb regalar нсв подари'ть +подари'ть verb regalar нсв дари'ть +подаро'к nom regal +ску'чный adj avorrit +сеа'нс nom sessió +вини'тельный паде'ж exp acusatiu +да'тельный паде'ж exp datiu +чемода'н nom maleta +о'коло+gen nom a prop de +дава'ть verb donar нсв дать +дать verb donar св дава'ть +сове'товать verb aconsellar нсв посове'товать +посове'товать verb aconsellar нсв сове'товать +похо'д nom excursió +спроси'ть verb demanar св спра'шивать +спра'шивать verb demanar нсв спраси'ть +весь,вся,всё nom tot el / sencer +настрое'ние nom humor +лёгкий adj fàcil +бассе'йн nom piscina +симпати'чный adj guapo (físicament) +мо'дный adj de moda +совреме'нный adj modern, actual +улы'бка nom somriure +улыба'ться verb somriure нсв +стро'ить verb construir нсв постро'ить +не совсе'м exp no exactament +совсе'м не exp en absolut (no) +прие'хать verb arribar нсв +бо'льше всего' exp el que més +наро'д nom poble (gent) +наро'дный nom popular +как и я nom com jo. La 'i' emfatitza +зато' exp en canvi / compensant +за то exp per això / per lo que +стака'н nom vas, got +по'эзд nom tren +де'ло nom negoci +село nom poble, vila +кре'сло nom sofà +перо' nom bolígraf, ploma +мя'со nom carn +ма'льчик nom noi +шля'па nom barret +ле'рево nom arbre, fusta +оте'чество nom pàtria, terra del pare +бумага nom paper +картина nom dibuix +жела'ть verb voler, desitjar нсв +отвеча'ть verb respondre нсв +ча'сто nom sovint +учени'к nom alumne (escola) +конто'ра nom oficina +что'-то nom alguna cosa +для+gen exp per a +без+gen exp sense +рад exp estar encantat +забыва'ть verb oblidar нсв +ме'дленно adv a poc a poc +осёл nom ase +счёт nom factura, compta +конь nom cavall +кора'бль nom vaixell +сара'й nom cabanya +из+gen nom fora de, lluny de +тётя nom tieta +а'рмия nom exercit +исто'рия nom història +ста'нция nom estació +вещь nom cosa (f) +ночь nom nit (f) +крова'ть nom llit (f) +по'ле nom camp +зда'ние nom edifici +жела'ние nom desig +пла'тье nom roba, vestit +от+gen exp lluny de +за+acc exp després, darrera, més enllà (moviment) +море nom mar +ча'шка nom tassa +благодари'ть verb agrair нсв +по'мнить verb recordar нсв +учи'ть verb aprendre, estudiar нсв +жаль exp llàstima, (+dat, saber greu) +держать verb mantenir нсв +дорого'й adj valuós, car +молодо'й adj jove +сад nom jardí +наве'рно adv probablement +ти'хо adv silenciosament, suaument +свобо'дно adv lliurement, amb fluïdesa +соль nom sal (f) +масло nom mantega +зуб nom dent +щётка nom raspall +зеркало nom lent, vidre per mirar +запреща'ть verb prohibir нсв +слы'шать verb sentir (oïda) нсв +по-мо'ему exp en la meva opinió +поэ'тому exp per tant +по+dat exp al llarg de, mitjançant, d'acord amb +по+prep exp quan, a l'hora que, després +наро'чно adv expressament +неча'янно adv sense voler +проси'ть verb demanar (algo) нсв +ждать verb esperar (algo) нсв +почти' adv quasi +всё nom tot +все nom tothom +жи'тель nom habitant (m) +пло'шадь nom plaça (f) +ку'ртка nom jaqueta d'home +карма'н nom butxaca +ла'вка nom botiga +ла'вочник nom botiguer +шу'тка nom acudit +обы'чно adv normalment +редко adv poc sovint, rarament +меша'ть verb molestar нсв +скуча'ть verb avorrir-se нсв +быва'ть verb freqüentar, passar de tant en tant нсв +шути'ть verb fer broma нсв +весна' nom primavera +ле'то nom estiu +о'сень nom tardor (f) +зима' nom hivern +день nom dia (m) +столи'ца nom capital (ciutat) +земля' nom terra +река' nom riu +бежа'ть verb córrer нсв +жить verb viure нсв +есть verb menjar нсв +хоте'ть verb voler нсв +рука' nom braç, mà +голова' nom cap +ум nom ment, intel·lecte +у'мный adjectiu espavilat, intel·ligent +нау'ка nom ciència +жизнь nom vida (f) +терпе'ние nom paciència +разгово'р nom conversa +разгова'ривать verb conversar, parlar (+ins) нсв +прекра'сный adj bonic +краси'вый adj maco, guapo +холо'дный adj fred +тёрплый adj calentet +дешёвый adj barat +пусто'й adj buit +бара'н nom xai +поколе'ние nom generació +дово'льно adv suficient +дёшево adv de manera barata +да'же exp malgrat +прекра'сно adv esplèndit, excel·lent +коне'чно adv evidentment +мо'жно adv hom pot +нельзя' adv hom no pot +сто'ить verb costar нсв +не сто'ить! exp de res +си'ний adj blau fosc +зде'шний adj local +после'дний adj últim +вне'шний adj extern +вече'рний adj del vespre +у'трений adj del matí +пере'дний adj frontal +да'льний adj distant +сре'дний adj del mig, central +сосе'дний adj del costat, veïnal +ра'нний adj d'aviat +по'здний adj tardà +ни'жнний adj de baix +ве'рхний adj de dalt +пре'жний adj anterior +о'бщий adj general, comú +не'бо nom cel +вид nom aspecte, aparença +торго'вля nom comerç +звезда' nom estel, estrella +часть nom part d'alguna cosa +за+ins exp darrera, més enllà, després, per +ме'жду+ins exp entre +над+ins exp sobre +пе'ред+ins exp abans (temps o espai) +под+ins exp sota +c+ins exp amb +при+prep exp en presència, a l'hora de, a tal ocasió +сунду'к nom barril +пансион nom pensió +тамо'жная nom botiga de vestits +дождь nom pluja (m) +снег nom neu +доро'га nom carretera +сухо'й adj sec +ма'ленький adj petit +желе'зо nom ferro +желе'зный adj de ferro +ра'но adv aviat +по'здно adv tard +жа'рко adv fa calor +ве'трено adv fa vent +су'хо adv fa sequetat +тепло' adv s'està calentet +сы'ро adv hi ha humitat +пра'здник nom dia de festa +писа'тель nom escriptor +мета'лл nom metall +мост nom pont +зал nom rebedor +ма'ло+gen exp poc de +весде' adv a tot arreu +ва'жно adv és important +нева'жно adv no té importància, pobrement +переводи'ть verb traduir нсв +задава'ть verb fer, posar (~ вопрос, fer una pregunta) нсв +сиде'ть verb seure нсв +те'ло nom cos +блю'до nom plat +колесо' nom roda +село' nom vila +о'зеро nom llac +яйцо' nom ou +черн'ила nom tinta (n pl) +усе'рдный adj gelós +учи'лище nom escola +чудо'вище nom monstre +изве'стие nom notícies, informació +уче'ние nom estudis, ensenyament +содержа'ние nom continguts +изве'стно, что exp és ben sabut que +чудо'вищно! exp monstruós! +мне'ние nom opinió +брать verb prendre, agafar нсв +жале'ть verb saber greu per (+gen) нсв +сро'чно adv urgentment +сро'чный adj urgent +свеча' nom espelma +откры'тка nom postal +поду'шка nom coixí +ма'рка nom segell +посте'ль nom llit? (f) +о'чередь nom torn, cua +откры'тый adj obert +закры'тый adj tancat +быть без ума' от+gen exp ser boig (d'algo) +уме'ть verb saber fer нсв +на'до exp és necessari (+dat) +рисова'ть verb dibuixar нсв diff -r 000000000000 -r 6371497b4e53 vortoj2mysql --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vortoj2mysql Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,65 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import shelve,string,os,MySQLdb,re + +database = 'lingvigilo' +dbuser = 'lingvigilouser' +dbpass = 'carrinclo' +dbtable = 'vortoj_ru_ca' + +db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database) + +cursor = db.cursor() + +sourcefile = 'vortoj-ru-ca.txt' + +# Connexió base de dades + + +# Read txt +file = open(sourcefile, 'r') + +cursor.execute('DELETE FROM ' + dbtable); + +for line in file: + # Traiem l'INTRO final + line = line.rstrip('\n') + + # Arreglem cometes simples per a sql + line = re.sub(r"'",r"\'", line) + + # Separem per \t + words = string.split(line, '\t') + + print "Aldonante:", words[0], '=>', words[2] + + if words[1] == "verb": + #print ('INSERT INTO ' + dbtable + + # ' (vorto,tipo,traduko,param1,param2) '+ + # 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\');' % + # (words[0], words[1], words[2], words[3], words[4])) + if (len(words) == 5): + cursor.execute('INSERT INTO ' + dbtable + + ' (vorto,tipo,traduko,param1,param2) '+ + 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\');' % + (words[0], words[1], words[2], words[3], + words[4])) + else: + cursor.execute('INSERT INTO ' + dbtable + + ' (vorto,tipo,traduko,param1) '+ + 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\');' % + (words[0], words[1], words[2], words[3])) + else: + #print ('INSERT INTO ' + dbtable + + # ' (vorto,tipo,traduko) '+ + # 'VALUES(\'%s\',\'%s\',\'%s\');' % (words[0], words[1], + # words[2])) + cursor.execute('INSERT INTO ' + dbtable + + ' (vorto,tipo,traduko) '+ + 'VALUES(\'%s\',\'%s\',\'%s\');' % (words[0], words[1], + words[2])) + +db.close() + +file.close() diff -r 000000000000 -r 6371497b4e53 web/getdb.inc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/getdb.inc Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,59 @@ + $fila[1], + "frazo" => $fila[2], + "korekta" => $fila[3], + "klarigo" => $fila[4], + "korektisto" => $fila[5]); + } + + if (!isset($frazoj)) + $frazoj=0; + + return $frazoj; +} + +function teksto_korekto($korekteco) +{ + switch($korekteco) + { + case 0: return "Ne korektita"; break; + case 1: return "Ĝusta"; break; + case 2: return "Malĝusta"; break; + case 3: return "Nekutima"; break; + } +} +?> diff -r 000000000000 -r 6371497b4e53 web/index.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/index.html Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,28 @@ + + + + Lingvigilo - Reta Parto + + + + + +

Programo lingvigilo: reta parto

+ +

Metodo

+

Tiu ĉi estas metodo por plibonigi konon de lingvo rusa. Ĝi estas simplega. La +studanto havas programon, kiu demandas al li/ŝi:

+

- Skribu frazon per vorto "..."

+

Studanto devas skribi ĝustan frazon kun tiu vorto. Do, la studanto kreas +frazaron, po unu frazon por ĉiu vorto.

+

La korektisto povas vidi liston de korektendaj frazoj. Li/Ŝi devas certigi ĉu +la studanto skribis ĝustan frazon por ĉiu vorto. Kompreneble, la korektisto +povas elekti kiom da frazoj korekti.

+ +

Programeroj

+ + + diff -r 000000000000 -r 6371497b4e53 web/lingvigilo-korekti.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lingvigilo-korekti.php Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,149 @@ + + + + Lingvigilo - Korekta kvizo + + + + + + + + + +

Korektilo por programo lingvigilo

+ + $f) + { + //echo "

Key: $key. "; + if(isset($_POST["korekto"][$key])) + //echo "farita."; + if($_POST["korekto"][$key] != 0) + { + $query = "UPDATE " . $frazotablo . + " SET korekta=" . + $_POST["korekto"][$key] . + ",klarigo='" . + strtosql($_POST["klarigo"][$key]) . + "',korektisto='" . + strtosql($_POST["korektisto"]) . + "' WHERE id=". $key . ";"; + mysql_query($query, $konekto); + // Por retletero + $body = $body . + "Vorto: " . $f["vorto"] . "\n" . + "Frazo: " . $f["frazo"] . "\n" . + "Korekteco: " . + teksto_korekto($_POST["korekto"][$key]) + . "\n" . + "Klarigo: " . $_POST["klarigo"][$key] . + "\n" . "Korektist(in)o: " . + $_POST["korektisto"] . + "\n\n"; + + + + } + //echo "

\n"; + } + // Sendi retleteron + mail("viric@vicerveza.homeunix.net","Korektado de frazoj", $body, + "Content-Type: text/plain; charset=utf-8\r\n" . + "Content-Transfer-Encoding: 8bit"); + } + +?> +

Dankon pro la korektado!

+

Vi povas reiri al frazaro korektenda alitage, ĉiam je la + Sama + adreso.

+ + +

Frazoj korektendaj

+ +
+ + + + \n"; + echo "\t
ID + Vorto + Frazo + Korekto + Klarigo + +\n"; + echo "
". $key . "\n"; + echo "\t". $f["vorto"] . "\n"; + echo "\t". $f["frazo"] . "\n"; + echo "\t"; + select_korekto($key); + echo "\t"; + $numfrazoj++; + } +?> +
+ +

Estas nekorektitaj frazoj en datumbazo. +

+ +

Prepari sendon

+ +

Alklaku Sendu korektaĵojn por sendi ilin. Vi povas igi ĉiujn frazojn +al elekto Ne korektita kaj forviŝi ĉiujn klarigojn, alklakante butonon +Forgesu.

+ +

Antaŭ enmetu datumojn, bonvolu skribi ian nomon por ke mi sciu kiu korektis +tion ĉi (t.e. kiun demandi)

+ +

Korektist(in)o: + +

+ + + +
+ + + +

Iru al ĉefa paĝo.

+ + diff -r 000000000000 -r 6371497b4e53 web/lingvigilo-montri.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lingvigilo-montri.php Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,91 @@ + + + + Lingvigilo - Frazomontrilo + + + + + + + + + +

Montrilo por programo lingvigilo

+ + + +

Agordo

+ +
+

Montru frazojn + + + +

+
+ +

Frazoj

+ += 0) + $korektecoj = array($korekteco); +elseif ($korekteco == -1) + $korektecoj = array(0,1,2,3); +elseif ($korekteco == -2) + $korektecoj = array(2,3); + +?> + + + \n"; + echo "\t
ID + Vorto + Frazo + Korektist(in)o + Korekto + Ekspliko + + $f) + { + echo "
". $key . "\n"; + echo "\t". $f["vorto"] . "\n"; + echo "\t". $f["frazo"] . "\n"; + echo "\t" . $f["korektisto"] . "\n"; + echo "\t" . teksto_korekto($f["korekta"]) . "\n"; + echo "\t" . $f["klarigo"] . "\n"; + } +} + +?> +
+ +

Iru al ĉefa paĝo.

+ + diff -r 000000000000 -r 6371497b4e53 web/toserver.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/toserver.sh Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,2 @@ +#!/bin/bash +scp *.{php,inc,html} vicerveza:~/public_html/lingvigilo/ diff -r 000000000000 -r 6371497b4e53 wxpython/lingvigilo.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wxpython/lingvigilo.py Thu May 18 22:59:47 2006 +0200 @@ -0,0 +1,245 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sys,time,random,string,MySQLdb,re +from wxPython.wx import * + +# Configuració +legi_el = 'mysql' + +# Conf - mysql +database = 'lingvigilo' +dbuser = 'lingvigilouser' +dbpass = 'carrinclo' +dbtable_vortoj = 'vortoj_ru_ca' +dbtable_frazoj = 'frazoj_ru_ca' + +# Conf - fitxer +dbasefile = 'vortoj-ru-ca.txt' +frazodosiero = 'frazoj.txt' +frazoj_al = 'mysql' + +# Si s'especifica fitxer, l'origen és el fitxer. +if (len(sys.argv) > 1): + dbasefile = sys.argv[1] + legi_el = 'file' + +def StringForSQL(str): + return re.sub(r"'",r"\'", str) + +# Prendre les paraules d'una base de dades MySQL +def getMySQL(): + db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass, + db=database) + cursor = db.cursor() + cursor.execute("SELECT * FROM "+dbtable_vortoj) + res_vortoj = cursor.fetchall() + res_vortoj_unicode = [] + for vorto in res_vortoj: + vorto_vorto = unicode(vorto[1],'utf8') + vorto_tipo = unicode(vorto[2],'utf8') + vorto_traduko = unicode(vorto[3],'utf8') + + # Paràmetres opcionals + if vorto[4] == None: + vorto_param1 = '' + else: + vorto_param1 = unicode(vorto[4],'utf8') + + if vorto[5] == None: + vorto_param2 = '' + else: + vorto_param2 = unicode(vorto[5],'utf8') + + res_vortoj_unicode.append( + (vorto_vorto, vorto_tipo, vorto_traduko, + vorto_param1, vorto_param2)) + db.close() + return res_vortoj_unicode + +# Prendre les paraules d'un fitxer +def getFile(): + dbase = open(dbasefile,"r") + + lines = dbase.readlines() + dbase.close() + + res_vortoj = [] + for line in lines: + line = line.rstrip('\n') + vortoj = string.split(unicode(line.rstrip('\n'),'utf8'),'\t') + res_vortoj.append(vortoj) + + return res_vortoj + +if legi_el == 'dosiero': + print "Legante vortojn el dosiero..." + vortoj = getFile() +elif legi_el == 'mysql': + print "Legante vortojn el MySQLa datumbazo..." + vortoj = getMySQL() + +print "Legitaj", len(vortoj), "vortoj." + +def AldoniFrazonDosieren(vorto,teksto): + outfile = open(frazodosiero,"a") + + lineout = vorto + "\t" + teksto +"\n" + outfile.write(lineout.encode('utf8')) + + outfile.close() + +def AldoniFrazonDatumbazen(vorto,teksto): + db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass, + db=database) + cursor = db.cursor() + cursor.execute("INSERT INTO "+ + StringForSQL(dbtable_frazoj)+ + " (vorto, frazo) VALUES('%s', '%s');" % + (StringForSQL(vorto.encode('utf8')), + StringForSQL(teksto.encode('utf8')))) + db.close() + +def AldoniFrazon(vorto,teksto): + if (frazoj_al == 'mysql'): + AldoniFrazonDatumbazen(vorto,teksto) + elif (frazoj_al == 'dosiero'): + AldoniFrazonDosieren(vorto,teksto) + + + +#def LoopFunction(): +# index = random.randint(0, len(vortoj)-1) +# vorto = vortoj[index][0] +# teksto = askstring("Frazilon", "Skribu frazon por vorto '%s'" % vorto) +# if teksto == None: +# print 'Fi del programa' +# sys.exit() +# AldoniFrazonDatumbazen(vorto, teksto) + +def Senakcentigi(vorto): + return re.sub(r"'",r"", vorto) + +class main_window(wxFrame): + def __init__(self, parent, id, title): + wxFrame.__init__(self, parent, -1, title, size=(200,100), + style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE) + + # Variables de la classe + # (sino no tira) + self.vorto = ("", "") + + # Sizer vertical + self.topsizer = wxBoxSizer(wxVERTICAL) + + # Agefim la pregunta i la textbox + self.label = wxStaticText(self, -1, + label="Skribu frazon per vorto\n 'provo'", + style=wxALIGN_CENTER) + self.textbox = wxTextCtrl(self, -1) + self.topsizer.Add(self.label, 1, wxALIGN_CENTER, + wxALL, 10) + self.topsizer.Add(self.textbox, 0, wxEXPAND, wxALL, 10) + + # Afegim botons + self.buttonsizer = wxBoxSizer(wxHORIZONTAL) + okid = wxNewId() + cancelid = wxNewId() + helpid = wxNewId() + okbutton = wxButton(self, okid, "Konservu") + # Botó per defecte (resposta a l'intro) + okbutton.SetDefault() + self.buttonsizer.Add(okbutton, 0, wxALL, 10) + cancelbutton = wxButton(self, cancelid, "Forgesu") + self.buttonsizer.Add(cancelbutton, 0, wxALL, 10) + helpbutton = wxButton(self, helpid, "Helpo") + self.buttonsizer.Add(helpbutton, 0, wxALL, 10) + self.topsizer.Add(self.buttonsizer, 0, wxALIGN_CENTER) + + # EVENTS DE BOTONS + EVT_BUTTON(okbutton, okid, self.KonservuFrazon ) + EVT_BUTTON(cancelbutton, cancelid, self.ForgesuFrazon ) + EVT_BUTTON(helpbutton, helpid, self.MontruHelpon ) + + # Key events + EVT_KEY_DOWN(self,self.KeyManager) + + # Activem el sizer principal + self.SetSizer(self.topsizer) + # Mida mínima de finestra. + self.topsizer.SetSizeHints(self) + + # Focus al text + self.textbox.SetFocus() + + self.Show(true) + + # Actualitzem paraula. + self.RenovuVorton() + + def RenovuVorton(self): + index = random.randint(0, len(vortoj)-1) + + self.vorto = vortoj[index] + #print("Elektita vorto: %s" % self.vorto[0]) + self.label.SetLabel("Skribu frazon per vorto\n'%s'" % + Senakcentigi(self.vorto[0])) + + + # if teksto == None: + # print 'Fi del programa' + # sys.exit() + # AldoniFrazonDatumbazen(vorto, teksto) + + def MontruHelpon(self,event): + mesagxo = ("Vorto: " + self.vorto[0] + "\n" + + "Tipo: " + self.vorto[1] + "\n" + + "Traduko: " + self.vorto[2] + "\n") + + if (self.vorto[1] == "verb"): + mesagxo = (mesagxo + "Aspekto: " + self.vorto[3] + "\n") + aspekto = self.vorto[3] + if (self.vorto[3] == u"нсв"): + aliaaspekto = u"Св" + else: + aliaaspekto = u"Нсв" + mesagxo = (mesagxo + aliaaspekto + ": " + + self.vorto[4] + "\n") + + wxMessageDialog(self, mesagxo, "Helpo", style=wxOK).ShowModal() + + def KonservuFrazon(self,event): + # No guardem cadenes buides + if (self.textbox.GetValue() != ""): + AldoniFrazon(Senakcentigi(self.vorto[0]), + self.textbox.GetValue()) + self.RenovuVorton() + self.textbox.Clear() + + def ForgesuFrazon(self,event): + self.textbox.Clear() + self.RenovuVorton() + + def KeyManager(self,event): + key = event.GetKeyCode() + if (key == WXK_ESCAPE): + print("Elirante...") + sys.exit() + elif (key == WXK_TAB): + # Igual que ForgesuFrazon(self,event) + # Puc fer-ho passant un event buit? + self.ForgesuFrazon(0) + elif (key == WXK_F1): + self.MontruHelpon(0) + +class App(wxApp): + def OnInit(self): + frame = main_window(None, -1, "Lingvigilo") + self.SetTopWindow(frame) + return true + +#def DemandiAlUzanto(): + +# Main program +app=App(0) +app.MainLoop()